diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/2022-08-12-network/index.html b/2022-08-12-network/index.html new file mode 100644 index 00000000000..c9d81f7e5ac --- /dev/null +++ b/2022-08-12-network/index.html @@ -0,0 +1,37 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· One min read
Marcin Szamotulski

The networking team took an active part in the project iteration (PI) planning +session, see cardano-node backlog for detailed +outcomes.

  • We started working on a detailed design / implementation plan for gossip.

  • We merged input-output-hk/ouroboros-network#3859 which +sets the ouroboros-network repository for the single relay release.

  • We identified a bug in the network simulator, which is fixed in the +input-output-hk/ouroboros-network#3852. +The above PR was reviewed.

  • We set the tracing configuration for nodes which we deploy and fixed and +identified some deployment hiccups. We identified some bugs in the RT view +which were registered by the maintainers. +input-output-hk/ouroboros-network-ops#4

  • We fixed typos in network-mux library: +input-output-hk/ouroboros-network#3921

  • For easy of debugging we renamed a trace point: +input-output-hk/ouroboros-network#3922

  • Duncan iterated on his simulation / visualisation. He also was able to +identify and fix a bug in the simulator. The simulation contains 50 nodes. +Dashed lines indicate and established connection, while solid lines indicate +a TCP connection with fully open TCP window.

+ + + + \ No newline at end of file diff --git a/2022-08-12-sre/index.html b/2022-08-12-sre/index.html new file mode 100644 index 00000000000..f2c8902a05a --- /dev/null +++ b/2022-08-12-sre/index.html @@ -0,0 +1,46 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 4 min read
Michael Fellinger

High level summary

The SRE team is heavily working on the Equinix Metal migration, replacing Hydra +with Cicero, and a new version of Spongix.

Lower level summary

OpenZiti

  • Work is ongoing on our OpenZiti integration into Bitte in [bitte-zt].
  • CI-World deployment of Darwin CI Ziti service in [ci-world-commit-d40f4d].
  • Multiple issues filed, and a lot of discussion with the OpenZiti developers, +we're making pretty rapid progress thanks to them.
  • Work on getting Equinix baremetal machines integrated into AWS World Bitte +clusters utilizing a Ziti ZTNA network overlay to bridge the networking of +the two environments and get IAM extension to Equinix machine for Nomad +client onboarding.
  • A Nix Flake for most of our OpenZiti dependencies including the Console, +Controller, Edge Tunnel, and Router is now at [openziti-bins].
  • The Flake also includes a WiP NixOS modules for these components.
  • Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with +no issues seen so far
  • Moved the console to traefik routing service (zac.$DOMAIN) and +controller/edge router stay at zt.$DOMAIN, but have registered consul +services

Cicero & Tullia Integrations

Cicero & Tullia Features

  • Improvements to Tullia task aggregation to make [cardano-addresses] build +correctly.
  • Better tullia CUE lib default for tags [tullia-commit-4df3c5d].
  • Put cache.nixos.org back in cache.iog.io's upstreams. This is now +considered a public cache again, and without it some Cicero evaluations had +to build huge packages.
  • Started working on a flake-parts module for Tullia.
  • Started working on cutting down Tullia task build time by putting facts in +JSON files.
  • Fixed running into kernel arg limit by reading tullia's DAG from a file
  • Merged [tullia-pull-9] that fixes several issues related to error reporting. +and escaping.
  • Added Mac builders in Cicero on CI-World.
  • Started work on Tullia invocation caching.

Spongix

  • A lot of progress on an SQlite backed version of Spongix, it already supports +the full HTTP binary cache protocol but still lacks comprehensive testing and +some tuning, as well as recursive lookups.
  • First steps in the implementation of the nix-daemon ssh-ng protocol so +Spongix can be used via SSH and we can get rid of basic auth.

Bugs

  • Discovered Cicero bug where Nomad reschedules cause the Github commit status +to get stuck in pending
  • Discovered Cicero race condition bug around concurrent transactions for +codependent actions.
  • Fixed tullia task order bug in [cardano-addresses]
  • Diagnose Cicero action not triggered in [abcirdc]
  • Fixed meta/description of the Tullia package in [tullia-pull-7]
  • Add Vault token loop alerts in [bitte-cells-pull-40]
  • Ongoing investigation on recurring Patroni and nomad-follower issues related +to token rotation.
+ + + + \ No newline at end of file diff --git a/2022-08-31-consensus/index.html b/2022-08-31-consensus/index.html new file mode 100644 index 00000000000..c1e683ff628 --- /dev/null +++ b/2022-08-31-consensus/index.html @@ -0,0 +1,109 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 9 min read
Damian Nadales

Executive summary

  • We did most of the heavy lifting required to integrate the Conway era.
  • We have property tests for the UTxO HD backing store API implementations. A +possible bug was identified. Work is ongoing to make sure the property-tests +cover all the relevant cases.
  • We implemented and benchmarked the "anti-diff" prototype to speed up the UTxO +HD functionality. Results show a rough speedup of 4x to 5.5x across +several scenarios. Note that: "Data reported by tasty-bench is only of +indicative and comparative significance.". +We are investigating additional performance improvements. The "anti-diff" +prototype and benchmarks are still pending code review.
  • We elaborated a draft specification for the Genesis implementation and +ChainSync jumping optimization.

Workstreams

Conway

  • Integration PR of the minimal Conway era (Issue #3963, PR +#3971).
  • Discussions with Ledger revealed possible sources of confusion about which +data should be changed in the Conway era. As a result, a new technical debt +issue was raised, which does not block the integration of the Conway era +(Issue #3976).

UTxO HD

  • Issue #3954, branch: The functionality of a +backing store, which is the interface to the on-disk part of ledger state in +UTxO-HD, is tested at a high level through the OnDisk tests. However, some +functionalities remain untested, e.g., reads of ranges of keys. As such, we +have implemented quickcheck-state-machine tests that exercise backing stores +directly. The tests are reusable for different backing store implementations +because the tests are implementation-agnostic: Any backing store that conforms +to the backing store interface can be plugged into the tests. Work is still +ongoing to label/monitor the tests, such that we can verify that interesting +cases are being tested. Furthermore, a possible bug has been identified in the +LMDB backing store with respect to range reads, though the bug has not been +resolved yet.

  • Issue #3946, branch, PR #3882: The +"anti-diff" prototype proposes an alternative approach to keeping track of +sequences (more specifically, FingerTrees) of diffs. These diff sequences +are a component of the in-memory parts of the ledger state in UTxO-HD. Since +the consensus code often requires the cumulative diff of a sequence of diffs, +the current implementation "caches" cumulative diffs of each subtree in the +diff sequence. This caching allows relatively fast reconstruction of the total +cumulative diff, but this caching proved to incur a non-negligible cost: when +we manipulate diff sequences through splits and appends, we force re-computing +a logarithmic number of caches. This is problematic, since we often split and +append in consensus: we split when we flush diffs to a backing store or when +we roll back blocks, and we append when pushing blocks. The new approach +should reduce the overhead of this caching.

    We implemented micro-benchmarks for the "anti-diff" prototype: we +first generate a sequence of commands (Forward, Push, Flush, or +Rollback) through a simulation, after which we measure the performance of +applying the commands to a diff sequence. In this context, Forward means +forwarding of values through a diff, whereas Rollback means switching to +a different fork by rolling back diffs/blocks and pushing new ones. +Moreover, we compare the performance for the two implementations: the +"legacy" approach, and the anti-diff approach.

    Some preliminary results were positive, but we needed to revisit the +benchmark's configuration to obtain more definitive results. After a +discussion with @dcoutts and the consensus team about this configuration +(e.g., number of commands generated, choice of the security parameter k), +the benchmarks should now be closer to the realistic setting. The following +configuration specifies the default configuration that is used in the +benchmarking code:

    • Number of commands generated: 10_000
    • Security parameter k: 2160
    • Number of initial backing values: 100
    • Number of key-value pairs deleted by a push: 50
    • Number of key-value pairs inserted by a push: 50
    • Number of key-value pairs forwarded by a forward: 50
    • Probability of a large (in the range [1000, 2000]) rollback: 0.05
    • Probability of a small (in the range [1, 10]) rollback: 0.95
    • Order of commands:
      • An equal number of forward and pushes.
      • 1 flush every 10 pushes.
      • 1 rollback every 100 pushes

    Moreover, we run four benchmark scenarios:

    • Default configuration
    • Without rollbacks
    • With only small rollbacks
    • Without rollbacks, larger flushes (1 flush every 100 pushes)

    How to read results

    Note: this section uses documentation from the +tasty-bench package to +explain how to read the results of running our benchmarks.

    Running a benchmark scenario gives us the following (curated) output:

    ...
    AntiDiff: OK (18.27s)
    2.527 s ± 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x
    LegacyDiff: OK (32.73s)
    10.829 s ± 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory
    ...

    The output says that the first benchmark, which exercises the anti-diff +prototype, was repeatedly executed for 18.27 seconds (wall-clock time), +its predicted mean CPU time was 2.527 seconds and means of individual +samples do not often diverge from it further than ± 47 milliseconds +(double standard deviation). We also configure the RTS to collect GC +statistics, which enables tasty-bench to estimate and report memory usage. +This data is reported as per RTSStats fields: allocated_bytes, +copied_bytes and max_mem_in_use_bytes. So, the output of the first +benchmark says that a total of 2.1 GB of memory was allocated, that a +total of 544 MB of memory were copied, and that the peak memory in usage +was 2.2 GB. We read the output for the second benchmark in the same way.

    Furthermore, the benchmark compares the mean CPU times for +both the anti-diff and legacy approaches: In this case, the mean CPU time +for the anti-diff approach is ~0.23x the mean CPU time for the legacy +approach. Conversely, the mean CPU time for the legacy approach is +1 / 0.23 ~= 4.35x the mean CPU time for the anti-diff approach. We will +call 0.23x the improvement factor. We will call 4.35x the speedup.

    Note that these improvement factors (and reported results) are subject to +noise, randomness, the specific configuration parameters, and the whims +of statistics. Data reported by tasty-bench is only of indicative and +comparative significance.

    Results

    For each of the 4 scenarios, we list the results of running the anti-diff and +legacy approaches 5 times. We run the benchmarks 5 times to get an indication +of whether the results are similar across multiple runs. Furthermore, we +calculate the accompanying ranges (if applicable) of improvement factors and +speedups.

    Note also the decrease in total bytes allocated and total bytes copied for +the anti-diff approach compared to the legacy approach.

    Default configuration

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff2.533 s (0.23x)4.7 ms2.1 GB557 MB2.4 GB
    Run 1: LegacyDiff10.792 s162 ms6.8 GB2.3 GB2.4 GB
    Run 2: AntiDiff2.508 s (0.23x)245 ms2.1 GB515 MB2.2 GB
    Run 2: LegacyDiff10.850 s30 ms6.9 GB2.3 GB2.2 GB
    Run 3: AntiDiff2.562 s (0.23x)5.0 ms2.1 GB552 MB2.2 GB
    Run 3: LegacyDiff10.993 s149 ms6.9 GB2.3 GB2.2 GB
    Run 4: AntiDiff2.168 s (0.22x)5.3 ms1.8 GB434 MB2.0 GB
    Run 4: LegacyDiff9.976 s39 ms6.3 GB2.0 GB2.0 GB
    Run 5: AntiDiff2.527 s (0.23x)47 ms2.1 GB544 MB2.2 GB
    Run 5: LegacyDiff10.829 s148 ms6.8 GB2.3 GB2.2 GB
    • Improvement factor: [0.22, 0.23]
    • Speedup : [1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]

    No rollbacks

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff1.638 s (0.19x)36 ms1.4 GB181 MB2.4 GB
    Run 1: LegacyDiff8.656 s207 ms5.7 GB1.5 GB2.4 GB
    Run 2: AntiDiff1.638 s (0.19x)75 ms1.4 GB181 MB2.2 GB
    Run 2: LegacyDiff8.654 s322 ms5.7 GB1.5 GB2.2 GB
    Run 3: AntiDiff1.663 s (0.19x)74 ms1.4 GB181 MB2.2 GB
    Run 3: LegacyDiff8.799 s216 ms5.7 GB1.5 GB2.2 GB
    Run 4: AntiDiff1.645 s (0.19x)51 ms1.4 GB181 MB2.0 GB
    Run 4: LegacyDiff8.732 s261 ms5.7 GB1.5 GB2.0 GB
    Run 5: AntiDiff1.639 s (0.19x)19 ms1.4 GB181 MB2.2 GB
    Run 5: LegacyDiff8.653 s234 ms5.7 GB1.5 GB2.2 GB
    • Improvement factor: 0.19
    • Speedup : 1 / 0.19 ~= 5.25

Only small rollbacks

NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
Run 1: AntiDiff1.833 s (0.18x)36 ms1.5 GB185 MB2.4 GB
Run 1: LegacyDiff10.362 s867 ms5.8 GB1.6 GB2.4 GB
Run 2: AntiDiff1.696 s (0.19x)30 ms1.5 GB185 MB2.2 GB
Run 2: LegacyDiff8.822 s106 ms5.8 GB1.5 GB2.2 GB
Run 3: AntiDiff1.702 s (0.19x)44 ms1.5 GB186 MB2.2 GB
Run 3: LegacyDiff8.906 s147 ms5.8 GB1.5 GB2.2 GB
Run 4: AntiDiff1.701 s (0.19x)47 ms1.5 GB185 MB2.0 GB
Run 4: LegacyDiff8.949 s197 ms5.8 GB1.5 GB2.0 GB
Run 5: AntiDiff1.677 s (0.19x)55 ms1.5 GB186 MB2.2 GB
Run 5: LegacyDiff8.856 s177 ms5.8 GB1.5 GB2.2 GB
  • Improvement factor: [0.18, 0.19]

  • Speedup : [1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]

    No rollbacks, larger flushes (every 100 pushes)

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff1.643 s (0.25x)21 ms1.5 GB196 MB2.4 GB
    Run 1: LegacyDiff6.591 s351 ms4.0 GB1.4 GB2.4 GB
    Run 2: AntiDiff1.616 s (0.25x)47 ms1.5 GB196 MB2.2 GB
    Run 2: LegacyDiff6.520 s232 ms4.0 GB1.4 GB2.2 GB
    Run 3: AntiDiff1.640 s (0.25x)34 ms1.5 GB196 MB2.2 GB
    Run 3: LegacyDiff6.540 s150 ms4.0 GB1.4 GB2.2 GB
    Run 4: AntiDiff1.635 s (0.25x)76 ms1.5 GB196 MB2.0 GB
    Run 4: LegacyDiff6.589 s131 ms4.0 GB1.4 GB2.0 GB
    Run 5: AntiDiff1.628 s (0.25x)19 ms1.5 GB196 MB2.2 GB
    Run 5: LegacyDiff6.490 s5.9 ms4.0 GB1.4 GB2.2 GB
  • Improvement factor: 0.25

  • Speedup : 1 / 0.25 ~= 4

Genesis

  • We elaborated a draft of the specification of the Genesis implementation and +the ChainSync Jumping optimization. In particular, this includes a proof +sketch that the latter preserves liveness and safety in all cases (Issue +3964).
    • @nfrisby's main realization during this sprint was that he had been +focusing so far on the case where the selected chain is an extension of +the intersection of our peers' ChainSync candidates.
    • This is the main case, ie an "absorbing" state, but it's not the only +case.
    • The new proof sketch begins by case splitting on that predicate, and +that made the sketch quite a bit easier to follow.
  • We continued working on the "happy path" ChainSync Jumping prototype (Issue +3960).

Technical debt

  • We started working on the issues required to re-enable nightly CI runs.. +Nightly CI runs have far more lax time constraints, which gives the option to +run significantly more property tests than in our regular CI. To this end, we +merged a PR to easily adapt the number of tests globally (PR +#3947).
+ + + + \ No newline at end of file diff --git a/2022-09-01-ledger/index.html b/2022-09-01-ledger/index.html new file mode 100644 index 00000000000..47ee2c65f56 --- /dev/null +++ b/2022-09-01-ledger/index.html @@ -0,0 +1,46 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

Ledger Update

Since finishing up support for the Vasil Hardfork, the ledger team has been +focused on two main things: a new ledger era and technical debt.

New minimal ledger era

We have implemented a new ledger era named conway which is nearly identical +to the babbage era. This has been the first time that we have been able to see +what a minimal ledger era looks like. We have finished this task, modulo any +integration issues that might come up. The only thing that the conway era +does differently from the babbage era is provide support for rotating +the master keys using the hardfork combinator's state translation. +We may end up adding features to the conway era, but it is a nice exercise +seeing what it looks like to get a minimal ledger era supported in all the +downstream components.

Addressing technical debt

We have been addressing technical debt, mostly in an effort to make the +repository a more friendly code base to work in.

  • We have begun work on a ledger API, called cardano-ledger-api.
  • We have done a big re-design of the major type classes used in the ledger. +With hindsight on our side, we now have something much more organized and +easier to use.
  • We have done a lot of re-naming. The names across eras are now much more +uniform, avoid certain confusions that plagued us, and are clearer in where +they are from.
  • We have reduced a lot of code duplication that could lead to bugs if you +do not have the whole code base in your head.
  • We have added a handful of performance improvements.
  • We added type safety in a number of locations. In particular, the type of +values that can be minted in a transaction no longer allow for Lovelace +in the type, and some functions which used to handle both timelock scripts +and plutus script now correctly enoforce at the type level that only one of +them can be used.
  • We made our generators so that they now produce a much richer set of +valid serializations. There is room within CBOR to serialize the same +data structure in multiple ways, and it is helpful to have the generators +use a wide variety.
  • We have begun re-organizing our test suites.
+ + + + \ No newline at end of file diff --git a/2022-09-16-ledger/index.html b/2022-09-16-ledger/index.html new file mode 100644 index 00000000000..4b2a82a886d --- /dev/null +++ b/2022-09-16-ledger/index.html @@ -0,0 +1,49 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

Ledger Update

We have been focused nearly entirely on addressing technical debt.

  • We introduced more consistent naming across eras, this time for the auxiliary data. +See 3032.
  • We made clear how the consumed functions differs between eras (which was a previous source of +confusion), and added some related support to the fledgling ledger API. +See 3016.
  • We added clarity and organizational consistency to the main ledger era type synonyms. +See 3017.
  • We removed code duplication related to the input data hashes. +See 3018.
  • We split up a large module into smaller components. The large module was actually causing our +CI to time out. +See 3020.
  • We cleaned up stale information in our cabal files, and upgraded cabal 3.8. +See 3023, +3031, +and 3028.
  • We made consistent, standalone TxOut (transaction output) modules for every era. +See 3024.
  • We brought consistency to a maddening inconsistent use of type variables indicating the specific +choice of cryptographic primitives. In particular, all uses of crypto have been renamed to c. +See 3027.
  • We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric +types that will compose better in the future and which simplifies the constraints. +See 3029.
  • We consolidated some existing fragmented logic regarding how we gather the scripts needed for a +given transaction. This is a much needed cleanup to prevent future mistakes. +See 3019.
  • We fixed a problem with our generators that was causing a fair number of our property tests to +fail in CI. +See 3039.
  • We have started the work to update Plutus. This will bring support for SECP in the next major +protocol version, and also address a +problem +that we current have evolving the cost models. +See 3030.
  • We addressed a small issue that came up when integrating the conway era downstream, namely +the lack of some serialization instances. +See 3022.
+ + + + \ No newline at end of file diff --git a/2022-09-19-db-sync/index.html b/2022-09-19-db-sync/index.html new file mode 100644 index 00000000000..46e50f7fd44 --- /dev/null +++ b/2022-09-19-db-sync/index.html @@ -0,0 +1,43 @@ + + + + + +DB Sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB Sync Team Update

· 2 min read
Kostas Dermentzis

DBSync Update

New Tag

We created a new db-sync tag 13.0.5 which addresses shortcomings of the last +release 13.0.4. It is currently under testing. +The Changelog is +here and in more details:

  • We fixed fees for tx with phase 2 failure that didn't include a total collateral field. +1248

  • We fixed an issue that could cause db-sync to crash if a specific rollback occured. +1247

  • DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but +could result in the wrong CBOR encoding being inserted. +1217

  • All the fixes above come with unit tests which validates the fix.

  • Added support for preprod and preview from docker. DBSync no longer needs to include the configs +for different networks, these are directly fetched from the cardano world. +1254

  • We added better support from docker for the new disable options and the overall documentation. +1260

All the above were also backported to the master branch

Open source

We made the db-sync board public, so +everyone can have access on the issues we prioritise. +We also added new tasks to the board, some of them could be approachable to newcomers or people who +want to contribute.

Progress on tech debt and new features

  • 1223 was merged, which removes the +foreign keys from the db schema. This opens the road to a number of optimizations.

  • An additional fix on top of the previous work was added +1250

  • An initial version where DBSync does not rollback on restart is done here +1266. +This allows db-sync to restart much faster, without the need to delete data and reinsert them. In +the future it can also facilitate migrations in cases where the ledger snapshots have a breaking +change, without the need to resync everything from genesis.

+ + + + \ No newline at end of file diff --git a/2022-09-20-consensus/index.html b/2022-09-20-consensus/index.html new file mode 100644 index 00000000000..847c456eaa9 --- /dev/null +++ b/2022-09-20-consensus/index.html @@ -0,0 +1,77 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 4 min read
Damian Nadales
  • We proposed a fix for the performance degradation observed when running +distributed multi-node benchmarks in the UTxO HD feature branch. While this +fixed the problems observed when running local benchmarks, it broke the +ThreadNet tests due to concurrency issues. Therefore, we think it is wise to +start redesigning the UTxO HD mempool integration.
  • We did several rounds of code review on the alternative implementation of +diff-sequences required by the UTxO HD feature based on the idea of +anti-diffs. This alternative implementation is close to being merged, and the +next step is to integrate this to the UTxO HD branch, so that we can run +ad-hoc replaying and syncing from scratch benchmarks and compare these with +the baseline. The micro-benchmarks we elaborated for the alternative +implementation show speedups of up to 4x, so we are optimistic about the +performance of replaying and syncing from scratch benchmarks, however it is +important to notice that due to the nature of UTxO HD we will still be +slower than the baseline.
  • The final draft of the Genesis implementation specification is ready for +review.
  • We implemented a prototype for the happy path of Genesis' ChainSync Jumping +(CSJ). The prototype is slower than the baseline, however it is not the latest +version of the prototype and the jump interval is very small.
  • Work on integrating Conway has stopped since +priorities have changed.
  • We started work on benchmarking epoch-boundaries and epoch overhead +pr-4014. To this end, we made use of a modified version of our +db-analyser tool. We ran the new benchmarking setup using the Cardano +mainnet chain, and we can see that block tick and application take +substantially longer at epoch boundaries, although there are a couple of slots +during an epoch in which these computations take more than normal. We notified +the ledger team about these findings. We will use this modified version of +db-analyser to investigate the epoch overhead.

Workstreams

UTxO HD

  • Spent quite some time investigating the root cause of the degradation in +performance observed in the benchmarks. We run the make forge-stress +benchmarks locally in order to debug this behavior.

    • Transaction batching doesn't make a notable difference in the outcome +(considering we are using the in-memory backend).

    • The mempool batching implementation required asynchronous transaction +validation which is a violation of the LocalTxSubmission protocol +contract and therefore if we continued on that route, the impact would +have been quite big.

    • The STM logic we implemented by using a TMVar for the mempool internal +state was buggy and under certain circumstances it seemed to lock. +Reverting the mempool internal state to be stored in a TVar seems to +solve this problem.

    • The results we get after this change look almost identical to the ones +from the baseline.

  • The anti-diff prototype (PR +#3997) has +been reviewed and is close to being merged.

    • A follow-up issue (issue +#4010) +to integrate the anti-diff prototype in the various consensus packages +was created. A first version of the integration exists, and all tests +pass. A next step is to get some indication of the "real" performance gain +by profiling db-analyser (or cardano-node).

Genesis

  • Final draft of the Genesis implementation specification, now up for review.

  • Local benchmark setup for parameter tuning via the happy path ChainSync +Jumping (CSJ) prototype (Issue 3987).

    • Context: Our Genesis design requires us to check in with a large (~20) +number of servers periodically while syncing. These servers are offered +jump requests via the ChainSync protocol (hence the name), which they can +accept or decline. If a peer declines, the Genesis rule allows us to +determine whether a node actually has a better chain.

    • The "happy path" is when no peer declines a jump. We want this to have +close to no overhead compared to status quo, i.e. syncing without Genesis.

    • We implemented a prototype for this happy path, and are now starting to +test in various configurations (number of peers, latency, bandwidth) to +tune the performance of ChainSync jumping, i.e. how complicated our logic +of choosing when to jump needs to be.

      Example:

    • Simulated connection: 50 MBit/s, 50ms latency

    • Jump interval: 3000 slots (on the low end, could be increased to up to +3k/f)

    • Red: baseline (1.35.3), one peer in topology file

    • Blue: Preliminary version of our prototype, with 10 peers.

      It is slower by about ~30%, but it is not the latest version of the +prototype, and the jump interval is very small, making CSJ more of a +bottleneck.

Technical debt

  • Fix flakiness in ChainDB QSM tests (PR 3990).
+ + + + \ No newline at end of file diff --git a/2022-09-27-network/index.html b/2022-09-27-network/index.html new file mode 100644 index 00000000000..d3350214472 --- /dev/null +++ b/2022-09-27-network/index.html @@ -0,0 +1,55 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 3 min read
Marcin Szamotulski

Network Update

Ouroboros Network

Ouroboros Consensus

  • Recently we found out that the consensus does not log exceptions thrown during +intiialisation. This was fixed in +PR input-output-hk/ouroboros-network#4015 +As part of this pull request we also changed that all exceptions rethrown by +the connection handler thread are wrapped in ExceptionInHandler.

Some older items, which were not announced

  • We identified and fixed an issue related to socket activation (socket options +where not set for sockets passed through socket activation). +PR input-output-hk/cardano-node#3979 +This fix will be released in the next cardano-node release.

Cardano Node

  • We extended the NixOs service module so that one can modify socketPath, +runtimeDir, databasePath, traceSocketPathAccept, +traceSocketPathConnect and stateDir options. +PR input-output-hk/cardano-node#4196

IO-Sim

We resolved a number of issues before release of io-sim on hackage:

See PR #24.

We also improved experience for contributors of io-sim and typed-protocols by adding issue templates:

Typed Protocols

Input Endorsers Simulation

New features include:

  • Histograms of block arrival frequency, for both network (inbound) and CPU +(block validation). This is interesting to check that we're not overloading +the CPU block validation capacity, or network link capacity. Or alternatively +to observe the behaviour in an overload situation if we set the block +generation rate high enough.

  • Pie chart of utilisation of TCP links. This shows how small a fraction of +links are being used at any one time, and shows that once the system "warms +up" and is operating stably, most block delivery is ballistic.

  • Showing off the new screen layout combinators, that let us put multiple +charts, titles etc on screen at once and scale them to whatever screen or +video resolution we like without having to tweak numbers (this example is +scaled to fit 1080HD video resolution).

+ + + + \ No newline at end of file diff --git a/2022-09-30-ledger/index.html b/2022-09-30-ledger/index.html new file mode 100644 index 00000000000..6c6e29d879d --- /dev/null +++ b/2022-09-30-ledger/index.html @@ -0,0 +1,50 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

Ledger Update

We have continued focusing nearly entirely on addressing technical debt. +A lot of design work has begun for the next ledger era, +but we do not yet have anything concrete to share.

Technical debt issues completed

  • [issue-1676][pull-2992] We have finally removed the ledger dependency on the +cardano-prelude package. It was barely used in the ledger repository, and it added a dependency +that we did not want to maintain. It was a bit difficult to remove, and we had +to coordinate removing it from cardano-base. +A lot ended up going into pull-2992, due to the coordination effort, and we ended +up updating Plutus as well. +This means that we've now also made a lot of progress on the problematic cost model serialization +issues described in issue-2902. +In particular, after we resolve issue-3014, we will not have to wait an epoch before +releasing a cost model for a new version of Plutus, as we had to do for the Vasil HF.
  • [issue-3046][pull-3055] We moved a module that is now only used in Byron to a Byron package.
  • [issue-3047][pull-3054] We improved the interface to the Value (multi-asset) type.
  • [pull-3044] We debugged and fixed a tricky compilation issue. Certain kinds of field updates +were adding approximately 20 minutes to our compile time!
  • [issue-2932][pull-3036] As a part of our ongoing re-organization of the codebase, we +have added a Cardano.Ledger.[Era].Core module to each ledger era that has a TxBody class. +Most classes defined in the era should go in this new module. +We also re-export the Cardno.Ledger.Core module and the previous Cardano.Ledger.[Era].Core +modules from each era.

Technical debt in progress

  • [issue-3034][issue-3035][node-issue-4421] We are continuing to write benchmarks to understand exactly where +all the time is being spent on executing the TICKF transition. +The consolidation of the per-stake-credential stake distribution to the per-stake-pool +distribution does seem to account for a large amount of time (near a second as written, which we +have down to about half a second with some optimizations), +but this does not account for everything. +Applying the reward update may also be a big contributing factor.
  • [pull-3033][pull-3038][pull-3041] A separate team is working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort.
  • The nix scripts used to build our new +formal ledger model +do not work consistently for everyone, and we have been working on fixing these issues.
  • [issue-3014] We are still working on adding a versioning scheme to all of the ledger +serializers.
+ + + + \ No newline at end of file diff --git a/2022-10-02-consensus/index.html b/2022-10-02-consensus/index.html new file mode 100644 index 00000000000..8b10b18870a --- /dev/null +++ b/2022-10-02-consensus/index.html @@ -0,0 +1,76 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 4 min read
Damian Nadales

High-level summary

During the past two weeks, the consensus team continued its work on testing the +UTxO HD prototype. We completed the era-transition and backing store tests, and +the mempool tests are advancing at a steady pace. Regarding our work in the +Genesis design, we continued our collaboration with the research and networking +teams, and we continue investigating strategies for making the chain-sync +jumping prototype faster.

High-level status report

  • Finish the UTxO HD prototype: on track.
    • We worked on state-machine tests for the mempool, and spotted potential bugs +in the implementation. Investigation is ongoing.
    • We have a set of property tests for the backing store. We still need to +incorporate the improvements to the LMDB cursor API that these tests +made possible.
    • We merged the era-transition tests PR.
  • Genesis: on track.
    • Design work around Genesis continues in collaboration with researchers and +the networking team.
    • We continued trying to improve the performance of the chain-sync jumping +prototype. We gained additional insight on which parameters to tweak next. +In spite of the baseline still being faster, the current prototype already +achieves a significant speedup when compared to the naive approach of simply +running full chain-sync with all peers.
  • Tech debt: on track.
    • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

Workstreams

Finish the UTxO HD prototype

We continued working on property-tests for the UTxO HD prototype. In particular +we merged the era-transition tests +PR.

Backing store property tests

The backing store property tests +PR has been +reviewed. The next steps are:

  • Improve error handling and command generation.
  • Add coverage testing to check that we are not failing to cover interesting +test cases.

The monadic cursor API +went through its first review round. The API is in a relatively stable state. +This PR also unifies the cborg and serialise-based interfaces to LMDB +operations. The next steps are:

  • Write +quickcheck-dynamic +state-machine tests for this API.
  • Adapt the changes in the serialisation interface in the backing store property +tests. This will involve adding boilerplate code in consensus to make up for +the removal of the cborg-based interface.

LSM tree implementation

We worked on the LSM tree +prototype. In +particular, we focused on tuning the LSM tree design to the different workloads +that consensus has (eg syncing, normal node operation, etc).

Benchmarking the CSJ prototype

Work on improving the chain-sync jumping performance is ongoing. In particular +we compared the performance of different jump intervals, which, somewhat +surprisingly, do not make a significant difference. In particular, we are seeing +periodic "plateaus" where the chain-sync tip does not progress, but they are +much longer for the prototype. Our hypothesis is that this seem to be due to a +combination of the garbage collector (GC) pauses, and the actual time it takes +the non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo +fragment.

In the coming weeks we will try to shorten these plateaus via a combination of +tweaking GC options and less synchronisation in the CSJ governor.

The following plot shows the performance of the chain-sync jumping prototype +using different jumping intervals. It compares the syncing progress by plotting +the slots of adopted blocks against time. The baseline is still faster, however +it is worth noting that the current prototype already achieves a significant +speedup when compared to the naive approach of simply running full chain-sync +with all peers.

The second plot shows the syncing progress sliced to a chosen ~5min interval, +and includes, in addition to the slots of adopted blocks, the slots of the tip +of the ChainSync fragment. This allows us to see how far ahead of the selected +tip the CS dynamo is, i.e. how much room we have for BlockFetch not to get +stalled. It shows periodic behaviour (due to the forecasting limit), and shows +that the CS fragment tip is not progressing for significant periods +("plateaus").

Technical debt

We clarified a +common source of confusion around VRF tie-breaking and cross-era chain +selection. This PR involved correcting potentially misleading names of +VRF-related functions, and providing context for a particular VRF value is +used for tie-breaking.

+ + + + \ No newline at end of file diff --git a/2022-10-04-db-sync/index.html b/2022-10-04-db-sync/index.html new file mode 100644 index 00000000000..befa8ebbc82 --- /dev/null +++ b/2022-10-04-db-sync/index.html @@ -0,0 +1,43 @@ + + + + + +DB Sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB Sync Team Update

· 2 min read
Kostas Dermentzis

DBSync Update

Fast restarts

We fixed a long overdue issue in db-sync which caused long delays on restarts +1266. This has been +one of db-sync main objectives for this period. Restarts are now very fast, +because db-sync deletes almost nothing from the db, it just replays the ledger rules until it +reaches the tip of the db. The fix also improves reconnection speed, in cases where the node +restarts or the connection is temporarily lost. It also speeds up even more in cases where due to a +deployment mess up a very old snapshot or no snapshot at all is used.

Property based testing

We added stateful property based testing, using quickcheck-state-machine +1269. These tests use empty or +almost empty blocks to test the new behaviour of restarts and rollbacks.

These tests generate arbitrarily a list of symbolic commands from these:

RollForward Int
RollBack BlockNo
StopDBSync
StartDBSync
RestartNode
AssertBlockNo BlockNo

The commands are translated into real commands. For example RollForward Int will forge a new block +that fits on the current chain. These real commands are executed against db-sync using the mock +chain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync +which looks like this:

  Model
{ serverTip :: BlockNo
, dbSyncTip :: BlockNo
, dbSynsIsOn :: Bool
, dbSynsHasSynced :: Bool
}

Finally a number of postconditions are checked, related to the eventual block number of db-sync.

Tech Debt

We handled a number of tech debt in +1275 +This improves the code format of db-sync, deletes many queries that were never used and groups the +others. This tech debt resolution not only improves the experience of working in db-sync, but can +facilitate some of our other objectives, as it makes it very explicit which queries are used +during syncing and which indexes are necessary.

Smash

We worked on fixing an issue related to fetching pool metadata +1276. +The issue which is described in +1270

+ + + + \ No newline at end of file diff --git a/2022-10-04-node-cli-api/index.html b/2022-10-04-node-cli-api/index.html new file mode 100644 index 00000000000..0f14ab83f12 --- /dev/null +++ b/2022-10-04-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· One min read
Jordan Millar

Node-Api-Cli Update

2022-10-04 - 2022-10-18

Executive Summary

The majority of the team's time was spent between getting 1.34.4 ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to cardano-cli.

Completed

cardano-cli

cardano-api

cardano-node

In Progress

cardano-cli

cardano-api

cardano-node

+ + + + \ No newline at end of file diff --git a/2022-10-05-consensus/index.html b/2022-10-05-consensus/index.html new file mode 100644 index 00000000000..68ca5739db3 --- /dev/null +++ b/2022-10-05-consensus/index.html @@ -0,0 +1,52 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

During the past two weeks, the consensus team worked on improving the +performance of the ChainSync jumping logic, which is needed for Genesis. We also +rewrote the implementation of the mempool in the UTxO HD prototype which solved +the issues that prevented us from running system level benchmarks. Also on the +UTxO HD front, we have an improved implementation of the sequence-of-differences +(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for +the UTxO HD feature.

Executive summary

  • With the latest implementation of ChainSync jumping we are closer to the +baseline performance. In particular, the prototype seems to benefit from the +extra concurrency provided by additional capabilities.
  • We rewrote the implementation of the mempool in the UTxO HD prototype. This +rewrite was required due to performance problems we observed when running the +workbench. +These performance problems prevented us from running system level benchmarks. +The rewrite solved these issues. After the UTxO-HD: mempool +rewrite PR is +merged, we will contact the Benchmarking team so that they run the system +level benchmarks.
  • The implementation of sequences of differences based on anti-diffs was +integrated into the UTxO HD prototype. It is pending +review and +we also need to run replay and syncing benchmarks to confirm that this will +deliver a performance improvement, as observed in our micro-benchmarks.
  • The UTxO HD prototype +inspection +resulted in a list of +tests +needed for consensus to consider the UTxO HD prototype as fully tested.

Additional information

Genesis

Benchmarking setup: 50MBit/s, 50ms latency

  • Red: baseline
  • Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.

As ChainSync Jumping involves many concurrent network operations at every jump, +we tried to run the node with 6 instead of the default 2 capabilties.

  • Orange: baseline with 6 capabilities
  • Blue: CSJ prototype with 6 capabilities

This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

Further work includes whether we can tune the prototype to better handle few +capabilities, or to adapt the default number of capabilities (potentially just +while syncing).

+ + + + \ No newline at end of file diff --git a/2022-10-14-hydra/index.html b/2022-10-14-hydra/index.html new file mode 100644 index 00000000000..eba9f3c0a15 --- /dev/null +++ b/2022-10-14-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High level summary

This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the hydra-node over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks "past the opening of a Head". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.

What did the team achieve this week

  • Last week we thought we were done with ADR18, but were not ...
  • ... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence.
  • Implemented a first version for persistence #187 in response.
  • Enhanced CI to publish test results on our website
  • Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!
  • Pulled static executable feature #200 into scope, implemented it and merged it!
  • Received and read through a project proposal by a vendor (building a Hydra platform).

What are the goals of next week

  • Get backup/recovery #187 done with proper event sourcing (ADR18)
  • Cut the next release, version 0.8.0
  • Address open comments on specification document & complete the list of identified gaps between specification and implementation #452
  • Have the CI build macos artifacts
+ + + + \ No newline at end of file diff --git a/2022-10-14-ledger/index.html b/2022-10-14-ledger/index.html new file mode 100644 index 00000000000..5fcad40970d --- /dev/null +++ b/2022-10-14-ledger/index.html @@ -0,0 +1,53 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

High level summary

The ledger team is still primarily focused on addressing +technical +debt. +We now have the infrastructure for versioning our serialization schemes, +which we continue to put into action. +We have made first steps towards getting proper support for the +formal ledger repository +(in particular, we've added nix builds and +continuous integration support). +We are wrapping up an investigation of the performance of a critical +function used by the consensus layer for leader checks. +Finally, we are improving the packaging and versioning of our code.

Lower level summary

Completed Technical Debt

  • Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of +our code lives in the cardano-ledger-shelley package, though with hindsight we can say that +much of it should live in cardano-ledger-core. +We continue to move things to cardano-ledger-core, and have much more to come. [pull-3059]
  • We now have the infrastructure to support versioned serialization schemes. +The inability to do this has caused us a lot difficulties, +such as [issue-3003], [issue-2965] and [issue-2444]. +We are still in the process of switching to the versioned serialization scheme +(such as [pull-3078]), +but the infrastructure was completed in [pull-3063].
  • We now have proper nix and CI support for the formal ledger project. [pull-19]
  • A separate team is helping bring support for +CHaP +to all the cardano-node repositories. +We have been helping out with this effort.
  • A separate team continues working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. +We have been helping out with this effort.

In-progress Technical Debt

We also have several fairly large pull-requests in review +that we are working on.

  • In an on-going attempt to build out a more user-friendly API, +we continue to remove HasField instances in place of using micro-lenses. +The protocol parameters, in particular, are being worked on. [pull-3045]
  • We are also renaming record fields to be consistent across the repository. [pull-3062]
  • We are now cleaning up all the work we did to understand the performance +of the TICKF transition. We have some improvements to the computatation +as well. [pull-3068]
  • We are adding more documentation, in particular to our Twiddler functionality. [pull-3073]
  • The formal ledger is adding support for finite set theory. [pull-20]
+ + + + \ No newline at end of file diff --git a/2022-10-18-consensus/index.html b/2022-10-18-consensus/index.html new file mode 100644 index 00000000000..13f60b18480 --- /dev/null +++ b/2022-10-18-consensus/index.html @@ -0,0 +1,64 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 4 min read
Damian Nadales

High-level summary

During the past two weeks, the consensus team worked on adding property test for +different aspects of the UTxO HD prototype: era transitions, mempool, and +backing store. Thanks to these tests we were able to uncover a bug in the +prototype. On the Genesis front, we benchmarked a different version of the +ChainSync jumping prototype to try to improve its performance, but this did not +result in any noticeable speedup.

High-level status report

  • Finish the UTxO HD prototype: on track.
    • We focused on increasing test coverage for the UTxO-HD prototype:
      • We started implementing Cadano-eras transition property-tests.
      • We started implementing state-machine property-tests for the mempool.
      • We merged the mempool rewrite.
      • We started working on state-machine tests for the backing store. This +uncovered a bug in the range-read implementation of the LMDB backing +store.
  • Genesis: on track.
    • We benchmarked a version of the Genesis ChainSync Jumping prototype that +spreads out the ChainSync updates over a longer period of time. This did not +result in any noticeable speedup.
    • We investigated the overhead introduced by non-ChainSync components, but no +conclusions could be drawn from the benchmarks we ran.

Workstreams

Finish the UTxO HD prototype

We focused on increasing test coverage for the UTxO HD prototype. We also merged +the mempool +rewrite.

Era transition property tests

We started implementing Cardano era transition property +tests, +which are needed for making sure that the ledger tables get updated in the +right way when we move from one era to the next. There are at the moment two +important transitions.

  • Byron to Shelley: where all the UTxO is transferred from in-memory Byron +state (which has no tables) to the ledger tables of the Shelley state.
  • Shelley to Allegra: where the AVVM addresses must be deleted.

We have tests for the Byron to Shelley transitions. We are working on adding +the remaining ones.

Mempool state-machine tests

We started implementing state-machine property tests for the +mempool. +The mempool is currently tested via pure property tests, and use a ledger +state without tables. With the introduction of UTxO HD, testing the concurrent +behavior of the mempool became of crucial importance (eg now we have to +acquire locks to flush the backing store). In addition, we need to test a +ledger state with tables. These needs led to the creation of a new set of +property tests. In particular we aim to run parallel state-machine tests that +exercise the mempool in a way similar to how the node would make use of it.

Backing store property tests

We started working on state-machine tests for the backing +store that UTxO +HD uses. The property tests uncovered errors in the range-reads implementation +of the LMDB backing store. To facilitate fixing this bug, we made +changes to the Haskell +LMDB bindings.

Benchmarking the CSJ prototype

Prompted by previous benchmarks showing significant improvements in sync time by +using more capabilities, we implemented a way to spread out the ChainSync +updates over a larger period instead of firing them all at the same time. This +didn't result in a noticeable speedup.

We also benchmarked the prototype with CSJ disabled (such that just the dynamo +peer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule +out/confirm overhead by non-ChainSync (mainly BlockFetch) related components. +This results in era-specific behavior (speed is like the prototype in Byron, but +like the baseline in Shelley). This deserves a closer look in the future.

This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

  • Red: baseline
  • Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps.
  • Blue: like Green, jumps are spread out.
  • Orange: variant with no jumping, to measure unrelated overhead.

+ + + + \ No newline at end of file diff --git a/2022-10-19-node-cli-api/index.html b/2022-10-19-node-cli-api/index.html new file mode 100644 index 00000000000..ae706992f62 --- /dev/null +++ b/2022-10-19-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2022-10-19 - 2022-11-01

High level summary

This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:

  • Ask the node about the current mempool's capacity and sizes
  • Request the next transaction from the mempool's current list
  • Query if a particular transaction exists in the mempool

Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric tx_submit_fail_count has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:

  • Documentation improvments
  • Release 1.35.4 was merged & released
  • Exported various types from cardano-api that were requested by community members

Completed

cardano-cli

cardano-api

cardano-submit-api

cardano-node

cardano-testnet

  • None

In Progress

cardano-cli

cardano-api

cardano-node

+ + + + \ No newline at end of file diff --git a/2022-10-21-hydra/index.html b/2022-10-21-hydra/index.html new file mode 100644 index 00000000000..b170fdc45ae --- /dev/null +++ b/2022-10-21-hydra/index.html @@ -0,0 +1,29 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High level summary

This week, the hydra team reviewed and addressed several open comments on the +new HeadV1 specification, completing a list the of identified gaps between +specification and implementation while doing so. In the wake of the recent +demonstration of SundaeSwap running their DEX in a Hydra Head, they met with +them to capture feature ideas & incorporate their feedback on the roadmap, as +well as potential research avenues.

What did the team achieve this week

What are the goals of next week

  • Complete the last two items required for a version 0.8.0.
  • Cut the next release, version 0.8.0
  • Get backup/recovery #187 done with proper event sourcing (ADR18)
  • Have the CI build macos artifacts
+ + + + \ No newline at end of file diff --git a/2022-10-27-crypto/index.html b/2022-10-27-crypto/index.html new file mode 100644 index 00000000000..a63f2f64f1f --- /dev/null +++ b/2022-10-27-crypto/index.html @@ -0,0 +1,28 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level overview

The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to +meeting the acceptance criteria in cardano-base, +which lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and +we are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution, +but also progressing on the implementation.

Low level overview

SECP built-ins

  • (missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in PR 313
  • CIP-0049 was addressed in the editors meeting, and PR 250 was merged
  • The unit-tests PR 320 is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.

KES agent

  • We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them.
  • We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).
+ + + + \ No newline at end of file diff --git a/2022-10-28-hydra/index.html b/2022-10-28-hydra/index.html new file mode 100644 index 00000000000..2292dd99b3d --- /dev/null +++ b/2022-10-28-hydra/index.html @@ -0,0 +1,29 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High level summary

This week, the hydra team completed several user experience improvements to the +hydra-tui and hydra-node, and delivered a first version of persisted head +states by publishing release version +0.8.0. +Besides this, they met with researchers on topic of the HeadV1 specification and +kicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation.

What did the team achieve this week

  • Completed the UX improvements on the hydra-tui
  • Released version 0.8.0, which delivers a first version of persisted head states
  • Met with researchers on the HeadV1 specification
  • Started work on the RFP for our external audit

What are the goals of next week

  • Complete ADR18 implementation and get it merged
  • Start work on event-sourced persistence #580
  • Have a first plutus script gap closed #452
  • Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)
+ + + + \ No newline at end of file diff --git a/2022-10-28-network/index.html b/2022-10-28-network/index.html new file mode 100644 index 00000000000..317b020ba1d --- /dev/null +++ b/2022-10-28-network/index.html @@ -0,0 +1,60 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 3 min read
Marcin Szamotulski

High-level summary

The team has focused on debuging & fixing bugs for the P2P single relay release, which included

  • diagnosing, fixing and writing tests for a bug in peer-state-actions which +fortunately hasn't been released;
  • diagnosing & preventing misconfiguration of DNS

We also focused on developing peer sharing. We also held a session with +the scientists on eclipse evasion.

Detailed description

P2P Network Stack

During the past two weeks the team focused on p2p single relay release and peer +sharing. We found and fixed an important bug recently introduced in one of the +components of p2p networking stack (fortunately never released). Together with +a fix, we designed a unit test diffusion simulation as well as quickcheck +property test (both could reproduce it). We also changed the code in a way that +if such a bug is reintroduced in the future, it will be obvious to diagnose. +For more see:

Initial benchmarking run of the P2P code was executed. The results where +unlike what we see on the mainnet. We found a possible misconfiguration of the +cluster (caused by 0 TTL on domain names), which could be the direct cause of +it. We wrote a PR which rules out such misconfiguration. We are awaiting on +the next benchmarking results. See more at:

ouroboros-network#4106

We also started working on P2P single relay release. The PR +ouroboros-network#4120 +includes 108 patches cherry-picked from the master branch. We started +working toward integration these changes against the release branch of +cardano-node. Early next week we ought to be able to have an early version +of cardano-node with non experimental P2P support!

For more detailed release plan please see P2P - Single +Relay +issue.

Consensus

We identified and fixed missing error reporting in consensus +initialisation phase. See more at +ouroboros-network#4015

Cardano Node

We also made changes in cardano-node in order to give better experience for +node operators. This includes updating severities of some of the traces as +well as implementing new format of the p2p topology file. For more see:

Peer Sharing

We continued working on implementation of peer sharing. We have an early +implementation which will be reviewed and analysed in next weeks. We started +working on cardano-node integration. We need +PR #4392 to be merged +before such integration will be able to land in cardano-node, although this +is not blocking us currently. See more at:

Eclipse Evasion

We held a session which included Alexander Russel, Sandro Coretti-Drayton and +Nick Frisby from the consensus team. We discussed high lever design of the +eclipse evasion scheme, which is important for the design and implementation of +ouroboros-genesis. We got a positive feedback from the researchers.

IO-Sim

In this period we made little progress towards releasing IO-Sim on Hackage. +A single PR which added +a few missing instances of the STM monad.

Open Source

We made sure the CI runs for PRs which comes from forks (which is important to +accept contributions from 3rd parties).

Mithril Cardano Integration

We held initial discussions with Arnaud Bailly about possible path to integrate +mithril to cardano-node and take advantage of the ouroboros-network +diffusion layer.

+ + + + \ No newline at end of file diff --git a/2022-10-28-performance-and-tracing/index.html b/2022-10-28-performance-and-tracing/index.html new file mode 100644 index 00000000000..55db75c97be --- /dev/null +++ b/2022-10-28-performance-and-tracing/index.html @@ -0,0 +1,24 @@ + + + + + +Performance & Tracing Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & Tracing Team Update

· 2 min read
Serge Kosyrev

High level summary

On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline.

On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario.

Executive summary

  • The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale.
  • The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment.
  • The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.
+ + + + \ No newline at end of file diff --git a/2022-10-31-open-source/index.html b/2022-10-31-open-source/index.html new file mode 100644 index 00000000000..4877e88b07f --- /dev/null +++ b/2022-10-31-open-source/index.html @@ -0,0 +1,45 @@ + + + + + +Open-Source Team | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Open-Source Team

· 2 min read
Marcin Szamotulski

High Level Summary

  • We've been working toward publishing Cardano Backlog, currently its in +review by the IOG communication team.
  • We identified a number of libraries which can be published.
  • We setup and enhanced cardano-updates.

Detailed description

I am glad to announce that I was given the role of open-source advocate for +cardano project. In last few weeks we were making steps towards publishing our +backlog. It's currently under review by the communication team, although most +of the issues are already visible across various repositories.

The open-source initiatives have their own +project. It is set up +to help us track our major open-source activities. Right now there are two +work streams:

We identifies a number of libraries across all the teams which contribute to +Cardano which we would like publish to publish, see the following +link. Arnauld Bailly recently published +quickcheck-dynamic +library on Hackage. The networking team is slowly progressing towards +publishing io-sim and related packages, checkout the progress +here.

Thanks to Arnaud Bailly our Cardano Updates website has +a new look & feel! It's using docusaurus.io.

Christian Taylor carried recently a detailed analysis of our open-source +repositories. He collected many interesting metrics, which allows us to see +where we need to improve as an open-source project to make the Cardano project +and many smaller related libraries which we maintain be more open and available +for open-source contributors.

The graph below shows which documents the 55 most important Cardano +repositories are missing the most: +Documentation Adoption +You can expect we will improve in these metrics in the coming weeks.

+ + + + \ No newline at end of file diff --git a/2022-11-01-db-sync/index.html b/2022-11-01-db-sync/index.html new file mode 100644 index 00000000000..41a1bda3a01 --- /dev/null +++ b/2022-11-01-db-sync/index.html @@ -0,0 +1,35 @@ + + + + + +DB Sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB Sync Team Update

· One min read
Kostas Dermentzis

High level summary

The DBSync team is preparing a release which introduces schema simplifications, removes indexes, +unique and foreign keys. It also provides a way to fix older values and migrates without the need to +resync from genesis.

Lower level summary

Schema simplifications

Indexes, Unique and Foreign keys are removed in order to speedup syncing +#1295 +The same pr also introduces a different way to rollback, which doesn't rely on foreign keys and +indexes.

Performance

The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A +conservative number of these will be included in the next release and the rest can be found in +performance view.

Migrations and resyncing

The next release will be 13.1.0, it will enable a migration without the need to resync. It will also +introduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases +#1294

Release

The release has been mostly cherry-picked from master +#1294 and its scope can be seen +release view

+ + + + \ No newline at end of file diff --git a/2022-11-02-ledger/index.html b/2022-11-02-ledger/index.html new file mode 100644 index 00000000000..6c053d74a4d --- /dev/null +++ b/2022-11-02-ledger/index.html @@ -0,0 +1,52 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

High level summary

We have made the decision to use the +formal ledger repository +in place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure +to the model. In particular, we now have a lot of support for axiomatic set theory. +While the next ledger era is still in the design phase, most of the team remains working +on technical debt. +In particular, we have moved a lot more code out of the Shelley specific modules and into +a ledger core module, we have finished up our benchmarking around the problematic TICKF +ledger transition (while improving the performance), made conveniences to the development +environment, cleaned up all the recent changes to the cost model, added a lot of documentation, +fixed some flaky tests, and deleted some dead code.

Lower level summary

Axiomatic Set Theory

The formal ledger model now has support for much of the set theory that we make use of in +the formal ledger specifications. See [pull-20].

Completed Technical Debt

  • We have addressed issues with two of our most problematic and flaky tests. +See [pull-3039] and [pull-3093].
  • We have added more documentation and tests to the Twiddler module. This is a module which +makes our CBOR serialization round-trip tests much more robust, and will also hopefully +help enforce the mandate for downstream libraries to never re-serialize data that needs +to be hashed. See [pull-3073] and [pull-3095] +(we cannot merge 3095 just yet, due to a preference for merging other features).
  • We have finished our long analysis of the problematic TICKF transition. +We now have a lot of benchmarks surrounding this code, and have added performance improvements. +See [pull-3068] and [issue-3035].
  • We have restored support for +ghcid +in our repository. This is a tool for developing with Haskell that many of us find greatly +improves our productivity by providing us with constant feedback from the type checker. +See [pull-3112].
  • After much activity on the cost model, we have done some final clean up of the code. +See [pull-3075] and [pull-3101].
  • We moved a lot of the existing user facing documentation regarding native tokens into the +ledger repository, and cleaned it up +(most of the heavy lifting was done by our amazing technical writers). +See [pull-3091].
  • We removed dead code. See [pull-3089].
  • We moved a lot of code from the Shelley specific libraries to the ledger core library. +See [pull-3109] and [pull-3110].
  • We've removed more of the awkward legacy template Haskell names. +See [pull-3108].
+ + + + \ No newline at end of file diff --git a/2022-11-02-node-cli-api/index.html b/2022-11-02-node-cli-api/index.html new file mode 100644 index 00000000000..186e0ced73f --- /dev/null +++ b/2022-11-02-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2022-11-02 - 2022-11-15

High level summary

  • Documentation improvments
  • Merged community contributions
  • Exposing types from cardano-api requested by the community/other teamss
  • Test output has been improved so diagnosing failures is now easier
  • Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)
  • Refactoring of cardano-testnet making it more useable as a library (ongoing)
  • Release 1.35.4 was merged & released

Completed

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

cardano-cli

cardano-api

cardano-node

+ + + + \ No newline at end of file diff --git a/2022-11-02-release/index.html b/2022-11-02-release/index.html new file mode 100644 index 00000000000..0642c8f3531 --- /dev/null +++ b/2022-11-02-release/index.html @@ -0,0 +1,25 @@ + + + + + +Node Release Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node Release Team Update

· One min read
Samuel Leathers

Node Reelease Update

2022-10-19 - 2022-11-02

Executive Summary

The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset, +a temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8.

1.35.4 release candidates have been created and are being tested internally and externally.

Completed

In Progress

+ + + + \ No newline at end of file diff --git a/2022-11-02-system-test/index.html b/2022-11-02-system-test/index.html new file mode 100644 index 00000000000..f5df33aab58 --- /dev/null +++ b/2022-11-02-system-test/index.html @@ -0,0 +1,24 @@ + + + + + +System Test Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

System Test Team Update

· One min read
Dorin Solomon

High level summary

We have been focused on:

  • Fully opening our test results (on top of the existing tests & tools):
    See cardano-node-tests webpage.
  • Started to test and automate the new functionalities added in the 1.35.4-rc1 node tag
    See test results tracking page.
  • Made some improvements to the automated db-sync sync tests
    See db-sync tests.
  • Multiple cleanups and updates to the cardano-node-tests framework
  • Updated the nightly pipelines for the cardano-node-tests after the Babbage HF
+ + + + \ No newline at end of file diff --git a/2022-11-03-embedding-quality/index.html b/2022-11-03-embedding-quality/index.html new file mode 100644 index 00000000000..c268af2e93c --- /dev/null +++ b/2022-11-03-embedding-quality/index.html @@ -0,0 +1,25 @@ + + + + + +Embedding Quality Workstream | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Embedding Quality Workstream

· One min read
Dorin Solomon

High level summary

We made good progress on most of the Action Items we agreed on Lisbon, like:

  • Cardano System Tests was fully open to public (tools, tests, results) +See cardano-node-tests webpage.
  • We defined an user-facing-functionality template that is used with the cardano-cli team
    • this includes acceptance criteria & user stories, and definition of done
  • We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)
  • We started to apply a labelling convention on cardano-node issues that will be used to generate some visual dashboards with some metrics [TBD]
  • Ziyand Liu started an End-to-End Development and Testing Process for Plutus Features
+ + + + \ No newline at end of file diff --git a/2022-11-04-hydra/index.html b/2022-11-04-hydra/index.html new file mode 100644 index 00000000000..ece9dbc6722 --- /dev/null +++ b/2022-11-04-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High level summary

This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun preview network, see 0.8.0 release notes. They also completed implementation of ADR18 and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates #195 and alignment of the specification document with auditors.

What did the team achieve this week

  • Complete and merge ADR18 #579
  • Re-deploy hydra scripts to respun preview network, see 0.8.0 release notes #595
  • Have first gap of #452 in review.
  • Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot.
  • Engineering meeting to discuss hard forks and protocol parameter updates #195
  • Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions.
  • Drafted project scope for an external audit RFP.

What are the goals of next week

  • Implement event-sourced persistence #580
  • Answer the internal auditors questions
  • Have a draft RFP ready for a first review internally
  • Close some gaps #452
+ + + + \ No newline at end of file diff --git a/2022-11-04-mithril/index.html b/2022-11-04-mithril/index.html new file mode 100644 index 00000000000..b71d600ec03 --- /dev/null +++ b/2022-11-04-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Iñigo Querejeta Azurmendi

This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.

Low level overview

  • We have been moving forward on the implementation of the release process #500:
    • Setup of the new hosted environments for testing-preview, pre-release-preview and release-preprod with their terraform and GitHub environments #542
    • Adapted the CI workflows to work with the new release process #543
    • Publication of an ADR3
    • Publication of a dev blog post about Mithril networks evolution
    • Releasing our first Mithril distribution 2244.0
  • Worked on the API versioning mechanism #565
  • Worked on the implementation of the stores migration process for the signer and aggregator nodes #562
  • Prepared a Mithril devnet video demo #526
  • Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably #484
+ + + + \ No newline at end of file diff --git a/2022-11-11-crypto/index.html b/2022-11-11-crypto/index.html new file mode 100644 index 00000000000..f9174b82318 --- /dev/null +++ b/2022-11-11-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level overview

The SECP primitives AC has been met, and the test-vectors PR has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool PR has been merged, and we've adapted the KES secure PR to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (PR#). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork.

Low level overview

  • With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation.
  • We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool.
  • In parallel, we keep progressing on the KES agent
  • VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification.
  • Our libsodium fork now links directly to upstream libsodium.
+ + + + \ No newline at end of file diff --git a/2022-11-11-hydra/index.html b/2022-11-11-hydra/index.html new file mode 100644 index 00000000000..74dc7bba0ea --- /dev/null +++ b/2022-11-11-hydra/index.html @@ -0,0 +1,25 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team published together with Obsidian Systems a light paper +on our "Hydra for Payments" project (Link). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of hydra-node processes.

What did the team achieve this week

  • Published Hydra for Payments light paper (Link)
  • Have a draft RFP ready for a first review internally
  • Answered the internal auditors questions
  • Fixed a bug with following the chain when starting with persistence (#599)
  • Minor improvements to logging for better observability (#598, #600)
  • Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (#590)

What are the goals of next week

  • Implement event-sourced persistence #580
  • Close more gaps #452
  • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
+ + + + \ No newline at end of file diff --git a/2022-11-11-ledger/index.html b/2022-11-11-ledger/index.html new file mode 100644 index 00000000000..4049439a7c8 --- /dev/null +++ b/2022-11-11-ledger/index.html @@ -0,0 +1,56 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

High level summary

I am extremely excited to say that we now have a pull request up which introduces our new versioned +CBOR serialization. This was an enormous effort, but it will solve a host of problems that we have +had since the Shelley phase. It will take time to properly review it, and we will +need to put in a lot of effort to integrate it with the downstream components, but this is a huge +milestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction +serialization schemes.

We also have a draft pull request that reworks how deposits are tracked. Users of the system will +not notice any difference, but it is a necessary change needed to prepare the way for +decentralizing the governance of Cardano.

Finally, we continued to address technical debt. In particular, we continued to make progress on +bringing coherency and consistency to the code base with a common naming convention, and +improving some error messages.

Lower level summary

  • We have a pull request up for our new versioned CBOR serialization. +When we encounter a problem with our deserializers, it can be very difficult to implement a fix. +It is difficult because we can only fix such issues during a hard fork, and leading up to the +hard fork we must maintain two serializations for the same type in order to not cause unintended +network splitting (the problematic version must be used before the hard fork, +and the fixed version is used afterwards). +This can be especially tricky with the FromCBOR typeclass, since it is not always easy to +search for where all the problematic uses are located. +The new versioned CBOR serialization allows us to gracefully handle this transition. +See [pull-3138].
  • We proposed a CIP for backwards compatibility of the transaction serialization schemes. +See [pull-372].
  • We have draft for the new deposit tracking. +This draft is not as memory efficient as the final version will be, +but it is a sufficient proof of concept that we can write property tests against, ensuring +that we have not changed the semantics. +We will optimize after we are sure of the correctness. +See [pull-3127].
  • We now provide better support for debugging failed Plutus scripts in an important helper +function, named evaluateTransactionExecutionUnits. +In particular, it now returns all the information needed to rerun the script with exactly the +same arguments. This feature will end up appearing in the CLI and other tools from the Plutus +tools team. +See [pull-3135].
  • We did a lot more renaming to bring coherency and consistency to the code base. +See [pull-3126], [pull-3120], [pull-3118], and [pull-3116].
  • We have added a few things to the ledger repository to make it conform to the +Cardano Engineering Handbook +See [pull-3139].
+ + + + \ No newline at end of file diff --git a/2022-11-11-network/index.html b/2022-11-11-network/index.html new file mode 100644 index 00000000000..93b531d1c6e --- /dev/null +++ b/2022-11-11-network/index.html @@ -0,0 +1,37 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High-level summary

In last sprint we got a performance report of P2P performance testing cluster +(which consists of 50 nodes). There is a performance regression in the header +notification metric. The P2P cluster is constructed with the same +topology as the non-p2p reference one this indicates some regression which +needs to be further investigated. This poses a risk for releasing P2P.

We also continued to work on peer sharing: pull #4019.

We continued working on dynamic block production which is required for P2P +release for BP nodes: pull #3159.

We simplified the P2P topology format: issue #4559, pull #3888.

We added a new trace point for asynchronous demotions of local peers with +Warning severity. This trace is important for SPOs.

Detail description

Performance regression

Below we include a graph which shows the performance regression of the P2P code base vs non P2P.

On the x axis is time in seconds which measures the delay from the start of +the slot to when a header was received. The y axis is the percentile of nodes +that received a header. We are currently investigating possible causes of the +regression.

New P2P topology form

The new topology file format is described in this issue #4559.

Tracing improvements

  • We improved a handshake error reporting, pull #4136
  • We added TraceDemoteLocalAsynchronous rendered as DemoteLocalAsynchronous +in json format, pull #4127. Such demotions should be investigated by the +pool operator. They can indicate a problem in the deployed system, but also +they could indicate a remote problem in arranged connections with other SPOs.

Open Source Improvements

We improved documentation of io-sim and typed-protocols for open-source +contributors and/or maintenance tasks: pull #22, pull #45, pull #48.

+ + + + \ No newline at end of file diff --git a/2022-11-16-consensus/index.html b/2022-11-16-consensus/index.html new file mode 100644 index 00000000000..40e603c2f5e --- /dev/null +++ b/2022-11-16-consensus/index.html @@ -0,0 +1,84 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 6 min read
Damian Nadales

High-level summary

During the past two weeks, the consensus team started documenting the +implementation of the UTxO HD feature and continued developing tests for it. As +part of our work on UTxO HD, we improved the Haskell support for LMDB. We also +spent time working on the LSM tree prototype, and designed a parameter tuning +algorithm for it. Regarding our work on Genesis, our investigation of the +"plateaus" pointed at the TICKF slowdown on era boundaries as culprit. This +led us to developing a caching strategy that will not only remove the +aforementioned "plateaus", but can help alleviating the growing block production +delay on epoch switch. We also helped reviewing the block forge credential +hotswap feature, which is intended for use in the adoption of P2P.

We also worked on paying technical debt and fostering collaboration. In +particular, we improved the io-sim framework, which is crucial for testing and +simulating Cardano components. We also removed thunks that appeared on era +translations, and improved our diffusion pipelining feature. We are working on a +presentation for explaining Praos and Genesis.

High-level status report

  • Finish the UTxO HD prototype: in progress.
    • We added documentation for this feature.
    • We developed the second version of the mempool tests.
    • We fixed benchmarks that were inflating the speedup we observed in the +anti-diff implementation of sequences of differences. Speedups are now in the +range of [3.33, 4.75], which remain significant.
    • We continued improving Haskell LMDB support.
    • We finished implementing a "parameter tuning algorithm" for the LSM tree +prototype. This enables us to run experiments to check the correctness of +the algorithm.
  • Genesis: in progress.
    • Work investigating the "plateaus" in the ChainSync jumping prototype +pointed to the TICKF slowdown on era boundaries as culprit.
  • Tech debt:
    • We improved the capabilities of our io-sim library, which is crucial for +testing and simulating Cardano components.
    • We removed thunks from epoch translations in the ledger.
    • We added Linux CI support for lmdb-simple.
    • We got pending diffusion pipelining improvements merged.
  • Fostering collaboration:
    • We are working on a explanation of Praos and Genesis protocols.
  • Support:
    • Investigation of CSJ "plateaus" led us to developing a caching strategy for +TICKF that will not only remove these "plateaus", but can help alleviating +the growing block production delay on epoch switch.
    • We reviewed the block forge credential hotswapping feature which is intended +for use in the adoption of P2P.

Workstreams

Finish the UTxO HD prototype

We merged PR #4060, which adds a report documenting the UTxO HD +feature, and puts emphasis in explaining how the mempool works in combination +with UTxO HD.

We opened a draft PR with the second iteration of the property tests for the +mempool (#4076).

We fixed the Arbitrary instances for keys and values in DiffSeq benchmarks +(#4143). The problem was that we were testing with mostly small +values, which artificially boosted the performance gains we saw on benhcmarks. +Speedups are now in the range of [3.33, 4.75] across the different +configurations.

Backing store property tests

We focused on incorporating feedback on the monadic cursor API PR (#1). +This required us to make small tweaks to quickcheck-lockstep to test the new +API. We also updated the backing store property tests to use the new version of +the monadic cursor API.

LSM tree implementation

We worked on the LSM tree prototype. In particular: finished implementing a +"parameter tuning algorithm" that adapts the LSM tree design based on factors +like:

  • workload
  • machine specs,
  • and characteristics of the data being stored.

We are now running experiments to gather results and cross-reference them with +existing experimental results from the LSM tree paper to see if the algorithm is +working correctly.

Benchmarking the CSJ prototype

We focused on investigating the "plateaus" in the ChainSync tip, which turned +out to be due to the TICKF bug which we previously were only aware of in the +context of the long forging times near epoch boundaries. For the most drastic +patch by @nfrisby to speed up TICKF, full sync is speeding up by 7%.

The following plot shows that by caching the TICKF the ChainSync tip and the +VolatileDB tip progress at the same rate.

The plot below shows the speedup observed by caching the TICKF rule wrt the +baseline.

Technical debt

After addressing the PR comments, we merged PR #16, which implements +the MonadCatch instance for STM. This extends the capability of our io-sim +library, which is crucial for testing and simulating Cardano components PR #16 +closed #1461. This new feature was published as version 0.4.0.0 +of io-sim.

We continued with our work fixing the NoThunk errors required for enabling +nightly tests, with the help of TVarInvariant checks in strict-stm and +nothunks libraries. We proposed fixes in cardano-ledger that took care of +thunks that appeared in era translations (#3143). The fixes will be +integrated back into consensus when cardano-ledger approves and publish the +changes introduced in #3143.

We added CI support for lmdb-simple (#2). We currently test the build on +a Linux environment only.

We got pending diffusion pipelining PRs (#3857, #3860, +#3856) merged, after rebasing and addressing feedback.

Fostering collaboration

@nfrisby finished a visualisation tool and outlined scripts for the Praos and +Genesis explanation presentations. The idea is to produce a video that gives an +overview of these protocols.

Support

We started working on caching the computation of the TICKF rule +(#4054), since this was blocking our benchmarking work for +Genesis. In addition, this issue has the Cardano community quite +concerned, so we are hoping the work done in caching the +computation of the TICKF rule can help alleviating the growing block +production delay on epoch switch.

We reviewed the block forge credential hotswapping PR #3800 from the +networking team, which is intended for use in the adoption of P2P.

+ + + + \ No newline at end of file diff --git a/2022-11-16-node-cli-api/index.html b/2022-11-16-node-cli-api/index.html new file mode 100644 index 00000000000..08cf82b241a --- /dev/null +++ b/2022-11-16-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content
+ + + + \ No newline at end of file diff --git a/2022-11-16-performance-and-tracing/index.html b/2022-11-16-performance-and-tracing/index.html new file mode 100644 index 00000000000..d3443b6ed2a --- /dev/null +++ b/2022-11-16-performance-and-tracing/index.html @@ -0,0 +1,24 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Serge Kosyrev

High level summary

  1. P2P performance investigation is ongoing, in support of the networking team.
  2. SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support.
  3. Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing.
  4. On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started.
  5. We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.

Performance

We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes.

Tracing

We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis.

Infrastructure

The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends.

We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing.

A number of smaller workbench, data analysis & reporting improvements have been made.

+ + + + \ No newline at end of file diff --git a/2022-11-18-hydra/index.html b/2022-11-18-hydra/index.html new file mode 100644 index 00000000000..7260d172f96 --- /dev/null +++ b/2022-11-18-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team released version 0.8.1, which includes several fixes and a user-wished extension of the persistence introduced by 0.8.0 of replaying server outputs to make clients like the hydra-tui be aware of the latest hydra-node state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from hydra-poc to hydra!

What did the team achieve this week

  • Implemented replaying of server outputs to address #580
  • Released version 0.8.1 containing this and other fixes Release notes
  • Worked on the bounded tx validity as one of the on-chain script fixes, but couldnt finish it just yet #615
  • Collaborated with the education team on a Hydra tutorial.
  • Discovered and discussed issues with the seen ledger.
  • Renamed the Hydra repository hydra-poc -> hydra

What are the goals of next week

  • Create and discuss an ADR about handling tx validity correctly.
  • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
  • Have a team workshop / hackathon after the summit:
    • Retrospective
    • Roadmapping session
    • Hack on something complex or useful
+ + + + \ No newline at end of file diff --git a/2022-11-18-mithril/index.html b/2022-11-18-mithril/index.html new file mode 100644 index 00000000000..c4bde8f9609 --- /dev/null +++ b/2022-11-18-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level overview

The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks.

Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer.

Low level overview

  • Released a new Mithril distribution 2246.1
  • Completed the first stage of the store migrations process #562
  • Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes #565
  • Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage #576
  • Prepared a Daedalus synchronization benchmark video with/without Mithril #606
  • Upgraded the Cardano nodes of the testing Mithril networks to 1.35.4 #594
  • Worked on implementing SPO tests nodes on testing Mithril networks #563
  • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #588
  • Worked on the refactorizaton of the aggregator multi signer engine #398
+ + + + \ No newline at end of file diff --git a/2022-11-23-ledger/index.html b/2022-11-23-ledger/index.html new file mode 100644 index 00000000000..24f7338b47f --- /dev/null +++ b/2022-11-23-ledger/index.html @@ -0,0 +1,50 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

High level summary

We released CIP-1694, +our proposal for entering the Voltaire phase. +Please come join the discussion, this will be an incredibly exciting transition for +Cardano and we want everyone to participate!

We now have a sensible way to version all of the serialization schemes used in the ledger. +The draft pull request was polished, reviewed, and merged this week. +This solves many problems that have vexed us since the beginning of the Shelley ledger era.

Everyone working on the Cardano node is working together to improve our release process, +and the ledger team in particular dedicated one engineer to help with these efforts +for the next release.

Lower level summary

The Conway ledger era

The current proposal in CIP-1694 encompasses two new ledger eras. +The first era will be called Conway, after the English mathematician John Horton Conway. +The community facing aspects of the Conway ledger era will be very minimal, +but it will pave the way for introducing liquid democracy. +The details can be viewed here. +We do not yet have a formal specification for the Conway era. +Our plan is to debut the +formal ledger model. +Briefly, the Conway ledger era will:

  • introduce SPO voting for hard forks (in the spirit of the now abandoned CIP-47)
  • provide an on-chain mechanism for rotating the governance keys
  • re-plumb the ledger rules involving governance to be in line with CIP-1694

Versioned CBOR

We now have the ability to easily tie our serialization schemes to the Cardano +major protocol version. +We still aim to preserve backwards compatibility as much as possible, but we now have a principled +plan for resolving problems (see CIP-ledger-cbor). +In particular, we can now address several long standing issues, such as +issue-2444, issue-2965, and issue-3003.

The final (and massive!) pull request which brought us the versioning is pull-3138.

Deposit tracking

The draft pull request which was exploring how best to track individual deposits +is much closer now to being ready to take out of draft (pull-3127). +For background on the issue, see issue-3113. +This is quite an invasive change which effects many of our tests, which we are now addressing.

Technical debt

As always, we keep working on technical debt. +We have deduplicated a some things: pull-3129, pull-3162. +We have memoized a problematic computation (though more due diligence is needed before we can +merge): pull-3141.

Node release

We have been helping with the node release efforts. See pull-4608.

+ + + + \ No newline at end of file diff --git a/2022-11-25-crypto/index.html b/2022-11-25-crypto/index.html new file mode 100644 index 00000000000..5491b994813 --- /dev/null +++ b/2022-11-25-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The four open fronts that the crypto team is working on are:

  • MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team.
  • Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes
  • cardano-base: The VRF and BLS branchs are still open and in progress
  • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

Low level summary

MuSig2

  • We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library PR#31
  • We are introducing a more granular error handling mechanism PR#33
  • We rethought the API and made it more consistent with the underlying secp256k1 library PR#35

Mithril

  • The mithril crates in general will be published in crates.io, and we adapted the core library's README PR#616
  • We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information PR#620

cardano-base

  • We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) PR#341
  • SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions PR#344
  • Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus PR#266

KES agent

  • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
  • Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.
+ + + + \ No newline at end of file diff --git a/2022-11-25-hydra/index.html b/2022-11-25-hydra/index.html new file mode 100644 index 00000000000..5dc36d1a761 --- /dev/null +++ b/2022-11-25-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a presentation about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas.

What did the team achieve this week

What are the goals of next week

  • Monthly report & review meeting
  • Tie up several loose ends / branches.
  • Resolve Tx validity discussions & PRs.
  • Review cicero PR & try it out.
+ + + + \ No newline at end of file diff --git a/2022-11-28-network/index.html b/2022-11-28-network/index.html new file mode 100644 index 00000000000..fe0f06b0cae --- /dev/null +++ b/2022-11-28-network/index.html @@ -0,0 +1,64 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 4 min read
Marcin Szamotulski

Stake-Driven Data Diffusion Release for Relays

IOG networking team decided to release the Stake-Driven Data Diffusion with +Robust Optimised Peer Selection also more commonly known as P2P. In the +last update, we informed about a performance regression, but it turns out it +only affects block producers, and thus we highly advise against running it on +such nodes. Further investigation is required to find the cause of it.

On IOG's benchmarking cluster we have seen quite a good performance improvement +on block propagation itself. The cluster is running a static topology with +valency 6 (each node is connected to 6 other nodes). In which every of the 50 +nodes are block producers. The setup of this network is the same as mainnet. +We've seen 40-50% performance improvement on block propagation comparing to the +same cluster deployed with the same topology but using non-P2P nodes. We think +this performance improvement is caused by using full duplex connections. Quite +likely the transaction traffic floating in both directions on the same TCP +connection helps to keep the TCP window open. Note that in a cluster of 50 +nodes with valency 6 the probability of having at least one duplex connection +is more than 50%. We don't expect the same improvement on mainnet because the +network is much wider and the transaction traffic is not as large.

Just before the release we squashed two small bugs:

  • issue #4163 - top level integration bug in keep-alive;
  • issue #4177 - a bug in outbound-governor;
  • PR #4165 - a fix cardano-ping support of NodeToNodeV_10.

Peer Sharing

We were carrying a review of peer sharing PR.

DeltaQ

Neil Davies was invited to give a guest lecture entitled Avoiding System Catastrophes at UCLouvain.

What have we achieve last sprint

  • issue #4163: we found out that a control message is not passed to the +keep-alive mini-protocol, this results in every demotion executing demotion +timeout rather than a graceful termination. With the fix the node will no longer log:

    { "kind": "PeerStatusChangeFailure"
    , "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"
    , "reason": "TimeoutError"
    }
  • issue #4177: we fixed an assertion failure in the outbound-governor; now +we don't try demoted peers which are being demoted already.

  • PR #4155: we refactored ouroboros-network packages. There's a top level +ouroboros-consensus-diffusion package which integrates network +& consensus code. We also introduced:

    • ouroboros-network-api package which contains the API shared between +network & conensus;
    • ouroboros-network-mock package which contains mock API used for testing +(e.g. a mock chain & chain producer, etc.)
    • ouroboros-network-protocols package which contains implementation of all +(but handshake) mini-protocols, exposes a testlib and contains test +and cddl components.

    This made the dependency tree of network & consensus packages much +cleaner.

  • PR #4169: we described the usage of release branches in CONTRIBUTING.md +doc.

  • PR #4165: we fixed cardano-ping support of NodeToNodeV_10 protocol.

DeltaQ

The abstract of the talk:

An essential step to ensuring that distributed systems are fit for +purpose.

Distributed systems have become an integral part of our society and +daily lives. We are, both implicitly and explicitly, individually as well as +collectively, placing ever more trust in them.

Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes +well beyond notions of functional correctness (i.e. never getting the wrong +answer). We need them to deliver the desired outcomes in a timely, robust, +reliable, resilient fashion, at scale and in a sustainable way (both +economically and environmentally).

This all sounds like a worthy aspiration, but what would be a practical +approach to capturing and reasoning about these issues? How can we ensure that +systems can meet their fit-for-purpose objectives, not just in their design but +as they are deployed, encounter the imperfect world, are scaled to become +economic, and proceed into ongoing maintenance?

This talk will illustrate how the notions of Outcomes and Quality Attenuation +(as captured by ‘∆Q’) are being used to both frame the necessary notions and +provide a basis for assuring the refinement and reification of such systems, +from initial concept to operational infrastructure.

You can download the slides from here.

+ + + + \ No newline at end of file diff --git a/2022-11-30-consensus/index.html b/2022-11-30-consensus/index.html new file mode 100644 index 00000000000..db3a9619b66 --- /dev/null +++ b/2022-11-30-consensus/index.html @@ -0,0 +1,54 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 3 min read
Damian Nadales

High level summary

During the past two weeks, the consensus team merged improvements to the monadic +cursor API that was needed to implement LMDB range reads, which is in turn +required for the implementation of the UTxO HD feature. We added tables to +several tests in for the UTxO HD feature, which increases our confidence in the +correctness of the prototype. The mempool property tests are close to being +completed. Also, we finished the LSM tree tuning algorithm.

On the Genesis front we started simplifying the BlockFetch logic with +CSJ-specific workloads in mind.

We are also documenting the Block Diffusion Pipelining feature, and added a +high-level overview of consensus to the top level documentation of +ouroboros-network.

Workstreams

UTxO HD prototype

We merged the implementation of a monadic cursor API (#1)) which was +needed to solve a bug with LMDB range-reads. After this PR was merged, we focused on +bridging the gap between the lmdb-simple interface and consensus by facilitating +using lmdb-simple's cursor API without Serialise constraints (#3).

We refactored the backing store property tests to use quickcheck-lockstep +(#4081).

We added tables to the mock ledger in the UTxO-HD feature branch +(#4184). Every test that used to run with SimpleBlocks now uses +tables. This will enable us to exercise the UTxO HD mempool integration by +leveraging the existing mempool property-tests. The new state-machine +property-tests are still needed for testing the parallel behaviour of the +mempool.

Our work on the mempool state-machine tests revealed the need for improvements +in the quickcheck-state-machine library. Parallel testing assumed that the +state machine did not have access to mutable references. However, the mempool +tests require the use of such mutable references for mocking the ledger +interface. As a result, our parallel tests were failing with rather obscure +messages. @Jasagredo submitted a pull request (#12) that allows for +new mutable references to be created at each run of the state machine.

Backing store property tests

LSM tree implementation

We finished the LSM Tree tuning algorithm. We are currently tidying up the code +and gathering results (i.e., plots and their interpretation).

CSJ prototype

We started simplifying the BlockFetch logic with CSJ-specific workloads in mind.

New VRF and KES crypto integration

Started working on supporting new version of StandardCrypto which uses compact +KES and batched VRF (#4151).

Technical debt

We reviewed the existing state of the Block Diffusion Pipelining document. We +are now working on the "Implementation" section (#4020).

Fostering collaboration

We cleared up our understanding of the error dynamics of forecasting +(#4146 and #4174).

We submitted a pull request that adds an overview of consensus to the top level +documentation of +ouroboros-network (#4197). This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

https://github.com/input-output-hk/ouroboros-network/pull/4197

+ + + + \ No newline at end of file diff --git a/2022-11-30-node-cli-api/index.html b/2022-11-30-node-cli-api/index.html new file mode 100644 index 00000000000..57b1cefd9db --- /dev/null +++ b/2022-11-30-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2022-11-30 - 2022-12-13

High level summary

PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

Completed

docs

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

cardano-cli

cardano-api

cardano-node

+ + + + \ No newline at end of file diff --git a/2022-11-30-performance-and-tracing/index.html b/2022-11-30-performance-and-tracing/index.html new file mode 100644 index 00000000000..e458fe0b71f --- /dev/null +++ b/2022-11-30-performance-and-tracing/index.html @@ -0,0 +1,26 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Serge Kosyrev

High level summary

  1. Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release.
  2. SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench.
  3. The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks.
  4. Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started.
  5. Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.

Performance

We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release.

Tracing

For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them. +The idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time.

To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics.

Infrastructure

Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation.

In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model.

The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged. +We are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration.

We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability.

We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP.

As usual, a number of smaller workbench, data analysis & reporting improvements have been made.

+ + + + \ No newline at end of file diff --git a/2022-12-01-db-sync/index.html b/2022-12-01-db-sync/index.html new file mode 100644 index 00000000000..348089ada2d --- /dev/null +++ b/2022-12-01-db-sync/index.html @@ -0,0 +1,36 @@ + + + + + +DB sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB sync Team Update

· One min read
Kostas Dermentzis

High level summary

The DB Sync team prepared a release 13.1.0.0-rc2 which includes many improvements for db-sync, +it makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces +migrations. This release finalises the objectives that were set for db-sync for the previous +3 months period and part of the syncing speed objective set for the next period +Changelog

Lower level summary

  • Branch release/13.1.0.x +includes all the improvements related to the release. The release is passing through the testing +phase and a number of bugs and issues have been fixed, like +#1312 +#1311. +Also many new unit tests have been added.

  • Part of the release branch is cherry-picked back into master, in a way that it respects the new +release and development process, so that it takes into account migrations +release process

  • The DB Sync team has also tagged release 13.0.6 which better supports preview and preprod for +docker.

+ + + + \ No newline at end of file diff --git a/2022-12-01-mithril/index.html b/2022-12-01-mithril/index.html new file mode 100644 index 00000000000..e4f3a90eb52 --- /dev/null +++ b/2022-12-01-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes.

Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer.

Low level overview

  • Implemented custom Mithril SPOs on testing/pre-release networks #563
  • Deprecated Signer Declarative Pool Id registration mode #585
  • Completed the second stage of the store automatic migration process #600
  • Completed the deployment pipelines to crates.io registry #588
  • Completed automatic generation of nodes/libraries versions manifest in releases notes #599
  • Completed CI/CD handling of PR from forks #597
  • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #586
  • Worked on signing the artifacts released in the distributions by the CI/CD #587
  • Worked on multi-platforms end to end test #601
  • Worked on the refactorizaton of the aggregator multi-signer engine #398
+ + + + \ No newline at end of file diff --git a/2022-12-01-system-test/index.html b/2022-12-01-system-test/index.html new file mode 100644 index 00000000000..000dc7c602f --- /dev/null +++ b/2022-12-01-system-test/index.html @@ -0,0 +1,25 @@ + + + + + +System Test Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

System Test Team Update

· One min read
Dorin Solomon

High level summary

During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the P2P Single +Relay functionality, and also tested some DB-Sync tags.

Workstreams

Framework improvements:

  • moved the System Test CLI Pipelines from BuildKite to Github Actions
  • improved the reporting tools to support the rerun of the failled tests and update of the reports
  • added support for Github API in report-aggregator, so reports will be generated from the GitHub nightly jobs from now on
  • added support for mixed topology - P2P, legacy, mixed topologies
  • planned the P2P Single Relay system test activities
  • added support to start regression tests with PV8 + better selection of tests

DB-Sync:

  • confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)
  • tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2
+ + + + \ No newline at end of file diff --git a/2022-12-02-hydra/index.html b/2022-12-02-hydra/index.html new file mode 100644 index 00000000000..df004562d60 --- /dev/null +++ b/2022-12-02-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team has worked on cleaning up several things in progress +after last week's summit. They have extended their model-based testing (MBT) +approach with transaction creation & observation +#410, solved +AcquirePointTooOld problems of the hydra-node with by changing the wallet +initialization #439. +Also, the Hydra researchers updated the security proofs of the Coordinated Hydra +Head, which are bound to be included in the Hydra HeadV1 specification.

What did the team achieve this week

  • Monthly review & report - will also be published on our website #644
  • Extended the model-based testing (MBT) with transaction creation/observation #410
  • Solve AcquirePointTooOld problems with new wallet initialization #439
  • Fixed our hydraw deployments (EC2 instances)
  • Created & discussed ADR21 within tx validity work
  • Received & discussed security proofs of Coordinated Hydra Head (requires more work)

What are the goals of next week

  • Get ADR21 accepted & close tx validity gap in our implementation
  • Complete review & integrate the Hydra tutorial
  • Review latest hydra-pay work
  • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec
  • Get Cicero (new CI) working
+ + + + \ No newline at end of file diff --git a/2022-12-09-crypto/index.html b/2022-12-09-crypto/index.html new file mode 100644 index 00000000000..d4534ecfeff --- /dev/null +++ b/2022-12-09-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The four open fronts that the crypto team is working on are:

  • MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency.
  • Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe.
  • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack.
  • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

Low level summary

MuSig2

  • [Still in progress] We are introducing a more granular error handling mechanism PR#33
  • We merged the API redesig PR#35
  • We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future PR#36

Mithril

  • We merged the individual signature PR#620
  • We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (kes repo)

cardano-base

  • Nothing new to report. Still working in merging these PRs.
  • We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a bug in GHC

KES agent

  • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
  • Fixed a 'use-after-free' bug in the KES agent.
+ + + + \ No newline at end of file diff --git a/2022-12-09-hydra/index.html b/2022-12-09-hydra/index.html new file mode 100644 index 00000000000..b04a6dc52fa --- /dev/null +++ b/2022-12-09-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team has worked on completing to "Validate coordinated head protocol against formal model", this is a huge step to verify the implementation is secure. They also worked on implementing ADR21 related to bounded tx validity which is now under review. HydraPay project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of issues they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced.

What did the team achieve this week

  • Document model based testing #194 & #641
  • Got ADR21, reducing gaps between implementation and specification, under review.
  • Complete review on hydra-tutorial.
  • Complete first round of review on HydraPay work #634
  • Meeting with Director of CyberSecurity frio IOG to unblock "the RFP prepared for the external audit" #606
  • Remove vasil-dev and testnet from smoke-test because they were not working #630
  • Fix flaky plutus-merkle-tree test #642
  • Refactor NetworkSpec to improve legilibility.
  • Fix benchmark cost for abortTx #631
  • Adapt nix.conf to the recent hydra-ci nix cache migration.

What are the goals of next week

  • Get ADR21 accepted & close tx validity gap in our implementation.
  • Integrate the hydra-tutorial.
  • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
  • Get Cicero (new CI) working.
  • Use reference inputs to reduce the cost of the commitTx.
+ + + + \ No newline at end of file diff --git a/2022-12-09-ledger/index.html b/2022-12-09-ledger/index.html new file mode 100644 index 00000000000..02ba2908a6d --- /dev/null +++ b/2022-12-09-ledger/index.html @@ -0,0 +1,59 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

High level summary

The Plutus tools team at IOG has started helping the ledger team to build out a user friendly +cardano-ledger-api package! +A GitHub project +will be filled out in the days ahead, +people interested in the API can use it to follow along and join in on the conversations.

The ledger team has started using +architectural decision records +to leave a record of important decisions that the team makes. +We will retroactively go back through past decisions and make ADRs for them.

The logic to track individual deposits is now nearly in place. +We are prioritizing correctness with our first pull request, and will follow up with +performance optimizations and general cleanup next.

Pointer addresses are being deprecated with the Cardano major protocol version 8. +See CPS-0002 +for more context.

Lower level summary

Cardano ledger API

The Plutus tools team has taken our minimal cardano-ledger-api package and started filling it +out and adding much needed documentation. +They have also added doctests! +In the days to come, the Plutus tools team will map out a lot more work for the API and record +it in this +GitHub project.

See

Architectural Decision Records (ADRs)

We are now providing more context and leaving a record of important decisions that are made +in the ledger. The first ADR explains the very lightweight process.

See

Tracking individual deposits

See ADR-3 +for background. +We now have the logic in place to track individual deposits, and a host of property tests +to make sure that the logic is correct. +The current implementation uses more memory than it needs to, and we will address that next, +with our hope being to only use one word (8 bytes) per registered stake credential. +There is a fair amount of other cleanup needed for general maintainability.

See

Removing pointer addresses

Pointer addresses, which have never seen any real use +(there are something like eleven on mainnet), are being deprecated starting at Cardano major +version 9. +CPS-0002 gives the context. +We are disabling them by first preventing transaction outputs containing them +from being serialized by the node at the moment we switch to version 9. +At the hard fork after that, we will translate the existing few pointer addresses +to enterprise addresses.

See

Technical debt

  • pull-3162 - Sometimes we have to put safeguards in place for hard forks which may never +be exercised. After we have passed the given hardfork, we are able to clean up the code +and simplify our logic. We removed all of the ones that we are currently easily able to.
  • pull-3165 - We improved the type safety of our code while also discovering and fixing +a serialization bug.
  • pull-3172 - We removed dead code.
  • pull-3175 - The Allegra and the Mary code used to be coupled in a particular way the we grew to +dislike. We made these two ledger eras now uniform with the rest of our code base.
  • pull-3184 - We organized our property testing code.
  • pull-3200 - The Plutus tools teams fixed an outstanding bug in the translation from the +ledger state to the Plutus script context.
+ + + + \ No newline at end of file diff --git a/2022-12-12-network/index.html b/2022-12-12-network/index.html new file mode 100644 index 00000000000..481be03d519 --- /dev/null +++ b/2022-12-12-network/index.html @@ -0,0 +1,28 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· One min read
Marcin Szamotulski

High level summary

In last sprint the team focused on preparations for the conference talk at +OPODIS 2022. We also worked on preparations to publish io-sim and related +packages on Hackage (PR #57, PR #60).

We also started reviewing:

  • ouroboros-network
  • cardano-node
  • cardano-ledger +repositories for open-source readiness (PR #4128).

We prepared a PR which changes how node-to-node and node-to-client protocol +versiones are serialised in cardano-node log (PR #4691).

+ + + + \ No newline at end of file diff --git a/2022-12-14-consensus/index.html b/2022-12-14-consensus/index.html new file mode 100644 index 00000000000..4957656b9f1 --- /dev/null +++ b/2022-12-14-consensus/index.html @@ -0,0 +1,65 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 3 min read
Damian Nadales

High level summary

During the past two weeks, the Consensus team finalized the QSM tests for the +backing store and Mempool on the UTxO-HD branch with important discoveries +regarding parallel QSM testing. We also worked with the Ledger team to envisage +the modifications that are required in Ledger and Consensus to accommodate the +changes in the crypto VRF and KES. The db-analyser now supports bechmarking +the ledger operations, which will allow us to identify, debug, and profile +potential performance problems. We drafted a document that defines how to manage +the versions of Consensus-related packages. The top level documentation of +ouroboros-network now features a description of the consensus components and +provides a hyperlinked map to the modules documentation.

Workstreams

UTxO HD prototype

Whereas we had passing sequential state-machine tests for the mempool, the +parallel case proved to be more challenging than we thought. The operation of +adding a list of transactions to the mempool is not atomic and, as a result, +when adding a list of transactions, transactions from other processes can be +added in between. The mempool implementation handles this correctly, however +this required us to redesign the parallel model we had to take +the lack of atomicity into account.

Backing store property tests

We finished refactoring the backing store property tests. The second review +round is ongoing.

LSM tree implementation

We are working on benchmarking (in terms of time and number of IO operations) +fetching/looking up data from disk.

Genesis

We worked on the design of a mechanism to prevent a DoS attack on our Genesis +design related to rollbacks. This was arguably the biggest outstanding question.

During the discussions around Genesis, we noticed a design boundary that nicely +delineates a fundamental component. We almost have a full Haskell prototype of +it. It will be very nicely self-contained, perhaps even usable in the ultimate +implementation!

New VRF and KES crypto integration

We collaborated with the Ledger team on preparing the ledger state and crypto +types to avoid huge allocation on the epoch boundary when changing aspects of +the crypto that will only manifest in headers, not in the ledger states.

Technical debt

We merged the pull-request that adds a support to db-analyser for +benchmarking ledger operations. This will allow us to identify, debug, and +profile potential performance problems. The benchmark focus on the main 5 ledger +operations that are involved in chain syncing, block forging, and block +validation, namely:

  1. Forecast.
  2. Header tick.
  3. Header application.
  4. Block tick.
  5. Block application.

The following figure shows a plot of the benchmarking results for the first 65 +million blocks (approximately) of the Cardano chain. The thin yellow lines under +the x-axis show the epoch boundaries, whereas the thick yellow lines correspond +to the era transitions.

As we can see in this figure, era and epoch boundaries require more computation +time. The ledger team are aware of this problem, and we are working to improve +this situation.

Fostering collaboration

We drafted a document motivating and defining how Consensus (and +possibly other core teams) will/should manage our package versions. This +pull-request garnered many great discussions from our team members and other +teams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et +al. We want to thank you all for your input, and we found this discussion very +enlightening!

We merged the pull request that adds an overview of consensus to +the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

+ + + + \ No newline at end of file diff --git a/2022-12-14-db-sync/index.html b/2022-12-14-db-sync/index.html new file mode 100644 index 00000000000..eb3bda1d32d --- /dev/null +++ b/2022-12-14-db-sync/index.html @@ -0,0 +1,33 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

The DBSync team continued testing release 13.1.0.0. The QA team has reported that no issues have +been found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.

Lower level summary

  • Release is cherry-picked back to master, which uses the new rollback mechanism which uses +reverse indexes, same as the release +#1320 +This also fixes a bug number of issues on master.
  • Depenencies upgrade and CHaP integration +#1324
  • AdaPots fix #1323. This +fixes an issue where the per epoch AdaPots didn't match the epoch boundary, but +they also included changes from the first block of the epoch.
  • Deposits Event fix #3212. This pr +adjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the +number of queries that db-sync does during syncing an make syncing faster.
+ + + + \ No newline at end of file diff --git a/2022-12-14-node-cli-api/index.html b/2022-12-14-node-cli-api/index.html new file mode 100644 index 00000000000..39312125417 --- /dev/null +++ b/2022-12-14-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2022-12-14 - 2022-12-27

High level summary

PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

Completed

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

CI & project mainteance

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2022-12-14-performance-and-tracing/index.html b/2022-12-14-performance-and-tracing/index.html new file mode 100644 index 00000000000..56ce0082ad4 --- /dev/null +++ b/2022-12-14-performance-and-tracing/index.html @@ -0,0 +1,28 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 4 min read
Serge Kosyrev

High level summary

  1. SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment.
  2. A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery.
  3. The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals.
  4. Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started.
  5. Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.

Performance

The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload.

We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling.

Tracing

After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical.

To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:

  1. We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration.
  2. The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.

All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further.

In addition, we're still pursuing our performance-enhancing rework of the new tracing internals.

Infrastructure

After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends.

Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it. +This means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis. +This will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports.

A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches. +Previously we only had automation for two aspects separately, so we only could either:

  • compare individual runs (used for different node configurations / versions)
  • collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version) +Naturally, combining these two capabilities was a long-desired feature of our analysis pipeline.
+ + + + \ No newline at end of file diff --git a/2022-12-15-mithril/index.html b/2022-12-15-mithril/index.html new file mode 100644 index 00000000000..51c23d5f07a --- /dev/null +++ b/2022-12-15-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team has released the new distribution 2248.1 of their nodes. They have published the first version of the Mithril cryptographic library on crates.io, the Rust community’s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.

Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities.

Low level overview

  • Implemented removing verification key and stake from single signatures #619
  • Completed the extraction of the signer registration from the multi-signer #642
  • Completed the extraction of the certificate creation from the multi-signer #638
  • Implemented a workflow to test client binaries (Linux / MacOS / Windows) #601
  • Completed the signature of the artifacts produced by the CI #587
  • Fixed the protocol parameters transition #627
  • Worked on optimizing the snapshot digest computation #510
  • Worked on enforcing the API protocol versions in the client and signer #633
  • Worked on deactivating the non certified signer registration mode #621
  • Worked on the re-genesis of the test networks #651
+ + + + \ No newline at end of file diff --git a/2022-12-16-hydra/index.html b/2022-12-16-hydra/index.html new file mode 100644 index 00000000000..5059c1304d9 --- /dev/null +++ b/2022-12-16-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on the website and reduced the cost for commit transactions by ~30% with the help of reference scripts.

The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.

What did the team achieve this week

  • Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.
  • Reduce commit transaction costs by ~30% with reference scripts.
  • Prepared an RFP for external audit of the Hydra Head solution.
  • Fixed transaction cost benchmarks for abort tx #631.
  • Recorded decision to use model-based testing (ADR22) and improved Model documentation.
    • Concluding the first increment on Validate coordinated Head protocol #194.
    • Formulated next step / follow-up on testing the Soundness property of our protocol #656.
  • Switched to using nix flakes for development setup and CI build #646.

What are the goals of next week

  • Push ADR21 & tx validity gap over the finish line (smoke tests missing).
  • Integrate the hydra-tutorial.
  • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
  • Close & recap on the year with another monthly report (+ blog post).
+ + + + \ No newline at end of file diff --git a/2022-12-28-node-cli-api/index.html b/2022-12-28-node-cli-api/index.html new file mode 100644 index 00000000000..cf0fda68bf7 --- /dev/null +++ b/2022-12-28-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2022-12-28 - 2023-01-10

High level summary

Completed

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

CI & project mainteance

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-01-05-ledger/index.html b/2023-01-05-ledger/index.html new file mode 100644 index 00000000000..0137745cf86 --- /dev/null +++ b/2023-01-05-ledger/index.html @@ -0,0 +1,71 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 5 min read
Jared Corduan

High level summary

The ledger team finished up the remaining work for tracking individual depots, +built out the new Conway era transaction body (in line with CIP-1694), +greatly reduce some problematically large calculations on the epoch boundary, +and addressed technical debt.

Lower level summary

Finishing the deposit tracking

The initial work on the individual deposit tracking project focused only on correctness. +As this is a large data structure +(since its size is linear with respect to the number of registered stake credentials), +it is very important that we also reduce the memory overhead as much as possible. +Fortunately, we were able to add very little overhead for the deposits by using existing +efficient data structures. The extra tracking now only incurs one word (8 bytes) +per registered stake credential.

See:

New Conway era transaction

We implemented the Conway era transaction body, which is in line with CIP-1694. +Note that the Conway era implements, losing speaking, the parts of CIP-1694 that are not +related to the liquid democracy (the "DReps"). +The new transaction body adds the new governance actions and votes, +while also deprecating the old governance structures +(i.e. the old protocol parameter updates and MIR certificates).

We also now have the wire specification (CDDL file) and serialization code in place. +The wire specification is still subject to change while we work on the Conway era, +but it is now usable and has proper testing support +(so that, for example, the serialization round-trips, etc).

See:

Optimizing the TICKF transition

Every since the release of the Shelley era, we have been working to reduce the computational load +placed on the node by the ledger at the epoch boundary. +While still not perfect, we believe that we have removed one of the final problematically long +epoch boundary computations that exacerbate situations like +this. +In particular, the problem involved the way in which the consensus layer obtains a view of the +ledger for the purposes of checking the leadership schedule in a new epoch. +We implemented a stopgap measure which now only incurs a single multi-second cost once per epoch +instead of potentially several multi-second costs while the networks waits for the first block +of a new epoch to be minted.

See:

Technical debt

We closed the year out with a lot of reduction to the technical debt!

Improved ledger event

  • pull-3212 - The ledger events are not guaranteed to appear in any given order within a block. +For this reason, motivated by the use case in db-sync, the TotalDeposits event now +includes a transaction ID and emits the change in deposits instead of the value.

Improved type saftey

  • pull-3208 - We replaced NominalDiffTime with a newtype wrapper. The problem was that our CBOR +encoders and decoders were using the wrong level of precision, having to due with with +the Shelley genesis file. We removed the potential problem with a newtype wrapper.
  • pull-3167 - We now use a GADT to ensure consistency of the Plutus language in the types +for TransactionScriptFailure and PlutusDebug.

Code/Module organization

  • pull-3175 - The Allegra and Mary eras had an unusual relationship in our codebase, +due to the uncertainly of release dates while we were implementing them. +In particular, they were coupled in way that is different from the rest of the code base. +With hindsight on our side, we split the combined shelley-ma Haskell package into two +separate ledger era packages, which is now consistent with the rest of the repository +and module structure.
  • pull-3184 - We created a core test sub-library, cleaning up a lot of our property test +generator code.
  • pull-3210 - We moved the KeyPair type to the test library. Outside of testing, +the ledger does not need to deal with signing keys, and since this is a topic that +deserves the utmost care, it is best to make it clear that our use of signing keys +is only for testing.
  • pull-3229 - We split the Cardano.Ledger.Alonzo.Data module, which is more consistent with the rest +of the codebase.

Revert pointer address deprecation

Thanks to one of our excellent internal auditors, +@jmhrpr, +we now have a better plan for deprecating pointer addresses. +This meant that we had to revert the previous work to deprecate them.

See:

Miscellaneous

  • pull-3205 - We removed deprecated type synonyms.
  • pull-3218 - We cleaned up the address deserialization.
  • pull-3223 - We fixed faulty address deserialization tests.
  • pull-3222 - We switched to a general type family TxOut from concrete ones, +reducing many constraints.
  • pull-3224 - ShelleyGenesis is now parameterized by crypto instead of by era.
  • pull-3170 - We set the cabal-version to 3.0 in our projects.
  • pull-3172 - We removed the now useless EncodeMint/DecodeMint classes.
  • pull-3225 - We switch from ormolu to +fourmolu. +The reason was to be able to finally have more diff friendly code!
+ + + + \ No newline at end of file diff --git a/2023-01-06-crypto/index.html b/2023-01-06-crypto/index.html new file mode 100644 index 00000000000..cda3040c66e --- /dev/null +++ b/2023-01-06-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The four open fronts that the crypto team is working on are:

  • MuSig2: The API features (error handling) has been merged.
  • Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures.
  • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI.
  • KES agent: We keep progressing with KES secure forgetting implementation.

We also started working in the cryptography engineering handbook, which will be a cross team effort.

Low level summary

MuSig2

  • Merged the more granular error handling mechanism PR#33

Mithril

  • Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in Version 0.1.1, which was published in crates.io.
  • Updated new KES format to mithril library PR 674
  • We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync PR 531
  • We keep progressing on reducing the use of transmute in mithril-stm.

cardano-base

  • Nothing new to report. Still working in merging these PRs. We are only missing nix merge of PR#520 and the updates on VRF will be merged.

KES agent

  • We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests PR#255.

Cryptography handbook

We have made available the (temporary) cryptography handbook https://input-output-hk.github.io/cryptography_spec/, and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives.

+ + + + \ No newline at end of file diff --git a/2023-01-11-consensus/index.html b/2023-01-11-consensus/index.html new file mode 100644 index 00000000000..0a0d4eaea55 --- /dev/null +++ b/2023-01-11-consensus/index.html @@ -0,0 +1,53 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 3 min read
Damian Nadales

High level summary

The consensus team is resuming its activities after the Christmas break. During +these weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and +discussing with the Ledger team the changes that might be required for the next +iterations. The pull request that adds the Conway era is waiting for a second +review round and we hope to merge it soon. On the technical debt side we are +looking into a property-test failure found in the iterators. We are +investigating if this is an error in the model or in the implementation. We also +improved the documentation of our testing code.

Workstreams

UTxO HD Prototype

We worked with the Ledger team to start preparing the next versions of UTxO-HD. +The Ledger team is concerned that for the remaining maps we might need the full +ledger state on epoch boundaries. Since the main consumer of the ledger rules is +Consensus, the code that requires access to a full state could be moved from the +ledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take +place in such bridge, instead of querying the ledger for the values that are +required in the epoch-transition computations.

We relocated some UTxO-HD definitions, in preparation for merging +the prototype into master.

We also completed updated local benchmarks comparing the replay time and memory +consumption of:

  • the baseline node (f2fc76ef45647275c98634da1718290b976ff364)
  • the UTxO-HD node with the in-memory backend
  • the UTxO-HD node with the LMDB backend

The following plot shows the results: we can see that the LMDB node barely +reaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The +in-memory backend is about 30 minutes faster, but still slower than the baseline +version. We are aware of this phenomenon and it is inherent to the problem of +maintaining sequences of differences of the last k ledger states that allows +us to perform rollback and roll-forward. We are in the process of measuring +syncing from scratch times.

We also added StaticEither accessors that helped us to simplify +the UTxO-HD prototype.

New Conway era

We incorporated the feedback of the pull request, and rebased this +branch on top of master. The PR is pending a second review round and we hope +to merge this soon.

Technical debt

We are investigating a property-testing failure involving +iterators. Solving this requires understanding the expected behavior of +iterators in the counterexample found by QuickCheck to determine if the error +is in the model or in the implementation.

Fostering collaboration

We moved the contents of docs/Testing.md closer to the code, so that the +explanations about the tests are easier to find in the relevant modules, and the +documentation is easier to keep up to date.

+ + + + \ No newline at end of file diff --git a/2023-01-11-performance-and-tracing/index.html b/2023-01-11-performance-and-tracing/index.html new file mode 100644 index 00000000000..105d2b43005 --- /dev/null +++ b/2023-01-11-performance-and-tracing/index.html @@ -0,0 +1,26 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Serge Kosyrev

High level summary

Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:

  1. SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress.
  2. The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over.
  3. Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks.
  4. New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs.
  5. Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench.
  6. Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.

Performance

The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on.

Tracing

The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done.

Infrastructure

Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components.

On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters. +We now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes.

We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development. +Once this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads.

+ + + + \ No newline at end of file diff --git a/2023-01-12-mithril/index.html b/2023-01-12-mithril/index.html new file mode 100644 index 00000000000..7ce4031bbe1 --- /dev/null +++ b/2023-01-12-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ADR. They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible.

Finally, they have worked on upgrading the devnet and fixing some flakiness in the end to end tests of the CI.

Low level overview

  • Implemented the redaction of an ADR for handling graceful updates of the Mithril Network #671
  • Worked on a proof of concept to handle backward compatibilty of exchanged messages with protobuf #677
  • Worked on a proof of concept to handle backward compatibilty of exchanged messages with avro #678
  • Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction #672
  • Worked on upgrading the Cardano node of the Mithril devnet, as well as fixing flakiness of the CI #523
  • Prepared and tested the new 2302 distribution pre-release 2302.0-prerelease
  • Updated the documentation for SPO to build a signer node in order to better reflect the new release process #681
+ + + + \ No newline at end of file diff --git a/2023-01-13-hydra/index.html b/2023-01-13-hydra/index.html new file mode 100644 index 00000000000..88afdb18c9e --- /dev/null +++ b/2023-01-13-hydra/index.html @@ -0,0 +1,37 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

Since last weekly update before christmas, the Hydra team worked on the +technical specification, closed gaps in hydra-plutus scripts, made the unique +headId available to Hydra clients through the API, allow the hydra-node to +explicitly synchronize from genesis (if configured), and fixed smaller log and +build issues reported by new users.

Besides this, a retrospective blog +post +was published by Matthias Benkort (CF) on Hydra, summarizing our progress made +in 2022 also an outlook where Hydra is headed for in 2023. Also, the team had +some first sessions on the voting project with Catalyst and the CF.

A full digest monthly digest for December 2022 can be found on the hydra +website.

What did the team achieve this week

  • Had some first sessions on the voting project with Catalyst and CF
  • Published retrospective blog +post +by Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also +an outlook where Hydra is headed for in 2023.
  • Worked on the LaTeX spec for HydraHeadV1, not final or published yet - latest +version in this repository.
  • Add unique headId to API and hence make it available to clients.
  • Allow hydra-node to explicitly synchronize from genesis using --start-chain-from 0.
  • Closed gaps in hydra-plutus scripts
    • bounded transaction validity (ADR21)
    • enforcing contract continuity via state token in output
  • Fixed JSON for some logs and smaller build issues reported by new users.

What are the goals of next week

  • Reach out to have hydra-tutorial integrated.
  • Plan the next couple of months.
  • Complete checking reimbursing of commits in head validator.
  • Align plutus scripts to spec and simplify them (identified some simplifications)
  • Improve mutation framework to be sure we fail tests for the right reasons
  • Complete the spec except the open points (<5) and also discuss them with researchers.
+ + + + \ No newline at end of file diff --git a/2023-01-13-release/index.html b/2023-01-13-release/index.html new file mode 100644 index 00000000000..10aa220ddd5 --- /dev/null +++ b/2023-01-13-release/index.html @@ -0,0 +1,26 @@ + + + + + +Node Release Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node Release Team Update

· One min read
Samuel Leathers

Node Reelease Update

2022-11-02 - 2023-01-13

Executive Summary

A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on +release/1.35 branch and does not bump cardano-ledger.

The team successfully integrated an interim release bump of ledger and consensus into cardano-node master. +This work will not be released in a node version, but will be continued by the current dependency bump in progress.

We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again.

The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress.

Completed

In Progress

+ + + + \ No newline at end of file diff --git a/2023-01-13-system-test/index.html b/2023-01-13-system-test/index.html new file mode 100644 index 00000000000..d16d223fa4e --- /dev/null +++ b/2023-01-13-system-test/index.html @@ -0,0 +1,27 @@ + + + + + +System Test Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

System Test Team Update

· One min read
Dorin Solomon

High level summary

During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the P2P Single +Relay functionality.

We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level.

Workstreams

Framework improvements:

  • extended the cardano-node-tests with the ability for anybody to fork the repo and run all our System Tests on GitHub Actions
  • added 2 new nightly pipelines - nightly-mixed and nightly-p2p - details here
  • some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;

=== 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) === + to + === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===

Node:

  • ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled
  • started the preparations for testing the next tag - details here

DB-Sync:

  • some improvements on db-sync sync tests
+ + + + \ No newline at end of file diff --git a/2023-01-14-db-sync/index.html b/2023-01-14-db-sync/index.html new file mode 100644 index 00000000000..d39220dc29b --- /dev/null +++ b/2023-01-14-db-sync/index.html @@ -0,0 +1,29 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

After spending the last months on improving DBSync and releasing 13.1.0.0 the DBSync team focused +the last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the +new leger core and ghc-9.2.4

Lower level summary

  • Integrate CHaP +#1331
  • Integrate new ledger core 0.1.1.1 and ghc-9.2 +#1332
  • Technical debt: Add code formatter fourmolu +#1334
  • Preparing and tracking Conway and UTxO integration
+ + + + \ No newline at end of file diff --git a/2023-01-19-ledger/index.html b/2023-01-19-ledger/index.html new file mode 100644 index 00000000000..412642e5d1a --- /dev/null +++ b/2023-01-19-ledger/index.html @@ -0,0 +1,48 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

High level summary

The ledger team completed some preliminary ground work in preparation for CIP-1694 +(restructuring the ledger state), +fixed the PDF hosting problem (mostly the formal specs), +built out more of the new user-friendly ledger API, +finished a proof of concept for constraint-based generators for property tests +(with the hopes of being able to replace our trace generators one day), +and addressed technical debt.

Lower level summary

Restructuring the ledger state

The existing governance structures will be replace in the conway ledger era, +as described in CIP-1694. +In particular, the ledger rules will be restructured as follows:

   BBODY
|
|-------------------------------|
v v
TICK LEDGERS
| |
|---------| |
v v v
RUPD ~NEWEPOCH~ ~LEDGER~
| |
|----------| |--------|-------------------|-----------|
v v v v v
~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+
| | |
|---------|------------| v |
v v v DELPL v
SNAP POOLREAP -UPEC- | UTXO
|--------| |
v v v
POOL DELEG ~UTXOS~

-..- Removed
+..+ Added
~..~ Modified

Moreover, the ledger state will also be restructured in accordance with the new rules. +In the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT. +We have also adapted all the data structures in the ledger state.

See:

PDF hosting

We now build all of our PDFs using a GitHub action which is triggered by pushing a tag +with a specific form, cardano-ledger-spec-YYYY-MM-DD. +The action creates a GitHub release containing the PDFs. +The links in the main ledger README now point to the PDFs in the latest release.

See:

Powering the new ledger API

We have now removed all the HasField instances from the protocol parameter data types, +and replaced them with lenses. +This is probably the last major restructuring that the ledger team will do on the code base +for the API for a while +(the Plutus tools team will be working on it next, see here). +We also added a new helpful function ensureMinCoinTxOut.

See:

Constraint-based generators

Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

We would like to switch to tests which instead generate a random ledger state representative +of not just an initial state, generate a single random valid block, and then test our properties. +The hope is that these will be much more random and easier to maintain.

We have finished a proof of concept are encouraged that this approach could work!

See:

Technical debt

  • pull-3244 massive CI speedup
  • pull-3249 better types for fees in the protocol parameters
  • pull-3264 move our annotator code to the cardano-ledger-binary package where it belongs
  • pull-3239 move the Wdrls type to the Core module.
+ + + + \ No newline at end of file diff --git a/2023-01-20-crypto/index.html b/2023-01-20-crypto/index.html new file mode 100644 index 00000000000..cf5e72f2eeb --- /dev/null +++ b/2023-01-20-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Mithril: We explored whether some uses of transmute could be removed, but it resulted in considerable regression.
  • cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision.
  • KES agent: An inconsistency between contra-tracer available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the contra-tracer used by consensus.

Low level summary

Mithril

  • We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average PR#675. We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing.
  • We are writing a RFP for the audit of the core library.

cardano-base

  • A problem with Nix is blocking merge of PR#341
  • Plutus team ran benchmarks of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution.
  • Team is fully digesting the Plonk paper.
  • There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used.

KES agent

  • A little unforseen delay has been caused by a mismatch in the use of contra-tracer. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are doing the change, but still the CI is not happy.
  • The same was needed for the KES agents prerequisites PR#317.
  • We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency
+ + + + \ No newline at end of file diff --git a/2023-01-20-hydra/index.html b/2023-01-20-hydra/index.html new file mode 100644 index 00000000000..c4f4c62836e --- /dev/null +++ b/2023-01-20-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1 +specification. Of which a first version has been aggregated and is currently +under review. They aligned the on-chain scripts of reimbursing funds on abort +like defined in the specification, improved the mutation test framework to have +more control when testing plutus scripts. The added HeadId in the API and the +TUI example client make hydra-node easier to use and a first experiment of a +Hydra Head explorer was showing the utility of this - see what Heads exist on +the preview network here.

What did the team achieve this week

  • HeadId to API and display in the TUI #678
  • Experiment of creating a hydra explorer, first result hosted here
  • Improved mutation framework allowing to fail for the right reason #679
  • Correctly reimburse funds in abort (matching the spec) #670
  • Finished a first write-up of the Hydra HeadV1 spec: Read it on overleaf (Communication channels for feedback)

What are the goals of next week

  • Monthly review meeting with a broader audience
  • Groom & plan actions required for a maintainable Head explorer
  • Break “align gaps” feature into smaller chunks (at least on- /off-chain) and groom it
  • Review the spec & discuss individual aborts with researchers (a bigger open question)
+ + + + \ No newline at end of file diff --git a/2023-01-20-network/index.html b/2023-01-20-network/index.html new file mode 100644 index 00000000000..ee7b0f58e2d --- /dev/null +++ b/2023-01-20-network/index.html @@ -0,0 +1,34 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High level summary

We have been working towards cardano-node-1.35.5 release. QA & benchmarking +teams gave a green light for the release, and we made decent progress with some +CI problem which we encountered on the way (PR #4612). We are also working on +peer sharing, making improvements in our testing infrastructure, reducing +technical debt and making progress towards io-sim-1.0.0.0. Galois is making +progress on Handshake improvements.

Low level summary

Our diffusion simulation network now includes a mixed network of initiator +only and initiator and responder nodes. issue #4222

We are now reviewing the peer sharing pull request.

We are also reviewing pull request which introduces handshake query flag. PR #4256

We fixed a bug in our network simulator. The bug was triggered when a node +died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

We also refactored Snocket interface and removed the bearer construction from +its methods. PR #4260

We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes +reviewing two PRs: PR #57 and PR #60 as well as writing an announcement +blog post.

+ + + + \ No newline at end of file diff --git a/2023-01-20-sre/index.html b/2023-01-20-sre/index.html new file mode 100644 index 00000000000..87d3818046e --- /dev/null +++ b/2023-01-20-sre/index.html @@ -0,0 +1,25 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 2 min read
Michael Fellinger

High level summary

The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing +support for cardano-world.

Lower level summary

Cicero

  • Fixed various race conditions around transformers.
  • Brought our CI up to date.
  • Migrated to the Nomad exec driver with Nix support for many actions.
  • Moved Nix builds to the Nomad clients for much better cache locality.
  • Ongoing work on vastly improving the action matching and evaluation speed.

Tullia

  • Made it easier to support cloning from a PR's fork
  • Update to latest std
  • Add workaround for cgroup issue: nomad#12877
  • github preset: add github.ci.remote and (read|get)Repository functions
  • Fix various issues around CUE handling

Bitte

  • Upgrade to NixOS 22.11
  • Prototype usage of Colmena for deploys instead of deploy-rs
  • Finalized work on Equinix Metal support
  • Prototype better secrets management with ragenix instead of sops-nix
  • Improve CI and bring it up to date

cardano-world

  • Fixd various OOM issues on preview and preprod
  • Rotated KES keys on preview and preprod
  • Optimize mainnet db-sync to cope with higher load
  • Fix an issue where PostgreSQL would fail after a reboot

bitte-world

  • Updated to NixOS 22.11

ci-world

  • Updated to NixOS 22.11
  • Added Equnix cluster
  • Improve caching of Nix builds
+ + + + \ No newline at end of file diff --git a/2023-01-25-consensus/index.html b/2023-01-25-consensus/index.html new file mode 100644 index 00000000000..032b58b423a --- /dev/null +++ b/2023-01-25-consensus/index.html @@ -0,0 +1,53 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 3 min read
Damian Nadales

High level summary

During the past two weeks, the consensus team finished the testing activities +around the UTxO-HD prototype. This is a very important milestone which will +enable us to run system-level tests and benchmarks, as well as start refactoring +and cleaning the prototype. Regarding our Genesis workstream, we elaborated a +roadmap that gives an indication of the remaining work. We also continued our +work on benchmarking chain-sync-jumping. We also continued working on improving +the way we handle blocks from the future, and advancing the integration of the +new VRF and KES crypto.

Workstreams

UTxO HD Prototype

As the prototype is nearing its completion, it was important to have enough +confidence that we will be able to move additional parts of the ledger state +onto disk. We worked together with the Ledger team to elaborate a +sketch on how the UTxO-HD design would accommodate the migration of +additional data from memory to disk. This gave us enough confidence that the +current architecture will be extensible in the future.

On the testing front, we added property-based tests for the UTxO-HD +type classes.

We also enabled disabled components, and addressed several +technical debt issues:

  • Implement splitSized anti-diff split (#4269), and integrate it +into consensus (#4273).
  • Renaming of peekVal to peekMDBVal (#7).

We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We +found a race condition in the LMDB backing store, which we fixed. +After the fix we were able to successfully run these benchmarks. The results +were published by this pull request.

We used our db-analyser tool to benchmark the cost of reading keys and +flushing values to disk. The following plot shows the duration of these disk +operation in relation to the main ledger operations, where we can see that the +cost of the former are comparatively low. The spike at the beginning of the +graph is when, at the start of the Shelley era, the entire UTxO set is flushed +to disk.

UTxO-HD read and flush benchmarks

After months of hard work adding tests for the prototype, we are ready to run +end-to-end tests on the node, and system level benchmarks. This signals a very +important milestone for the UTxO-HD workstream 🎉.

Genesis

We elaborated a high-level decomposition of the remaining +work for Genesis. We also continued benchmarking the chain-sync-jumping +happy-path.

Technical debt

We continued working on improving the way we handle blocks from the future.

Support

We completed the mapping of Crypto to HeaderCrypto and body Crypto. +HeaderCrypto is moved to cardano-protocol-tpraos. We created a draft pull +request to facilitate compiling consensus.

+ + + + \ No newline at end of file diff --git a/2023-01-25-node-cli-api/index.html b/2023-01-25-node-cli-api/index.html new file mode 100644 index 00000000000..08ae3446720 --- /dev/null +++ b/2023-01-25-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2023-01-25 - 2023-02-07

High level summary

General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the cardano-cli query stake-snapshot command.

Completed

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

CI & project mainteance

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-01-26-mithril/index.html b/2023-01-26-mithril/index.html new file mode 100644 index 00000000000..fc2fd92300d --- /dev/null +++ b/2023-01-26-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2302.0 distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes.

Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node.

Low level overview

  • Released the new distribution 2302.0
  • Implemented a backward/forward compatibility mechanism for API messages #688:
    • Implement the mechanism for the signer registration #689
    • Implement the mechanism for the signature registration #693
    • Implement the mechanism for epoch settings #695
    • Implement the mechanism for certificate pending #696
    • Implement the mechanism for certificate #697
    • Implement the mechanism for snapshots list #698
    • Implement the mechanism for snapshot #699
    • Update enforcement of API version with Semver #705
  • Completed the PoC implementation of backward compatibility with protobuf #677
  • Completed the PoC implementation of backward compatibility with avro #678
  • Completed the PoC to Read/Write transaction on chain for Era activations #672
  • Completed the upgrade Cardano devnet to 1.35.4 #523
+ + + + \ No newline at end of file diff --git a/2023-01-27-hydra/index.html b/2023-01-27-hydra/index.html new file mode 100644 index 00000000000..711807edde1 --- /dev/null +++ b/2023-01-27-hydra/index.html @@ -0,0 +1,32 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team had a monthly review meeting with their stakeholders, +contributors and interested people from the community. The monthly repot for +January 2023 is a digest +of the things presented and also includes a summary of the meeting. The Hydra +specification was getting discussed and the team is incorporating suggested +changes of reviewers. Last but not least, they compute and publish script +information on every PR and also on the +website +now.

What did the team achieve this week

  • Had the monthly review meeting with a broader audience
  • Published the monthly report for January 2023
  • Reviewed the spec and discussed individual aborts with researchers
  • Compute and publish script information along benchmarks on every PR and website

What are the goals of next week

  • Add rollback section to Hydra spec, update pictures and publish it as part of repository
  • Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository.
  • Groom & plan actions required for a maintainable Head explorer + break down align gaps feature.
+ + + + \ No newline at end of file diff --git a/2023-02-02-ledger/index.html b/2023-02-02-ledger/index.html new file mode 100644 index 00000000000..f6c5a6b906b --- /dev/null +++ b/2023-02-02-ledger/index.html @@ -0,0 +1,35 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

High level summary

Much of the work the past two weeks involved integration efforts, +cleaning up and debugging some serialization issues, +adding tests, and work on large projects that are still ongoing. +We also released a CIP this week that aims to make the ledger +a registered CIP category.

Lower level summary

Ledger evolution CIP

We published a +CIP +that will make the Cardano ledger a registered category of the CIP process.

Serialization issues

We had previously thought that we had found a serialization problem with the redeemers, +but it turned out to just be particularly confusing code. +We have now clarified the issue for the future.

See pull-3263, pull-3269, and pull-3268.

Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps.

See pull-3277.

New tests

We added a new property test suite for some of our custom containers.

See pull-3270.

Progress on a better cost model serialization situation.

We are still working our way through issue-2902. +Towards this end, we are now properly gating the new flexible encoders +until version 9.

See pull-3274.

Nightly tests

We are still experimenting with moving more CI actions to GitHub actions.

See pull-3276.

Constraint based generators

We continue to add to our proof of concept for constraint based generators. +See the previous ledger update for more information about this project.

+ + + + \ No newline at end of file diff --git a/2023-02-03-crypto/index.html b/2023-02-03-crypto/index.html new file mode 100644 index 00000000000..7ce1afa4185 --- /dev/null +++ b/2023-02-03-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 3 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril.
  • cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting.
  • KES agent: using snockets and making things testable in IOSim
  • MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.

Low level summary

Mithril

  • Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing PR#722
  • We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper.
  • We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.

cardano-base

  • There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381.
  • The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner.
  • The update VRF PR#341 is finally merged, and we are ready to merge PR#344, which implements conversion functions from the compatible types between Praos and PraosBatchCompat.

KES agent

  • Use of snockets to send the data directly from the socket to secure memory.
  • We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives
  • Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.

MuSig2

The GitHub Action linelint is used to check the files.

  • A new job for linting is added to the file /.github/workflows/ci.yml. The rules are configured in the file /.github/workflows/.linelint.yml. Some files from the configuration of libsecp were failing, so in the rules in .linelint.yml the failing files are denoted to be ignored by the linter.
  • Folders are reorganized. We created a folder to handle the example. This folder includes the examplemusig2.c, a distinct config.h, and helper.c. The example is enhanced by implementing the functions in the helper for the configuration given in config.h. The number of messages is different than the tests. The example is made more generic to run with a loop.
+ + + + \ No newline at end of file diff --git a/2023-02-03-goedel/index.html b/2023-02-03-goedel/index.html new file mode 100644 index 00000000000..4a704acd7ed --- /dev/null +++ b/2023-02-03-goedel/index.html @@ -0,0 +1,30 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been preparing several papers for peer review +and knowledge sharing and consulting within IO and the community.

Details

  • R&D Seminar on experience participating in a member based organisation
  • Full day tutorial on performance engineering presented at HiPEAC +2023 conference
  • Finished preparing and submitted a paper on performance engineering +to an ACM workshop
  • Preparing a draft paper for future submission about verifying design +refinements for distributed system design
  • Consulting on performance design of other IO projects
+ + + + \ No newline at end of file diff --git a/2023-02-03-hydra/index.html b/2023-02-03-hydra/index.html new file mode 100644 index 00000000000..4629a576792 --- /dev/null +++ b/2023-02-03-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team completed the Hydra specification with a section about +rollbacks and updated graphs +(#448). In a next step, +the specification will be made more approachable and an open standard. They +improved their hydra-cluster tool to launch a local --devnet sandbox +environment and continued aligning the hydra-plutus scripts with the +specification by hardening the checks on close and contest transactions.

What did the team achieve this week

  • Completed the specification with a section about rollbacks and updated graphs +#448, with a follow-up on making it more approachable and an open standard.
  • Continued spec review with internal auditor and incorporated changes.
  • Talked to TxPipe about how Demeter and Hydra could work together
  • The hydra-cluster executable can be used to launch a local --devnet sandbox environment.
  • Reproduced the “head being stuck on network outage” bug
    • relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed.
  • Progressed with higher velocity by addressing more and more gaps #677

What are the goals of next week

  • Upstream our JSON instances to the ledger
  • Close all transaction security related on-chain gaps
  • Ideally release 0.9.0 with updated scripts
  • Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap
+ + + + \ No newline at end of file diff --git a/2023-02-08-consensus/index.html b/2023-02-08-consensus/index.html new file mode 100644 index 00000000000..235e2a00fb9 --- /dev/null +++ b/2023-02-08-consensus/index.html @@ -0,0 +1,42 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

We continue refactoring the UTxO HD prototype while we wait for the system level +benchmarks. We have created a new repository that contains the anti-diff +packages used in this prototype.

On the Genesis front, we are preparing another meeting with the researchers to +audit the implementation design, and we continued working on basic tests and +simplifications.

During the past two weeks we also introduced two new tools. One for dumping CBOR +encoded blocks to JSON, and another to serve a local immutable DB.

Workstreams

UTxO HD Prototype

We are in the process of refactoring the UTxO HD prototype, while we wait for +the system level benchmarks to confirm if the performance of the prototype is +satisfactory.

We also set up a repository for the anti-diff package, which +required us to refactor the code, write documentation, and prepare a release to +CHaP.

Genesis

We worked on basic tests for the Limit on Eagerness property of +Genesis. We also introduced further robustness and simplifications in the +Genesis Density governor. Finally, we developed a presentation to engage again +with the researchers on our Genesis implementation design.

Technical debt

Fostering collaboration

We are in the process of polishing the ouroboros-consensus +documentation site, which we will use a the entry point for Consensus related +documentation. The first version will not be complete, but we plan on +systematically improving it.

Support

We added a tool to ouroboros-consensus-cardano-tools which allows +to dump the Chain DB blocks or any given CBOR encoded blocks as JSON.

We also added another tool that serves an existing immutable DB via +BlockFetch and ChainSync. This tool can help in assisting our local benchmarking +efforts (for instance Genesis' ChainSync jumping prototype).

+ + + + \ No newline at end of file diff --git a/2023-02-08-node-cli-api/index.html b/2023-02-08-node-cli-api/index.html new file mode 100644 index 00000000000..46051f81712 --- /dev/null +++ b/2023-02-08-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2023-02-08 - 2023-02-21

High level summary

More maintenance and resolving raised issues.

Completed

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

CI & project mainteance

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-02-08-performance-and-tracing/index.html b/2023-02-08-performance-and-tracing/index.html new file mode 100644 index 00000000000..e753ecb9dad --- /dev/null +++ b/2023-02-08-performance-and-tracing/index.html @@ -0,0 +1,24 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Serge Kosyrev

High level summary

  1. SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions.
  2. Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks.
  3. New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node.
  4. New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide.
  5. Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live.
  6. Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on.
  7. Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.

Performance

We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:

  • we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,
  • after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,
  • finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.

In addition, we started benchmarks of the 1.35.6 release.

Tracing

A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way.

Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting.

Infrastructure

On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders.

The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment.

The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops.

+ + + + \ No newline at end of file diff --git a/2023-02-09-mithril/index.html b/2023-02-09-mithril/index.html new file mode 100644 index 00000000000..5b764d82a1d --- /dev/null +++ b/2023-02-09-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2304.1 distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.

Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version 1.35.5 on their devnet and infrastructure.

Low level overview

  • Released the new distribution 2304.1
  • Fixed a bug that prevented some signers to sign with 2304.0-prerelease #716
  • Completed the implementation of an EraChecker that checks if an era is active #708
  • Completed the implementation of an EraReader that gathers era activation data #709
  • Completed the implementation of an EraReader adapter with on chain transaction as source #710
  • Completed the relational design of the aggregator store #476
  • Completed adding a new SPO on the testing-preview network #729
  • Completed the upgrade of the Cardano node to 1.35.5 #725
  • Fixed flakiness in the CI #734
+ + + + \ No newline at end of file diff --git a/2023-02-10-hydra/index.html b/2023-02-10-hydra/index.html new file mode 100644 index 00000000000..04e3dd418e1 --- /dev/null +++ b/2023-02-10-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team closed several gaps to align the Hydra scripts +implementation further with the specification. This also resulted in a slight +improvement on Hydra script size and costs. They consequently analysed the +asymptotic complexity of collect and fanout and how they relate. Also plutus-tx +profiling toolchain was evaluated and set up for future improvements on Hydra +on-chain performance. In discussions with researchers and internal auditors, +they also uncovered next steps on further securing the Head protocl using a +"full" minting policy.

What did the team achieve this week

  • Closed several gaps to align script implementation with specification #452
    • Allow contest only once #680
    • Optimization through head output at index 0 #700
    • Value is preserved #702 + optimized exact value equality #709
  • Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to #721
  • Fixed our tooling around the Haskell language server
  • Discussed full minting policy with researchers
  • Started grooming “what we need for mainnet” on this idea ticket and milestone

What are the goals of next week

  • Implement full minting policy
  • All remaining protocol discrepancies are implemented or groomed as individual features
  • Ideally release 0.9.0 with updated scripts
  • Discuss what we need for mainnet (milestone planning)
  • Redraw transaction graphs for specification (upon feedback)
+ + + + \ No newline at end of file diff --git a/2023-02-17-crypto/index.html b/2023-02-17-crypto/index.html new file mode 100644 index 00000000000..4855cd8bbce --- /dev/null +++ b/2023-02-17-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration.
  • cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus.
  • KES agent: using snockets and making things testable in IOSim
  • MuSig2: started implementation in rust.

Low level summary

Mithril

  • Transmute helpers merged PR#722
  • We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope.
  • We are working in a modification of KES to require caller to allocate the secret key buffer.
  • Proposed a solution for signer registration of Mithril.

cardano-base

  • Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 proof.
    • Results are promising, with using only 23% of the execution budget to verify a realistic proof.
    • Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril.
  • KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this.
  • Conversion finally merged PR#344.

KES agent

  • Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation
  • Figuring out how to go from fake file descriptor to write the raw bytes

MuSig2

  • Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.
+ + + + \ No newline at end of file diff --git a/2023-02-17-goedel/index.html b/2023-02-17-goedel/index.html new file mode 100644 index 00000000000..affeb397b44 --- /dev/null +++ b/2023-02-17-goedel/index.html @@ -0,0 +1,31 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on drafts of two papers and one +technical report, distributivity properties of deltaQ, and consulting +on performance design with the Marlowe team.

Details

  • Processing reviews on performance engineering paper and planning +paper revisions accordingly

  • Investigating distributivity properties of DeltaQ

  • Preparing sections on the thorn calculus and idempotency laws for +draft paper about verifying design refinements for distributed +system design

  • Consulting on performance design with Marlowe team

+ + + + \ No newline at end of file diff --git a/2023-02-17-hydra/index.html b/2023-02-17-hydra/index.html new file mode 100644 index 00000000000..01469187e45 --- /dev/null +++ b/2023-02-17-hydra/index.html @@ -0,0 +1,28 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team completed work on dealing differently with contests +during the contestation period. These will now always push out the deadline and +hence contestation periods are easier to pick (depending on the network a Head +runs on). Furthermore, they added an important acceptance test and completed +internal refactoring of the protocol logic making future changes easier.

What did the team achieve this week

  • Push contestation deadline on each contest #716
  • Wrote an acceptance (property) test can always close/fanout when collect is successful
  • Internal refactoring of our HeadLogic
  • Groomed remaining things from #452 into dedicated features

What are the goals of next week

  • Complete full minting policy #720
  • Release 0.9.0 with updated scripts
  • Plan mainnet milestone and a 0.10.0 version
  • Redraw transaction graphs for specification (upon feedback)
  • Have smoke tests fixed and running regularly
+ + + + \ No newline at end of file diff --git a/2023-02-17-ledger/index.html b/2023-02-17-ledger/index.html new file mode 100644 index 00000000000..7d99ab6ae5f --- /dev/null +++ b/2023-02-17-ledger/index.html @@ -0,0 +1,47 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Jared Corduan

High level summary

This past two weeks saw many months worth of ledger changes integrated with the cardano-base +and ouroboros-network repositories. +The vast majority of the effort involved all the changes to the ledger serialization libraries +(and the interplay with cardano-base) which now support proper versioning. +Supporting the conway ledger era, and in particular allowing the ledger state to transition +to a whole new system of governance, also played a noticeable part in the integration.

Besides the integration work, the team continues to address technical debt, improve the +documentation, make our testing infrastructure better (such as experimenting with better +nightly tests), and formally specifying more parts of CIP-1694.

Lower level summary

Integration work

Below is all the integration work completed, which will enable a release to node from +the current ledger master. Many thanks to +Alexey for this colossal undertaking!

Technical debt

Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted +in the CBOR specification. See pull-3241.

We now have our .cabal files being checked for a consistent formatting given by +cabal format in our CI. See pull-3286.

We are still experimenting with better nightly tests for our long running +property based tests. See pull-3276 and pull-3296.

Small documentation improvements

The hand proofs of the preservation ADA property have been added back to the +Shelley ledger specification. See pull-3295.

We have clarified how the script integrity hash is computed in the CDDL description. +See pull-3290.

Specifying CIP-1694

Our new formal specifications backed by Agda have seen a lot of progress! +Upgrading to Agda 2.6.3 fixed our main build infrastructure problems, +and we no longer have to rely on our custom fork. See pull-50.

Our progress on formally specifying CIP-1694 can be followed here:

Constraint based testing

We are still actively working on our new constraint based property testing framework. +We have nearly all of the constraints for an entire ledger state +hooked into generators, and tests that the generators do indeed obey the constraints. +The variable count in the constraints is over 100! +There is still much work to do on shrinking, making the generators faster, +and writing actual property tests for the ledger, but the approach still seems viable and +we are hopeful that it could replace our trace generators. +The WIP can be followed here: pull-3219.

+ + + + \ No newline at end of file diff --git a/2023-02-17-network/index.html b/2023-02-17-network/index.html new file mode 100644 index 00000000000..d1536439489 --- /dev/null +++ b/2023-02-17-network/index.html @@ -0,0 +1,32 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· One min read
Marcin Szamotulski

High level summary

Recently QA found a bug in P2P code, which results in busy loops. We added one +fix to 1.35.6 release, another one will likely be part of next release. The +first one is already included in ouroboros-network-0.3.0.1 release. These +bugs could only affect nodes which are out of sync and thus should not impose +risk on well maintained nodes on mainnet. We also advertise to deploy at most +one of the relays as a P2P node, which shields from possible consequences.

We recently finished design phase of eclipse evasion and we started +implementing it (see issue #3886 for progress).

Galois finished implementing Handshake extension which will allow to query +network protocol versions (see pr #4256).

We also recently released a newer set of network packages to be integrated with +cardano-node master branch, this includes:

* monoidal-synchronisation-0.1.0.2
* cardano-client-0.1.0.2
* network-mux-0.3.0.0
* ouroboros-network-api-0.1.0.0
* ouroboros-network-protocols-0.2.0.0
* ouroboros-network-testing-0.2.0.1
* ouroboros-network-mock-0.1.0.0
* ouroboros-network-framework-0.3.0.0
* ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
in `0.3.0.1`)
+ + + + \ No newline at end of file diff --git a/2023-02-21-db-sync/index.html b/2023-02-21-db-sync/index.html new file mode 100644 index 00000000000..56c85a72033 --- /dev/null +++ b/2023-02-21-db-sync/index.html @@ -0,0 +1,35 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

The db-sync team created a new tag 13.1.0.2 which is ready to release. +We also investigated and had the first working UTxO-HD integration which is one +of the potential future risks for db-sync.

Low level summary

  • Integrated the UTxO-HD feauture branch in kderme/utxo-hd-1. This doesn't +use the full on disk storage but keeps things in memory and the plan is to keep +it this way for the first iteration. The integration still has some performance +issues which we investigate
  • Created tag 13.1.0.2 which upgrades the dependencies of db-sync
  • Fixed an issue related to errors appearing in SMASH +#1353
  • Continued with ghc-9.2 integration +#1339
  • Worked on an new fixing procedure for +#1348. +We try to make these procedures work also on older schema version, without the +need to migrate to newer schema, which can be very useful for fixing existing +snapshots.
+ + + + \ No newline at end of file diff --git a/2023-02-22-consensus/index.html b/2023-02-22-consensus/index.html new file mode 100644 index 00000000000..a5f874ef700 --- /dev/null +++ b/2023-02-22-consensus/index.html @@ -0,0 +1,59 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 3 min read
Damian Nadales

High level summary

During the past two weeks we got the results from the system level benchmarks +for UTxO HD. They showed a substantial performance regression, so we spent some +time analyzing the results. We found out the frequency at which ledger snapshots +were taken was too high, so we requested the benchmarking team a new run with a +more realistic snapshotting policy. We continued refactoring and improving the +prototype, and we released UTxO-HD related packages to CHaP.

We met with IOG researchers and networking specialists to discuss the Genesis +design, which was well received. We continued working on testing and +benchmarking different Genesis prototypes.

We are also working on solving a test failure related to iterators. This work +derived in several improvements such as better documentation, a framework for +writing unit (and regression) tests, and the possibility of debugging +QuickCheck counter examples in the REPL.

Finally, we released ouroboros-consensus 0.2.0.0 and +ouroboros-consensus-cardano 0.3.0.0 to CHaP

Workstreams

UTxO HD Prototype

We got the results of the first system level benchmarks for UTxO HD. They seemed +to indicate a significant regression in performance. After looking into the +benchmark logs we found that the benchmark runs took ledger state snapshots too +often, due to the default snapshotting policy depending on k, and k being so +small in the benchmark runs. Therefore, the next step is to re-run the +benchmarks with a snapshotting policy that more closely resembles the one from +mainnet.

At the same time, we continued refactoring and cleaning up the prototype.

Also, we prepared the anti-diff packages (fingertree-rm, diff-containers, +simple-semigroupoids) and the lmdb related packages (cardano-lmdb and +cardano-lmdb-simple) to CHaP.

Genesis

The Genesis design was presented to the IOG researchers and Peter Thompson from +NSol. It was well received. They pointed out one blindspot, but we think it'll +be relatively simple to mitigate.

In parallel, we continued developing test and benchmarks for the Genesis +prototypes. I particular we tested and implemented a potential fix for +increased ChainDB dequeue timings, which partly +behaved as we expected, but still needs further investigation. Also we obtained +new benchmarking data for the prototype.

Technical debt

Related to #4183, we developed a DSL for specifying +ChainDB unit tests. This will allow us to better understand the +counter-examples returned by QuickCheck tests, and to write regression +tests for them. Also, we added a module to enable +QuickCheck counter-examples to be run on the REPL, allowing for faster debugging +feedback. Also, we improved the documentation related to followers +(#4372).

We are also working on a design for optimizing the way we handle blocks from the +future.

Support

We released ouroboros-consensus 0.2.0.0 and ouroboros-consensus-cardano +0.3.0.0 to CHaP. Remember that we decided to split the packages related to +Consensus into two bundles, one with the core functionality, Cardano-agnostic +code, and another bundle with instantiations specific to Cardano.

+ + + + \ No newline at end of file diff --git a/2023-02-22-node-cli-api/index.html b/2023-02-22-node-cli-api/index.html new file mode 100644 index 00000000000..6c134c8b71a --- /dev/null +++ b/2023-02-22-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2023-02-22 - 2023-03-07

High level summary

General bug fixes

Completed

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

Documentation

CI & project mainteance

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-02-23-mithril/index.html b/2023-02-23-mithril/index.html new file mode 100644 index 00000000000..793dc9e4389 --- /dev/null +++ b/2023-02-23-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2306.0 distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes’ CLI that allows generating and signing an era marker’s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI.

Low level overview

  • Released the new distribution 2306.0
  • Completed the epic that implements signer versions deployment monitoring #718:
    • Completed the implementation an event producer/consumer via channel #738
    • Completed the creation of a database and its configuration to save the events on the consumer side #740
    • Completed the creation of events and sending them on the channel on the producer side #741
    • Completed the creation of the signer registration event #742
    • Completed the creation a query to extract the node versions stakes distribution #743
  • Worked on the epic that implements eras behavior switch #707:
    • Completed the loading of era reader adapters from config in the signer and the aggregator #732
    • Completed the implementation of an era cli command in the aggregator #755
    • Completed the implementation of a dynamic matrix of cases in CI end to end tests #760
  • Fixed some bugs:
    • Fixed the unsupported unixepoch() function #757
    • Fixed the problem that prevented some signers from signing on the testing-preview network #730
    • Update SQLite version to 3.40 in aggregator infrastructure #765
+ + + + \ No newline at end of file diff --git a/2023-02-23-performance-and-tracing/index.html b/2023-02-23-performance-and-tracing/index.html new file mode 100644 index 00000000000..86ab2e3501a --- /dev/null +++ b/2023-02-23-performance-and-tracing/index.html @@ -0,0 +1,24 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg
  • SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.
  • Release benchmarking: we performed a round of benchmarks for the 1.35.6 release.
  • UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup.
  • New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities.
  • Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure.
  • Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.

Performance

SECP

  1. For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead.
  2. The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run.
  3. The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking.

UTxO-HD

  1. After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop.
  2. We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.

1.35.6 release

Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health.

Tracing

Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible.

Infrastructure

Nomad backend

  1. Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients.
  2. Locality assumptions were removed and job monitoring was refactored.
  3. To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster.
  4. We're currently evaluating different options for genesis distribution in said cluster.

NixOps backend

The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery.

+ + + + \ No newline at end of file diff --git a/2023-02-24-hydra/index.html b/2023-02-24-hydra/index.html new file mode 100644 index 00000000000..837532cb68b --- /dev/null +++ b/2023-02-24-hydra/index.html @@ -0,0 +1,37 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team continue closing many gaps and aligning the +implementation with the specification. More over, they have groomed a plan to +make Hydra Mainnet compatible. Also, they continue moving forward with the +internal auditing and have published some auditing guidelines to receive +contributions from the community.

What did the team achieve this week

  • Completed #452 (what is +remaining in there)
  • Aligned the Head protocol logic implementation with the specification
  • Completed full minting policy implementation and spec +#720
  • Clarified message authentication with researchers
  • Groomed what is left to do for Mainnet compatibility +#713 and drafted a +0.10.0 version
  • Added a tutorial by @perturbing to the +website LINK
  • Published auditing guidelines +LINK
  • Made hydra-node work for macos +#746 and added support +for building on aarch64 +#673
  • Met with a potential customer of Hydra for Payments

What are the goals of next week

  • Have the monthly review meeting incl. the report
  • Have smoke tests fixed and running regularly
  • Release 0.9.0 with updated scripts
  • Redraw transaction graphs for specification
+ + + + \ No newline at end of file diff --git a/2023-03-02-network/index.html b/2023-03-02-network/index.html new file mode 100644 index 00000000000..898aabe5f25 --- /dev/null +++ b/2023-03-02-network/index.html @@ -0,0 +1,44 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High level summary

In the current sprint the networking team focused on fixing bugs and pushing +forward implementation of eclipse evasion. We also found a bug in our +simulation testing setup (in integration of test node). We also overviewed the +work on extending handshake protocol which is delivered by Galois Inc.

We published ouroboros-network-0.4.0.1 and +ouroboros-network-protocols-0.3.0.0 to CHaP.

We also fixed a bug in cardano-node which results in not being able to +configure inbound connection limits, see PR #4902.

Together with Karl Knutsson (CF) we realised an issue in cardano-cli: it's +validation of DNS names, IP address & ports when registering a stake pool +should be more strict to protect against common mistakes which we identified on +the chain. See issue #4929.

Detailed work log

In PR #4385 we fixed two bugs in peer state actions. First one results in +a busy loop if demotion from hot to warm times outs. This busy loop is +eventually exited when mux exits (we reported this in our previous report). +This fix made it to 1.35.6 release as well.

In addition the PR #4385 also fixes another bug which results in hot -> warm +-> hot demotion / promotion busy loop.

The PR #4385 also fixed a bug in a node only used in simulation which +resulted in not using chain-sync or block-fetch mini-protocols. In the +review process, we realised that the header-body split in the simulated node +requires further work (see PR #4419, which is under review).

The PR #4385 also extend our generators, which together with the above fix, +cover the hot -> warm -> hot demotion / promotion busy loop.

In PR #4419 we introduce a ChainDB for our simulation node, which plays +similar role to ChainDB in the ouroboros-consensus: a persistent (across +simulated restarts) store of blocks which does chain selection. This ensures +that the simulated node is using block-fetch to download blocks announced by +chain-sync mini-protocol.

We also made progress with reviewing PR #4019 - peer sharing.

We also fixed issue #4370 - a connection manager test failure, see PR #4384.

+ + + + \ No newline at end of file diff --git a/2023-03-03-crypto/index.html b/2023-03-03-crypto/index.html new file mode 100644 index 00000000000..147b67371f3 --- /dev/null +++ b/2023-03-03-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.
  • cardano-base: BLS branch is now ready for review. We are workign forward its merge.
  • KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.
  • Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs

Low level summary

Mithril

  • Bumped to version 0.2.0 the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using mlock.
  • Opened PR#783 to update dependency
  • Improved testing for batch opening of mtree, PR#773
  • Improved testing for batch verification of STM sigs PR#774
  • RFP for crypto audit almost ready.

cardano-base

  • BLS12-381 branch finally ready for review PR#266

KES agent

Team off for one week. Other progress:

  • Learning about raw direct-bearer abstraction. An interface for sockets in consensus.
  • use that for direct ser/deser
  • written those syntaxes for ouroboros (coming PR)
  • the kes agent will depend on that.

Sidechains

Progress with familiarisation of Halo2 library to write circuits.

+ + + + \ No newline at end of file diff --git a/2023-03-03-goedel/index.html b/2023-03-03-goedel/index.html new file mode 100644 index 00000000000..0e884a5edac --- /dev/null +++ b/2023-03-03-goedel/index.html @@ -0,0 +1,34 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on drafts of two papers and one +technical report, improving the deltaQ tutorial, consulting on +performance design, and the Djed paper has been accepted for +publication.

Details

  • Preparing draft of DeltaQSD algebra paper for FORTE 2023

  • Extending the technical report on which the above paper is based

  • Consulting with an external company on performance engineering of Plutus contracts

  • Planning improvements and collecting material for the deltaQ +tutorial based on experience with systems that manage risk at +multiple timescales

  • Preparing sections on the communication language and idempontency +laws for draft paper about verifying design refinements for +distributed system design

  • Studying Cardano chain sync protocol

  • "Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin +Protocol" has been accepted for publication at IEEE ICBC 2023

+ + + + \ No newline at end of file diff --git a/2023-03-03-hydra/index.html b/2023-03-03-hydra/index.html new file mode 100644 index 00000000000..0bd8d783e92 --- /dev/null +++ b/2023-03-03-hydra/index.html @@ -0,0 +1,33 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team released version +0.9.0 - a version +of the hydra-node with fully specified behavior of on-chain scripts and +off-chain head-logic, decreased costs for opening/closing a Head and scalable +contestation deadline semantics. Check out the full release notes for details.

Furthermore, they published the monthly +report of the Hydra project +and conducted a review meeting with an increasingly wider audience. The team +plans to extend invitations through the new Hydra +#announcements discord channel for the next +months, stay tuned!

What did the team achieve this week

  • Monthly review meeting with report published on website
  • Fixed smoke tests #726
  • Reduced the cost of opening/closing a Head (error codes #748 + head reference script #701)
  • Released version 0.9.0
  • Conducted a first experiment on mainnet compatibility #713
  • New discord category with #announcements channel
  • Received a demo about the Hydra for Voting project
  • Lightning talk on mutation-based testing (to be shared)
  • New themes view in on our roadmap and some rearranging as we align it with high-level objectives
  • Clarified things with researchers, but mostly identified action items for them

What are the goals of next week

  • Redraw transaction graphs and address TODOs specification
  • Run hydraw with 0.9.0 on preprod
  • Make smoke tests on mainnet possible
  • Groom the explorer item
  • Unblock the auctions projecth with commit from script a solution
+ + + + \ No newline at end of file diff --git a/2023-03-03-ledger/index.html b/2023-03-03-ledger/index.html new file mode 100644 index 00000000000..d2482f62b21 --- /dev/null +++ b/2023-03-03-ledger/index.html @@ -0,0 +1,35 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

High level summary

We have focused the last two weeks on CIP-1694, integration of the last several months of ledger +work into consensus and node, and testing infrastrutcture that we will use in the conway ledger era.

Low level summary

Conway rules

We made a major update to the conway era so that the implementation is now in sync with the spec +with respect to the ratification and enactment logic.

See the notes in pull-3291 for more details.

Constraint based generators

This week we hit a major milestone in our efforts to build out better property based testing +support for the main ledger properties. +The new constraint based generators can now generate full ledger states with what is probably +very close to the real constraints (if anything, it is under constrained). +Next we will work on generating a transaction in the context of a ledger state, which would allow +us to actually start using these generators for real tests.

See pull-3219.

Preparing a release, now with proper versioning

After quite some time, we are ready to release a version of ledger that will work with a new +version of consensus, using CHaPs.

See pull-3308.

Technical debt

  • We cleaned up the redeemer serialization code (to prevent future mistakes). See pull-3269.
  • We added a note to the Alonzo spec, specifying that the transaction inputs are +lexicographically ordered in the Plutus script context. See pull-3306.
  • We fixed a problem with the address deserialiazation +(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway). +See pull-3307.
  • We fixed a problem with our nix build. See pull-3311.
  • We fixed a problem with our NoThunks tests. See pull-3310.
  • We improved our nightly tests. See pull-3316.
+ + + + \ No newline at end of file diff --git a/2023-03-08-consensus/index.html b/2023-03-08-consensus/index.html new file mode 100644 index 00000000000..45401cd01a8 --- /dev/null +++ b/2023-03-08-consensus/index.html @@ -0,0 +1,53 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 3 min read
Damian Nadales

High level summary

The Consensus team continued working on refactoring and improving the UTxO-HD +prototype, and introducing improvements to the lmdb related packages. In +particular we identified an opportunity to gain performance by handling locks in +a more optimal way.

On the Genesis front, we sketched a mitigation for an issue that PNSol and +Researchers caught. We also came op with a road map for not only testing the +Genesis prototypes, but also for enriching the tests we already have.

Regarding technical debt, next to some minor improvements, we created +component-level micro-benchmarks for adding transactions to the mempool. The +results of these benchmarks will be published in the ouroboros-consensus web +page.

We also finished moving the Consensus documentation to the ouroboros-consensus +repository, released ouroboros-consensus 0.3.0.0, and reduced the time +GitHub actions take in ouroboros-network.

Workstreams

UTxO HD Prototype

We continued working on refactoring and improving the UTxO-HD prototype. As a +result of the first round of sytem-level benchmarks, we identified an +opportunity to optimise the way we handle locks to improve performance +(#4393).

Also, we introduced several improvements to the lmdb related packages:

Genesis

We sketched out a mitigation of the issue that PNSol and Researchers caught in +the Genesis design.

We came up with a road map for testing the Genesis prototypes, including early +milestones that are applicable to today's master branch, ie tests that are +useful before Genesis, and that will be nicely enriched when we do add Genesis.

We developed the aforementioned tests, specifically a QuickCheck generator for +the Honest leader schedule and one as-aggressive-as-possible Adversarial +leader schedule that together satisfy the Praos properties that the Consensus +design takes as invariants.

We investigated why the improved ChainDB queueing implementation behaves +differently in the baseline compared to the prototype, and we are close to +having a full picture of how the Consensus components interact during bulk sync.

Technical debt

We created component-level micro-benchmarks for adding transactions +to the mempool. We plan on extending this to more mempool actions and different +types of blocks. We store the benchmark data to make it available +to the GitHub action that publishes the benchmarks results.

Other minor improvements include:

  • Removal of Test.Util.Classify in favour of Test.StateMachine.Labelling.
  • Addition of -Wunused-packages to the default ghc-options for Consensus +packages.

Fostering collaboration

We finished moving the Consensus documentation from +ouroboros-network to ouroboros-consensus, in preparation for +migrating the code to the latter repository.

Support

We released ouroboros-consensus 0.3.0.0.

We reduced the load in the ouroboros-network GitHub actions, +thereby reducing the time CI jobs take.

+ + + + \ No newline at end of file diff --git a/2023-03-08-node-cli-api/index.html b/2023-03-08-node-cli-api/index.html new file mode 100644 index 00000000000..daaf44c3e47 --- /dev/null +++ b/2023-03-08-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· One min read
Jordan Millar

2023-03-08 - 2023-03-21

High level summary

General bug fixes and some refactoring

Completed

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-03-08-performance-and-tracing/index.html b/2023-03-08-performance-and-tracing/index.html new file mode 100644 index 00000000000..e9f5e8317fb --- /dev/null +++ b/2023-03-08-performance-and-tracing/index.html @@ -0,0 +1,29 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Michael Karg
  • Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.
  • New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.
  • Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.
  • Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.
  • Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.

Performance

1.35.6 release

Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.

Analysis pipeline

Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better +differentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance. +Additionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking +data more easily accessible.

Open Sourcing

As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable +third parties to make use of that data much more easily, by having reliable guidelines and a working example.

Tracing

The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make +the switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.

Infrastructure

Nomad backend

The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented.

+ + + + \ No newline at end of file diff --git a/2023-03-09-mithril/index.html b/2023-03-09-mithril/index.html new file mode 100644 index 00000000000..dfe6273f8db --- /dev/null +++ b/2023-03-09-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano mainnet and computes the stake distribution with the optimized unreleased Cardano CLI command.

Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup.

Low level overview

  • Worked on the epic that implements eras behavior switch #707:
    • Completed the deployment of the era behavior switch to the test networks #752
    • Completed the enhancement of datum generation for era markers #786
    • Worked on handling the API version with an era switch #727
  • Worked on the epic that implements a relational store in the aggregator #779:
    • Worked on the migration/adaptation of the stake_pool table #787
  • Completed the refactoring of errors in the signer and aggregator state machines #665
  • Worked on testing Mithril with a mainnet Cardano network #777
  • Worked on fixing bugs with the Docker client image:
    • Fixed a bug that made the Docker client container crash at startup #769
    • Fixed a bug that prevented the restoration of a snapshot with a Docker client #791
    • Worked on testing the Docker client in the Mithril Client multi-platform test workflow #794
+ + + + \ No newline at end of file diff --git a/2023-03-10-hydra/index.html b/2023-03-10-hydra/index.html new file mode 100644 index 00000000000..d797a1ea1f1 --- /dev/null +++ b/2023-03-10-hydra/index.html @@ -0,0 +1,28 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team addressed issues with committing complex UTxOs into a +Hydra Head, prepared the hydra-node to be run on mainnet (soon) and improved +the test suite of the hydra-plutus scripts. The specification is constantly +getting improved upon reviewer feedback on overleaf - this week the graphical +notation was refined to be more transaction-focused.

What did the team achieve this week

  • Clarified bug of committing UTxOs with reference scripts to a Hydra head #737
  • Prepare usage of hydra-node on mainnet by updating command line options #715
  • Improved our mutation test suite to all expected errors #705
  • Re-opened our persistent hydraw demo head on preprod using version 0.9.0
  • Updated on-chain graphs to be more transaction-focused in the specification

What are the goals of next week

  • Complete mainnet compatibility feature
  • Prepare the Hydra workshop
  • Address all todo’s in the Hydra specification
  • Unblock the auctions project with commit from script a solution
+ + + + \ No newline at end of file diff --git a/2023-03-16-goedel/index.html b/2023-03-16-goedel/index.html new file mode 100644 index 00000000000..a0f5c5d36cc --- /dev/null +++ b/2023-03-16-goedel/index.html @@ -0,0 +1,31 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on drafts of two papers +improving the deltaQ tutorial, consulting on performance design, and +the final version of the Djed paper.

Details

  • Preparing draft of DeltaQSD algebra paper for ICE 2023

  • Successful outcome of Marlowe consultancy leading to substantial +improvement in performance

  • Preparing sections on the communication language and bisimulation +proofs for draft paper about verifying design refinements for +distributed system design

  • Camera ready version of Djed paper under preparation

+ + + + \ No newline at end of file diff --git a/2023-03-17-crypto/index.html b/2023-03-17-crypto/index.html new file mode 100644 index 00000000000..58168cf5adc --- /dev/null +++ b/2023-03-17-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Mithril: RFP finished. Code ready for audit.
  • cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams.
  • KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing.
  • Sidechains: Preparing proving system to use the curves needed for main-net PoC.

Low level summary

Mithril

  • Merged PR#783
  • RFP for crypto audit ready.

cardano-base

  • BLS12-381 branch approved PR#266. Blocker is Windown's CI. Working on it
  • Testing strategy for BLS bindings:
    • Preparing test-vectors for Groth16, and simple BLS signatures
    • Finding community projects to help write their use cases
    • Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)
  • Wrote blogpost on how using the same key for ed25519 and VRF completely breaks the security of both systems

KES agent

  • Started integration of sockets interface used in consensus
  • Use that for de/ser
  • Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim
  • Results in having to parametrise for IOSim in KES and DSIGN for testing

Sidechains

  • Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages.
  • Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS.
  • EdDSA over JubJub ready
+ + + + \ No newline at end of file diff --git a/2023-03-17-hydra/index.html b/2023-03-17-hydra/index.html new file mode 100644 index 00000000000..215a4e68cae --- /dev/null +++ b/2023-03-17-hydra/index.html @@ -0,0 +1,36 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team has continued work on the mainnet compatibility of the +hydra-node. They added a golden test suite for hydra-plutus scripts, added +some detection of hydra-node misconfiguration, established a limit of 100 ADA +per commit and other smaller tasks to prepare for a mainnet beta release.

Next week there will be a small team workshop to push for demonstrating a Hydra +Head on the Cardano mainnet, ideally just in time for the monthly review +meeting. See the hydra channels on the IOG Technical Community discord server +for details.

What did the team achieve this week

  • Implement a 100 ADA hard-coded commit limit in the hydra-node +#763
  • Pay back funds to faucet after smoke-test run +#773
  • Setup custom github runner for smoke-tests on mainnet +#775
  • Created golden tests to assure the script hash stays the same between +changes #772
  • Removed hardcoded error codes in plutus scripts +#768
  • Detect misconfiguration of a hydra-node given persistent state +#767
  • Met with potential users for hydra-pay
  • Prepared hydra workshop

What are the goals of next week

  • Hydra monthly meeting
  • Open a multi-party head on mainnet
  • Complete mainnet compatibility feature
+ + + + \ No newline at end of file diff --git a/2023-03-17-ledger/index.html b/2023-03-17-ledger/index.html new file mode 100644 index 00000000000..2f97e387fda --- /dev/null +++ b/2023-03-17-ledger/index.html @@ -0,0 +1,33 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

High level summary

We made further progress on the conway ledger era. +In particular, we expanded the ledger API significantly, including lots of governance features. +We also made progress on the specification and corresponding work in the Haskell implementation.

We also continued to integrate the latest ledger packages into cardano node and addressed +technical debt.

Low level summary

Expanded ledger API

The ledger API was significantly expanded to include:

  • a lot of protocol parameter support
  • versioning support (type level ledger eras and protocol versions)
  • auxiliary data support
  • many new lenses
  • support for witnesses
  • support for conway governance

See pull-3328.

Conway ledger rules

We have made progress on the formal ledger specification for the Conway era. +Moreover, the corresponding Haskell updates were also completed:

Incremental SPO/DRep stake distribution computation

We have a working (and correct) proof of concept for how to use the incremental lambda calculus +to maintain several of the stake distributions incrementally. +For the per-SPO distribution, this is a performance improvement. +For the (conway) per-DRep distribution, this is will allow those who have delegated their votes +to a DRep to have time to react to any votes that they disapprove of. +(Sorry, no code to share just yet, more to come.)

Technical debt

+ + + + \ No newline at end of file diff --git a/2023-03-21-network/index.html b/2023-03-21-network/index.html new file mode 100644 index 00000000000..25b17d03843 --- /dev/null +++ b/2023-03-21-network/index.html @@ -0,0 +1,41 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High level summary

In the last spring we released cardano-node-1.35.6 with dynamic P2P +functionality.

We received reports from some SPOs who encountered problems with their non +P2P block producing nodes not being able to connect to their P2P relay. Karl +Knutsson (from Cardano Foundation) reproduced this issue between two nodes (a +non P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed +it and found a bug in the legacy non p2p code. The bug is only possible to +trigger with a P2P node which is binding its outbound connection port to +a fixed IP address and port (default in p2p). A possible solution was found. +For more information see #4465.

We released cardano-ping-0.1.0.0 package to CHaP. cardano-ping is no +longer available as a standalone binary, but instead it will become part of +cardano-cli (see #4664)

We are testing cardano-node with peer sharing functionality (#4019).

We are working on eclipse evasion. We added new class of peers: big ledger +peers to the outbound governor, implemented tests and fixed found issues +(#4462). We also made the information if a given peer plays the role of +a big ledger peer to the mini-protocols. This will allow to modify +mini-protocol applications for such peers. As part of this functionality we +refactored some core types in the network code which simplifies exposed API.

Together with Moritz Angerman we started to update io-sim to ghc-9.6.1 (see +#73).

We merged a fix of configuration of accepted connections limit in +cardano-node (see #4902).

+ + + + \ No newline at end of file diff --git a/2023-03-22-consensus/index.html b/2023-03-22-consensus/index.html new file mode 100644 index 00000000000..63774baccdc --- /dev/null +++ b/2023-03-22-consensus/index.html @@ -0,0 +1,30 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

This week the consensus team continued working on the refactoring of the UTxO HD +prototype, and design and testing of Genesis. We also extracted the fs-sim +package, which provides a file-system abstraction layer that can be used for +testing and simulation. This makes the Consensus code base smaller, while +providing a package that the community can reuse and contribute to. We also +fixed a failing property test related to iterators. We are also working on +mempool and VRF improvements.

Low-level details

+ + + + \ No newline at end of file diff --git a/2023-03-22-node-cli-api/index.html b/2023-03-22-node-cli-api/index.html new file mode 100644 index 00000000000..b231b42aad3 --- /dev/null +++ b/2023-03-22-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content
+ + + + \ No newline at end of file diff --git a/2023-03-22-performance-and-tracing/index.html b/2023-03-22-performance-and-tracing/index.html new file mode 100644 index 00000000000..7304e79d62d --- /dev/null +++ b/2023-03-22-performance-and-tracing/index.html @@ -0,0 +1,30 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg
  • Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.
  • New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users.
  • Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery.
  • Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks.
  • Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing.
  • Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.

Performance

New tracing

The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe +a slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use.

GHC RTS parametrization

We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies +on different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use.

Open Sourcing

Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases.

Tracing

For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well +as a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points +for users of the new system, depending on their wants and needs.

Infrastructure & Analysis

General

Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will +increase confidence in specific metrics.

Nomad backend

We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis +is patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries.

+ + + + \ No newline at end of file diff --git a/2023-03-23-db-sync/index.html b/2023-03-23-db-sync/index.html new file mode 100644 index 00000000000..2b17c9f8cee --- /dev/null +++ b/2023-03-23-db-sync/index.html @@ -0,0 +1,33 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

The DBSync team worked in performance enhancements issues, on providing new db-sync options and on +technical debt and bug fixing. The DBSync team also on boarded a new member.

Low level summary

  • Worked on an issue which causes ada_pots tables to include the values related not only to an +epoch, but also the first epoch of the last epoch. +#1367
  • Fixed an issue where the epoch table didn't rollback and caused wrong values +#1370
  • Fixed an issue were users with disable-ledger option had to provide the state dir option, even +though it was never used. Also refactored the no ledger part of the codebase. +#1378
  • Improved the perforance by using the cache more. Also provided many new options which enables or +disables parts of db-sync. In addition a new --turbo mode is enables which allows db-sync to sync +mainnet in hours. +#1379
+ + + + \ No newline at end of file diff --git a/2023-03-23-mithril/index.html b/2023-03-23-mithril/index.html new file mode 100644 index 00000000000..095b6ce8698 --- /dev/null +++ b/2023-03-23-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2310.0 distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images.

Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano mainnet and they have fixed some bugs.

Low level overview

  • Completed the epic that implements eras behavior switch #707:
    • Completed handling the API version switch at era transition #727
  • Worked on the epic that implements a relational store in the aggregator #779:
    • Completed on the migration/adaptation of the stake_pool table #787
    • Worked on the migration/adaptation of the epoch_settings table #813
    • Worked on the migration/adaptation of the signed-entity-type table #815
    • Completed the creation of a stake distribution service #799
  • Completed the testing of Mithril with Cardano mainnet network #777
  • Completed qualifying the computation of the stake distribution #810
  • Completed the testing of the Docker client in the Mithril Client multi-platform test workflow #794
  • Worked on bugs and optimizations:
    • Fixed a bug that made computation of the stake distribution occur multiple times during an epoch #804
    • Fixed a bug that created deadlocks on the SQLite connection #807
    • Optimized the error message and the behavior of the signer node when KES keys have expired #820
    • Upgraded the infrastructure of the testing-preview and pre-release-preview networks #801
    • Re-genesis of the testing-preview network #803
    • Re-genesis of the pre-release-preview network #818
+ + + + \ No newline at end of file diff --git a/2023-03-24-hydra/index.html b/2023-03-24-hydra/index.html new file mode 100644 index 00000000000..af31d428102 --- /dev/null +++ b/2023-03-24-hydra/index.html @@ -0,0 +1,29 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra had a team workshop and conducted the monthly review +meeting for March. They demonstrated a Hydra Head on mainnet, which was running +the hydraw demo application. While this marks an important milestone, they also +emphasized that more features are still to be added as needed for applications +to run on Hydra. Besides this, the roadmap is getting cleaned up to encourage +discussions and provide more space for user requests.

What did the team achieve this week

  • Monthly review meeting slides/recording, full report of March next week
    • Opened a head on mainnet with hydraw demonstration
    • Hydra pay updates
  • Team workshop in Austria
    • Hydra presentation at the Cardano Foundation in Zurich
    • In-person grooming session, marked many items as candidates to be rather :idea: dicussions
    • Improved head protocol #786 and investigated a potential bug in rollback handling #784
    • Team building and retrospective

What are the goals of next week

  • Follow-up on backlog and roadmap clean-up
  • Complete mainnet compatibility feature (documentation updates)
  • Make API more configurable #380
  • Integrate Hydra specification into repository #693
+ + + + \ No newline at end of file diff --git a/2023-03-27-system-test/index.html b/2023-03-27-system-test/index.html new file mode 100644 index 00000000000..908af0eed67 --- /dev/null +++ b/2023-03-27-system-test/index.html @@ -0,0 +1,24 @@ + + + + + +System Test Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

System Test Team Update

· One min read
Martin Kourim

High level summary

Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.5 and 1.35.6 releases (and their predecessing release candidates) and ran tests on branch with the UTxO-HD functionality.

Workstreams

Framework improvements:

  • improvements in searching for unexpected error messages in log files during test run
  • added support for UTxO-HD testing
  • added support for the new P2P topology format
  • added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)
  • added preliminary support for the Conway era
  • added support for running tests on the Preview testnet

Full list of closed PRs

Node:

  • ran tests on node branch with the UTxO-HD functionality
  • tested the 1.35.5 release
  • tested the 1.35.6 release

DB-Sync:

  • improvements in db-sync sync tests
  • improvements in db-sync functional tests
+ + + + \ No newline at end of file diff --git a/2023-03-31-crypto/index.html b/2023-03-31-crypto/index.html new file mode 100644 index 00000000000..a22c0f82936 --- /dev/null +++ b/2023-03-31-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Mithril: Started looking into full-node verifier
  • cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties.
  • KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent.
  • Sidechains: Included BLS12-381 & JubJub to halo2curves
  • MuSig2: Final modifs to C version.

Low level summary

Mithril

  • Started designing how a full-node verifier would work. Issue comming in the next couple of weeks.

cardano-base

  • BLS12-381 branch merged PR#266.
  • Testing strategy for BLS bindings:
    • Test-vectors for Groth16, and simple BLS signatures ready.
    • Test-vectors with different library, and created by different engineer.

KES agent

  • Resolved issues of circular dependency
  • Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same.
  • Opened a PR for raw bearer branch in ouroboros network PR4395
  • Resolved a bug where the agent node did not properly closed connections
  • Updated version of IOSim allowed us to finish a first version of KES agent.

Sidechains

  • Included BLS12-381 curve to our branch of halo2curves
  • Included JubJub to our branch of halo2curves

MuSig2

  • Minor reorg PR#42
  • Started including fuzz testing for deserialisation PR#
+ + + + \ No newline at end of file diff --git a/2023-03-31-goedel/index.html b/2023-03-31-goedel/index.html new file mode 100644 index 00000000000..68f9d30e931 --- /dev/null +++ b/2023-03-31-goedel/index.html @@ -0,0 +1,29 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on final drafts of two papers +for internal review and planning next steps of analysis of consensus +design refiniments.

Details

  • Preparing final draft of DeltaQSD algebra paper for internal review

  • Preparing final draft of verifying design refinements for +distributed system design for internal review

  • Planning next phase of consensus design refinement analysis

+ + + + \ No newline at end of file diff --git a/2023-03-31-hydra/index.html b/2023-03-31-hydra/index.html new file mode 100644 index 00000000000..f646153b9dc --- /dev/null +++ b/2023-03-31-hydra/index.html @@ -0,0 +1,29 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra continued work on finishing mainnet compatibility. The +semi-automated smoke tests and some missing documentation is still preventing +from calling that fully done. They fixed smaller issues and made a step in the +Head protocol more robust. Besides development, they met with interested people +from the community who want to get started collaborating on communication and +marketing materials.

What did the team achieve this week

  • Groomed and followed-up on GetUTxO user request discussion #797
  • Fixed hydra-node crashes after forks #560
  • Made collectCom more robust and aligned with spec #786
  • Completed configurable API feature #380
  • Met potential contributors about Hydra communication and marketing materials
  • Versioned documentation: we have a unstable bleeding edge version available as well now, seperate from the last released version

What are the goals of next week

  • Follow-up backlog and roadmap clean-up
  • Complete mainnet compatibility feature #713 (documentation updates)
  • Integrate Hydra specification into repository #693
+ + + + \ No newline at end of file diff --git a/2023-03-31-ledger/index.html b/2023-03-31-ledger/index.html new file mode 100644 index 00000000000..74c901356e9 --- /dev/null +++ b/2023-03-31-ledger/index.html @@ -0,0 +1,37 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

High level summary

We are still heavily involved in work related to preparing the next release. +The other main thing we have worked on is experimentation about how we will +handle the DRep stake distribution for CIP-1694 in the conway ledger era. +Lastly, we merged a fix for +node-4826 +into our main branch (there will be a post-mortem shortly).

Low level summary

Support for the next release

  • pull-3363 - Fix problems relating to Arbitrary instances used by consensus.
  • pull-3361 - Remove the alonze genesis from the conway genesis.
  • pull-3360 - Translate bad pointer addresses to valid ones in conway.
  • pull-3357 - Fix a bug relating to zero valued ADA in the script context.
  • pull-3356 - Added needed instances (Arbitrary and Serialization) for conway integration.
  • pull-3345 - Added helper functions for the CLI.
  • pull-3342 - Fix a bug with a CLI helper function (having to do with deposit tracking).

Experiments for DRep stake distribution

Adding another stake distribution to the ledger state presents some new challenges. +We would like to be able to use the current stake distribution at the epoch boundary +for DRep voting so that people can always vote themselves in time for any proposal. +To this end, we have a prototype of an incremental computation based on the incremental +lambda calculus, together with tests and benchmarks (which are very promising). +See pull-3344.

Additionally, more of the ledger state is going to need to be rearranged to accomodate +the new incremental computations. +We have two draft PRs up for possibles solution. +See pull-3353 and pull-3364.

Technical debt and bug fixes

Documentation changes

  • pull-3354 - Rename "optional datums" with "supplemental datums" in the alonzo spec.
  • pull-3352 - Add a section to the Shelly errata about the individual deposit tracking.
  • pull-3351 - Further clarify the details regarding the script integrity hash.
  • pull-3350 - Some cleanup of the Babbage spec.
+ + + + \ No newline at end of file diff --git a/2023-04-05-consensus/index.html b/2023-04-05-consensus/index.html new file mode 100644 index 00000000000..8d89be7c8f7 --- /dev/null +++ b/2023-04-05-consensus/index.html @@ -0,0 +1,33 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

This week the consensus team finished the UTxO-HD prototype refactoring. We are +now working on improving the DB lock mechanism to improve performance. We also +introduced several improvements to the file system abstraction and simulation +layer (fs-sim), which culminated in the release of fs-sim-0.1.0.0 and +fs-api-0.1.0.0 to CHaP.

On the Genesis front we distributed the updated Genesis design document, +soliciting feedback from Networking Team and IOG Researchers. We also opened up +a PR for the adversarial leader schedule QuickCheck generator, which is being +reviewed.

On the support front, we got a new Consensus version that can use different +fundamental VRF crypto primitives for Babbage and Conway eras.

On the tech debt front we fixed an bug in the followers logic, which was +discovered by our QuickCheck property tests.

+ + + + \ No newline at end of file diff --git a/2023-04-05-node-cli-api/index.html b/2023-04-05-node-cli-api/index.html new file mode 100644 index 00000000000..5da8bac83c5 --- /dev/null +++ b/2023-04-05-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2023-04-05 - 2023-04-19

High level summary

  • Introduce new governance commands create, answer and verify. This allows us to have onchain polls.
  • Begin making changes in cardano-api to accomodate for CIP-1694
  • Rename TestEnableDevelopmentHardForkEras to ExperimentalHardForksEnabled and TestEnableDevelopmentNetworkProtocols to ExperimentalProtocolsEnabled
  • Various bug fixes and improvements

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-04-05-performance-and-tracing/index.html b/2023-04-05-performance-and-tracing/index.html new file mode 100644 index 00000000000..a4424312868 --- /dev/null +++ b/2023-04-05-performance-and-tracing/index.html @@ -0,0 +1,32 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg
  • Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.
  • New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput.
  • Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged.
  • Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added.
  • Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.

Benchmarking

We have adapted our benchmarking cluster to the requirements of the 8.0 release branch. Testing runs of a very early feature branch for 8.0 +helped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for 8.0 soon.

Tracing

Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very +detailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing +the highest possible throughput of data for forwarding to cardano-tracer.

Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions +for tunneling trace forwarding from a node to cardano-tracer via an easy to manage system service, which will match the production setup of most users.

Infrastructure & Analysis

General

Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance +analysis can be fed back and serve as an additional point of comparison.

Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations.

Plutus library

We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles. +This will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile. +It is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit.

Nomad backend

The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is +being improved to minimize any friction for the backend user.

+ + + + \ No newline at end of file diff --git a/2023-04-06-mithril/index.html b/2023-04-06-mithril/index.html new file mode 100644 index 00000000000..6e01dd7f4a2 --- /dev/null +++ b/2023-04-06-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2313.0 distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages.

Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to 1.35.6.

Low level overview

  • Released the new distribution 2313.0
  • Worked on the epic that implements a relational store in the aggregator #779:
    • Completed the migration/adaptation of the epoch_settings table #813
    • Completed the migration/adaptation of the signed-entity-type table #815
    • Completed the migration/adaptation of the certificate table #817
    • Completed the migration/adaptation of the open_message table #827
    • Completed the migration/adaptation of the signer_registration table #828
  • Completed the refactoring of the dependency injection of the aggregator #823
  • Completed the cleanup of the multi-signer of the aggregator #824
  • Completed the upgrade of the Cardano node to 1.35.6 #843
+ + + + \ No newline at end of file diff --git a/2023-04-07-hydra/index.html b/2023-04-07-hydra/index.html new file mode 100644 index 00000000000..bd5156fbb6a --- /dev/null +++ b/2023-04-07-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team published the monthly report for March, created +separate links for different versions of documentation, and clarified potential +solutions for the Rollbacks bug. The team also discussed Query API requests for +the Hydra Voting project and met with community members to answer questions +about Hydra. Moving forward, the team plans to integrate the specification into +the repository, implement a short-term fix for the Rollbacks issue, and draft a +Query API ADR.

What did the team achieve this week

  • Published monthly reports on website
  • Separate last released and latest versions of docs (e.g. normal released vs. /unstable)
  • Discussed Query API concerns from Hydra Voting project (link)
  • Clarified rollbacks bug and defined possible solutions (short and long term) #784
  • Met with community members to answer questions about Hydra

What are the goals of next week

  • Finally get the docs integrated into the repository #693
  • Dirt road fix for rollbacks #784
  • Disclaimer text and detail known issues about mainnet compatibility +#713
+ + + + \ No newline at end of file diff --git a/2023-04-14-goedel/index.html b/2023-04-14-goedel/index.html new file mode 100644 index 00000000000..726de1d9b87 --- /dev/null +++ b/2023-04-14-goedel/index.html @@ -0,0 +1,27 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has submitted two papers for publication, carried +out consultancy with other teams and has an opening for an intern.

Details

+ + + + \ No newline at end of file diff --git a/2023-04-14-hydra/index.html b/2023-04-14-hydra/index.html new file mode 100644 index 00000000000..69c826b9276 --- /dev/null +++ b/2023-04-14-hydra/index.html @@ -0,0 +1,30 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team focused on improving the smoke test, fixing developer +tooling, and improving the API for voting use cases. They reviewed progress on +auction, payments, and voting projects and made worked on reproducing a bug with +handling rollbacks. Moving forward, the team plans to update dependencies, +implement a dirt road fix for the rollbacks bug, and explore adding Hydra +support to kupo.

What did the team achieve this week

  • Reviewed progress on auction, payments and voting projects
  • Improved smoke tests so they can run on mainnet
  • Fixed a regression in the development environment and updated cardano-node +used in tests
  • Improved API with more configurability to unblock voting use case
    • Exclude utxo in SnapshotConfirmed outputs #808
    • Addressed a user request by only sending Greetings once #813
  • Reproduced the rollback bug by improving our model-based test suite #784

What are the goals of next week

  • Update dependencies to match cardano-node master
  • Dirt road fix for rollbacks #784
  • Update Hydraw to maintain state locally
  • Explore adding Hydra support to kupo
  • Put disclaimer texts and closing mainnet compatibility feature #713
+ + + + \ No newline at end of file diff --git a/2023-04-17-ledger/index.html b/2023-04-17-ledger/index.html new file mode 100644 index 00000000000..fc985d258ab --- /dev/null +++ b/2023-04-17-ledger/index.html @@ -0,0 +1,27 @@ + + + + + +Incident Report | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Incident Report

· 2 min read
Kevin Hammond

Incident reporting: Cardano block production temporary outage

On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a ‘critical’ incident, thus warranting immediate response and investigation by IOG engineers. +The investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue – a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite. +Following successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version. +With the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue.

Further Details

You can read more details on the incident and how it was managed from SundaeSwap’s Pi Lanningham here. Thanks again to all the community for its support in identifying and fixing this bug.

+ + + + \ No newline at end of file diff --git a/2023-04-19-consensus/index.html b/2023-04-19-consensus/index.html new file mode 100644 index 00000000000..2ee396e3d38 --- /dev/null +++ b/2023-04-19-consensus/index.html @@ -0,0 +1,35 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

This week the consensus team continued working on the improved DB lock mechanism +for UTxO-HD, and modifications to the mempool benchmarks that this prototype +requires.

On the Genesis front we validated that the fragment size calculation in +BlockFetch is a major performance sink for ChainSync Jumping. By removing it +we will get performance that is acceptably close to that of the baseline. We +also started investigating a performance fix that does not alter the existing +baseline behavior too much. In addition we reviewed our Genesis attack vector +calculations.

On the support front we released Consensus 0.4, and we are working on improving +our release process, to support the Cardano-wide efforts in this area. We also +performed an analysis on the number of file descriptors that consensus use. This +information can be used by the node operators to check if the number of file +descriptors they want to support are enough.

+ + + + \ No newline at end of file diff --git a/2023-04-19-performance-and-tracing/index.html b/2023-04-19-performance-and-tracing/index.html new file mode 100644 index 00000000000..3ff9776332f --- /dev/null +++ b/2023-04-19-performance-and-tracing/index.html @@ -0,0 +1,37 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg
  • Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.
  • New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois.
  • Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run.
  • Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench.
  • Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.

Benchmarking

We have performed various cluster runs targeting the 8.0 release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile epoch-transition for local reproduction of what we observed on the benchmarking cluster.

Furthermore, we bridged the gap between the run data from the 1.35.x releases to the the new 8.0.x release branch. This included walking the +master branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial +in locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of +benchmarks.

Tracing

In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still +ongoing.

In coordination with Galois, who are developing a system assurance service by observing a number of cardano-nodes, we're working with the implementation +of data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational +burden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether cardano-tracer could be extended with a richer +feature set to that end.

Infrastructure & Analysis

Detailed manifest

A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with. +These dependencies come from different package sources, have different versioning policies, and an identical package version might provide different +performance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated +by making all component bumps visible and accessible.

GHC profiling inside workbench

The workbench has been equipped with a new -profnix profile flavour. This enforces a -fprof-auto build for all node-related packages. The type of +profiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already +been merged to master.

Nomad backend

The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances. +This results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing.

+ + + + \ No newline at end of file diff --git a/2023-04-20-mithril/index.html b/2023-04-20-mithril/index.html new file mode 100644 index 00000000000..e5c6230f91f --- /dev/null +++ b/2023-04-20-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2315.0 distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures.

Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network.

Low level overview

  • Released the new distribution 2315.0
  • Completed the epic that implements a relational store in the aggregator #779:
    • Completed the migration/adaptation of the signed_entity table #816
    • Completed the creation of the signer table #814
    • Completed the migration/adaptation of the single_signature table #829
  • Worked on the epic that designs and implement generic signing/verification of entity services #780:
    • Completed the definition of the interface of the generic entity service for signing #847
    • Worked on the implementation of the Certifier service in the aggregator #850
    • Completed the extension of the SignedEntityType type #848
    • Completed the implementation of the Tick service in the aggregator #849
    • Worked on implementing the signable builder for the Mithril Stake Distribution #851
+ + + + \ No newline at end of file diff --git a/2023-04-20-node-cli-api/index.html b/2023-04-20-node-cli-api/index.html new file mode 100644 index 00000000000..df3fbac66be --- /dev/null +++ b/2023-04-20-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content
+ + + + \ No newline at end of file diff --git a/2023-04-21-hydra/index.html b/2023-04-21-hydra/index.html new file mode 100644 index 00000000000..663f8363cf3 --- /dev/null +++ b/2023-04-21-hydra/index.html @@ -0,0 +1,30 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team worked on several fronts, including fixing state +machine continuity on-chain, discussing voting project solutions, exploring +adding Hydra support to kupo, and improving API navigation with a sidebar. The +team also updated dependencies and fixed issues in their test suites. Moving +forward, the team plans to hold the next monthly review meeting, address a user +issue, prepare for the 0.10.0 release, and work on a dirt road fix for the +rollbacks issue with proper test coverage.

What did the team achieve this week

  • Fixed scripts to enforce state machine continuity on-chain #777.
  • Took part in a twitter space on Scaling Cardano.
  • Joined a CBIA meeting to discuss Cardano network protocols & how to specify them.
  • Discussed potential solutions of ensuring vote uniqueness in the voting project.
  • Updated dependencies to match cardano-node master to prepare for upcoming releases and hard-forks
  • Explored adding Hydra support to kupo, a lightweight Cardano chain indexer - some more work required.
  • Improved navigation of the API Reference with a sidebar, see unstable API version.
  • Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)

What are the goals of next week

  • Monthly review meeting (join via Discord or AddEvent) & report
  • Dirt road fix for rollbacks #784 properly covered by a test.
  • Groom and ideally address user issue #823.
  • Put the spec into the repo #693 and prepare release 0.10.0.
+ + + + \ No newline at end of file diff --git a/2023-04-21-ledger/index.html b/2023-04-21-ledger/index.html new file mode 100644 index 00000000000..82d6b14390d --- /dev/null +++ b/2023-04-21-ledger/index.html @@ -0,0 +1,27 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· One min read
Jared Corduan

High level summary

We continued to make progress on CIP-1694 and the conway ledger era. +In particular, the conway era now supports Plutus V3. +Finally, we made small improvements to the ledger API and now host +our Haskell code documentation (haddocks) on github pages.

Low level summary

Conway ledger era

Haddocks hosted on github pages

Small improvements to the API

Technical Debt

  • [pull-3367] Fix cost model json instances.
  • [pull-3371] UMap cleanup.
  • [pull-3373] Upgrade to ghc 9.2.7 and cabal 3.10.1.
  • [pull-3375] Sadly, we had to revert the TICKF optimizations. There was a regression we do not yet understand.
  • [pull-3377] Fix cabal warnings.
  • [pull-3383] Fix multi-asset test.
+ + + + \ No newline at end of file diff --git a/2023-04-27-hydra/index.html b/2023-04-27-hydra/index.html new file mode 100644 index 00000000000..6c6b5b5f418 --- /dev/null +++ b/2023-04-27-hydra/index.html @@ -0,0 +1,34 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team held their Monthly review meeting and drafted the +report which likely is published next week. They put the spec into the +repository and website, addressed a user issue and fixed the TUI peer list. +Furthermore, they updated dependencies, conducted a Twitter space on Auctions +use cases, covered the rollback bug with tests and implemented a solution. +Looking ahead, their goals for next week include releasing 0.10.0, implementing +timed transactions support, writing a Query API ADR, and grooming work items +like off-chain benchmarks.

What did the team achieve this week

  • Held the Monthly review meeting and drafted the report (to be published next week)
  • Added the spec into the repository +#693 and published on +the +website
  • Groom and addressed user issue #823
  • Covered the rollback bug with tests and implemented a solution (to be reviewed) #784
  • Fixed the TUI peer list
  • Updated dependencies to match cardano-node master
  • Conducted a twitter space on Auctions use cases

What are the goals of next week

  • Release 0.10.0
  • Support timed transactions solution drafted and validated API with users
  • Write Query API ADR and groom a concrete step
  • Groom and solve PostTxOnChainFailed UX problem #832
  • Groom off-chain benchmarks idea #186 and turn it into a feature
+ + + + \ No newline at end of file diff --git a/2023-04-28-crypto/index.html b/2023-04-28-crypto/index.html new file mode 100644 index 00000000000..f5d49ee230b --- /dev/null +++ b/2023-04-28-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library.
  • KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction.
  • Sidechains: Started implementing ECC chip of JubJub over BLS12-381.

Low level summary

cardano-base

  • #255 finally merged 🎉
  • Additional tests for BLS bindings #384
  • Open PR for including test vectors created with zkscrypto's library, PR#397

KES agent

  • Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period PR#389.
  • Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) #317.
  • Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim
  • Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes
  • Refactor MonadSodium into MonadMLock PR#388.

Sidechains

  • Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)
  • Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo
+ + + + \ No newline at end of file diff --git a/2023-04-28-goedel/index.html b/2023-04-28-goedel/index.html new file mode 100644 index 00000000000..71b2f54f41f --- /dev/null +++ b/2023-04-28-goedel/index.html @@ -0,0 +1,27 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is working on porting an existing formalisation of Ouroboros +Praos to a newer foundation.

Details

+ + + + \ No newline at end of file diff --git a/2023-04-28-network/index.html b/2023-04-28-network/index.html new file mode 100644 index 00000000000..62c2f673bce --- /dev/null +++ b/2023-04-28-network/index.html @@ -0,0 +1,31 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High level summary

The networking team has released the following packages to Hackage:

We published an announcement blog post. We made progress +also on another blog post which will describes the design of the P2P networking +layer.

After moving ouroboros-consensus to its own repository, we made +ouroboros-network compatible with GHC 9.4 and 9.6.

We made cardano-client library independent of +ouroboros-consensus-diffusion.

We prepared release of network packages for cardano-node-8.0.

Detailed log

Ouroboros-Network

IO-Sim

  • io-classes-1.0.0.0, and following up releases: 1.0.0.1 (ghc-9.6 +support), 1.1.0.0 (documentation fix).
  • Fixed timeouts and delays in io-sim in a series of PRs: io-sim#81, +io-sim#82, io-sim#86, io-sim#87.
  • Renamed a module: io-sim#88.
  • Fixed a failing registerDelayCancellable test: [io-sim#80].
  • Use GitHub merge queue in io-sim repository.
  • CI: download stylish-haskell: io-sim#83.

Typed Protocols

+ + + + \ No newline at end of file diff --git a/2023-05-01-db-sync/index.html b/2023-05-01-db-sync/index.html new file mode 100644 index 00000000000..9b4d1e8b9d0 --- /dev/null +++ b/2023-05-01-db-sync/index.html @@ -0,0 +1,29 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

Lower level summary

  • Prepared a schema change which is expected to speed up queries and help clients +#1389.
  • Ran a big number of benchmarks on the above to evaluate if this change is reasonable.
  • Performance optimization related to rewards +#1382
  • Using the cache in more places to reduce recourses usage +#1380
  • Evaluated risks related to UTXO-HD integration
  • Worked on a feauture request to split the tx_out to an address table +#1396
  • Worked on another feauture request to prune the consumed entries from the tx_out table +#1398
  • Prepared for CIP-1694 integration
+ + + + \ No newline at end of file diff --git a/2023-05-03-consensus/index.html b/2023-05-03-consensus/index.html new file mode 100644 index 00000000000..ed8cb78de2f --- /dev/null +++ b/2023-05-03-consensus/index.html @@ -0,0 +1,50 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

During the past two weeks we made some important progress in the Genesis design. +It seems the BlockFetch logic need not be modified for Genesis, although this +needs to be confirmed. We started a DoS mitigation handbook and updated our +conceptual component diagram to guide the Genesis design. We engaged with the +IOG researchers to work on the Limit on Patience attack vector, work in this +area is still ongoing. We sketched a design to decouple the CPU load of the node +from its responsiveness to the socket. Finally, we discussed with Networking our +approach to lower the performance impact of the BlockFetch decision logic, and +got green light from them.

We migrated the consensus code to a new +repository, splitting +it from the ouroboros-network repository, and released version 0.6 of +Consensus.

We also merged the mempool fairness improvement to main branch.

Another significant enhancement to our documentation was the addition of an +explanation of the hardfork combinator forecast horizon.

See the sections below for more details.

Genesis

We reviewed the BlockFetch design documentation, and added some source-code +comments that emphasize certain properties of the decisions the BlockFetch +logic makes that are helping us confirm that Genesis does not require any +changes to BlockFetch. We are waiting on input from our former system +architect to verify this.

We migrated and updated the conceptual component diagram in the ouroboros-consensus +repository which helps us situate the Genesis design and argument.

We engaged with the IOG researchers about the Genesis design. We sketched out a +way to address the concern that the Limit on Patiente (LoP) attack vector duty +cycle is indeed low, but it's still non-trivial to ultimately conclude it's +sufficiently low.

We also sketched a design to decouple the CPU load of the node from its +responsiveness to the socket, since the LoP is a relatively tight timeout, and +node performance bugs inducing seconds-worth of latency are unfortunately +familiar phenomena.

Fostering collaboration

We added an +explanation of +a question that we had to explain many times about the exact behavior of the +hardfork combinator forecast horizon.

+ + + + \ No newline at end of file diff --git a/2023-05-03-performance-and-tracing/index.html b/2023-05-03-performance-and-tracing/index.html new file mode 100644 index 00000000000..384a8771673 --- /dev/null +++ b/2023-05-03-performance-and-tracing/index.html @@ -0,0 +1,32 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Michael Karg
  • Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.
  • New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint.
  • Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on.
  • Infrastructure: The plutus-apps flake input for cardano-node has finally been removed.
  • Nomad backend: A PR implementing placement of benchmarking clusters has been merged.

Benchmarking

The performance investigations on the 8.0 release branch have lead to pinpointing and addressing incosistent behaviour. For that, +we created yet another local reproduction with the workbench's forge-stress benchmark.

Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into 8.0 and +subsequent releases.

Additionally, we've refined the trace-bench family of profiles that target benchmarking our own new tracing system.

Tracing

Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally +intended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant +conversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system.

Infrastructure & Analysis

Dataflow documentation

The LogObject CLI locli is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate +further development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting.

Remove redundant Plutus flake input

This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input, +we simplify the dependency graph for cardano-node, as well as enable immediate feedback when developing Plutus benchmarks.

Nomad backend

Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking. +This capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along +with various quality-of-life improvements, has been merged to master.

+ + + + \ No newline at end of file diff --git a/2023-05-04-mithril/index.html b/2023-05-04-mithril/index.html new file mode 100644 index 00000000000..c52c3f3ec5d --- /dev/null +++ b/2023-05-04-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version 1.35.7.

Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain.

Low level overview

  • Worked on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the implementation of the Certifier service in the aggregator #850
    • Completed the implementation of the signable builder for the Mithril Stake Distribution #851
    • Completed the implementation of the artifact builder for the Mithril Stake Distribution #870
    • Completed the implementation of the signable builder for the Full Immutables Snapshot #852
    • Completed the implementation of the artifact builder for the Full Immutables Snapshot #871
    • Completed the adaptation of the aggregator runtime to use the signable builder service #853
    • Worked on the adaptation of the signer runtime to use the signable builder service #854
    • Completed the definition of the entity service interface for verification/restoration #868
    • Completed the refactoring of the OpenMessage type #878
  • Completed the epic that simplifies the multi-signer in the aggregator #398:
    • Completed the extraction of the single signature registration from the multi-signer #643
  • Completed the upgrade of the Cardano node to version 1.35.7 #881
  • Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators #873
+ + + + \ No newline at end of file diff --git a/2023-05-05-ledger/index.html b/2023-05-05-ledger/index.html new file mode 100644 index 00000000000..58c309c8298 --- /dev/null +++ b/2023-05-05-ledger/index.html @@ -0,0 +1,36 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

High level summary

The ledger team focused mainly on the conway ledger era and node integration. +For conway, we completed a large structural change that now allows +for delegation certificates to be parameterized by era, and introducing +new certificates for the first time since Shelley. +We also continue to build out our contraint based generators that we will +use to property test the conway era. +In particular, we can now generate an entire ledger state and a +transaction which is balanced with respect to the ledger state.

Low level summary

Conway certificates

Certificiates are now abstracted as a type family in the ledger codebase. +Moreover, there are new certificates in the Conway era to support CIP-1694, +and MIR certificates have been removed.

Constraint based testing

Our plan for property testing in the conway era is to no longer use the trace generators, +but instead generate ledger states and transactions based on constraints. +We hit a milestone this week, namely the ability to generate a balanced transaction in the context +of a ledger state, all based on our ever growing constaint language.

Integration work

Technical debt

+ + + + \ No newline at end of file diff --git a/2023-05-05-node-cli-api/index.html b/2023-05-05-node-cli-api/index.html new file mode 100644 index 00000000000..dff443fd668 --- /dev/null +++ b/2023-05-05-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Jordan Millar

2023-05-05 - 2023-05-23

High level summary

  • Golden tests for cardano-cli command help output were added.
  • Documentation was updated with new libsodium installation instructions.
  • There were several updates for the cardano-cli:
    • Deletion of the deprecated shelley command group.
    • Addition of golden tests for CLI help.
    • An improvement to avoid bare IO in tests, allowing better error reporting in failed tests.
    • Generation of UTCTime test values without leap seconds (avoids erroneous test failures)
    • Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32.
  • The cardano-api underwent multiple refinements:
    • Implementing deposit handling when balancing transactions (necessary for Conway)
    • Cleaning up socket file path code.
  • Several changes were made to the cardano-testnet:
    • Adding golden tests for cardano-testnet help.
    • Removing all hardcoded yaml files in cardano-testnet
    • Improving cardano-testnet help output.
    • Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-05-12-crypto/index.html b/2023-05-12-crypto/index.html new file mode 100644 index 00000000000..9d68228c1a2 --- /dev/null +++ b/2023-05-12-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • cardano-base: Include final tests for BLS signature. Further adaptations for KES agent.
  • Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.

Low level summary

cardano-base

Sidechains

  • Opened PR in halo2curves to include BLS12-381 and JubJub, #38
  • Addition constraint over JubJub merged #10
+ + + + \ No newline at end of file diff --git a/2023-05-12-goedel/index.html b/2023-05-12-goedel/index.html new file mode 100644 index 00000000000..d3914e1ffab --- /dev/null +++ b/2023-05-12-goedel/index.html @@ -0,0 +1,28 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team had two paper accepted for ICE 2023 +(https://www.discotec.org/2023/ice). The event will be held in Lisbon +on 19th June 2023. The papers will be published in EPTCS.

Details

+ + + + \ No newline at end of file diff --git a/2023-05-12-hydra/index.html b/2023-05-12-hydra/index.html new file mode 100644 index 00000000000..0f8cf470dba --- /dev/null +++ b/2023-05-12-hydra/index.html @@ -0,0 +1,33 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team achieved a number of milestones, including the release +of the first mainnet compatible version. Besides this they also addressed +inconsistencies in rollback handling, added an architecture page to the website, +reducing the size of logs using event IDs. They also had productive discussions +with researchers on plans for incremental commits/decommits and had a whiteboard +session on DeFi and lending protocols. The goals for next week include +completing the validation of the timed transactions feature, exploring stateless +observation, refining the Hydra explorer ticket, writing ops instructions and +troubleshooting, and implementing the first end-to-end journey for external +commits.

What did the team achieve this week

  • Released first mainnnet compatible version 0.10.0
  • Addressed inconsist handling of rollbacks #784
  • Added architecture page and fixed haddock links on our website #838
  • Opened a new hydra head on mainnet
  • Talked with researchers on initial plan for incremental commits/decommits
  • Had a Whiteboard session on DeFi and lending protocols
  • Reduced size of logs using event ids #859
  • Published the monthly report for April

What are the goals of next week

  • Complete validation of timed transactions feature #196
  • Explored stateless observation and refined hydra explorer ticket #696
  • Write ops instructions and troubleshooting #569 and improve logs
  • Have a first end-to-end journey for external commits implemented #215
+ + + + \ No newline at end of file diff --git a/2023-05-12-network/index.html b/2023-05-12-network/index.html new file mode 100644 index 00000000000..7f69c7d871c --- /dev/null +++ b/2023-05-12-network/index.html @@ -0,0 +1,41 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High level summary

We started working on a new way to switch between root & ledger peers (see +below). We continued to work on eclipse-evasion. We merged changes to +Handshake contributed by Galois Inc. We made improvements to our tests (fixed +a flaky test, added cddl specs for NodeToNodeVersionData and +NodeToClientVersionData). We improved our CI and automated the process of +releasing new package version to CHaP.

Detailed summary

We continued to work on testing eclipse-evasion.

We came up with an idea to limit how full node wallets relay on root peers +(currently operated by IOG, in future also CF and Emurgo). We designed +a switch to use ledger peers if the node tip is close enough to the current +time. For more details see #4530.

We merged changes to the handshake mini-protocol which allow one to query +server's node-to-node / node-to-client parameters. We are grateful to +Galois Inc. for implementing it, #4256 and #4538. We published new version +of packages to CHaP chap-#253.

We added DiffusionError wrapper. Thanks to it, ouroboros-consensus will +not duplicate diffusion errors messages in the log, #4537.

We fixed an issue which caused one of our tests to be flaky, #4515.

We added cddl tests for NodeToNodeVersionData and NodeToClientVersionData: +#4540, #4544 (in review).

We wrote scripts which will help us release packages as well as verify that we +released all the package necessary to build the newest set of packages, +#4542.

We renamed the consensus startup tracer and make sure it doesn't log +ExitSuccess exceptions, consensus-#71.

We reviewed PR which adds RawBearer API, #4395.

We made series of improvements to our CI:

  • #4539: we don't need to install cryptographic libraries in CI;
  • #4545: Javier Sagredo (consensus) cleaned up CI after consensus moved +to a new repo;
  • #4546: we switched to use GitHub merge queues;
  • #4549: we made it possible to trigger building haddocks manually;
  • #4553: we fixed and enhanced caching of building dependencies.
+ + + + \ No newline at end of file diff --git a/2023-05-17-consensus/index.html b/2023-05-17-consensus/index.html new file mode 100644 index 00000000000..8ce37f74d5a --- /dev/null +++ b/2023-05-17-consensus/index.html @@ -0,0 +1,24 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the [Genesis][#genesis] section for more details.

Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our main branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain.

We improved our tooling by releasing an immutable DB server, which can be used for testing and benchmarking purposes, and a db-truncater program, which can be used in disaster recovery and benchmarking scenarios.

Genesis

The consensus team working on Genesis:

  • Improved the genesis selection rule as a result of our interaction with IO Research.
  • Studied how the hard-fork combinator handles forecasting at era transitions, and improved our documentation.
  • Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP.
  • Elaborated concrete proposal for the Genesis State Machine.
  • Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).

The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine.

+ + + + \ No newline at end of file diff --git a/2023-05-17-mithril/index.html b/2023-05-17-mithril/index.html new file mode 100644 index 00000000000..8b5c3ef67d9 --- /dev/null +++ b/2023-05-17-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2318.0 distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types.

Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node 8.0.0 (along with the backward compatibility for previous 1.35.x versions).

Low level overview

  • Worked on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the handling of multiple types of signed entity in the aggregator runtime #907
    • Completed the adaptation of the signer runtime to use the signable builder service #854
    • Completed the adaptation of the aggregator runtime to use the artifact builder service #869
    • Completed the appending of the next AVK to all protocol messages #888
    • Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced #893
    • Completed the adaptation of the explorer to handle new artifact routes of the aggregator #927
  • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
    • Completed the implementation of the new stake distribution computation in the chain observer #919
    • Worked on upgrading the Cardano node to 8.0.0 #920
+ + + + \ No newline at end of file diff --git a/2023-05-17-performance-and-tracing/index.html b/2023-05-17-performance-and-tracing/index.html new file mode 100644 index 00000000000..ab29eb67632 --- /dev/null +++ b/2023-05-17-performance-and-tracing/index.html @@ -0,0 +1,37 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 4 min read
Michael Karg

High level summary

  • Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes.
  • New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due.
  • Analysis pipeline: First steps on implementing incremental analysis have been untertaken.
  • Open Sourcing: Exhaustive dataflow charts for both our analysis tool locli and our workbanch have been merged to master
  • Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster.
  • P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland.
  • Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.

Low level overview

Benchmarking

As a compiler switch to GHC 9.2.7 for cardano-node's default build environment is around the corner, we're setting up our benchmarking cluster to +handle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This +also involves choosing a reliable baseline as reference point for inter-version comparisons.

Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet, +we strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to +be balanced against resource demand for all our cluster's nodes.

Tracing

For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some +quality-of-life details that have changed required us to revision the system documentation.

Analysis

As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been +normally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a +huge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken.

Open Sourcing

A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking +copmonents more accessible. As a result, detailed charts for both our LogObject CLI locli and our workbench have been merged to master.

Nomad backend

While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting +those profiles of our workbench that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality +of the nomad cloud backend.

Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster.

Performance & Tracing Meetup

We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive +days together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future. +Also, it was a great opportunity to finally meet in person.

Offboarding

Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation +of team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!

+ + + + \ No newline at end of file diff --git a/2023-05-19-hydra/index.html b/2023-05-19-hydra/index.html new file mode 100644 index 00000000000..4ead64770ed --- /dev/null +++ b/2023-05-19-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Franco Testagrossa

High-level summary

This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the "Coding Standards" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.

What did the team achieve this week

  • Complete validation of timed transactions feature #196.
  • Write ops instructions and troubleshooting #569 and improve logs.
  • Remove --ledger-genesis argument to hydra-node options #863.
  • Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows #877.
  • Use nix to build test binaries to increase CI speed #867.
  • Updated our Coding Standards.

What are the goals of next week

  • Monthly report & review meeting.
  • Have a first end-to-end journey for external commits implementing "Option A" #215.
  • Integrate spanish translation #866.
  • Improve and provide regular benchmarks for Hydra #186.
  • Allow commit transactions with multiple UTxO #774.
  • Explored stateless observation and refined hydra explorer ticket #696.
+ + + + \ No newline at end of file diff --git a/2023-05-24-node-cli-api/index.html b/2023-05-24-node-cli-api/index.html new file mode 100644 index 00000000000..2f7da008f3e --- /dev/null +++ b/2023-05-24-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· One min read
Jordan Millar

2023-05-24 - 2023-06-06

High level summary

  • The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released.
  • We provided assitance where needed in the release
  • An integration repository https://github.com/input-output-hk/fusion-flamingo was created to enable my team to more easily work on cardano-cli and cardano-api

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

+ + + + \ No newline at end of file diff --git a/2023-05-26-goedel/index.html b/2023-05-26-goedel/index.html new file mode 100644 index 00000000000..7a8d40bba78 --- /dev/null +++ b/2023-05-26-goedel/index.html @@ -0,0 +1,27 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

Details

+ + + + \ No newline at end of file diff --git a/2023-05-26-hydra/index.html b/2023-05-26-hydra/index.html new file mode 100644 index 00000000000..d2f31627a60 --- /dev/null +++ b/2023-05-26-hydra/index.html @@ -0,0 +1,32 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team accomplished several important tasks. They held their +monthly review meeting and drafted the report for May. They made progress on +implementing the first end-to-end journey for external commits using "Option A" +for normal UTxOs, while still considering "Option B". The team also integrated a +Spanish translation contributed by the community, created micro-benchmarks for +transaction validation and deserialization, and made improvements to +hydra-node's version reporting. Last but not least, they implemented the ability +to commit multiple UTxOs to a head at once.

What did the team achieve this week

  • Held the monthly review meeting (recording + slides) & drafted the report for May.
  • Have a first end-to-end journey for external commits implementing Option A +for normal UTxOs #887 (still considering Option B).
  • Integrated the spanish translation #866.
  • Created micro-benchmarks for transaction validation and deserialization #884.
  • Improve hydra-node version reporting on non-released builds #849
  • Some minor CI improvements following up last weeks changes.
  • Allow commit transactions with multiple UTxO #774.

What are the goals of next week

  • Investigate and re-open our team-internal head on mainnet.
  • Improve and provide regular benchmarks for Hydra #186.
  • Complete external commits with script UTxOs #215.
  • Authenticate network messages #727.
  • Add hydra as tool to developr platform #872.
+ + + + \ No newline at end of file diff --git a/2023-05-26-ledger/index.html b/2023-05-26-ledger/index.html new file mode 100644 index 00000000000..7ff85774285 --- /dev/null +++ b/2023-05-26-ledger/index.html @@ -0,0 +1,28 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Jared Corduan

High level summary

The ledger team made progress on the conway ledger era. In particular, the design and implementation +of the new certificates is near complete, we refactored some of our data structures +to be able to support DReps, we cleaned up the serialization format, and renamed things to make +clearer the differences with Shelley.

The team also completed integration work for the next node release, namely 8.1.0. +And, as always, we continue to address technical debt.

Low level summary

Conway progress

  • pull-3408 - Improve conway delegation certificates
  • pull-3428 - Get rid of Constitutional in favor of Genesis and Committee
  • pull-3426 - Add DRep to internal data struture (UMap)
  • pull-3425 - Improve witness logic needed for conway
  • pull-3423 - Rename ShelleyDelegCerts constructors to distinguish them from Conway
  • pull-3421 - Rename DCert -> TxCert
  • pull-3454 - conway CDDL minor fixes

Improve testing

  • pull-3403 - Add Plutus script context golden tests

Integration work

  • pull-3410 - Update chaps index
  • pull-3416 - Bump cardano-ledger-alonzo-test version
  • pull-3414 - Bump cardano-ledger-shelley-test minor version
  • pull-3420 - Bump cardano-ledger-shelley-ma-test version
  • pull-3441 - Release cardano-ledger-[alonzo|babbage]-1.2.1

Technical debt

  • pull-3409 - Unit test - no such thing as a reference datum
  • pull-3407 - Fixup release process documentation
  • pull-3404 - Create TotalDeposits events during all eras
  • pull-3402 - Fix broken references in the Shelley spec
  • pull-3424 - Remove no longer used cardano-ledger-shelley-ma package
  • pull-3432 - Add an example on how to bump up versions in the changelog
  • pull-3440 - Revert back to the group serialization for ProtVer for PParams
+ + + + \ No newline at end of file diff --git a/2023-05-26-network/index.html b/2023-05-26-network/index.html new file mode 100644 index 00000000000..db7423f2589 --- /dev/null +++ b/2023-05-26-network/index.html @@ -0,0 +1,28 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· One min read
Marcin Szamotulski

High level summary

We continued working on eclipse-evasion. We also analysed and fixed a bug +when using DNS names in local root peers. We continued working on engineering +blog post about P2P. We released a new version of packages for +cardano-node-8.1.0 release.

We improved our CI, removed obsolete scripts add extra validation which checks +if CHANGELOG.md files were updated.

We also improved release scripts.

Detailed summary

  • Eclipse evasion: #4462
  • Local root peers bug fix: #4559
  • Release to CHaP: #4573
  • CI improvements: #4572
  • Release script improvements: #4573
+ + + + \ No newline at end of file diff --git a/2023-05-31-consensus/index.html b/2023-05-31-consensus/index.html new file mode 100644 index 00000000000..8e40dbea5b3 --- /dev/null +++ b/2023-05-31-consensus/index.html @@ -0,0 +1,24 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see this issue). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain.

On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano.

UTxO-HD

  • We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking SOP classes like HPure and HAp . In short, we implement generalised versions of important classes like Applicative and Traversable.

Support

  • fs-sim-0.1.0.2 and fs-api-0.1.0.2 were released, which makes them now compatible with GHC up to 9.6.
  • ouroboros-consensus-0.7.0.0 was released for cardano-node 8.1, including query serialization fixes for backwards compatibility.
+ + + + \ No newline at end of file diff --git a/2023-05-31-performance-and-tracing/index.html b/2023-05-31-performance-and-tracing/index.html new file mode 100644 index 00000000000..b363370357a --- /dev/null +++ b/2023-05-31-performance-and-tracing/index.html @@ -0,0 +1,35 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg

High level summary

  • Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster.
  • New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism.
  • Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.

Low level overview

Benchmarking

The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build +configuration: As it stands, the ghc-bignum package is using the Haskell native-backend as a default. We strive +to benchmark a build with the gmp-backend next.

A variant of our forge-stress local benchmark has been set up to serve as an early indicator for the resource usage profile +we'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way +shorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great +support when evaluating different compiler versions or RTS flags incrementally.

Tracing

The hub of the new tracing system cardano-tracer is designed with a fixed output behaviour, which is limited to various +logging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to +directly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all.

Nomad backend

We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with +job definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing +benchmarking run required us to fine-tune communications with the nomad server.

Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible +and offers more detailed insight than the previous iteration in cardano-ops. The backend will enable you to formulate +very specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met.

+ + + + \ No newline at end of file diff --git a/2023-06-01-mithril/index.html b/2023-06-01-mithril/index.html new file mode 100644 index 00000000000..d28c8492e76 --- /dev/null +++ b/2023-06-01-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2321.1 distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots.

Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks.

Low level overview

  • Released the new distribution 2321.1
  • Worked on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the issue Enhance MessageAdapter for Artifact in aggregator REST API #925
    • Completed the issue Create the sub-command for 'Cardano Immutable Files Full' in client #895
    • Completed the issue Enhance state machines Aggregator/Signer #933
    • Completed the issue Adapt the aggregator REST API to list certificates #892
    • Worked on the issue Adapt end to end tests to handle new types of data #899
    • Worked on the issue Update client documentation #897
    • Worked on the issue Update architecture documentations for new types of data #898
  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Worked on the issue Enhance terraform infrastructure #930
  • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
    • Completed the issue Upgrade Cardano node to '8.0.0' #920
  • Completed the issue Add export path in Client CLI #512
+ + + + \ No newline at end of file diff --git a/2023-06-02-hydra/index.html b/2023-06-02-hydra/index.html new file mode 100644 index 00000000000..9a2c3532992 --- /dev/null +++ b/2023-06-02-hydra/index.html @@ -0,0 +1,33 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Franco Testagrossa

High-level summary

This week, the Hydra team has put their effort on finding solutions on many +different problems, such as our broken head on mainnet +#897, our fragile monthly +report publications on the website and implementing Option A for +external commits #215. +Although most of these items are still open, huge progress has been made. To +accelerate the investigation, they improved their logging to give more precise +errors when a transition requirement fails, and to reduce duplication on effets +logged content. Last but not least, the team is exploring formal methods and +attended a workshop on formalizing cryptographic protocols in Agda.

What did the team achieve this week

  • Continued investigating broken head and opened an issue to keep track #897.

    As part of this issue, improvements were made to the node logs:

    • Give a precise error when a transition requirement fails #895.

    • Reduce duplication for effects logged content by using sequential eventId and effectId pair #896.

  • Fixed references in the hydra specification #893.

  • Attended a workshop on formal methods and crypto in Agda.

What are the goals of next week

  • Investigate and re-open our team-internal head on mainnet.
  • Improve and provide regular benchmarks for Hydra #186.
  • Complete journey for external commits implementing Option A and start implementing Option B #215.
  • Authenticate network messages #727.
  • Add hydra as tool to developr platform #872.
  • Fix monthly report publication on docs website.
+ + + + \ No newline at end of file diff --git a/2023-06-07-node-cli-api/index.html b/2023-06-07-node-cli-api/index.html new file mode 100644 index 00000000000..a699653ed06 --- /dev/null +++ b/2023-06-07-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-06-07 - 2023-06-20

High level summary

  • Completed cardano-cli migration to input-output-hk/cardano-cli
  • cardano-cli ping now uses cardano-ping-0.2.0.5
  • New queries on API:
    • queryCurrentEpochState
    • queryDebugLedgerState
    • queryGenesisParameters
    • queryPoolDistribution
    • queryPoolState
    • queryProtocolParameters
    • queryProtocolParametersUpdate
    • queryProtocolState
    • queryStakeAddresses
    • queryStakeDistribution
    • queryStakePoolParameters
    • queryStakeSnapshot
  • Deprecate:
    • queryPparams
  • Export query API as functions
    • genFeatureValueInEra
    • featureInShelleyBasedEra
    • isFeatureValue
    • valueOrDefault
    • asFeatureValue
    • asFeatureValueInShelleyBasedEra
    • queryEpoch
    • requireShelleyBasedEra
  • Restructure cardano-testnet (WIP)

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-06-08-db-sync/index.html b/2023-06-08-db-sync/index.html new file mode 100644 index 00000000000..340513ba53f --- /dev/null +++ b/2023-06-08-db-sync/index.html @@ -0,0 +1,31 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

We've made progress in all high level objectives

  • CIP-1694 integration design
  • UTxO-HD integration proof of concept
  • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2
  • A new hire will help us with devx issues.

Lower level summary

+ + + + \ No newline at end of file diff --git a/2023-06-08-goedel/index.html b/2023-06-08-goedel/index.html new file mode 100644 index 00000000000..ccf2eebabe3 --- /dev/null +++ b/2023-06-08-goedel/index.html @@ -0,0 +1,31 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on giving and preparing public +talks, also on preparing final versions of their ICE 2023 papers, and +on analysing chain selection.

This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

Details

+ + + + \ No newline at end of file diff --git a/2023-06-08-sre/index.html b/2023-06-08-sre/index.html new file mode 100644 index 00000000000..12a1b7bfede --- /dev/null +++ b/2023-06-08-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 2 min read
John Lotoski

High level summary

The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer.

Lower level summary

Bitte

  • Equinix bare metal capability was added to bitte: bitte-pull-194
  • Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: bitte-pull-201

Bitte-cells

Cardano-graphql

Cardano-node

Cardano-ops

Cardano-world

Ci-ops

  • Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ci-ops-pull-108

Ci-world

Cicero

  • Implement a cicero webhook backoff with exponential decay plus jitter: cicero-pull-79

Iohk-nix

Openziti

+ + + + \ No newline at end of file diff --git a/2023-06-08-system-test/index.html b/2023-06-08-system-test/index.html new file mode 100644 index 00000000000..6ea805eebaa --- /dev/null +++ b/2023-06-08-system-test/index.html @@ -0,0 +1,24 @@ + + + + + +System Test Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

System Test Team Update

· 2 min read
Martin Kourim

High level summary

Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.7 and 8.0.0 releases.

Workstreams

Full list of closed PRs

Framework improvements:

  • Make cardano-submit-api REST API service available and run corresponding regression tests by default
  • Update cabal build testing for 8.0.0
  • Add support for testing governance SPO poll
  • Use Poetry for Python dependency management
  • Check status of known GH issues during tests runtime and finish the test accordingly
  • Generate topology files with both IP addresses and DNS names
  • Log issues like failure to start a cluster instance and report errors during tests runtime

Testing improvements

  • Add rollback testing:
    1. global consensus is reached after rollback, in situation where less than securityParam blocks were produced since cluster split
    2. global consensus is not reached when more than securityParam blocks were produced, and the result is permanent fork
  • Add tests to governance SPO poll commands

Node:

DB-Sync:

  • improvements in db-sync sync tests
  • improvements in db-sync functional tests
+ + + + \ No newline at end of file diff --git a/2023-06-09-crypto/index.html b/2023-06-09-crypto/index.html new file mode 100644 index 00000000000..91655f1162b --- /dev/null +++ b/2023-06-09-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· One min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • cardano-base: E2E tests for BLS bindings and KES agent
  • Sidechains: Implement ECC chip and Rescue hash primitives for ATMS
  • mithril: Full node verifier

Low level summary

cardano-base

  • RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); blocked due to issue with windows' localSnocket. Trying to resolve.
  • Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors #317.
  • Above, blocked by the simplification of typeclasses #404.
  • Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings

Mithril

  • Implementation of Full Node Verifier #939

Sidechains

  • ECC chip implemented for JubJub over BLS12-381
  • Rescue chip implemented for hashing.
  • Currently working on Schnorr signature (which uses the above constraints)
+ + + + \ No newline at end of file diff --git a/2023-06-09-developer-experience/index.html b/2023-06-09-developer-experience/index.html new file mode 100644 index 00000000000..eaaac0a2e73 --- /dev/null +++ b/2023-06-09-developer-experience/index.html @@ -0,0 +1,24 @@ + + + + + +Developer Experience Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Developer Experience Update

· 3 min read
Moritz Angermann

High level summary

The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements.

Lower level summary

build support & maintainance

Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure LoadDLL errors to blst integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like cardano-base experiencing significant reductions in CI complexity.

compiler upgrades

After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility.

CHaP (cardano-haskell-packages)

We relocated the underlying tooling, (foliage), for CHaP into the IOG organization. Furthermore, we have introduced improved tooling to quickly add constraints to packages, better error reporting for add-revision and better hackage url compatibility to facilitate easer usage of CHaP.

GitHub Actions

Our repository, input-output-hk/actions, now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the base and haskell install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking cabal.

iohk-nix

The iohk-nix repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, sodium, blst, and secp256k1, are also fixed to certain revisions within the iohk-nix repository.

haskell.nix

Haskell.nix has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to gmp.

devx

The relatively new devx repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The devx repository's readme has been updated to reflect its purpose and usage guidelines.

upstream tooling

Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

+ + + + \ No newline at end of file diff --git a/2023-06-09-hydra/index.html b/2023-06-09-hydra/index.html new file mode 100644 index 00000000000..8b85fc1b395 --- /dev/null +++ b/2023-06-09-hydra/index.html @@ -0,0 +1,32 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Franco Testagrossa

High-level summary

This week, the Hydra team worked on multiple fronts. They finished the +investigation about the broken head on mainnet and re-opened their persistent +head instance. The team also fixed the monthly report publication on their +website and started sketching ideas and further improvements. Also, they are on +the last mile to deliver a new feature which will allow parties to commit funds +from extern wallets. Finally the team started to work on optimizing the +performance on their benchmarks.

What did the team achieve this week

  • Finished investigation on broken head on mainnet #897 and re-opened it.
  • Added support for externally committing regular utxo #887
  • Fix monthly report publication on docs website and published the monthly report. Odd problems when publishing monthly report:
    • Make us think about if we should change something about the website #908
    • Open issue to docusaurus #9036
  • Fixed a bug in the benchmark process #910
  • Explored performance of the hydra-node{.verbatim} and identified a +bottleneck.
  • Timed transaction feature is being used by the auction project 🎉

What are the goals of next week

  • Complete performance analysis and start/plan improvements and provide +regular benchmarks for Hydra #186
  • Add hydra as tool to developer platform #872.
  • Authenticate network messages #727.
  • Complete journey for external commits using multiple script UTxOs #903
  • Start implementing Option B for external commits #215.
+ + + + \ No newline at end of file diff --git a/2023-06-12-network/index.html b/2023-06-12-network/index.html new file mode 100644 index 00000000000..d9cd3bfa8dc --- /dev/null +++ b/2023-06-12-network/index.html @@ -0,0 +1,43 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 3 min read
Marcin Szamotulski

Network Update

Key contributions and advances

We merged light peer sharing feature, which allows to include inbound peers +into outbound governor known peers. This is the primary way for new +unregistered nodes to enter the network, which then can be shared using peer +sharing. Note that peer sharing is an experimental feature which is disabled +until genesis & eclipse evasion as fully implemented. See #3596.

We are making progress reviewing eclipse evasion, #3886.

We fixed another bug in local root peers. We found out that if the local roots +where ignored until the first domain name was resolved, see #4583. The bug +fix was backported and released in ouroboros-network-0.8.1.1.

We re-started working on dynamically enabling block forging to address issue +#3159, which will enable us to release P2P on block producing nodes. See #140.

New cardano-ping / cardano-cli ping release

We prepared a new release of cardano-ping library which supports the new +query feature (query supported versions). See #4589, #4593 and #5313. +The new version of cardano-cli ping will use ISO8601 formatted +timestamps; also the formatting of ping results is slightly improved, and it +will introduce the new --query-versions (-Q) switch. If the remote site +supports the query parameter, the command will print:

redacted-ip:port network rtt: 0.064
redacted-ip:port handshake rtt: 0.064010896s
redacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat
orAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]

otherwise it will print the negotiation results

redacted-ip:port network rtt: 0.045
redacted-ip:port handshake rtt: 0.101867615s
redacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder

Note that in that case cardano-cli ping offers InitiatorAndResponder, which +allows us to detect whether the remote side is an InitiatorOnly or +InitiatorAndResponder. Also cardano-cli ping will no longer announce +itself as InitiatorAndResponder, except for the case mentioned above.

Other smaller contributions

On a request from the Marlow Team, we published haddocks of typed-protocols, +which are now available here (#40, #41).

We made a new release of strict-stm-1.1.0.1 on Hackage, which fixed a bug in +package description file, #101 .

We also helped to debug a deadlock when using named pipes on Windows in the new +RawBearer API. The API is being used to store secret keys only in memory. +The PR #4395 is under review.

We also have two more PRs which are under review:

  • #4530: enabling ledger peers on a fixed number of slots before the tip of the chain;
  • #4580: a PR which fixes inconsistencies in one of our cddl specs.
+ + + + \ No newline at end of file diff --git a/2023-06-14-consensus/index.html b/2023-06-14-consensus/index.html new file mode 100644 index 00000000000..d9698d14a33 --- /dev/null +++ b/2023-06-14-consensus/index.html @@ -0,0 +1,27 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the Byron and TPraos eras do not need to be checkpointed for an MVP. +There is one remaining question (which applies also to the Praos era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated "Limit on Patience" timeout sufficiently bounds how long the adversary can inflate a victim's overall sync time.

On the UTxO-HD front, the prototype branch was rebased on top of the latest ouroboros-consensus main branch and integrated on top of cardano-node 8.1.1-pre. As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD. +We managed to run a node again with UTxO-HD enabled. +We also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for cardano-node, which uncovered a performance regression on the Network component when using GHC-9.2/9.4. This is being addressed.

Regarding our support activities, we Released fs-sim-0.2.0.0 and are in the process of preparing the 8.2 release of cardano-node. We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests.

+ + + + \ No newline at end of file diff --git a/2023-06-14-performance-and-tracing/index.html b/2023-06-14-performance-and-tracing/index.html new file mode 100644 index 00000000000..c937a6b0173 --- /dev/null +++ b/2023-06-14-performance-and-tracing/index.html @@ -0,0 +1,30 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Michael Karg

High level summary

  • Benchmarking: We've continued release benchmarking and established a new baseline for 8.0.0.
  • New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined.
  • Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.

Low level overview

Benchmarking

In our release benchmarking cycle, we established a new performance baseline for 8.0.0. Additionally, we've measured +performance under various workloads for 8.1.1-pre; the results look promising and validate the optimization efforts +done on several system components.

In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for +benchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper.

Tracing

The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be +meaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific +trace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles.

Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD.

Nomad backend

As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs.

This means the backend is entering validation phase, where we systematically compare all metrics taken from the new +infrastructure to the existing ones, including determining reproducibility and variance.

+ + + + \ No newline at end of file diff --git a/2023-06-15-mithril/index.html b/2023-06-15-mithril/index.html new file mode 100644 index 00000000000..bb07c5b5939 --- /dev/null +++ b/2023-06-15-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client’s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet.

Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI.

Low level overview

  • Completed on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the issue Create the sub-command for 'Mithril Stake Distribution' in client #896
    • Completed the issue Adapt end to end tests to handle new types of data #899
    • Completed the issue Update client documentation #897
    • Completed the issue Update architecture documentations for new types of data #898
    • Completed the issue Refactoring client #960
  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Completed the issue Enhance terraform infrastructure #930
  • Completed the epic that implements the computation of the stake distribution for mainnet #880:
    • Completed the issue Check performance impact of new stake distribution command on the 'mainnet' #962
  • Worked on the epic Prepare Mithril Signer deployment model for SPO #862:
    • Worked on the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
  • Worked on bugs and optimizations:
    • Completed the issue Aggregator does not always detect new immutable file #953
    • Completed the issue CI tests fail with Rust '1.70.0' #958
    • Worked on the issue End to end tests are flaky #954
    • Worked on the issue Certificate dates in metadata are not on the same timezone #946
    • Worked on the issue Refactor 'MithrilStakeDistribution' entity #967
    • Completed the issue Fix 'Mithril Client multi-platform test' with new client interface #956
    • Completed the issue Enhance 'ImmutableDigesterError::NotEnoughImmutable' error #969
    • Completed the issue Client 'snapshot download' command fails with option '--download-dir' #979
+ + + + \ No newline at end of file diff --git a/2023-06-16-hydra/index.html b/2023-06-16-hydra/index.html new file mode 100644 index 00000000000..d1bd7a4184d --- /dev/null +++ b/2023-06-16-hydra/index.html @@ -0,0 +1,27 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team focused their efforts on continuing to investigate and +experiment operating a head on mainnet. They collected several bugs and issues +and worked on fixing them. Now the team is soon to release a new version, +0.11.0, which comes with a lot of improvements and bug fixes.

What did the team achieve this week

  • Restored and fixed a bug which stalled our head on mainnet #927
  • Solved one user issue #914
  • Reduced significantly local state size and logs by removing the full scripts from it #928
  • (pending review) Reduced snapshot size in the API, by only including tx ids #922

What are the goals of next week

  • New release 0.11.0
  • Monthly report & review meeting.
  • Fix some minor bugs discovered when operating our head on mainnet
  • Complete journey for external commits using multiple script UTxOs #903
  • Publish benchmarks and provide regular benchmarks for Hydra #186
+ + + + \ No newline at end of file diff --git a/2023-06-23-goedel/index.html b/2023-06-23-goedel/index.html new file mode 100644 index 00000000000..0f610ca9246 --- /dev/null +++ b/2023-06-23-goedel/index.html @@ -0,0 +1,26 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the teams presented two papers at ICE 2023.

Details

+ + + + \ No newline at end of file diff --git a/2023-06-23-hydra/index.html b/2023-06-23-hydra/index.html new file mode 100644 index 00000000000..c2c60ca69ad --- /dev/null +++ b/2023-06-23-hydra/index.html @@ -0,0 +1,34 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa
Pascal Grange

High-level summary

This week, the Hydra team shared progress updates during the monthly review +meeting (monthly report and video recording available soon) and started +experimenting on preview network with the new commit from external wallet +feature.

What did the team achieve this week

  • Monthly report & review meeting, demonstrating commit from external +wallet
  • Published regular benchmarks for +Hydra
  • Moved forward the journey for external commits using multiple script UTxOs +#903
  • Changed the API to only put transaction id in snapshots, instead of the full +transactions #922 -> this +is now evolved into fully addressing #728
  • Fuel marking is now optional as one can now commit from an external wallet +#924
  • Add flag option to display node version on tui +#934

What are the goals of next week

  • Complete external commits using multiple script UTxOs #903
  • New release 0.11.0
  • Dirtroad solution of improved persistence performance #913
+ + + + \ No newline at end of file diff --git a/2023-06-23-network/index.html b/2023-06-23-network/index.html new file mode 100644 index 00000000000..0319e82164e --- /dev/null +++ b/2023-06-23-network/index.html @@ -0,0 +1,43 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

Network Update

Key contributions

We held a series of session to review the implementation of big ledger peers +(eclipse evasion). See #4462.

We get a request from a 3rd party to clarify an inconsistency between CDDL spec +and protocol implementation. We worked out a nice solution which takes +advantage of the any notion available in CDDL. On the Haskell side we +provide Any type which gen generate almost any CBOR term (some are excluded +only because they are not decoded back to the same form, and we relay on that +property). See #4580.

We fixed a bunch of problems of the cardano-cli ping command. It also now has +a limited support of node-to-client mini-protocol (the -c option is +ignored, as it cannot be supported by node-to-client protocol). Note that +the format of messages has changed, timestamps are printed in ISO8601 format. +See #4601, #5326, #5313, #30

In order to provide a new flag in the topology file which enables ledger peers +when the chain is close to the tip, we continued to work on #4530. This is +currently in review, the consensus team will need to provide us with the new +api. This feature is useful for two reasons: makes it easier to maintain +a topology file, it will also limit the traffic on public roots generated by +for example full node wallets and distribute it to ledger peers.

We also continued to work on a blog post which describes the journey of design +& implementation of the dynamic P2P network layer. Too be announced soon :).

Other smaller changes

We limit the concurrency of resolving dns names. Up to 8 root peers or ledger +peers DNS names are resolved concurrently, and at most 2 local root peer DNS +names. See #4596.

We fixed handshake query timeout in #4603.

We renamed one of the block-fetch decision constructors as requested by the +consensus team, see #4608.

+ + + + \ No newline at end of file diff --git a/2023-06-23-sre/index.html b/2023-06-23-sre/index.html new file mode 100644 index 00000000000..75caea6504b --- /dev/null +++ b/2023-06-23-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· One min read
John Lotoski

High level summary

The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:

  • A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality
  • Cardano Sanchonet environment was stood up to test Conway era functionality
  • Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case
  • Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments

Lower level summary

Cardano-node

  • Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: cardano-node-pull-5318

Cardano-ops

Cardano-world

Ci-ops

Ci-world

  • Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ci-world-compare

Devx-ci

  • A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: devx-ci-repo

Iohk-nix

+ + + + \ No newline at end of file diff --git a/2023-06-28-consensus/index.html b/2023-06-28-consensus/index.html new file mode 100644 index 00000000000..8f4d0f9c089 --- /dev/null +++ b/2023-06-28-consensus/index.html @@ -0,0 +1,24 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team.

The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components.

Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node.

Genesis

  • We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.

  • We decided on an approach of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team.

UTxO-HD

  • We merged the last of the PRs that were part of UTxO-HD improvements for version 0.1: expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size.
  • We added a new "legacy" cardano block in a new ouroboros-consensus-cardano-legacy-block package that should ease the transition for some downstream packages to UTxO-HD, like db-sync. This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block.
  • We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.
+ + + + \ No newline at end of file diff --git a/2023-06-28-performance-and-tracing/index.html b/2023-06-28-performance-and-tracing/index.html new file mode 100644 index 00000000000..c0337e06597 --- /dev/null +++ b/2023-06-28-performance-and-tracing/index.html @@ -0,0 +1,24 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Michael Karg

High level summary

  • Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9.
  • Infrastructure: The first batch of refactoring and documentation for our tx-generator has been merged to master.
  • Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown.
  • Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.

Low level overview

Benchmarking

The compiler switch to GHC9 as the default build platform for cardano-node and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard.

Using the forge-stress approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node.

Infrastructure

The tx-generator is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to master. Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base.

Tracing

The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue.

Nomad backend

With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress.

Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend.

+ + + + \ No newline at end of file diff --git a/2023-06-29-mithril/index.html b/2023-06-29-mithril/index.html new file mode 100644 index 00000000000..fef70ffff16 --- /dev/null +++ b/2023-06-29-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 3 min read
Jean-Philippe Raynaud

High level overview

The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano mainnet infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator.

Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1.

Low level overview

  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Worked on the issue Add infrastructure monitoring #987
  • Completed the epic Prepare Mithril Signer deployment model for SPO #862:
    • Completed the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
    • Completed the issue Adapt infrastructure to use Mithril Relay #1018
    • Completed the issue Announce the new signer deployment model in a dev blog post #1017
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Worked on the issue Design & implement basic stress test tool for aggregator #991
  • Worked on bugs:
    • Completed the issue Aggregator does not exit on critical error #993
    • Completed the issue Computation of master certificate of an epoch is incorrect #1006
    • Completed the issue End to end tests are flaky #954
    • Worked on the issue 'testing-preview' network does not create certificates #1015
  • Worked on optimizations:
    • Completed the issue Dates format is not standardized #946
    • Completed the issue Add 'recompute-certificates-hash' command to aggregator #1001
    • Completed the issue Add a retry mechanism for artifact creation in aggregator #984
    • Completed the issue Log node version at startup in Aggregator/Signer #944
    • Completed the issue Reactivate Publish Results job in CI #978
    • Completed the issue Clean 'pending_snapshot' directory of aggregator #983
    • Completed the issue Update OpenAPI spec examples #1000
  • Worked on refactoring:
    • Completed the issue Refactor 'MithrilStakeDistribution' entity #967
    • Completed the issue Refactoring client #982
    • Completed the issue Refactor download code in client #1010
    • Worked on the issue Factorize protocol crypto operations #669
  • Worked on dependencies:
    • Completed the issue Upgrade Cardano node to '8.1.1' #973
+ + + + \ No newline at end of file diff --git a/2023-06-30-hydra/index.html b/2023-06-30-hydra/index.html new file mode 100644 index 00000000000..6e1f12eec0a --- /dev/null +++ b/2023-06-30-hydra/index.html @@ -0,0 +1,30 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team wrote and published the monthly report for June, +implemented the end-to-end functionality for external commits, and tested it on +the preview environment. They also listed Hydra as a tool on the Cardano +developer portal, providing more visibility for the project. The team clarified +the path forward for L2 protocol improvements and explored an alternative CI +approach using cabal instead of nix. Additionally, they released version 0.11.0, +marking another milestone in the projects development.

What did the team achieve this week

  • Written and published the monthly report for June
  • Implemented external commits end-to-end incl. tested it on preview #215
  • Listed Hydra as a tool on cardano developer portal
  • Cleared up path forward on L2 protocol improvements #728
  • Established an alternative CI using more cabal tools #923
  • Release version 0.11.0

What are the goals of next week

  • Spike on performance improvements of event sourced persistence #913
  • Complete ReqSn only sends transaction ids #728
  • Groom and plan last items for 0.12.0 (remove internal commit)
  • Improve reliability of benchmarks
+ + + + \ No newline at end of file diff --git a/2023-07-04-db-sync/index.html b/2023-07-04-db-sync/index.html new file mode 100644 index 00000000000..882169be860 --- /dev/null +++ b/2023-07-04-db-sync/index.html @@ -0,0 +1,30 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

We've made progress in all high level objectives

  • CIP-1694 integration design
  • UTxO-HD integration proof of concept
  • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested
  • Many devx issues resolved

Lower level summary

  • We have improved and validated the design for the Conway integration in db-sync
  • Improved the initial integration of the UTxO-HD feauture branches which are under test
  • Prepared a new release 13.1.1.3 which supports node 8.1.1 +#1455.
  • This also fixes a bug +#1451
  • Added new tests to the new tx_out options +#1429
  • Fixed a chronic issue in db-sync related to exception handling and concurrency +This fixes many other issues and simplifies the logic in db-sync +#1447
  • A number of fixes and improvements in ci, docker, devx, docs +#1436#1442#1448#1452
+ + + + \ No newline at end of file diff --git a/2023-07-04-node-cli-api/index.html b/2023-07-04-node-cli-api/index.html new file mode 100644 index 00000000000..c43be5b9428 --- /dev/null +++ b/2023-07-04-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-06-21 - 2023-07-04

High level summary

  • Started integration of conway era into the cardano-api,
  • Pre-release of cardano-cli 8.2.1 which enables creating goveranance "Update constitution" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.
  • Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities.
  • Continue refactoring cardano-testnet
  • CI and docs house keeping on the new cardnao-cli and cardano-api repositories

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-07-06-developer-experience/index.html b/2023-07-06-developer-experience/index.html new file mode 100644 index 00000000000..2b5b330afad --- /dev/null +++ b/2023-07-06-developer-experience/index.html @@ -0,0 +1,24 @@ + + + + + +Developer Experience Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Developer Experience Update

· 2 min read
Moritz Angermann

High level summary

The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements.

Lower level summary

build support & maintainance

The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions.

compiler upgrades

Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests.

Hydra Tools

Our repository, input-output-hk/actions, has seen quite some improvements to facility the hydra <-> github integration.

haskell.nix

Haskell.nix has been maintained and updated with the addition of preliminary GHC 9.8 support.

devx

The devx repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our actions/devx GitHub Actions, we have a consistent set of tooling for

  • nix develop shells
  • GitHub CodeSpaces integration
  • VSCode DevContainer support
  • GitHub Actions integration

upstream tooling

Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

+ + + + \ No newline at end of file diff --git a/2023-07-07-crypto/index.html b/2023-07-07-crypto/index.html new file mode 100644 index 00000000000..07c9f781831 --- /dev/null +++ b/2023-07-07-crypto/index.html @@ -0,0 +1,25 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· One min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Sidechains: First version of snark-based ATMS
  • mithril: Full node verifier
  • kes_agent: Keep progress, and prepare CIP and CPS
  • CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP

Low level summary

kes_agent

Mithril

  • Final review of the implementation of Full Node Verifier #939. +Included benchmarks and further tests.

Sidechains

  • Schnorr signature implemented
  • ATMS signature implemented
  • First benchmarks show that for the committe size we expect, we need 2^21 constraints.

CIPs and community

  • Addressed some review comments in #PR506
  • Worked with the communityt on #PR524 to include Keccak as part of the next Plutus release.
+ + + + \ No newline at end of file diff --git a/2023-07-07-goedel/index.html b/2023-07-07-goedel/index.html new file mode 100644 index 00000000000..6fe70a551df --- /dev/null +++ b/2023-07-07-goedel/index.html @@ -0,0 +1,28 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the teams have been working on finalising their ICE papers +for publication in EPTCS, formalising concensus, and investigating chain +sync.

Details

  • Preparing final versions of ICE papers

  • Reviewing the chain sync design and documentation

  • Refactoring the thorn calculus

  • First draft of Praos specification

  • Developing bounding factors on timeouts

+ + + + \ No newline at end of file diff --git a/2023-07-07-hydra/index.html b/2023-07-07-hydra/index.html new file mode 100644 index 00000000000..d575725a9ce --- /dev/null +++ b/2023-07-07-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa
Sasha Bogicevic

High-level summary

This week the Hydra team accomplished some nice progress. They secured the +network layer further by implementing authentication of the messages between the +peers in the Head protocol. In the process they also managed to separate +HeartBeat messages from the protocol ones which somewhat improved the quality of +code in Hydra. The team also finished work related to sending only transaction +ids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark +publishing on the website.

What did the team achieve this week

What are the goals of next week

  • Spike on performance improvements of event sourced persistence #913
  • Add new endpoint for submitting client transactions
  • Remove commit from internal wallet
+ + + + \ No newline at end of file diff --git a/2023-07-07-sre/index.html b/2023-07-07-sre/index.html new file mode 100644 index 00000000000..bd55afc2b4d --- /dev/null +++ b/2023-07-07-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· One min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance.

Some notable recent improvements include:

  • Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment
  • Explorer component updates
  • Spongix caching server rewrite for R2 Cloudflare support and various performance improvements

Lower level summary

Cardano-node

Cardano-ogmios

Cardano-ops

  • Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: cardano-ops-compare

Cardano-rosetta

Cardano-world

Spongix

  • Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: spongix-simple-branch
+ + + + \ No newline at end of file diff --git a/2023-07-12-consensus/index.html b/2023-07-12-consensus/index.html new file mode 100644 index 00000000000..afa8ba19913 --- /dev/null +++ b/2023-07-12-consensus/index.html @@ -0,0 +1,24 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a proposed fix. The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine.

The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility.

On the support front, the team drafted an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load.

+ + + + \ No newline at end of file diff --git a/2023-07-12-performance-and-tracing/index.html b/2023-07-12-performance-and-tracing/index.html new file mode 100644 index 00000000000..3a62141a876 --- /dev/null +++ b/2023-07-12-performance-and-tracing/index.html @@ -0,0 +1,24 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg

High level summary

  • Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed.
  • Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends.
  • Tracing: Optimization of the new tracing system is ongoing and yielding good performance results.
  • Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.

Low level overview

Benchmarking

Our analysis of the GHC9 build of cardano-node has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation.

In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into cardano-node. This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle.

Infrastructure

We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in master.

Tracing

Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance.

Nomad backend

For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run.

Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to master.

+ + + + \ No newline at end of file diff --git a/2023-07-13-mithril/index.html b/2023-07-13-mithril/index.html new file mode 100644 index 00000000000..d486c1886c0 --- /dev/null +++ b/2023-07-13-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team created a new 2327.0 distribution. They focused on preparing the beta launch on the mainnet: they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the mainnet infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library.

Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs.

Low level overview

  • Released the new distribution 2327.0
  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Completed the issue Add infrastructure monitoring #987
    • Worked on the issue Deploy 'mainnet' infrastructure #988
    • Worked on the issue Handle Secrets management #989
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Worked on the issue Design & implement basic stress test tool for aggregator #991
  • Worked on optimizations:
    • Completed the issue Remove certificate hash from Artifact #932
    • Completed the issue Check vulnerabilities in CI #1037
    • Completed the issue Add 'created_at' in Mithril Stake Distribution messages #1030
    • Completed the issue Add a 'run-only' option in end to end test #1048
  • Worked on refactoring:
    • Completed the issue Factorize protocol crypto operations #669
    • Completed the issue Refactor aggregator dependency injection and services #1058
    • Completed the issue Build static binaries in CI #874
  • Worked on documentation:
    • Completed the issue Prepare SPO on-boarding guide #1049
    • Completed the issue Add instructions to set firewall using iptables #1040
    • Completed the issue Update ufw command to set firewall on Mithril Signer installation instructions #1041
  • Worked on bugs:
    • Completed the issue Aggregator does not detect certificate chain epoch gap #952
    • Completed the issue 'testing-preview' network does not create certificates #1015
    • Completed the issue SQLite compatibility in aggregator #837
    • Completed the issue Q&A followup fixes #1035
    • Completed the issue E2E tests are flaky in CI #1023
+ + + + \ No newline at end of file diff --git a/2023-07-14-hydra/index.html b/2023-07-14-hydra/index.html new file mode 100644 index 00000000000..57fbdc04c0a --- /dev/null +++ b/2023-07-14-hydra/index.html @@ -0,0 +1,29 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa
Sasha Bogicevic

High-level summary

This week the team focused on exploring the event sourced persistence in order +to improve hydra-node performance. Because of this work the team noticed we +need to refactor the emit snapshot emission logic and update the spec in the +light of new changes. They also took the time to revisit their goals and product +plans for the next quarter as well as doing some security fixes related to +multisignatures.

What did the team achieve this week

  • Finished spike about performance improvements of event sourced persistence #963.
  • Refactor snapshot emission in protocol logic.
  • Revisited our roadmap and goals.
  • Prepared and conducated a learning session on lean-waste.
  • Improve security of multi-signature checks, see this Github security advisory.
  • Implemented a cache friendly way to version our binaries #962.

What are the goals of next week

  • Implement Event sourced persistence #913.
  • Remove deprecated internal commit #954 and close #728.
+ + + + \ No newline at end of file diff --git a/2023-07-18-node-cli-api/index.html b/2023-07-18-node-cli-api/index.html new file mode 100644 index 00000000000..11efdf31965 --- /dev/null +++ b/2023-07-18-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-07-05 - 2023-07-18

High level summary

  • Integrate Conway certificates in cardano-api
  • Prepare cardano-cli and cardano-api for cardano-node 8.1.2
  • Tagged cardano-cli 8.3.0.0
    • Query for the hash of the constitution (Conway)
    • Ability to create votes and governance actions
  • Tagged cardano-cli 8.3.1.0
    • Make it build with ghc-9.6
  • Upgrade to optparse-applicative-fork-0.18.1.0 for parsing command line options

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-07-20-goedel/index.html b/2023-07-20-goedel/index.html new file mode 100644 index 00000000000..86a75d16888 --- /dev/null +++ b/2023-07-20-goedel/index.html @@ -0,0 +1,30 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is working on formalising mini protocols, the performance +modelling prototype and also finishing off their ICE papers.

Details

  • Formalization of the chain synchronization mini-protocol in the +thorn calculus

  • Final pre-publication steps for ICE 2023 papers

  • Developing approach for specification and verification of +mini-protocols

  • Started work on porting the DeltaQ framework to a new, more concrete +backend based on piecewise-polynomials

+ + + + \ No newline at end of file diff --git a/2023-07-21-hydra/index.html b/2023-07-21-hydra/index.html new file mode 100644 index 00000000000..6c925882f10 --- /dev/null +++ b/2023-07-21-hydra/index.html @@ -0,0 +1,34 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team updated the specification to align with recent +off-chain protocol changes, completed refactoring the snapshot emission +in preparation for event-sourced protocol logic, and updated to GHC +9.2.7, resulting in improved compile times and slightly smaller Plutus +scripts.

What did the team achieve this week

  • Updated the specification to match the recent off-chain protocol +changes to complete +#728
  • Refactored the snapshot emission logic in preparation for event +sourced protocol logic.
  • Updated to GHC 9.2.7, which led to improved compile times and +slightly smaller plutus scripts.

What are the goals of next week

  • Monthly review meeting next wednesday and July report
  • Reflect latest information onto our roadmap.
  • Actual implemention of event-sourced persistence +#913.
  • Update the use cases section on https://hydra.family
  • Remove deprecated internal commit +#954.
+ + + + \ No newline at end of file diff --git a/2023-07-21-ledger/index.html b/2023-07-21-ledger/index.html new file mode 100644 index 00000000000..d4c710c8ba2 --- /dev/null +++ b/2023-07-21-ledger/index.html @@ -0,0 +1,28 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Alexey Kuleshevich

High level summary

Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet. +All members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era. +We also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release). +Additionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available. +We also made progress on the constraint-based generators, which can now generate valid transactions and ledger states.

What we achieved

  • [pull-3521] [pull-3554] Improved Governance model (GovernanceProcedures, ProposalProcedure)
  • [pull-3520] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert )
  • [pull-3531] Refactored and simplified code interacting with Plutus
  • [pull-3558] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix.
  • [pull-3550] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed.
  • [pull-3551] [pull-3546] [pull-3472] Updated tools and added some small improvements
  • [issue-3146] [pull-3498] Introduced Conway protocol parameters
  • [issue-2948] [pull-3499] Implemented ConwayGenesis with the new protocol parameters

What is currently in progress

+ + + + \ No newline at end of file diff --git a/2023-07-21-sre/index.html b/2023-07-21-sre/index.html new file mode 100644 index 00000000000..b74f66fec6f --- /dev/null +++ b/2023-07-21-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· One min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent improvements include:

  • Re-spin sanchonet for testing a new node version followed by fork to Conway
  • Deploying a sanchonet compatible faucet to sanchonet
  • Migrate shelley qa legacy environment to cardano-world

Lower level summary

Cardano-node

Cardano-ops

  • Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: cardano-ops-compare

Cardano-world

Iohk-nix

+ + + + \ No newline at end of file diff --git a/2023-07-26-consensus/index.html b/2023-07-26-consensus/index.html new file mode 100644 index 00000000000..020cbe3413d --- /dev/null +++ b/2023-07-26-consensus/index.html @@ -0,0 +1,26 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

The db-sync team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now. +We also focused on completing tracing support for UTxO-HD in cardano-node. +Currently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further.

The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ChainSync client as part of the onboarding efforts for the team that will implement Genesis.

The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team.

Genesis liaising

Improvements to the ChainSync client:

+ + + + \ No newline at end of file diff --git a/2023-07-27-mithril/index.html b/2023-07-27-mithril/index.html new file mode 100644 index 00000000000..f7476d119db --- /dev/null +++ b/2023-07-27-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team launched Mithril protocol’s mainnet beta: the release-mainnet network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch.

They have released a new distribution 2329.0, which is running on the release-mainnet network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator.

Finally, they have worked on enhancing the documentation for onboarding SPOs and setting up a Mithril signer, and fixing installation bugs of the binary artifacts produced in the CI.

Low level overview

  • Created the dev blog post Mithril Protocol’s Mainnet Beta Launch
  • Released the new distribution 2329.0
  • Closed the epic that prepares the Mithril infrastructure for mainnet #767:
    • Completed the issue Deploy 'mainnet' infrastructure #988
    • Completed the issue Handle Secrets management #989
  • Worked on the epic Release 'mainnet' Mithril network #918
    • Completed the issue Prepare SPO on-boarding guide #1049
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Worked on the issue Design & implement basic stress test tool for aggregator #991
  • Worked on optimizations:
    • Completed the issue Enhance the configuration of Mithril relay #1080
    • Completed the issue Remove legacy store adapters from aggregator #1053
    • Completed the issue Add a 'sign' sub-command to 'genesis' command in aggregator #1081
  • Worked on refactoring:
    • Worked on the issue Refactor (de)serialization of crypto entities #668
  • Worked on documentation:
    • Completed the issue Enhance 'Run a Mithril Signer node (SPO)' guide #1055
  • Worked on bugs:
    • Completed the issue Shared library error in CI binaries #1073
    • Completed the issue Debian package does not install cleanly on older ubuntu versions #834
    • Completed the issue Aggregator panics with new (de)serialization of 'ProtocolVerificationKey' #1083
+ + + + \ No newline at end of file diff --git a/2023-07-28-hydra/index.html b/2023-07-28-hydra/index.html new file mode 100644 index 00000000000..b56f736c282 --- /dev/null +++ b/2023-07-28-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

During this week, the Hydra team achieved significant progress in various areas. +They conducted the monthly review meeting for July, which continously ensures +transparent communication and project evaluation. The team migrated the core +logic of the node to an event-sourced architecture and incremental writes of +events to persistence, enhancing the projects performance and maintainability. +Furthermore, the team added the ability to read protocol parameters via the API +and fixed the CI workflows to support pull requests from forks of external +contributors, streamlining the development process for community involvement.

What did the team achieve this week

  • Held the monthly review meeting for July (recording)
  • Migrate the core logic of the node to an event-sourced architecture #999
  • Updated persistence to faster incremental writes of events #1000
  • Added ability to read protocol parameters via API #735
  • Fix CI workflows to support pull requests from forks of external contributors #993
  • Updated to GHC 9.2.8 #1005
  • Prepared an updated use cases section on https://hydra.family (published with next release)

What are the goals of next week

  • Publish monthly report
  • Complete user transaction submission work #966
  • Remove commit from internal wallet (deprecated) #954
+ + + + \ No newline at end of file diff --git a/2023-07-31-network/index.html b/2023-07-31-network/index.html new file mode 100644 index 00000000000..29d8886bdeb --- /dev/null +++ b/2023-07-31-network/index.html @@ -0,0 +1,38 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 3 min read
Marcin Szamotulski

Network Update (Sprints 39 & 40)

The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away. +It was great to see and talk to so many of the community members.

Sprint 39 (Jun 26 - Jul 09)

Major changes

Now the following list of traces will be turned on by default:

node-to-client protocol
  • LocalConnectionManagerTracer
  • LocalInboundGovernor
  • LocalHandshake
  • LocalServer
node-to-node protocol
  • Server

See cardano-node#5353. This will be released in node-8.2.0.

We made sure that cardano-client-0.1.0.x library (which is db-sync) is not using the experimental node-to-client protocol. +The cardano-client-0.2.0.0 was not affected. +See ouroboros-network#4612.

We merged the dynamic block production feature to ouroboros-consensus (also available in the cardano-node-8.2.0 release). +Dynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes. +See ouroboros-network#3159, [ouroboros-consensu#140].

We continued to review the implementation of big ledger peers for eclipse evasion, see ouroboros-network#4462.

Minor changes

Sprint 40 (Jul 09 - Jul 23)

Major changes

We integrated ouroboros-network-0.8.2.0 with the master branch of cardano-node for the 8.2.0 release (the version match between ouroboros-network and cardano-node is purely accidental). +This includes:

  • integration with dynamic block production feature. +This feature is documented in the following PR.
  • Warm valency for local root peers (see below).

For the full list of features included in the 8.2.0 release from the network side, please take a look at the pre-release nodes.

We improved the memory footprint of peer metrics measured by the P2P stack. +Peer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation). +See ouroboros-network#4620. +The improvement will be available in cardano-node-8.2.0.

We added an optional explicit warm valency to local root peers of the P2P topology file. +Previously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to. +The hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones. +Warm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses. +See ouroboros-network#4575, cardano-node#5409.

+ + + + \ No newline at end of file diff --git a/2023-08-01-node-cli-api/index.html b/2023-08-01-node-cli-api/index.html new file mode 100644 index 00000000000..2df1bb694d7 --- /dev/null +++ b/2023-08-01-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-07-19 - 2023-08-01

High level summary

  • Release of Node 8.2.0
    • Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694.
    • This release is phase 1 of the SanchoNet roll out
    • Allows SPOs to vote on changes to the on-chain constitution.
    • Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag.
    • Updates to the networking packages prepare the road for peer sharing.
  • cardano-cli and cardano-api continue to integrate Conway era features
  • Continue refactoring of cardano-testnet

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-08-04-crypto/index.html b/2023-08-04-crypto/index.html new file mode 100644 index 00000000000..333368590db --- /dev/null +++ b/2023-08-04-crypto/index.html @@ -0,0 +1,25 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· One min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
  • mithril: Full node verifier
  • musig2: Finalised the missing fuzz tests
  • kes_agent: engineer on PTO. Work halted

Low level summary

Mithril

  • Work on a mithril flaky test #1105
  • Keep working on Full Node Verifier #939. +Should be merged in the coming week.

MuSig2

  • Finalised the fuzz tests #43

Sidechains

  • Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.
+ + + + \ No newline at end of file diff --git a/2023-08-04-goedel/index.html b/2023-08-04-goedel/index.html new file mode 100644 index 00000000000..7468bf52e84 --- /dev/null +++ b/2023-08-04-goedel/index.html @@ -0,0 +1,29 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is formalising mini protocols and also further developing the +performance modelling prototype.

Details

  • Developing new framework for specification and verification of +mini-protocols which is closer to the Haskell implementation.

  • Developed a new internal representation for the DeltaQ algebra that +allows for more modularity in backend implementations

  • Discussions regarding the Cardano networking specification

+ + + + \ No newline at end of file diff --git a/2023-08-04-hydra/index.html b/2023-08-04-hydra/index.html new file mode 100644 index 00000000000..2c5400777c8 --- /dev/null +++ b/2023-08-04-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team achieved notable progress in various aspects of the +project. The team updated the use case section for auctions on the /unstable +branch of the website, improving the understanding of Hydras applicability.

From the development side, the team successfully completed event-sourced +persistence, a key enhancement in the projects architecture which improves +off-chain transaction processing performance. They also added a +submit-transaction endpoint to the API.

In addition to project-related progress, the team actively engaged in community +reviews for several catalyst proposals related to Hydra and Mithril, +contributing to the wider Cardano ecosystem.

Finally, the full report for the month of July was also published here.

What did the team achieve this week

  • Published the monthly report for July
  • Updated the use case section for auctions (published on /unstable branch)
  • Completed event sourced persistence #913
  • Added a submit-transaction endpoint to the API #966
  • Community reviews for several catalyst proposals related to Hydra and Mithril
  • Created a network testing tool (hydra-net) #1006

What are the goals of next week

  • Update hydra-node to work with cardano-node version 8.x
  • Remove the internal commit functionality
  • Release version 0.12.0
  • Update & streamline tutorial to work with latest version of hydra-node
+ + + + \ No newline at end of file diff --git a/2023-08-04-ledger/index.html b/2023-08-04-ledger/index.html new file mode 100644 index 00000000000..6793d187497 --- /dev/null +++ b/2023-08-04-ledger/index.html @@ -0,0 +1,27 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Alexey Kuleshevich

High level summary

The ledger team was working almost exclusively on the Conway era implementation. In +particular, the main focus was directed towards solidifying transaction related types and +their binary representation. We also directed some effort into unblocking Plutus team with +respect to PlutusV3 integration.

Low level summary

Conway progress

  • pull-3552 - Allow Constitutional Committee Hot Key to be ScriptHash
  • pull-3581 - Make Constitutional Committee Cold Key to be ScriptHash
  • pull-3571 - Implement a portion of the TICKF rule.
  • pull-3556 - Add Script to Constitution
  • pull-3576 - Add optional Anchor to ConwayRegDRep certificate
  • pull-3495 - Implement refund logic for Proposal deposits
  • pull-3579 - Change voting procedure in the transaction to a nested Map
  • pull-3585 - Rename CommitteeCert into a GovCert
  • pull-3587 - Remove DelegStakeTxCert from the COMPLETE pragma for TxCert
  • pull-3586 - Add CurrentTreasuryValue to TxBody
  • pull-3588 - Rename key roles
  • pull-3557 - Update NewCommittee action to use RewardAcnt and add more info
  • pull-3595 - Add ConwayUpdateDRep constructor to ConwayTxCertGov type
  • pull-3600 - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway
  • pull-3597 - Update ProposalProcedure return address to be a RewardAcnt

Testing

  • pull-3374 - New features for generation subject to constraints
  • pull-3519 - Basic Conway features test

Bugfixes

Plutus integration

  • issue-3538 - A fairly complete specification was created for the PlutusV3 context
  • pull-3593 - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality

Improvements and releasing

  • pull-3574 - Improve clarity and performance of collateral Non-ADA validation:
  • pull-3573 - Update top-level CHANGELOG.md with cardano-node relevant changes
  • pull-3555 - Bump pygments from 2.12.0 to 2.15.0 in /doc
  • pull-3575 - Bump certifi from 2022.12.7 to 2023.7.22 in /doc
  • pull-3567 - Backport mint field translation bugfix
  • pull-3568 - Fixed typo in byron ledger spec
  • pull-3572 - Release/backport tickf bugfix
+ + + + \ No newline at end of file diff --git a/2023-08-04-network/index.html b/2023-08-04-network/index.html new file mode 100644 index 00000000000..f2e2d6a409a --- /dev/null +++ b/2023-08-04-network/index.html @@ -0,0 +1,44 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High-level overview of sprint 41

24th July - 6th August 2023

We started the implementation of bootstrap peers. Bootstrap peers are designed +to provide a safety guarantee for nodes joining the network while still taking +advantage of the distributed network for nodes that are synced. This will be +an intermediate step before Genesis which will allow for further distribute the +system. The bootstrap peers will be run by some trusted partners like CF, +Emurgo or IOG. They are primarily designed for leaf nodes (e.g. full node +wallets), which often end up syncing and require access to the honest chain. See +ouroboros-network#4615 for a more detailed implementation plan.

Other contributions

We started to use nothunks library to discover if we have any unevaluated +thunks which can lead to memory leaks ouroboros-network#4633. We found +a small one in the peer metric component of the P2P networking stack. Fixing +it put us on a small detour of fixing the API of the strict-checked-vars +package: cardano-base#431, cardano-base#432, as well as adding NFData +instance to io-classes. We also improved nothunks +library to make debugging easier and we provided a NoThunks instance for +ThreadId which we will need in the future (see nothunks#33).

We released a new version of io-classes (version 1.2.0.0) and related +packages to Hackage.

We addressed all review comments on the eclipse evasion PR which introduces big +ledger peers, ouroboros-network#3886.

We fixed how SIGHUP signal handlers are registered, so it's not possible to +shutdown a node which was starting while trying to update network topology, +see cardano-node#5421.

I didn't mention that in the previous update, so here it goes: in the previous +sprint we released ouroboros-network-0.8.2.0 and +ouroboros-network-framework-0.7.0.0.

+ + + + \ No newline at end of file diff --git a/2023-08-04-performance-and-tracing/index.html b/2023-08-04-performance-and-tracing/index.html new file mode 100644 index 00000000000..881e7ba08da --- /dev/null +++ b/2023-08-04-performance-and-tracing/index.html @@ -0,0 +1,31 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Michael Karg

High level summary

  • Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version 8.2.0.
  • Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing.
  • Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6.
  • Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.

Low level overview

Benchmarking

The 8.2.0 version of cardano-node required adjustment of some of the sanity checks that are part of our benchmarking +cluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version.

Tracing

The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint +when using it as default for a running node.

A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any +inconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node. +This feature adds another layer of robustness to the whole system.

Infrastructure

A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler +versions. We've future-proofed our benchmarking code.

Nomad backend

The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend +accordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant.

The validation phase is ongoing. We were able to perform successful runs and analyses for various 8.x node versions, including 8.2.0-pre. With parallel runs on the current cluster, we hope to measure the same effects we've observed with the +nomad backend - which will be a big step towards production use.

+ + + + \ No newline at end of file diff --git a/2023-08-04-sre/index.html b/2023-08-04-sre/index.html new file mode 100644 index 00000000000..3c198b81ef3 --- /dev/null +++ b/2023-08-04-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· One min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Preprod and preview envionments were updated to 8.1.2.
  • Sanchonet and shelley-qa environments were updated to 8.2.0-pre.
  • Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.

Lower level summary

Cardano-ops

Cardano-perf

Cardano-world

+ + + + \ No newline at end of file diff --git a/2023-08-09-consensus/index.html b/2023-08-09-consensus/index.html new file mode 100644 index 00000000000..1b9c34f1088 --- /dev/null +++ b/2023-08-09-consensus/index.html @@ -0,0 +1,24 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of fs-sim and fs-api, and released strict-checked-vars.

UTxO-HD

  • Rebased UTxO-HD on top of node 8.2 (issue)
  • Address new Maybe translations for UTxOs in Conway 1.6. (PR).
  • Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory.
  • Fixed an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully.
  • Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running QueryUTxOByAddress (PR).
  • Measured the speed of QueryUTxOByAddress under different queryBatchSize values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution.
  • Refactored and implemented ledgertable-related classes for the general HardforkBlock.

Genesis

  • Frisby and Esgen continue to engage with the Researchers on grinding against the Genesis design.

Fostering collaboration

  • Drafted a document explaining versioning of local state queries #273.

Support

  • Frisby is the release engineer this cycle.
  • Successfully created work-in-progress ouroboros-consensus and cardano-api commits that integrate the 2023 Aug 7 tip of cardano-ledger. This will require a release of ouroboros-consensus, which hasn't happened yet.
+ + + + \ No newline at end of file diff --git a/2023-08-10-mithril/index.html b/2023-08-10-mithril/index.html new file mode 100644 index 00000000000..f9296aef6be --- /dev/null +++ b/2023-08-10-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team completed the Mithril protocol’s mainnet beta launch: the release-mainnet network is now consistently producing new certificates and snapshots! The team has released a new distribution 2331.1 which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the mainnet infrastructure.

Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network.

Low level overview

  • Released the new distribution 2331.1
  • Completed the epic Release 'mainnet' Mithril network #918
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Completed the issue Design & implement basic stress test tool for aggregator - phase 1 #991
  • Worked on the epic Post deployment 'mainnet' infrastructure #1091:
    • Completed the issue Create Production Infrastructure Runbook #1085
    • Completed the issue Ingest 'mainnet' metrics/logs in Grafana #1122
  • Worked on optimizations:
    • Completed the issue Add a 'clean' file to extracted database in client #1131
    • Worked on the issue Create explorer page with registered signers #1097
  • Worked on refactoring:
    • Worked on the issue Refactor (de)serialization of crypto entities #668
  • Worked on bugs:
    • Completed the issue Client fails to unpack some snapshot archive #1137
    • Completed the issue The 'release-preprod' network stopped producing certificates #1114
    • Completed the issue The 'release-mainnet' network does not show up in the explorer #1111
  • Worked on dependencies:
    • Completed the issue Upgrade Cardano node to '8.1.2' #1090
  • Worked on troubleshooting:
    • Completed the issue Signer can't sign with 'Invalid signature for party' error #1125
+ + + + \ No newline at end of file diff --git a/2023-08-11-hydra/index.html b/2023-08-11-hydra/index.html new file mode 100644 index 00000000000..c71dc826447 --- /dev/null +++ b/2023-08-11-hydra/index.html @@ -0,0 +1,32 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa
Sebastian Nagel

High-level summary

This week, the Hydra team updated hydra-node to support cardano-node version +8.1.2, ensuring compatibility with the latest mainnet release. The team also +participated in discussions about a "cardanonical" JSON schema and added it as a +submodule to the project, contributing to improved data modeling and +interoperability.

In terms of community engagement, the team successfully onboarded a new +contributor, also participated in a RareEvo Twitter space, and continued +preparations for the Hydra master-class.

What did the team achieve this week

  • Updated dependencies to support cardano-node 8.1.2 #1007
  • Engaged in discussions about a cardanonical json schema and +add it as submodule to the project +#1013
  • Onboarded a new contributor to the hydra project (@locallycompact)
  • Joined RareEvo twitter space and continued preparation of hydra master-class

What are the goals of next week

  • Update & streamline tutorial to work with latest version of hydra-node
  • Remove the internal commit functionality #954
  • Release 0.12.0
+ + + + \ No newline at end of file diff --git a/2023-08-11-performance-and-tracing/index.html b/2023-08-11-performance-and-tracing/index.html new file mode 100644 index 00000000000..d6416d9705c --- /dev/null +++ b/2023-08-11-performance-and-tracing/index.html @@ -0,0 +1,28 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Michael Karg

High level summary

  • Benchmarking: We've concluded benchmarking node version 8.2.0.
  • Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration.
  • Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.

Low level overview

Benchmarking

As part of our release benchmarking cycle, we've completed and analysed the runs for the 8.2.0 version of cardano-node. In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version.

Tracing

A significant amount of optimizations for the new tracing system has finally been merged to master. At the moment, +we're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding +insight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward.

Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing.

Nomad backend

The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent +and reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were +able to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks.

A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to master.

+ + + + \ No newline at end of file diff --git a/2023-08-15-node-cli-api/index.html b/2023-08-15-node-cli-api/index.html new file mode 100644 index 00000000000..623f527ce4b --- /dev/null +++ b/2023-08-15-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-08-02 - 2023-08-15

High level summary

  • cardano-node 8.2.1 (pre-release) to SanchoNet
  • Continue moving CLI into era-based top level command structure
  • Wire-up DREP key generation,
  • Fix DREP deregistration certificates
  • Implement Constitutional Committee Key generation on the CLI
  • Introducing era-based protocol parameters on the API
  • Removing depracated functions and types on the API

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

Fix broken links in docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-08-17-crypto/index.html b/2023-08-17-crypto/index.html new file mode 100644 index 00000000000..47d16d3f0e5 --- /dev/null +++ b/2023-08-17-crypto/index.html @@ -0,0 +1,24 @@ + + + + + +Crypto Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Crypto Team Update

· One min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
  • mithril: Full node verifier
  • musig2: Include MuSig2 description in cryptography handbook
  • kes_agent: Finilising test and CI. Working on KES binary

Low level summary

Mithril

  • Full Node Verifier merged #939.

MuSig2

  • Started describing MuSig2 to include it as part of the cryptography handbook

Sidechains

  • Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in this fork.

KES agent

  • KES agent is ready:
    • CI ready #19
    • Receipt confirmation message #20
    • KES agent binary ready #21
    • Control client implemented #11
+ + + + \ No newline at end of file diff --git a/2023-08-17-db-sync/index.html b/2023-08-17-db-sync/index.html new file mode 100644 index 00000000000..de985714f40 --- /dev/null +++ b/2023-08-17-db-sync/index.html @@ -0,0 +1,32 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

We have integrated many new Conway feutures and allow db-sync to sync sanchonet. +We also continued testing and improving the new db-sync options.

Lower level summary

  • Conway integration +#1484
  • Support for Sanchonet +#1476
  • Stake distribution is computed earlier +#1484
  • Deposit ledger events are now used. This reduces the db queries and makes syncing faster +#1484
  • Testing new db-sync options +#1466
  • Added support for ghc-9.6 +#1479
  • Tech debt: improve exceptions +#1471
+ + + + \ No newline at end of file diff --git a/2023-08-17-secp-issue/index.html b/2023-08-17-secp-issue/index.html new file mode 100644 index 00000000000..f8250fed6a7 --- /dev/null +++ b/2023-08-17-secp-issue/index.html @@ -0,0 +1,31 @@ + + + + + +SECP bindings Security Issue Report | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SECP bindings Security Issue Report

· 4 min read
Iñigo Querejeta Azurmendi

Security Issue Report: SECP256k1 bug

Date Occurred: July 15, 2022 +Severity: Potentially Very High if exploited on Mainnet +Authors: Iñigo Querejeta Azurmendi

Date of Report: August 17, 2023

Summary of Issue

Criticality Level

Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet +Context

New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains. +How was the Issue Detected

The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there.

What Action was Taken

The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod). +Fixes were applied to prevent the use of the primitives. +A full security audit was carried out on the bindings. +The rollout of the primitives was postponed to a new hard fork (Valentine)

Potential Effect

The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction.

Actual Effect

  • Delay to the Vasil hard-fork
  • Temporary removal of SECP256k1 primitives
  • Additional hard-fork to introduce SECP256k1 primitives

Ongoing Mitigations Needed, if any

None

Responsibility for Mitigations

Core team

Detailed description of Incident

New Plutus secp256k1 cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet.

The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing.

  • This is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an expected structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely.
  • The same happened with the Schnorr verification function. It takes as input a SECP256k1_xonly_pubkey, which is again an opaque structure that holds a parsed and valid public key.

The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated.

The fix was addressed in this PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts.

Recommendations

  • Check all new Plutus bindings for correct use.
  • Audit all new Plutus built-in bindings.
  • Continue to develop specific End-to-End tests for all new Plutus features.
  • Do not assume that any existing library functions are "safe". Treat all external calls circumspectly.
+ + + + \ No newline at end of file diff --git a/2023-08-18-goedel/index.html b/2023-08-18-goedel/index.html new file mode 100644 index 00000000000..0daf09a94f9 --- /dev/null +++ b/2023-08-18-goedel/index.html @@ -0,0 +1,33 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

Details

  • Development of an automated prover for showing conformance of +programs to state machines (as part of the mini-protocol framework)

  • Completion of the documentation of the (current state of the) +mini-protocol framework

  • Discussion about two DeltaQ lectures with two practical sessions as part +of 4th year masters course on distributed systemsby colleagues at UC +Louvain in the Autumn

  • Discussion about four DeltaQ lectures by colleagues at U. Bergen as part +of a 5th year Masters course in the Autumn

  • Adapted original DeltaQ implementation to the new typeclasses and +wrote property tests for its algebraic laws

+ + + + \ No newline at end of file diff --git a/2023-08-18-hydra/index.html b/2023-08-18-hydra/index.html new file mode 100644 index 00000000000..f673d2c93f2 --- /dev/null +++ b/2023-08-18-hydra/index.html @@ -0,0 +1,34 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team released version 0.12.0, a significant update that +brings support for cardano-node 8.1.2, along with performance enhancements and +various API improvements. Additionally, the team successfully onboarded a new +contributor who is now actively participating in operating a Hydra Head. They +took part in a meeting of the Intersect open source committee and prepared the +Hydra master-class for RareEvo, an educational initiative for the community.

If you happen to be at RareEvo, register for the Hydra master-class using this +form. +We hope to make it possible to follow along on-line as well and will announce +details on the Hydra announcements channel on the IOG discord +server.

What did the team achieve this week

  • Released version 0.12.0 which adds support for cardano-node 8.1.2, performance +and several API improvements. Release notes
  • Replaced commit via websocket with external draft + submit. #954
  • Onboarded new contributor to the point where he actively participates in operating a Head now.
  • Joined a first meeting of the Intersect open source committee
  • Prepared the Hydra master-class for RareEvo.

What are the goals of next week

  • Monthly review meeting
  • Run the Hydra master-class at RareEvo!
  • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
  • Clear out red bin items (technical debt)
  • Groom network resilience and explorer features
+ + + + \ No newline at end of file diff --git a/2023-08-18-ledger/index.html b/2023-08-18-ledger/index.html new file mode 100644 index 00000000000..34ab9e2bc3b --- /dev/null +++ b/2023-08-18-ledger/index.html @@ -0,0 +1,29 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Alexey Kuleshevich

High level summary

The ledger team made great progress in advancing Conway era forward. In particular, voting +for DRep and Stake Pool Operators is now at the state that can be used by downstream +components. Addition of new ledger state queries makes it possible to verify changes to +the governance state, such as placement of votes, submission of governance proposals, +inspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the +ability to enact all of the governance actions, except for the hard fork initiation.

Low level summary

Conway progress

  • pull-3577 - Move PParams to GovState
  • pull-3609 - Adjust thresholds for sanchonet
  • pull-3604 - README: update CIP-1694 link
  • pull-3616 - Switch TreasuryWithdrawals to use RewardAcnt
  • pull-3599 - Add governance action well-formedness check
  • pull-3607 - Rename governance to gov
  • pull-3601 - Added DRep anchors
  • pull-3615 - Add optional previous GovActionId in some ProposalProcedures
  • pull-3596 - Upgradeable families
  • pull-3625 - Change constitution to use Anchor
  • pull-3592 - Added pulsing incremental computation of the DRep distribution
  • pull-3523 - Treasury donations
  • pull-3633 - Prevent state changes on phase2 failure
  • pull-3634 - Disable serialization of protocolVersion param update
  • pull-3630 - Implemented DRep refreshing
  • pull-3640 - Remove crypto parameterization from AnchorData
  • pull-3636 - Implement DRep ratification with an "always passing"; threshold
  • pull-3648 - Governance queries
  • pull-3650 - Change environment for ShelleyPOOLREAP rule
  • pull-3658 - Set DRep ratify threshold to 51%
  • pull-3628 - DELEG, POOL, GOVCERT conformance with Spec v0.8

Testing

Improvements and releasing

  • pull-3660 - Fix bounds and versions
  • pull-3661 - Adjust versions, bounds and CHANGELOGs to account for the latest release
+ + + + \ No newline at end of file diff --git a/2023-08-18-network/index.html b/2023-08-18-network/index.html new file mode 100644 index 00000000000..53e371a160f --- /dev/null +++ b/2023-08-18-network/index.html @@ -0,0 +1,46 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 3 min read
Marcin Szamotulski

High-level overview of sprint 42

Eclipse Evasion

We merged and released a new version of the ouroboros-network package (version +0.9.0.0) which includes big ledger peers feature. +This is the primary peer selection mechanism to defend against eclipses. We +also prepared a PR to updated ouroboros-cosnensus +and ekg-forward packages.

CDDL specs for protocol codecs

We made the cddl spec for network codec more inline with the implementation +which is highly polymorphic. cddl doesn't have the notion of polymorphism, +but has any which can generate any valid cbor term. We matched it with an +Any type on the Haskell side and made all remaining tests & specs use it. +This simplified the specifications and made it easier to understand which parts +are defined in the spec, and which parts are left unspecified. See +ouroboros-network#4595.

Ouroboros-Network-Framework API changes

We also released ouroboros-network-framework and other network components. +The ouroboros-network-framework package contains a redesign of API exposed to +ouroboros-consensus. We consolidated, cleaned it and made it easier to +extend in the future if there will be new arguments that need to be passed to +mini-protocol initiator and responders which comes from the low-level network +layer.

Nix setup (CI)

We also made a major review of our nix setup. With help from our DevX team +we ended up with a clean flake.nix file which can:

  • compile & test the code on x86_64-linux, x86_64-darwin and aarch64-darwin
  • cross-compile to Windows on x86_64-linux

And provides a shell which contains all the build tools, including ghc-9.6, +hls, cddl, and more. See ouroboros-network#4640, +ouroboros-network#4643.

Other contributions

Cardano Network Service Assurance

  • The work and writeup in finishing up the CNSA, first stage (first +contract).
  • Getting Sam Cowger (Galois Inc) up to speed.
  • The IOG Networking team carried a reivew of CNSA project progress: a limitted +code & design review.

Galois Review

Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues

scoping, requirements, and getting started.

CI

We added a nightly run for GitHub actions and made the GitHub actions test be +executed with extra concurrency ouroboros-network#4637, ouroboros-network#4649.

We also added GitHub's dependabot ouroboros-network#4650.

Bootstrap Peers

We settled on implementation design of bootstrap peers which is being +implemented, ouroboros-network#4615.

+ + + + \ No newline at end of file diff --git a/2023-08-18-sre/index.html b/2023-08-18-sre/index.html new file mode 100644 index 00000000000..bdff044a610 --- /dev/null +++ b/2023-08-18-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· One min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Sanchonet and shelley-qa environments were updated to 8.2.1-pre.
  • Work on two new repos utilizing flake parts for cardano cluster generation, automation and operation.

Lower level summary

Cardano-ops

Cardano-parts

Cardano-perf

Cardano-playground

Cardano-world

Inputs-check

  • A flake parts module to check input closure sizes recursively for optimization considerations: inputs-check
+ + + + \ No newline at end of file diff --git a/2023-08-23-consensus/index.html b/2023-08-23-consensus/index.html new file mode 100644 index 00000000000..b6db8134ee9 --- /dev/null +++ b/2023-08-23-consensus/index.html @@ -0,0 +1,25 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests. +On the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base.

UTxO-HD

  • We addressed the issues that came from the benchmarking and testing phase (see #314).
    • We fixed the operational-certificate update exception (#305).

Tech debt

  • We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see this branch).
  • We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see this branch).
  • We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see #275).
  • We decreased the flakiness for our test suite (#284).
  • We incorporated and merged the pull-request on query versioning (#273).
  • We started working on new performance-based regression tests for mempool operations.

Support

  • Nick Frisby continues with his engineer responsibilities. Notably getting the Consensus release out for node pre-release 8.3. Nick also began integrating it into downstream branches (cardano{-api,-cli,-node}). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:
+ + + + \ No newline at end of file diff --git a/2023-08-24-performance-and-tracing/index.html b/2023-08-24-performance-and-tracing/index.html new file mode 100644 index 00000000000..3928bfefab7 --- /dev/null +++ b/2023-08-24-performance-and-tracing/index.html @@ -0,0 +1,26 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 2 min read
Michael Karg

High level summary

  • Benchmarking: Benchmarking node version 8.2.1 has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD.
  • Infrastructure: Our analysis pipeline has received improvements reducing memory footprint.
  • Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing.
  • Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.

Low level overview

Benchmarking

We've performed and analysed the benchmarks for the 8.2.1 version of cardano-node as part of our release benchmarking cycle.

Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths.

Infrastructure

As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held +in memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline.

Tracing

The next portion of optimizations has been completed and merged to master, getting rid of Haskell's native String representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by cardano-node.

The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup.

Nomad backend

The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster +and porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend.

+ + + + \ No newline at end of file diff --git a/2023-08-25-hydra/index.html b/2023-08-25-hydra/index.html new file mode 100644 index 00000000000..617830ae490 --- /dev/null +++ b/2023-08-25-hydra/index.html @@ -0,0 +1,30 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team conducted the monthly review meeting for Agust,which +continously ensures transparent communication and project evaluation.

In terms of community engagement, the Hydra team gave a Hydra master-class at +RareEvo workshop as an educational initiative for the community. +Additionally, the team updated the Hydra demo and tutorial to include Mithril +and latest release changes.

They also focused on exploring the Hydra network resiliance in order to improve +hydra-node availability, as it becomes stuck very easily and that leads to a +bad user experience.

What did the team achieve this week

  • Hydra master-class at RareEvo workshop!
  • Monthly report & review meeting
  • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
  • Groomed network resilience and explorer features #188
  • New ADR for “Resourced based API” #1028

What are the goals of next week

  • Have a poc on network resilience working #188
  • Fix issue #931: “Chain state in head state not updated on replayed observation”
  • Fix issue #1039: "Close transaction dropped from cardano-node"
+ + + + \ No newline at end of file diff --git a/2023-08-28-mithril/index.html b/2023-08-28-mithril/index.html new file mode 100644 index 00000000000..a28e3a71c15 --- /dev/null +++ b/2023-08-28-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of zstandard compression of the snapshot archive, and streaming its download and decompression in the client.

Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer.

Low level overview

  • Completed the issue Create explorer page with registered signers #1097
  • Completed the issue Simplify logs on the Signer/Aggregator #1106
  • Completed the issue Refactor (de)serialization of crypto entities #668
  • Completed the issue Mithril client last snapshot download #1078
  • Completed the issue Use the '/signers/registered' route to verify if a signer is registered #1152
  • Worked on the issue Provide progress information with '--json' option in Client #1095
  • Worked on the issue Use 'zstandard' compression for snapshot archives #876
  • Worked on the issue Make client download and extract the archive simultaneously #1115
+ + + + \ No newline at end of file diff --git a/2023-08-29-node-cli-api/index.html b/2023-08-29-node-cli-api/index.html new file mode 100644 index 00000000000..9a493dfbeb3 --- /dev/null +++ b/2023-08-29-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-08-16 - 2023-08-29

High level summary

CLI is making progress towards phases 3 and 4 of SanchoNet.

  • Ability to create info, no-confidence and new committee governance actions.

  • Voting as DREP is possible now on the CLI

  • API is now using Ledger's PParams and VotingProcedures

  • Expose following queries from consensus:

    - GetGovState
    - GetDRepState
    - GetDRepStakeDistr
    - GetCommitteeState
    - GetConstitution

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-09-01-goedel/index.html b/2023-09-01-goedel/index.html new file mode 100644 index 00000000000..cc98e3c8585 --- /dev/null +++ b/2023-09-01-goedel/index.html @@ -0,0 +1,28 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

Details

  • finalising a presenting performance analysis internship work to the +formal methods team

  • developed a new Isabelle mini-protocol framework and examples

  • planning an extended version of the ICE DeltaQ paper

  • working on algebraic rules for properisation of any-to-finish

+ + + + \ No newline at end of file diff --git a/2023-09-01-hydra/index.html b/2023-09-01-hydra/index.html new file mode 100644 index 00000000000..c3c518046a3 --- /dev/null +++ b/2023-09-01-hydra/index.html @@ -0,0 +1,28 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sasha Bogicevic

High-level summary

This week, the Hydra team focused primarily on changes needed in the network +layer and have the first draft document related to needed design. They also +improved the user experience by allowing a commit using inline datums. +Discussed the off-chain governance with researchers and improved internal model +tests.

What did the team achieve this week

  • Monthly report published
  • Small changes to hydraw and tutorial in light of the Masterclass
  • Investigated a bug and saw it was solved by recent developments
  • Improved the model tests by fully validating L1 transactions
  • Enhanced the /commit API to also allow commit from scripts with inline datums (user request)
  • Discussed off-chain governance with IOG and CF researchers
  • Drafted a first network specification document in the context of Network resilience

What are the goals of next week

  • Have a clear understanding of the changes we need for the "Improve network resiliency" feature
  • Groomed and agreed plan on incremental commits/decommits
  • Updated tutorials including CI workflows to check consistency
  • Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)
+ + + + \ No newline at end of file diff --git a/2023-09-01-ledger/index.html b/2023-09-01-ledger/index.html new file mode 100644 index 00000000000..d06da64f7f2 --- /dev/null +++ b/2023-09-01-ledger/index.html @@ -0,0 +1,24 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Alexey Kuleshevich

High level summary

Broadly speaking the Ledger team focused on a few main areas of Conway era:

  • Creation of voting state snapshots in order to correctly delay ratification for one epoch
  • Validation of the Governance Actions sequencing and ordering
  • Proper expiry of DReps and Proposal Procedures
  • Expanding Conway Genesis functionality
  • Utilization of some of the new Protocol Parameters in ledger validation rules

Low level summary

Conway era

  • pull-3659 - Validate Network for ProposalProcedure and TreasuryWithdrawal
  • pull-3637 - Avoid using sequence of tuples, by adding GovActionId to GovActionState
  • pull-3651 - Inactive DReps
  • pull-3664 - Track proposal expiry
  • pull-3668 - Add min committee size predicate to NewCommittee
  • pull-3669 - Add Proposal deposit check against PParam
  • pull-3676 - Fix inactive PoolStake not counting as Drep Stake
  • pull-3635 - Make snapshots of GovActionsState
  • pull-3670 - Validate previously enacted govAction
  • pull-3694 - Improve error reporting on the positive coin decoder
  • pull-3674 - Added RATIFY thresholds
  • pull-3684 - Add proposal delaying, remove predicate failure from ENACT
  • pull-3688 - DRep Refunds and update evalTransactionBalance

Improvements and releasing

  • pull-3677 - Minor patch that fixes the DRep distribution computation
  • pull-3686 - Post patch release fixup
  • pull-3695 - Changelog for cardano-node-8.3 release
  • pull-3683 - Add two new bench mark programs

Testing

+ + + + \ No newline at end of file diff --git a/2023-09-01-network/index.html b/2023-09-01-network/index.html new file mode 100644 index 00000000000..606932139cb --- /dev/null +++ b/2023-09-01-network/index.html @@ -0,0 +1,53 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 3 min read
Marcin Szamotulski

High-level overview of sprint 43

In this sprint, we received contributions from CF & Galois. Karl Knutsson +(CF) has addressed various issues regarding peer churning in P2P, timeouts +and our WireShark dissector. While the Galois developers focused on +addressing issues from their review last year. See below for more details.

We continued working on bootstrap peers ouroboros-network-#4661.

We refactored our test suites: they are split into io-tests which require to +be run natively on all platforms (these tests mostly contain tests that +require IO system calls) and sim-tests which are platform independent. We +run io-tests on all supported platforms (e.g. x86_64-linux, +x86-64-darwin, aarch64-darwin and x86_64-w64-mingw32 (Windows)) natively. +The sim-tests are not executed on Windows due to memory limitations on +GitHub Actions runners. ouroboros-network-#4653

We also started rebasing typed-protocols refactoring branches.

Marcin was appointed as the cardano-node release engineer for the 8.4.0-pre +version. So far he integrated cardano-ledger-conway-1.8 and +ouroboros-network-0.9.1.0 to ouroboros-consensus, cardano-cli and +cardano-api. Once we will have an integration branch for cardano-node, +cardano-ledger-conway-1.8 and ouroboros-consensus packages can be released +to CHaP and PRs can be merged once they go through review & CI.

We also fixed some smaller issues regarding peer sharing (both were discovered +by Karl from CF). More details are included below.

Progress on P2P addoption

SPO relays

There are currently ~2000 relays running P2P +enabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On +16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil +Ada.

P2P relays

The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

Data has been kindly provided by CF and their mainnet monitoring +infrastructure.

IOG relays

As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all +IOG relays will be running P2P.

Detailed description

In this sprint, we got a few contributions from CF:

  • Karl made peer churning mechanism less aggressive ouroboros-network-#4656; and
  • he added timeouts for idle states in ChainSync & KeepAlive +miniprotocols. These timeouts help a node remove idle connections from the +responder (server) side ouroboros-network-#4648.
  • he improved the WireShark dissector by adding support for the peer-sharing mini-protocol ouroboros-network-#4656.

Galois has been making progress in addressing some of the issues they raised in their review (last year):

Peer Sharing

  • Light peer sharing is only enabled when peer sharing is turned on ouroboros-network-#4652;
  • Handshake incorrectly reports peer sharing value. It's supposed to relay the +remote value, but instead, it returns the local value. ouroboros-network-#4642 (in review).

Async Demotion Test Fix

  • We fixed an async demotion test failure which turned out to be a weakness of +the test itself rather than a bug in the connection manager. ouroboros-network-#4655
+ + + + \ No newline at end of file diff --git a/2023-09-01-sre/index.html b/2023-09-01-sre/index.html new file mode 100644 index 00000000000..b92869f5729 --- /dev/null +++ b/2023-09-01-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 2 min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes
  • Work on a new capkgs repository started -- "Content Addressed Packages"
    • This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output
    • These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do
    • Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers

Lower level summary

Capkgs

  • Content addressed packages -- new repo: capkgs

Cardano-ops

  • Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: cardano-ops-compare

Cardano-parts

Cardano-perf

Cardano-world

Sanchonet-demo

+ + + + \ No newline at end of file diff --git a/2023-09-06-consensus/index.html b/2023-09-06-consensus/index.html new file mode 100644 index 00000000000..915757e3707 --- /dev/null +++ b/2023-09-06-consensus/index.html @@ -0,0 +1,26 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 3 min read
Damian Nadales

High level summary

We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation. +On the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers. +The Consensus release engineer finished his rotation: version 8.3.0-pre of cardano-node is releasing 2023 September 5.

UTxO-HD

  • We ran the first successful system-level benchmarks for UTxO-HD (see #203) using the in-memory backend.
    • We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot.
    • After the mempool regression is fixed the benchmarks need to be ran again.
    • System-level UTxO-HD benchmarks with the LMDB are still pending.
  • UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see #344).
  • We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in GetUTxOByAddress (see this comment). Preliminary results are promising.
  • Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (#344), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.

Tech debt

  • We added tests that Consensus emits valid CBOR (#3099). This helped us detect a couple of serialization bugs. The tests still need to be merged into the main branch (#323).

Support

  • Nick Frisby finished his release engineer rotation; cardano-node 8.3.0-pre is releasing 2023 September 5.
  • We helped to investigate a protocol version bug in Sanchonet (see #3491).
  • We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see #91.
+ + + + \ No newline at end of file diff --git a/2023-09-07-mithril/index.html b/2023-09-07-mithril/index.html new file mode 100644 index 00000000000..3cc722098a5 --- /dev/null +++ b/2023-09-07-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team has released a new distribution 2335.0 which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information.

They have also worked on snapshots enhancements: implementation of the zstandard compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes.

Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client.

Low level overview

  • Completed the issue Use 'zstandard' compression for snapshot archives #876
  • Completed the issue Design & implement stress test tool for aggregator - phase 2 #1155
  • Completed the issue Provide progress information with '--json' option in Client #1095
  • Completed the issue Make client download and extract the archive simultaneously #1115
  • Completed the issue Add aggregator Cardano node version in snapshot artifact #948
  • Completed the issue Make Cardano node version part of the Mithril network configuration #947
  • Completed the issue Post deployment 'mainnet' infrastructure #1091
  • Worked on the issue Errors refactoring #798
  • Worked on the issue Add Cloudflare protection of infrastructure #986
  • Completed the issue Failed to restore recent snapshot with strange error #1160
  • Completed the issue Update 'ed25519-dalek' to '2.0.0' #1188
  • Completed the issue Add target networks blocks in release notes #1151
  • Completed the issue Fix end to end 'wait_for_the_expected_time' test #1191
  • Completed the issue Fix docs 'git checkout' command #1174
+ + + + \ No newline at end of file diff --git a/2023-09-07-performance-and-tracing/index.html b/2023-09-07-performance-and-tracing/index.html new file mode 100644 index 00000000000..04edeba7b97 --- /dev/null +++ b/2023-09-07-performance-and-tracing/index.html @@ -0,0 +1,29 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg

High level summary

  • Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack.
  • Infrastructure: Various improvements of our analysis pipeline have been merged to master, supporting safe log truncation.
  • Tracing: Namespace consistency checks have been merged to master along with a curated configuration for benchmarking.
  • Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.

Low level overview

Benchmarking

We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer.

With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance.

The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack.

Infrastructure

As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation +operation that keeps the interdependencies of block events intact.

Truncation might happen at a slightly different point +in time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time.

Tracing

Consistency checking of namespace implementation and configuration when using the new system has been completed. +This feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a cardano-node shows inconsistencies with the namespaces the system provides - and hence needs attention.

Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many +detailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable.

Nomad backend

The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the +first real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend.

+ + + + \ No newline at end of file diff --git a/2023-09-08-hydra/index.html b/2023-09-08-hydra/index.html new file mode 100644 index 00000000000..3da5e90bf21 --- /dev/null +++ b/2023-09-08-hydra/index.html @@ -0,0 +1,41 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team improved the commit process with support for inline +datums. They simplified the chain layer by refactoring how the chain state is +persisted. Updates to the Hydra tutorial were completed, including CI workflows +to keep it up-to-date. The team engaged in discussions with researchers about +incremental commits & decommits, and drafted an architectural decision record +for a resource-based API. They also explored simpler solutions for the upcoming +network resilience feature.

What did the team achieve this week

  • Support InlineScriptDatum in commit +#1043
  • Refactored chain state persistency +#1049
  • Completed tutorial updates (by adding CI and some cleanup) +#997
  • Intersect Open Source committee meeting
  • Experimented with various models to better express the \"Network +resilience problem\" to find a KISS solution for +#188
  • Drafted and discussed incremental de-/commit features within team +and with researchers +#199 and +#1057
  • Created ADR for a resource based overhaul of the API +#1028

What are the goals of next week

  • Meetup of Hydra & Mithril contributors in Nantes, France
  • Integrated cardano-api 8.15 to have GHC 9.6 support
  • A clear design for incremental commits (decommits are already +understood)
  • An ADR for improving tx construction & observation to not need chain +state
+ + + + \ No newline at end of file diff --git a/2023-09-12-node-cli-api/index.html b/2023-09-12-node-cli-api/index.html new file mode 100644 index 00000000000..b757a182eff --- /dev/null +++ b/2023-09-12-node-cli-api/index.html @@ -0,0 +1,28 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 3 min read
Carlos LopezDeLara

2023-08-30 - 2023-09-12

High level summary

Release of Cardano-node 8.3.0-pre for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs. +This release completes phase 2 of SanchoNet feature roll out plan

CLI continues on its migration to a era-based top-level commands. This sprint we moved text-view, key, query, genesis, node, stake-address, transaction and address into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints.

We are moving the drep delegation-certificate to the stake-address command so delegating to a drep is done via stake-addres vote-delegation-certificate. Along the same lines, we are renaming +stake-address delegation-certificate (delagating to a stake pool) to stake-address stake-delegation-certificate to distinguish between stake delegation to a pool and votes delegation to a drep. On top +of that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly stake-address stake-and-vote-delegation-certificate. Note that change is not included on 8.3 but will come on 8.4. +Removing --conway-era flag from all the transaction sub-commands.

Update description fields in delegation certificates from Stake Address Delegation Certificate to respectively (Conway onwards):

  • Stake Delegation Certificate
  • Vote Delegation Certificate
  • Stake and Vote Delegation Certificate

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-09-14-db-sync/index.html b/2023-09-14-db-sync/index.html new file mode 100644 index 00000000000..bb15da0061e --- /dev/null +++ b/2023-09-14-db-sync/index.html @@ -0,0 +1,32 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

We have created a DBSync tag sancho-1-1-0 which can follow sanchonet. Also +the team has ran a number of benchmarks and tests for the new options/flavours of DBSync +and prepared a blogpost which summorises them, for downstream components.

Lower level summary

  • Integration of node-8.3.x and support for Sanchonet on Conway +#1498
  • Simplifications of new feautures +#1496
  • Makes it impossible to restart DBSync with different schema options and adds +tests for them +#1466
  • CI fixes +#1494#1491
  • Prepared a blogpost about different DBSync options +blog
+ + + + \ No newline at end of file diff --git a/2023-09-15-goedel/index.html b/2023-09-15-goedel/index.html new file mode 100644 index 00000000000..0fe99802794 --- /dev/null +++ b/2023-09-15-goedel/index.html @@ -0,0 +1,27 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

Details

  • working on collating and open sourcing performance analysis prototype

  • improvements to Ouroboros Praos specification in Isabelle

  • working on formalising chain sync mini-protocol

  • reviewing an alternatice semantics for DeltaQ

  • Seminar talk at U. Bergen on algebraic properties of timeliness

+ + + + \ No newline at end of file diff --git a/2023-09-15-hydra/index.html b/2023-09-15-hydra/index.html new file mode 100644 index 00000000000..16d845c39a1 --- /dev/null +++ b/2023-09-15-hydra/index.html @@ -0,0 +1,30 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sasha Bogicevic
Sebastian Nagel

High-level summary

This week, most of the Hydra team was attending a cardano scaling workshop in +Nantes, France. They used this oportunity to meet fellow mithril team and spend +some time together to hack on some code and, as always, reflect on the past work +and find optimal path forward for both projects. They also fixed a bug that +caused hydra-node to crash when querying L1, worked on a new network resillience +proof-of-concept and accepted a new ADR related to stateless transaction +observation.

What did the team achieve this week

  • Cardano scaling workshop with members of hydra and mithril teams
  • Accepted user contribution for possible new use-case #1048
  • Fix for the hydra-node crash related to internal wallet query #1053
  • Collected experimental CI findings #1070
  • Propose first POC for the network resilience #1074

What are the goals of next week

  • Monthly review meeting & report including updates from Mithril
  • Review POC and discuss our options for the network resilience
  • Update cardano-api to version 8.20
  • Address TODOs on aiken commit validator #1072
  • Complete hydra-support in kupo kupo#117
+ + + + \ No newline at end of file diff --git a/2023-09-15-ledger/index.html b/2023-09-15-ledger/index.html new file mode 100644 index 00000000000..128673ff25e --- /dev/null +++ b/2023-09-15-ledger/index.html @@ -0,0 +1,30 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Alexey Kuleshevich

High level summary

The Ledger team's focus is still mainly on the Conway era implementation.

We were able to add ability to specify initial Constitutional Comittee and the initial +version of Constitution. Priority in which Governance Action are now enacted matches the +specification. DRep's deposits are now properly accounted for. Governance actions that are +not allowed to be voted on by Stake Pool operators and Constitutional Committee members +are prevented by transaction submission failure, rather than simply being ignored. There +was a few important CDDL fixes as well as a lot of new round trip serialization +tests. Constraint based testing framework has also received a lot of improvements.

Low level summary

Conway era

  • pull-3681 - Conway Genesis additions
  • pull-3690 - Preserve the order of ProposalProcedures
  • pull-3705 - Removed ProtVer from EnactState
  • pull-3700 - Add conway-specific certs to deposit/refunds
  • pull-3704 - Add comments on deprecating certs to Conway CDDL
  • pull-3698 - Reordering of governance actions
  • pull-3712 - Disallow empty fields in ConwayTxBodyRaw
  • pull-3716 - Abstract threshold calculation
  • pull-3725 - Fix mistaken use of dollar sign in cddl files
  • pull-3718 - Predicate failure for mismatched Voter GovAction
  • pull-3721 - Committee expiration, validation and modification

Improvements and releasing

Testing

  • pull-3730 - Implement Show instance for Rep using IsTypeable
  • pull-3697 - Rewrite testEql using Typeable to make it impossible to forget cases
  • pull-3709 - Add many new features to the Constrained modues in cardano-ledger-test
  • pull-3726 - Conway and other eras serialization roundtrip tests
  • pull-3713 - Improve CI resiliency against GitHub issues
+ + + + \ No newline at end of file diff --git a/2023-09-15-network/index.html b/2023-09-15-network/index.html new file mode 100644 index 00000000000..b1fa41aebbe --- /dev/null +++ b/2023-09-15-network/index.html @@ -0,0 +1,42 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High-level overview of sprint 44

Bootstrap Peers

In this sprint, we focused on developing bootstrap peers.

Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we +identified a possible improvement to bootstrap peers. A more detailed +description is available here.

Cardano-Node-8.4.0 Release

We also were responsible for the cardano-node-8.4.0-pre release. A final +integration PR is currently being merged. We published +new versions of ouroboros-consensus, cardano-api and cardano-cli.

Towards Typed Protocols 0.2.0.0

We also updated the future typed-protocols-0.2.0.0 and its integration with +cardano-node. This is towards our goal which we planned for the next +quarter. The identified tasks are to fix breaking tests, and then measure and +address possible performance regressions.

Tech Debt

Mark Tullsen (Galois) submitted two more PRs: ouroboros-network-#4663, +ouroboros-network-#4664. We provided feedback on their other pull requests: ouroboros-network-#4661 and +ouroboros-network-#4660.

P2P adoption

In the last two weeks, there was a regression in P2P adoption concerning +the number of SPOs or stakes, although the number of overall P2P relays has +increased. Karl Knutsson (Cardano Foundation) is investigating +this issue. +P2P relays

The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

Data has been kindly provided by Cardano Foundation and their mainnet +monitoring infrastructure.

Open Source

We are in the process of upstreaming our ffi to Windows Named Pipes API to the Win32 package, see [win32-220].

+ + + + \ No newline at end of file diff --git a/2023-09-15-sre/index.html b/2023-09-15-sre/index.html new file mode 100644 index 00000000000..e4a5f959d65 --- /dev/null +++ b/2023-09-15-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 2 min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Sanchonet environment was updated to 8.3.0-pre.
  • Cardano-parts now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is here.

Lower level summary

Capkgs

  • Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: capkgs-compare

Cardano-ops

Cardano-parts

  • Utilize content addressed binaries to significantly improve eval, build and devShell performance: cardano-parts-pull-8
  • Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: cardano-parts-pull-10
  • Fix warns thrown during some builds and devShell usage: cardano-parts-pull-11
  • Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: cardano-parts-pull-12
  • Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: cardano-parts-pull-13

Cardano-perf

  • Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: cardano-perf-compare

Cardano-playground

Cardano-world

+ + + + \ No newline at end of file diff --git a/2023-09-20-consensus/index.html b/2023-09-20-consensus/index.html new file mode 100644 index 00000000000..c3b2cc894b4 --- /dev/null +++ b/2023-09-20-consensus/index.html @@ -0,0 +1,30 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks. +We are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough. +On the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain. +We also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway.

UTxO-HD

  • We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (349). System level benchmark results are pending.
  • Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (344), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run.
  • We also brought the UTxO-HD branch up to date with node version 8.4.0.

Genesis

  • We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain. +We are now drafting the final self-contained argument. (4157)

Support

  • We debugged a bad parameter update on the Babbage to Conway transition in the SanchoNet testnet (339). +A superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (340, 354, and 355) +However we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ConsensusProtocol type class and the HardForkBlock combinator (345 and 346). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.
+ + + + \ No newline at end of file diff --git a/2023-09-20-mithril/index.html b/2023-09-20-mithril/index.html new file mode 100644 index 00000000000..9059071218e --- /dev/null +++ b/2023-09-20-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports.

Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution.

Low level overview

  • Completed the issue Add snapshot compression parameters in infrastructure deployments #1200
  • Completed the issue Add Cloudflare protection of infrastructure #986
  • Worked on the issue Record statistics about the downloaded snapshot in the aggregator #1127
  • Worked on the issue Error refactoring #798
  • Worked on the issue Activate Cloudflare protection of infrastructure #1230
  • Worked on the issue Release new 2337 distribution #1219
  • Completed the issue Upgrade dependencies #1238
+ + + + \ No newline at end of file diff --git a/2023-09-22-hydra/index.html b/2023-09-22-hydra/index.html new file mode 100644 index 00000000000..95c9dddc1e7 --- /dev/null +++ b/2023-09-22-hydra/index.html @@ -0,0 +1,46 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team conducted the monthly review meeting in +collaboration with Mithril, enhancing project coordination.

The team improved the gen-hydra-key node command for smoother usability +and identified concrete steps to enhance network resiliency in feature +items #188, +#1080, and +#1079. +Additionally, they contributed the aiken-mode editor integration to the +aiken-lang organization, updated dependencies to utilize cardano-api +8.20, and published the Hydra security advisory CVE-2023-42806 with a +workaround available for users.

These efforts demonstrate the team\'s commitment to project improvement, +security, and open-source community collaboration.

What did the team achieve this week

  • Conducted the monthly review meeting together with Mithril
  • Improved gen-hydra-key node command +#1077
  • Established a clear plan to improve resiliency of network and manifested +feature items #188, +#1080 and +#1079
  • Moved aiken-mode (created by SN) +to aiken-lang organization
  • Updated dependencies to using cardano-api 8.20 +#1075
  • Published security advisory +CVE-2023-42806 +(workaround available)

What are the goals of next week

  • Write-up the monthly report for September
  • Finish "network resilience to disconnects" +#188
  • Finish kupo integration with hydra +#1078
  • Discuss and decide on using aiken or not
  • Address the published security advisory +CVE-2023-42806 +(to not require workaround)
  • Ideally, release 0.13.0
+ + + + \ No newline at end of file diff --git a/2023-09-22-performance-and-tracing/index.html b/2023-09-22-performance-and-tracing/index.html new file mode 100644 index 00000000000..f2cf289fd7e --- /dev/null +++ b/2023-09-22-performance-and-tracing/index.html @@ -0,0 +1,35 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg

High level summary

  • Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters.
  • Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time.
  • Tracing: Work on machine-readable tracing of tracer configuration is ongoing.
  • Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster.
  • Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Blöndal!

Low level overview

Benchmarking

As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking +backend with means to measure and document network latency for each run. Furthermore we've implemented means to +capture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences +in the behaviour of the underlying networking stack at OS level.

Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided +to compare standard deviations instead to validate the measurements from nomad.

Infrastructure

Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline +have been merged to master. They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis.

Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for trace-dispatcher and tx-generator we were able to address those issues.

Tracing

After various steps in constructing a configuration upon node startup, it is vital to document +which runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML +trace message for that purpose.

This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node.

Nomad backend

As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it +produces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an +impact on our measurements, as we'd be basically using two different instruments to take them.

Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service +or the slightly different system architecture of the new cluster.

New team member

Baldur Blöndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team. +So I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on cardano-tracer, the component receiving, processing and making available node traces and metrics.

+ + + + \ No newline at end of file diff --git a/2023-09-26-node-cli-api/index.html b/2023-09-26-node-cli-api/index.html new file mode 100644 index 00000000000..4d3c055cd24 --- /dev/null +++ b/2023-09-26-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-09-13 - 2023-09-26

High level summary

  • cardano-node 8.4.0-pre release suitable for SanchoNet.
  • CLI continues making progress integrating governance features. During this sprint we integrated the info and new-committee governance actions.
  • The team continued moving to the ERA top-level commands structure. Removed --conway-era flag from the legacy commands making conway era commands only accessible via cardano-cli conway.
  • stake-pool command is now under the ERA top level structure.
  • API continues integration with governance features, it is worth to higlight that now ProposeNewCommitee uses the right key type (cc-cold)

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-09-27-mithril/index.html b/2023-09-27-mithril/index.html new file mode 100644 index 00000000000..bd6a65437c6 --- /dev/null +++ b/2023-09-27-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

The Mithril team has released a new distribution 2337.0, which includes the following enhancements: support for zstandard compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator.

They also completed the refactoring and standardization of the errors in the Mithril nodes and published an Architectural decision record on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure.

Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs.

Low level overview

  • Completed the issue Release new 2337 distribution #1219
  • Completed the issue Errors refactoring #798
  • Completed the issue Client traffic creates performance bottleneck in aggregator #1207
  • Completed the issue Record statistics about the downloaded snapshot in the aggregator #1127
  • Completed the issue Create a SPO checklist for KES keys update #1267
  • Worked on the issue Spike: Run client in browser WASM PoC #1254
  • Worked on the issue Benchmark aggregator performances #1220
  • Worked on the issue Activate Cloudflare protection of infrastructure #1230
+ + + + \ No newline at end of file diff --git a/2023-09-29-goedel/index.html b/2023-09-29-goedel/index.html new file mode 100644 index 00000000000..0eb83a67ade --- /dev/null +++ b/2023-09-29-goedel/index.html @@ -0,0 +1,28 @@ + + + + + +Goedel Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Goedel Team Update

· One min read
James Chapman

The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and testing the +performance analysis tool

Details

  • drafting processs calculus semantics of mini protocol programs

  • testing the new performance modelling tool

  • further work on specification of mini protocols

  • extension of mini protocol framework to support communication of +programs with local environments via synchronous channels

+ + + + \ No newline at end of file diff --git a/2023-09-29-hydra/index.html b/2023-09-29-hydra/index.html new file mode 100644 index 00000000000..024c6ba5900 --- /dev/null +++ b/2023-09-29-hydra/index.html @@ -0,0 +1,27 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team mainly focused on having a working new reliability +network layer; and specified its expected behavior in a new ADR.

They also revisited the security policy and vulnerability disclosure policy on +how to handle security vulnerability within Hydra, and in particular how to +handle so-called "Silent fixes".

What did the team achieve this week

  • Updated security policy and vulnerability disclosure policy #1088
  • Adr/network reliability #1082

What are the goals of next week

+ + + + \ No newline at end of file diff --git a/2023-09-29-ledger/index.html b/2023-09-29-ledger/index.html new file mode 100644 index 00000000000..8b34e47fd0c --- /dev/null +++ b/2023-09-29-ledger/index.html @@ -0,0 +1,32 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Alexey Kuleshevich

High level summary

Few important Conway related features were completed in this two week period:

  • Constitutional Committee was the last missing Conway related entity that has now been +fully implemented.
  • Treasury withdrawals governance actions have been fixed and now behave as expected.
  • Current treasury amount supplied in the transaction is now enforced by the rules.
  • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no +proposals to vote on.
  • Semantics of how CostModels are updated with Protocol Parameters have been changed to +allow for individual Plutus language version updates, rather than requiring a complete +replacement of all CostModels

Besides the new features there were also important performance and testing improvements:

  • In particular stake distribution computation and native script handling received some +optimizations.
  • New testing DSL has been implemented that drastically simplifies writing unit tests for +ledger rules.
  • Integration tests and benchmarks are now possible for Conway era because of the overhaul +of functionality for initial funds and staking injection whenever node starts up in +Conway, while bypassing all previous eras.

Low level summary

Conway era

  • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
  • pull-3739 - Rename some PParams to be consistent with Agda specification
  • pull-3743 - Move DRepDistr from VState to ConwayGovState
  • pull-3746 - Implement tcTranslationContextL for Shelley
  • pull-3737 - Implement EraTransition
  • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
  • pull-3748 - Apply enacted treasury withdrawals
  • pull-3745 - Constitutional Committee Ratification
  • pull-3763 - Plutus interface improvements
  • pull-3771 - Changed how costmodel updates are applied
  • pull-3766 - Prevent updating protocol version with PParamUpdate

Performance

  • pull-3765 - Improve native script handling
  • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
  • pull-3758 - Cardano-Perf regression: UMap.size regression fix
  • pull-3754 - Use Alonzo-style TxOut encoder when possible

Releasing

  • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
  • pull-3744 - Changelog 8.4
  • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
  • pull-3753 - Minor cleanup and changelog entries
  • pull-3760 - Fixup issues for release
  • pull-3764 - Bump plutus deps to 1.13

Testing

  • pull-3734 - Removed Shaped instance for Rep
  • pull-3735 - Simplify the implementations of hasOrd and hasEq
  • pull-3728 - STS tests based on constraints
  • pull-3714 - Implement the remaining upgradable families
  • pull-3733 - Add some unit tests for Conway features
  • pull-3762 - Update CDDL for praos headers.
+ + + + \ No newline at end of file diff --git a/2023-09-29-sre/index.html b/2023-09-29-sre/index.html new file mode 100644 index 00000000000..11ad8d8a430 --- /dev/null +++ b/2023-09-29-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· One min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node 8.4.0-pre.
  • The use of cardano-node docker hub will be deprecated in preference of GHCR

Lower level summary

Capkgs

  • Refactor parsing scripts, add github action automation, various bugfixes and cleanup: capkgs-compare

Cardano-parts

  • Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: cardano-parts-pull-8

Cardano-playground

  • Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: cardano-playground

Cardano-world

+ + + + \ No newline at end of file diff --git a/2023-10-02-network/index.html b/2023-10-02-network/index.html new file mode 100644 index 00000000000..18f033ff7f9 --- /dev/null +++ b/2023-10-02-network/index.html @@ -0,0 +1,42 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 3 min read
Marcin Szamotulski

High-level overview of sprint 45

Bootstrap Peers

We started reviewing the bootstrap peers PR, ouroboros-network#4615.

Towards Typed Protocols 0.2.0.0

We discovered a performance regression when using typed-protocols-0.2.0.0, and we +started investigating where it comes from. Currently, we see that +typed-protocols-0.2.0.0 can outperform typed-protocols-0.1.0.0 when running +in isolation with a simple ping-pong protocol, so the regression might be in +the new block fetch implementation which comes with typed-protocols-0.2.0.0 +See typed-protocols#3.

Tech Debt

We merged two PRs written by Galois engineers:

  • a pull request which refactors the main entry function for P2P, see ouroboros-network#3834;
  • a pull request which reviews usage of unsafe function in the network code based.

Galois also made progress with the following two issues:

IO-Sim

IOSimPOR

We found and fixed a bug in IOSimPOR. We'd like to thank Prof. John Hughes +(Quviq AB) for helping us with debugging the issue.

We also provided a more uniform API for IOSimPOR, and added ways to make the +debugging similar problems in the future easier.

Technical Details on IOSim refactoring
We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future.

IOSim

To prepare for the next release, we consolidate packages taking advantage of +the public sublibraries supported now both by cabal and Hackage. This is +a work in progress, io-sim#114.

Cardano Newtork Service Assurance

Galois made the following progress:

  • A test run of spinning up a CNSA instance was done, as a result documentation +was updated.
  • Based on the IOG code review of the CNSA code, updates to the CNSA code were +made.
  • Galois has started the design for adding a CNSA analysis for "fetched bytes +over time while node is syncing".

P2P adoption

In the last two weeks, we've seen increase in P2P adoption. +P2P relays

The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays. +node versions

Open Source

We upstreamed our FFI bindings to Windows named pipes to Win32 package, the +PR was accepted and merged.

We also received an external contribution which enhanced our documentation, see +ouroboros-network#4676.

+ + + + \ No newline at end of file diff --git a/2023-10-04-consensus/index.html b/2023-10-04-consensus/index.html new file mode 100644 index 00000000000..29f53878263 --- /dev/null +++ b/2023-10-04-consensus/index.html @@ -0,0 +1,25 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the in-memory backend.

On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain. +We also merged a fix for the Babbage to Conway transition, and released a new version of Consensus.

Genesis

  • We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (392).

Support

  • We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (366).
  • We enabled richer tracers in cardano-node that can be useful in future debugging (384).
  • Esgen continues with his release engineer activities, and created a new Consensus release.

Fostering collaboration

  • We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (369).
+ + + + \ No newline at end of file diff --git a/2023-10-04-mithril/index.html b/2023-10-04-mithril/index.html new file mode 100644 index 00000000000..873575d3d00 --- /dev/null +++ b/2023-10-04-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion on implementing Mithril in a light wallet to receive feedback and contributions from the community.

They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks.

Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs.

Low level overview

  • Created the discussion Implement Mithril in a light wallet #1273
  • Completed the issue Run client in browser WASM PoC #1254
  • Completed the issue Benchmark aggregator performances #1220
  • Worked on the issue Add SPO tickers in explorer #1185
  • Completed the issue Add a non 404 status code on the aggregator endpoint #1103
  • Completed the issue Use source attribute in errors #1265
  • Completed the issue Create a SPO checklist for KES keys update #1267
  • Completed the issue Configure status page and alerting #1277
  • Completed the issue Upgrade dependencies #1274
+ + + + \ No newline at end of file diff --git a/2023-10-06-hydra/index.html b/2023-10-06-hydra/index.html new file mode 100644 index 00000000000..469525a8de9 --- /dev/null +++ b/2023-10-06-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums.

The team also delivered the first version of the network resilience layer, significantly increasing head availability.

Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra.

Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra.

What did the team achieve this week

  • Release 0.13.0
  • Published vulnerability reports #1088
  • Merged network resilience work part I #1074
  • Planning for Cardano Summit participation
  • Discussions with funded Catalyst projects wanting to build on Hydra for support
  • Merged typos fix PR from @omahs #1095

What are the goals of next week

  • Complete Aiken commit validator script #1072
  • Complete Kupo integration #1078
  • Brick upgrade on TUI #1103
  • Clean backlog
  • Prepare and rehearse demo and talk for Cardano Summit
+ + + + \ No newline at end of file diff --git a/2023-10-06-performance-and-tracing/index.html b/2023-10-06-performance-and-tracing/index.html new file mode 100644 index 00000000000..f0fb81974f1 --- /dev/null +++ b/2023-10-06-performance-and-tracing/index.html @@ -0,0 +1,32 @@ + + + + + +Performance & tracing update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & tracing update

· 3 min read
Michael Karg

High level summary

  • Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system.
  • Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7.
  • Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store.
  • Tracing: The machine-readable tracer configuration has been merged. Optimization of cardano-tracer started.
  • Nomad backend: Ongoing variance analysis and refined cluster topology.

Low level overview

Benchmarking

Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the +performance of the in-memory backing store and evaluate possible optimizations (or regressions) for it.

Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results +show all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the cardano-tracer service.

Consensus QTAs

The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The +feedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype.

Development

Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort.

PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time, +we'd like to validate the many improvements that have gone into the Plutus evaluator.

Tracing

The focus for further optimization of the new tracing system has shifted to cardano-tracer - the service +receiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in cardano-node is +more performance critical, the receiving service must still minimize its resource footprint. Moreover, it can +generate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations.

Nomad backend

Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated +the same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery.

+ + + + \ No newline at end of file diff --git a/2023-10-10-node-cli-api/index.html b/2023-10-10-node-cli-api/index.html new file mode 100644 index 00000000000..24bf4cb42fe --- /dev/null +++ b/2023-10-10-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-09-27 - 2023-10-10

High level summary

CARDANO-NODE

CARDANO-CLI

  • Depracated governance query commands and moved all governance related queries to cardano-cli <era> query
  • Drep registration certificates now allow to include an anchor
  • Integrated Drep retirement ceriticates
  • clean up of Drep registration certificates.

CARDANO-API

  • Add support for committee hot key witnesses
  • Require conway onwards for voting
  • Conway drep registration: expose ledger anchor parameter
  • Add certs to txbody of Conway transactions

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-10-11-mithril/index.html b/2023-10-11-mithril/index.html new file mode 100644 index 00000000000..e6c75d161cd --- /dev/null +++ b/2023-10-11-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on crates.io, the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures.

Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI.

Low level overview

  • Worked on the issue Make mithril-client crate a library #1141
  • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
  • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
  • Completed the issue Update Rust compiler in nix CI #1282
  • Worked on the issue Mithril networks infrastructure maintenance #1218
  • Worked on the issue Activate Cloudflare protection of infrastructure #1230
+ + + + \ No newline at end of file diff --git a/2023-10-13-hydra/index.html b/2023-10-13-hydra/index.html new file mode 100644 index 00000000000..346a742b8c4 --- /dev/null +++ b/2023-10-13-hydra/index.html @@ -0,0 +1,24 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity.

They also completed the exploration of potentially moving the Plutus validator scripts to Aiken.

Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project.

What did the team achieve this week

  • Network Resilience Persistence (#1101)[https://github.com/input-output-hk/hydra/pull/1101].
  • Upgrade brick on TUI (#1103)[https://github.com/input-output-hk/hydra/pull/1103].
  • Aiken commit validator translation (#1072)[https://github.com/input-output-hk/hydra/pull/1072].
  • Fixed some bugs in our TUI client.

What are the goals of next week

  • Prepare presentation and workshop for Cardano Summit.
  • Work on hydra-poll dApp for Cardano summit.
  • Start the work on packaging hydra-node and related services.
+ + + + \ No newline at end of file diff --git a/2023-10-13-ledger/index.html b/2023-10-13-ledger/index.html new file mode 100644 index 00000000000..1b4ec9a2113 --- /dev/null +++ b/2023-10-13-ledger/index.html @@ -0,0 +1,30 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· One min read
Alexey Kuleshevich

High level summary

The Ledger team has been shifting focus from implementing Conway related features to +testing. For this reason there is a very little amount features that are reported this +time aorund. Notable Conway related changes are a specialized ledger query for getting +Constitutional Committee state and prevention of submitting proposal procedures that have +no valid path to enactment.

Testing related work was mainly on a constraint base system as well as on roundtrip +serialization. As a result of this extra testing a bug in Conway Genesis serialization +was eliminated.

Low level summary

Conway era

Integration and releasing

Testing

  • pull-3769 - Add roundtrip testing by validating FlatTerm
  • pull-3783 - Update TranslationInstance.hs
  • pull-3775 - Refactor and improve constraint based STS tests
  • pull-3793 - Fix sums with negative RHS.
+ + + + \ No newline at end of file diff --git a/2023-10-13-sre/index.html b/2023-10-13-sre/index.html new file mode 100644 index 00000000000..9f8102dcec2 --- /dev/null +++ b/2023-10-13-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 3 min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Sanchonet environment was updated to 8.5.0-pre.
  • Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring

Lower level summary

Capkgs

  • Various improvements and fixes including:
    • Add GHA cron schedule
    • Add nix auto-gc to avoid running out of storage during large package set builds
    • Add new packages to capkgs
    • Reduce runner storage requirement leaving more room for builds
    • Restructure capkgs attribute names to avoid package name collisions
    • Return to non-musl builds for cardano packages to retain journald compatability
    • Update cache usage to from file level to folder level to reduce network and latency overhead
    • Commit diff: capkgs-compare

Cardano-parts

  • Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: cardano-parts-pull-16
  • Dbsync, smash, faucet and more: cardano-parts-pull-15
    • Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes
    • Adds nginx vhost metrics exporter profile
    • Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down
    • Adds bash *-ng autocompletion compatible wrappers
    • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
    • Adds downstream grafana cloud dashboard as templates
    • Adds downstream grafana cloud alerts as templates
    • Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish
    • Updates the basic profile with IOG cache and commonly used bins
    • Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
    • Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks
    • Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets
    • Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration
    • Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion
    • Updates the colmena template with dbsync, smash, faucet machines profiles and roles
    • Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns
    • Bumps capkgs node-ng to 8.5.0-pre

Cardano-playground

  • Dbsync, smash, faucet and more: cardano-playground-pull-3
    • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
    • Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts
    • Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change
    • Optimizes machine sizes
    • Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets
    • Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion
    • Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
    • Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration

Cardano-world

Sanchonet-demo

  • Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: sanchonet-demo-commit
+ + + + \ No newline at end of file diff --git a/2023-10-15-network/index.html b/2023-10-15-network/index.html new file mode 100644 index 00000000000..4089ff7f37b --- /dev/null +++ b/2023-10-15-network/index.html @@ -0,0 +1,30 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· One min read
Marcin Szamotulski

High-level overview of sprint 46

Bootstrap Peers

We continued reviewing of bootstrap peers, see ouroboros-network#4555.

Towards Typed Protocols 0.2.0.0

We diagnosed the performance regression of the new design. The work on +typed-protocols will be postponed. For more details see the +typed-protocols#3. As an outcome of the performance debugging we prepared +PR which updates the demo-ping-pong and +demo-chain-sync applications.

Peer Sharing

We made progress in review of ouroboros-network#4644, which simplifies the +peer sharing and fixes the ouroboros-network#4642 issue.

Tech Debt

We reviewed the ouroboros-network#3836 PR which inspects all the uses of +error in ouroboros-network. The PR was prepared by Galois.

+ + + + \ No newline at end of file diff --git a/2023-10-18-consensus/index.html b/2023-10-18-consensus/index.html new file mode 100644 index 00000000000..4247a360ef2 --- /dev/null +++ b/2023-10-18-consensus/index.html @@ -0,0 +1,24 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node.

UTxO-HD

  • The Plutus workload benchmark for the in-memory backend showed no regressions for the metrics of interest, but it does show an increase in resource usage.
  • We got additional ad-hoc measurements on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB.
  • We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.

Genesis

  • We produced the first draft for a Survivable Eclipse Duration Model (422).

Support

  • Esgen finished his cycle as release engineer. Node 8.5.0 has been released.
  • We resumed work on the subpar handling of block from the future (4251).
  • We prepared the integration of new tracing events for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned issue).
+ + + + \ No newline at end of file diff --git a/2023-10-18-mithril/index.html b/2023-10-18-mithril/index.html new file mode 100644 index 00000000000..5cff106c833 --- /dev/null +++ b/2023-10-18-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay.

Finally, they enhanced the CI/CD to publish multiple packages to crates.io and started improving the developer experience with the Mithril devnet.

Low level overview

  • Published the security advisory Mithril relay could expose Cardano block producer internal IP when updated #GHSA-9m3h-72xj-x2gq
  • Worked on the issue P2P Networking - Proof of Concept #1300
  • Worked on the issue Make mithril-client crate a library #1141
  • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
  • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
  • Completed the issue Publish multiple packages to crates.io #1298
  • Completed the issue Rename public key published in releases #1292
  • Completed the issue Mithril networks infrastructure maintenance #1218
  • Worked on the issue Fix devnet Mithril Docker images #1272
+ + + + \ No newline at end of file diff --git a/2023-10-20-hydra/index.html b/2023-10-20-hydra/index.html new file mode 100644 index 00000000000..271d0eddd0c --- /dev/null +++ b/2023-10-20-hydra/index.html @@ -0,0 +1,26 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023.

In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON. +This improvement offers users greater flexibility and ease of interaction with the API.

Finally, the team has followed up on the TUI brick upgrade to version 1.10. +This effort has resulted in addressing minor details and enhancing the overall user experience with the TUI.

What did the team achieve this week

  • Prepare presentation and workshop for Cardano Summit.
  • More TUI fixes and improvements.
  • Upgrade GHC from 9.2.8 -> 9.6.2 #1105
  • Solved user issue related to submitting transactions in cbor format #1111.
  • Fix hydraw connection issue making it more stable #1121.

What are the goals of next week

  • Work on hydra-poll dApp for Cardano summit.
  • Start the work on packaging hydra-node and related services.
+ + + + \ No newline at end of file diff --git a/2023-10-24-node-cli-api/index.html b/2023-10-24-node-cli-api/index.html new file mode 100644 index 00000000000..7a8563603a4 --- /dev/null +++ b/2023-10-24-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-10-11 - 2023-10-24

High level summary

CARDANO-CLI

  • Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified.
  • stake-address-info now shows deposits balance.
  • Added conway governance action view to allow to inspect governance action files before submitting them on a transaction.
  • build-raw support for --vote-file and --proposal-file

CARDANO-API

  • Support DRep extended keys
  • Support Plutus V1 in Conway

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-10-25-mithril/index.html b/2023-10-25-mithril/index.html new file mode 100644 index 00000000000..60adcfca82a --- /dev/null +++ b/2023-10-25-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released a new distribution 2342.0. This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes.

They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files.

Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the release-mainnet aggregator, and enhanced the Mithril explorer UI.

Low level overview

  • Worked on the issue P2P Networking - Proof of Concept #1300
  • Completed the issue Make mithril-client crate a library #1141
  • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
  • Completed the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
  • Worked on the issue Fix devnet Mithril Docker images #1272
  • Worked on the issue release-mainnet aggregator is unreachable #1310
  • Worked on the issue Build mithril-common and mithril-client in WASM PoC #1284
  • Completed the issue Display a summary of signers before the full list in explorer #1133
  • Completed the issue Add certificates list in explorer #1184
  • Completed the issue CoreVerifier setup does not compute total_stake correctly #1306
+ + + + \ No newline at end of file diff --git a/2023-10-27-hydra/index.html b/2023-10-27-hydra/index.html new file mode 100644 index 00000000000..4919802a2cd --- /dev/null +++ b/2023-10-27-hydra/index.html @@ -0,0 +1,34 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team fixed the gen-hydra-keys command to avoid +overwriting existing keys, and resolved issues related to the rewritten +hydra-tui. They also worked on a \"dirt road\" implementation for the +\"Ignored init tx\" notification, improving the robustness of the system.

The team finalized preparations for the Cardano Summit presentation, including +implementation of the hydra-poll example DApp.

If you happen to read this and attend the Summit in Dubai, make sure to check +out our Masterclass about \"Developing Hydra + Mithril for Scaling Cardano\" on +Friday, November 3 at 14:00-15:30 local time in the \"Al Dar\" room!

What did the team achieve this week

  • Fix gen-hydra-keys command to not overwrite existing keys +#1136
  • Fixed the rewritten hydra-tui#1113#1137
  • Finalized cardano summit preparation +#1109
  • Implemented the hydra-poll example DApp link to +repository
  • Dirt road implementation for \"Ignored init tx\" notification +#529

What are the goals of next week

  • Attend cardano summit and deliver presentation
  • Clarify / close user created issues
  • Build aarch64-darwin binaries in CI
+ + + + \ No newline at end of file diff --git a/2023-10-27-network/index.html b/2023-10-27-network/index.html new file mode 100644 index 00000000000..692c088b26d --- /dev/null +++ b/2023-10-27-network/index.html @@ -0,0 +1,35 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· 2 min read
Marcin Szamotulski

High-level overview of sprint 47

Bootstrap Peers

We continued to review the process of bootstrap peers, see ouroboros-network#4555

CI / Tests

We investigated our CI issues. We found a memory leak in typed-protocols +function used for testing codecs which triggered out of memory manager (OOM) on +some platforms (typed-protocols#43); we also found a bug in the connection manager which resulted in CI +timeouts (see connection-manager-fix).

KeepAlive client

We found two small issues with the keep-alive client, which were addressed +by Karl Knutsson (Cardano Foundation), ouroboros-network#4689.

Galois

We merged two large PRs prepared by Galois:

Cardano Network Service Assurance (CNSA)

Galois made the following progress on CNSA:

  • a simple [InfuxDB] database backend has been added;
  • the documentation has been updated;
  • internal improvements to the code;
  • progress on a new "CSNA analysis" that provides, for each sampler node, the +block download throughput in bytes over time.

New CHaP Release

We cut a new release of ouroboros-netowrk packages to CHaP: chap#547

More details

CI / Tests

We improved the memory footprint of some of our tests by analysing a stream of +IOSim traces without retaining them, see ouroboros-network#4696

As a safety measure, we introduced an upper bound for heap memory used by test +artefacts in our nix tests. We use 200MB limit for all tests except for +network-mux tests which use 350MB limit, see ouroboros-network#4702.

We refactored one of our tests to use ephemeral ports thus allowing it to +run concurrently, see ouroboros-network#4702.

We merged ouroboros-network#4623 which fixes a bunch of test failures.

All of them were due to a bug in test logic rather than a bug in production +code.

Release Process

We updated our release process & associated scripts, see +ouroboros-network#4705.

+ + + + \ No newline at end of file diff --git a/2023-10-27-sre/index.html b/2023-10-27-sre/index.html new file mode 100644 index 00000000000..7341d58737d --- /dev/null +++ b/2023-10-27-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 2 min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the cardano-playground stack

Lower level summary

Capkgs

  • Adds offchain-metadata-tools, dbsync sanchonet updates: capkgs-compare

Cardano-parts

  • General package updates, modules improvements and template recipes to support network migration from world to playground cardano-parts-pull-17
    • Bumps cardano-db-sync-ng to sancho-2-0-0 tag
    • Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play
    • Adds more machine system bins and devShell bins for scripting and debug purposes
    • Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module
    • Adds profile-cardano-node-topology module for a simplified interface to most common topology needs
    • Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs
    • Adds a topology function to filter self from group machines with an allowList for matching infixes
    • Adds metadata-server and related offchain-metadata-tools bins from capkgs
    • Updates justfile template with:
      • a new query-all recipe for getting status of multiple concurrent running environments
      • a new set-default-cardano-env recipe for fast switching between environments
      • a new start-demo recipe for forking a custom env into conway
      • a new start-node recipe for generic environment start
      • a new stop-node recipe for generic environment stop
      • updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions
      • updated query-tip recipe to a generic query tip compatible with each environment

Cardano-playground

+ + + + \ No newline at end of file diff --git a/2023-11-01-consensus/index.html b/2023-11-01-consensus/index.html new file mode 100644 index 00000000000..bfc8b66ab64 --- /dev/null +++ b/2023-11-01-consensus/index.html @@ -0,0 +1,26 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

This week the Consensus team made progress on two fronts: the question of survivable eclipse duration, which is part of our work supporting Genesis delivery, and how to improve the handling of blocks from the future. +Regarding the UTxO-HD branch, we managed to run a node with legacy blocks, which is syncing with mainnet, up to including Alonzo. +We also investigated a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release.

+ + + + \ No newline at end of file diff --git a/2023-11-01-mithril/index.html b/2023-11-01-mithril/index.html new file mode 100644 index 00000000000..f6c14db0e75 --- /dev/null +++ b/2023-11-01-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the release-mainnet aggregator.

Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI.

Low level overview

  • Worked on the issue P2P Networking - Proof of Concept #1300
  • Completed the issue Build mithril-common and mithril-client in WASM PoC #1284
  • Completed the issue Fix devnet Mithril Docker images [#1272](https://github.com/input-output-hk/mithril/issues/1272
  • Worked on the issue Light Wallet: Release mithril-client library #1311
  • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
  • Worked on the issue release-mainnet aggregator is unreachable #1310
  • Completed the issue Client regressions in snapshot list and download #1321
+ + + + \ No newline at end of file diff --git a/2023-11-08-ledger/index.html b/2023-11-08-ledger/index.html new file mode 100644 index 00000000000..0533b3c669f --- /dev/null +++ b/2023-11-08-ledger/index.html @@ -0,0 +1,34 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 3 min read
Alexey Kuleshevich

High level summary

This update contains mostly improvements to quality of Conway era implementation and +tooling that we use for testing Ledger. Major Conway bugs that were discovered and +squashed are:

  • PParamsUpdate proposals will now correctly use DRep thresholds for ratification
  • Treasury withdrawals are now properly enacted.
  • Corrected snapshotting and DRep Stake Distribution Pulser initialization
  • Delegation to non-existent Stake pool is no longer possible

Other important quality of life improvements are addition of reusable interfaces for an +ordered set OSet and ordered map OMap. Which allowed us to disable duplicate +certificates and proposals in a transaction. As a precursor to PlutusV3 integration, a +serious reorganization of Plutus related functionality was performed.

Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on +expired proposals, addition of Anchor to Constitutional Committee resignation proposals.

Significant improvements have been made to a specialized "Imp" test library that allows us +writing concise stateful unit tests for verifying the Ledger logic. Serious progress has +been made on the conformance testing, where we can now interface with Haskell generated +code from the Agda specification. Serialization testing has been extended to increase +binary conformance coverage.

Low level summary

Conway

  • pull-3808 - Enhance CommitteeMembersState query to return quorum and NoConfidence
  • pull-3801 - Fix epoch rule and tests
  • pull-3803 - Fix delegation validation
  • pull-3759 - Reshuffle things to the DRepPulser incorporates some snap shot things
  • pull-3779 - Prevent duplicate certs and proposals
  • pull-3794 - Added anchor to resign certs
  • pull-3797 - Cleanup JSON instances for Conway governance
  • pull-3848 - Plutus modules restructure
  • pull-3840 - Fix anomalies in Deposits in the Conway Era
  • pull-3856 - Add governance related ledger events
  • pull-3825 - Prevent voting on expired GovActions
  • pull-3831 - Treasury withdrawal fix
  • pull-3791 - Use a Data.OMap.Strict to replace ProposalsSnapshot
  • pull-3836 - PParamsUpdate enactment fix
  • pull-3846 - Revert argument order swap.

Testing

  • pull-3782 - Move ImpTest to Shelley testlib
  • pull-3842 - Imp improvements
  • pull-3844 - Add mappings to Agda types
  • pull-3853 - Fix strange assertion failure, which hides real Block too big problem.
  • pull-3809 - CDDL roundtrip testing
  • pull-3832 - Treasury withdrawals tests
  • pull-3839 - Added cardano-ledger-conformance
  • pull-3841 - Add sha256 to cardano-ledger-executable-spec

Improvements and releasing

  • pull-3843 - Add ...WithLogs versions of evalScripts and friends
  • pull-3795 - Bump plutus to 1.15
  • pull-3798 - Bump urllib3 from 1.26.17 to 1.26.18 in /doc
  • pull-3799 - Changes needed for 8.6 release
  • pull-3807 - Add invalidBeforeL and invalidHereAfterL functions
  • pull-3819 - Fixups needed for a release
  • pull-3829 - Post release CHANGELOG version bumps
  • pull-3830 - Bump aeson to 2.2
  • pull-3833 - Backport release cardano-ledger-conway-1.10.1.0
  • pull-3828 - Add changelog for node release 8.6
+ + + + \ No newline at end of file diff --git a/2023-11-08-mithril/index.html b/2023-11-08-mithril/index.html new file mode 100644 index 00000000000..5137c84584e --- /dev/null +++ b/2023-11-08-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files.

Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator.

Low level overview

  • Worked on the issue Prototype a P2P relay with libp2p #1300
  • Worked on the issue Light Wallet: Release mithril-client library #1311
  • Worked on the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
  • Worked on the issue release-mainnet aggregator is unreachable #1310
  • Completed the issue Client Docker package is incorrect #1322
+ + + + \ No newline at end of file diff --git a/2023-11-09-db-sync/index.html b/2023-11-09-db-sync/index.html new file mode 100644 index 00000000000..ed7c4e067ba --- /dev/null +++ b/2023-11-09-db-sync/index.html @@ -0,0 +1,32 @@ + + + + + +DB-sync Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

DB-sync Team Update

· One min read
Kostas Dermentzis

High level summary

We have created new tag sancho-2-2-0, which integrates missing Conway feautures and some minor fix +tags sancho-2-1-0, sancho-2-0-1. +We have completed the initial implementation for the bootstrap instance objective.

Lower level summary

  • Add a new --disable-gov flag which disabled Conway ferautures +#1558
  • Fix of the committee key size +#1544
  • Workaround a ledger issue with unregistered pools +#1542
  • Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs +#1539
  • Rename offline to offchain +#1533
  • Transfer existing tests to Conway era +#1529#1547
+ + + + \ No newline at end of file diff --git a/2023-11-10-hydra/index.html b/2023-11-10-hydra/index.html new file mode 100644 index 00000000000..9179073a0a3 --- /dev/null +++ b/2023-11-10-hydra/index.html @@ -0,0 +1,51 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

The last two weeks, the Hydra team achieved several milestones. They published +the monthly report for October, providing updates on project developments. The +team delivered a presentation and workshop at the Cardano Summit, contributing +to community engagement. They implemented a \"dirt road\" solution for the +\"Ignored init tx\" notification and moved the hydra-poll example project to a +dedicated repository. Additionally, the team built a hydra-chain-observer tool +for Hydra Heads, updated the toolchain to GHC 9.6.3, and made various +improvements to tooling and code formatting. They addressed specific issues, +such as fixing the gen-hydra-keys command and resolving concerns with the +rewritten hydra-tui. The team also enhanced the hydra-cluster smoke test +suite by fetching network configurations dynamically. Lastly, they actively +reviewed pull requests and architectural decision records from the community, +including contributions from SundaeSwap. An experiment, the Hydra tally, was +completed and successfully deployed to the mainnet by the Cardano Foundation.

What did the team achieve this week

  • Published the monthly report for +october
  • Given a presentation / workshop at the Cardano summit +#1109
  • Dirt road implementation for \"Ignored init tx\" notification +#529 (without +stateless observation)
  • Completed and moved hydra-poll example project into a +dedicated +repository
  • Built a first version of a chain observation tool for Hydra Heads +#1096
  • Switched toolchain to GHC 9.6.3 and various improvements on tooling +and code formatting +#1135#1152#1151#1154
  • Fix gen-hydra-keys command to not overwrite existing +keys #1136
  • Fixed the rewritten hydra-tui#1113#1137
  • Fetch network configurations instead of packaging them into +hydra-cluster (smoke) test suite +#1156
  • Reviewing PRs and ADRs from the community (SundaeSwap) +#1118#1157
  • Hydra tally experiment (Cardano Foundation) deployed to mainnet

What are the goals of next week

  • Tackle reported bugs
  • Shepherd contributed off-line mode PR to the main codeline
  • Improve chain observation tool to include more data and refactor +existing code towards more stateless observation
  • Start work on incremental decommits
+ + + + \ No newline at end of file diff --git a/2023-11-10-sre/index.html b/2023-11-10-sre/index.html new file mode 100644 index 00000000000..149e1b1e31c --- /dev/null +++ b/2023-11-10-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 3 min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the cardano-playground stack

Lower level summary

Capkgs

Cardano-parts

  • General migration support PR for cardano-world to cardano-playground cardano-parts-pull-18
    • Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground
    • Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes
    • Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains
    • The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state
    • The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable
    • Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0
    • For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true
    • Template updates include:
      • Adds optional TF AZ declaration on ec2 resources
      • Adds a cardano node p2p dashboard to the grafana cloud stack
      • Adds a dbsync pool performance analysis query
      • Updates python distribute and delegation scripts from world for playground compatibility
      • Starts a python script lib to reduce shared code among the python scripts
      • Several justfile improvements and new recipes
    • More detail is available in the PR description
  • Update submit action script for 8.6 cardano-parts-pull-19
  • Update scripts for 8.6.0-pre cardano-parts-pull-21
    • Fixes subcommand names based on ERA_CMD
    • Adds deposits to some commands
    • Separates CC cold/hot key generation as host authorization has to occur after action is approved
    • CC voting enabled in vote job

Cardano-playground

  • Migration PR to largely complete the network migration from cardano-world to cardano-playground: cardano-playground-pull-5
    • Adds re-spun private chain network
    • Migrates shelley-qa chain network from world
    • Justfile improvements and new recipes
    • Improve concurrent environment chain support
    • More detail is available in the PR description

Iohk-nix

  • Migration to play: iohk-nix-pull-561
    • Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org
    • Remove deprecated cardano-lib p2p network environment
    • Update sanchonet chain with respin changes
    • Update private chain with respin changes
    • Bump private and shelley-qa chains to sanchonet equivalent conway genesis
    • Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing

Sanchonet-demo

+ + + + \ No newline at end of file diff --git a/2023-11-14-node-cli-api/index.html b/2023-11-14-node-cli-api/index.html new file mode 100644 index 00000000000..f9d394c0951 --- /dev/null +++ b/2023-11-14-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Node API & CLI Team Update

· 2 min read
Carlos LopezDeLara

2023-11-01 - 2023-11-14

High level summary

CARDANO-NODE

CARDANO-CLI

  • Improve golden tests
  • Clean-up of conway era commands

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

+ + + + \ No newline at end of file diff --git a/2023-11-15-consensus/index.html b/2023-11-15-consensus/index.html new file mode 100644 index 00000000000..3886e9e5c30 --- /dev/null +++ b/2023-11-15-consensus/index.html @@ -0,0 +1,28 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales

High level summary

Over the last two weeks, we managed to run a UTxO-HD capable node in legacy mode, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does). +This legacy mode could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not. +However, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter. +On the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node. +Therefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.

On the Genesis front, we reviewed the peer simulator for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.

We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.

Javier Sagredo continues his cycle as release engineer, and he is working on version 8.7 of Cardano node.

+ + + + \ No newline at end of file diff --git a/2023-11-15-mithril/index.html b/2023-11-15-mithril/index.html new file mode 100644 index 00000000000..40e887fc7b8 --- /dev/null +++ b/2023-11-15-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.

Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.

Low level overview

  • Worked on the issue Prototype a P2P relay with libp2p #1300
  • Completed the issue Light Wallet: Release mithril-client library #1311
  • Completed the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
  • Completed the issue release-mainnet aggregator is unreachable #1310
  • Completed the issue Fix certificate hashes re-computation in aggregator #1343
  • Completed the issue Remove unstable tag in unstable release #1235
  • Worked on the issue Enhance aggregator REST API performances #1327
  • Worked on the issue Signer runtime is stuck for some SPO #1312
+ + + + \ No newline at end of file diff --git a/2023-11-16-network/index.html b/2023-11-16-network/index.html new file mode 100644 index 00000000000..734064eeb7d --- /dev/null +++ b/2023-11-16-network/index.html @@ -0,0 +1,28 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Network Team Update

· One min read
Marcin Szamotulski

High-level overview of sprint 48

Bootstrap Peers

We continued reviewing bootstrap peers, ouroboros-network#4555.

IOClasses / IOSim

We prepared slides for a Haskell meetup were we presented a talk on IOSimPOR. +The recording will be availble on YouTube.

We also used the opportunity to do some refactoring of the IOSim code base: io-sim#117. +We released io-sim-1.3.0.0 on Hackage: io-sim#119.

We also added forkFinally to MonadFork (not included in 1.3.0.0 release): io-sim#123.

Tech debt

We refactored Resource used by the DNS subsystem: ouroboros-network#4707. +We continued reviewing the ouroboros-network#4625 PR, which refactors +RootPeersDNS module.

+ + + + \ No newline at end of file diff --git a/2023-11-17-hydra/index.html b/2023-11-17-hydra/index.html new file mode 100644 index 00000000000..8fa81526747 --- /dev/null +++ b/2023-11-17-hydra/index.html @@ -0,0 +1,31 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team made several impactful updates. They addressed +misleading errors regarding collect com transactions, resolved a security +advisory (CVE-2023-42806), and simplified the Hydra Head protocol by using +inline datums. The team also tackled minor inconsistencies in specifications and +implementation, documented reasons for potentially dropped close transactions by +the cardano-node, and collaborated with SundaeLabs on an offline mode for +hydra-node. Additionally, they engaged in discussions with researchers about +incremental de-/commits.

What did the team achieve this week

  • Removed misleading errors about collect com transactions #839
  • Addressed security advisory CVE-2023-42806 in PR #1161
  • Changed the head protocol to use inline datums, simplifying things in the hydra-node #1162
  • Addressed minor inconsistencies in spec and implementation #1104
  • Documented why close transacations might be dropped by the cardano-node (cant fix) #1039
  • Tidy up a few things here and there
  • Worked with SundaeLabs on the offline mode for hydra-node
  • Discussed incremental de-/commits with researchers

What are the goals of next week

  • Start work on incremental decommits protocol specification #1057
  • Provide support to Hypix
  • Address all open bugs
  • Release version 0.14.0 with this scope
  • Update dependencies to prepare for Conway #1114
  • Shepherd off-line mode PR over the finish line
  • Complete tidying up chain layer via stateless observation changes in hydra-node #1096
+ + + + \ No newline at end of file diff --git a/2023-11-17-performance-and-tracing/index.html b/2023-11-17-performance-and-tracing/index.html new file mode 100644 index 00000000000..2e2e5d709be --- /dev/null +++ b/2023-11-17-performance-and-tracing/index.html @@ -0,0 +1,34 @@ + + + + + +Performance & Tracing Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & Tracing Update

· 3 min read
Michael Karg

High level summary

  • Benchmarking: Release benchmarking for node 8.6.0 as well as benchmarks scrutinizing GHC versions and the new tracing system.
  • Development: PlutusV3 capability of our workload generator has been implemented.
  • Tracing: First round of optimization of the cardano-tracer service has completed, awaiting validation.
  • Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.
  • Workbench: Configurable remote environments and improvements to run documentation have been merged to master.

Low level overview

Benchmarking

We've performed and analyzed a full set of benchmarks for node 8.6.0, both in comparison to recent release tags +and mainnet version 8.1.2. A lot of development work has entered the system since then, so it is crucial +we can rule out any potential performance risks for the next mainnet release.

Additionally, we've been benchmarking GHC9.6.3 builds of cardano-node. Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform.

A last set of benchmarks was dedicated to the new tracing system with node 8.6.0. We were able to show that +there is no performance risk to enabling the new system, even when forwarding all trace messages to a cardano-tracer +service on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.

Development

For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes +to the execution budgets by developing specialized workloads.

Tracing

The cardano-tracer service has received its first batch of optimizations. Profiling output is promising; to measure +performance for a long service run time, we're currently equipping the service binary with the same capability to +emit regular resource traces as cardano-node. Analysis of those will be the basis for validating this and possible future optimization efforts.

Nomad backend

Many improvements for the nomad backend have been implemented and merged to master. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service, +more detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables +our team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.

Workbench

Our performance workbench has seen upgrades in documenting and reporting cardano-node builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler. +When alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential.

Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance.

+ + + + \ No newline at end of file diff --git a/2023-11-20-cip1694/index.html b/2023-11-20-cip1694/index.html new file mode 100644 index 00000000000..6393f0290dc --- /dev/null +++ b/2023-11-20-cip1694/index.html @@ -0,0 +1,25 @@ + + + + + +Initial CIP 1694 Security Analysis and Responses | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Initial CIP 1694 Security Analysis and Responses

· 6 min read
Kevin Hammond

High level summary

We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

Initial CIP-1694 Security Analysis and Responses

Section: The constitutional committee


  • “For example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


Section: Size of the constitutional committee


  • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


Section: Terms


  • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

Thanks. Yes, that suggestion is a bit easier to read.


Section: Registered DReps


  • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


Section: Ratification


  • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

These correspond exactly to the groups that are administered by the Parameter Committee.


  • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

Yes, it’s not about harming the system, since Info +actions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


Section: Content


  • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


Section: Protocol Parameter groups


  • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


  • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


Section: Votes


  • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


  • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


Section: Changes post Edinburgh workshop (July 2023)


  • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


Section: Reduced deposits for some government actions


  • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

Indeed. We have no plans for this at the moment.

+ + + + \ No newline at end of file diff --git a/2023-11-22-ledger/index.html b/2023-11-22-ledger/index.html new file mode 100644 index 00000000000..efc63dd3741 --- /dev/null +++ b/2023-11-22-ledger/index.html @@ -0,0 +1,28 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Alexey Kuleshevich

High level summary

Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of +CDDL specification. Important bugfixes include:

  • Fix deserialization of ValueNotConservedUTxO predicate failure that could not +previously report zero ADA.
  • Fix deserialization of CostModels in the PParamsUpdate. Invalid CostModels are no +longer allowed, only CostModels for unrecognized Plutus versions are allowed starting +with Conway
  • Fix returning of Deposits for ProposalProcedures

Testing tooling has been improved and new tests have been implemented for Conway era.

Low level summary

Conway

  • pull-3858 - Restructure computing Refunds and Deposits in a TxBody across all eras
  • pull-3860 - Removed mock/crypto.cddl, added optional tag to sets
  • pull-3864 - Fix Proposal deposits and add deposit tests to imp tests
  • pull-3859 - Rename ProposalsSnapshot to Proposals
  • pull-3867 - MaryValue fixes
  • pull-3869 - Indicate that tag 258 is optional for OSet. Fix rational CDDL
  • pull-3863 - Improve deposits refunds re-usability
  • pull-3861 - Fail PParamsUpdate deserialization for invalid costmodels in Conway
  • pull-3875 - Fix cddl spec for CostModels in Conway
  • pull-3876 - Change 4 PParam fields from EpochNo to EpochInterval
  • pull-3884 - Relax requirement on the Set tag 258 to be enforced in the next era

Testing

  • pull-3868 - Improvements to support property tests on Traces with simple Tx with DRep related Certs
  • pull-3792 - RATIFY and GOV constraint tests
  • pull-3885 - Added a test for genTxAndNewEpoch
  • pull-3886 - QuickCheck Imp integration

Improvements and releasing

+ + + + \ No newline at end of file diff --git a/2023-11-22-mithril/index.html b/2023-11-22-mithril/index.html new file mode 100644 index 00000000000..a045d8efdaa --- /dev/null +++ b/2023-11-22-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· One min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer.

Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release.

Low level overview

  • Completed the issue Prototype a P2P relay with libp2p #1326
  • Worked on the issue Enhance aggregator REST API performances #1327
  • Worked on the issue Signer runtime is stuck for some SPO #1312
  • Completed the issue Manually deploy a test Mithril network #1356
  • Completed the issue Make Cardano node version custom in CI/CD #1355
  • Worked on the issue Support P2P relay in infrastructure #1361
  • Completed the issue mithril-client fails to extract archive #1352
+ + + + \ No newline at end of file diff --git a/2023-11-24-hydra/index.html b/2023-11-24-hydra/index.html new file mode 100644 index 00000000000..30275799e46 --- /dev/null +++ b/2023-11-24-hydra/index.html @@ -0,0 +1,47 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team spent significant time opening a head among +themselves on mainnet using the release candidate, revealing and +addressing lurking bugs such as +#1174. Also +required was this change to dynamically calculate the min utxo value +#1176, a +necessary adjustment following the switch to inline datums. The team +engaged with cardano-cli / cardano-api maintainers to discuss recent +changes and collaborated on drafting feature ideas, including providing +Conway support +for the Hydra roadmap. As part of ongoing improvements, they +experimented with writing the specification in markdown instead of +LaTex.

What did the team achieve this week

  • Opened head among us on mainnet and uncovered a few lurking bugs like +#1174 in the +release candidate
  • Calculate the min utxo value instead of hard-coding it +#1176, which is +needed since we switched to inline datums.
  • Met with the cardano-cli / cardano-api maintainers to discuss +recent changes and way forward
  • Drafted features ideas to provide Conway +support on the +Hydra roadmap
  • Experimented in writing the specification in markdown instead of LaTex

What are the goals of next week

  • Have the Monthly review meeting with several demos
  • Release version 0.14.0 with this +scope
  • Complete tidying up chain layer via stateless observation changes in +hydra-node +#1096
  • Update dependencies to prepare for Conway +#1114
+ + + + \ No newline at end of file diff --git a/2023-11-24-sre/index.html b/2023-11-24-sre/index.html new file mode 100644 index 00000000000..6c40a452b60 --- /dev/null +++ b/2023-11-24-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

SRE Team Update

· 4 min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • The cardano-node nixos service now supports SIGHUP p2p topology reloading when the useSystemdReload option is enabled

Lower level summary

Capkgs

  • Update cardano-db-sync and offchain-metadata-tools package paths and/or references: capkgs-compare

Cardano-node

  • Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: cardano-node-pull-5537
    • Creates a useSystemdReload bool option for the cardano-node nixos service
    • This will move the topology file(s) to /etc/cardano-node/topology-$i.yaml and inject systemd reload hooks for p2p configured cardano-node instances
    • Moving topology files to /etc also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired

Cardano-parts

  • Adds a metadata server profile and a number of other features and improvements: cardano-parts-pull-20
    • Adds a new metadata-service profile
    • Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile
    • Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish
    • Adds extra node list producers and public producers for cardano-node-topology profile
    • Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch
    • Adds select systemd metrics reporting to grafana-agent profile
    • Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS
    • Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it
    • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
    • Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation
    • Adds support for grafana recording rules in the template files
    • Improves cardano-group profile handling of producers with respect to multiple instance nodes
    • Improves grafana-agent profile metrics handling for multi-instance cardano-node servers
    • Improves smash service preStart handling while waiting for a node socket
    • Updates Justfile for ERA_CMD demo support
    • Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates
    • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
    • Defaults cardano-postgres profile psqlrc use to false

Cardano-playground

  • Adds a new testnet metadata server, cluster webserver, and other improvements: cardano-playground-pull-6
    • Adds a new metadata server
    • Adds a new webserver for the cluster's static virtualhost needs
    • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
    • Adds systemd metrics monitoring to the cluster
    • Resizes sanchonet machines to support the growing chain
    • Completes migration of preprod from world
    • Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes
    • Updates Justfile for ERA_CMD demo support
    • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
    • Migrates book static code to playground from world, with refactor, cleanup and updates
    • Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules

Offchain-metadata-tools

  • Adds db password option with obfuscation plus misc improvements: offchain-metadata-tools-pull-61
    • Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services
    • Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile
    • Moves from std use in the nix flake to standard flake schema
    • Fixes hydra CI failures
    • Builds update-docs in hydra to avoid long local build times
    • Removes deprecated tullia
    • Removes deprecated check-hydra from pkgs
    • Removes deprecated bors files and references
+ + + + \ No newline at end of file diff --git a/2023-11-29-consensus/index.html b/2023-11-29-consensus/index.html new file mode 100644 index 00000000000..a2130099afa --- /dev/null +++ b/2023-11-29-consensus/index.html @@ -0,0 +1,29 @@ + + + + + +Consensus Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Consensus Team Update

· One min read
Damian Nadales

High level summary

The Consensus team implemented and tested a patch that does not propagate future headers. +It is under review, and we expect it can be released in the next Cardano node version. +On the UTxO-HD front, we finished prototyping the LedgerDB and BackingStore redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend. +With this prototype finished we can start integrating the rest of the code. +We investigated the unexpected performance degradation observed when acquiring the block context. +We also released Cardano node 8.7.0 and moved tree-diff outside cardano-ledger libraries.

+ + + + \ No newline at end of file diff --git a/2023-11-29-mithril/index.html b/2023-11-29-mithril/index.html new file mode 100644 index 00000000000..89a69754de9 --- /dev/null +++ b/2023-11-29-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released the initial version of the Mithril client library, enabling developers to integrate core Mithril features into their applications. They also released a new distribution, 2347.0, which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements.

The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance.

Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users.

Low level overview

  • Release of the mithril-client library crate
  • Publication of a dev blog post about the released Mithril library
  • Released the new distribution 2347.0
  • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Worked on the issue P2P threat modeling and risk analysis #1350
  • Worked on the issue Enhance aggregator REST API performances #1327
  • Worked on the issue Signer runtime is stuck for some SPO #1312
  • Completed the issue Support P2P relay in infrastructure #1361
  • Completed the issue Make Cardano node version custom in CI/CD #1355
  • Completed the issue Manually deploy a test Mithril network #1356
  • Completed the issue mithril-client verbosity not following usage menu #1325
  • Completed the issue Error message for mithril-client snapshot download #1375
+ + + + \ No newline at end of file diff --git a/2023-12-01-hydra/index.html b/2023-12-01-hydra/index.html new file mode 100644 index 00000000000..26fb11765b7 --- /dev/null +++ b/2023-12-01-hydra/index.html @@ -0,0 +1,38 @@ + + + + + +Hydra Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Hydra Team Update

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team conducted a packed Monthly Review meeting, +featuring demonstrations and the preparation of the monthly report. They +addressed flakiness in tests and enhanced the logs json schema, +improving overall test reliability. Additionally, the team successfully +built MacOS ARM64 (aarch64-darwin) binaries in CI, expanding platform +support. They further improved the network configuration by detecting +incompatible persisted states, contributing to overall system +robustness. Finally, the team released version 0.14.0, highlighting +their commitment to delivering regular updates and improvements.

What did the team achieve this week

  • Monthly Review +meeting +packed with demonstrations and prepared monthly report +#1189
  • Fixed several flaky tests and improved the logs json schema +#1188#1190#1192
  • Built MacOS ARM64 (aarch64-darwin) binaries in CI +#1182
  • Improved network configuration by detecting incompatible persisted +states #1174
  • Released version 0.14.0

What are the goals of next week

  • Start work on incremental decommit
  • Continue shepherding contributed PRs to completion
  • Finish stateless-observation work
  • Open a head on a Conway network
+ + + + \ No newline at end of file diff --git a/2023-12-04-performance-and-tracing/index.html b/2023-12-04-performance-and-tracing/index.html new file mode 100644 index 00000000000..567be1cdd62 --- /dev/null +++ b/2023-12-04-performance-and-tracing/index.html @@ -0,0 +1,28 @@ + + + + + +Performance & Tracing Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Performance & Tracing Update

· 3 min read
Michael Karg

High level summary

  • Benchmarking: Release benchmarking for node 8.7.0. Also, we performed the first-ever Conway benchmarks.
  • Development: Conway capability of our workload generator has been implemented and merged to master.
  • Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data.
  • Tracing: Quality-of-life improvements to tracing output and addition of a test suite.
  • Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.

Low level overview

Benchmarking

A full set of benchmarks for node 8.7.0 has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of 8.7.0 over 8.6.0, and can confirm no regressions have been introduced.

Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version. +Only Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty.

Development

Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era. +Currently, we're looking into adding Conway-exclusive features, such as DRep registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining DRep sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying.

Infrastructure

As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've +improved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data.

Tracing

The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages. +Additionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system.

Nomad backend

We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases.

+ + + + \ No newline at end of file diff --git a/2023-12-06-ledger/index.html b/2023-12-06-ledger/index.html new file mode 100644 index 00000000000..dfe5feca52c --- /dev/null +++ b/2023-12-06-ledger/index.html @@ -0,0 +1,30 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Ledger Team Update

· 2 min read
Alexey Kuleshevich

High level summary

This period we reached a major milestone, namely we now have an initial version of Conway +conformance testing working. We are now able to generate random valid data with the help +of constraint based testing framework, apply that data to Conway Ledger rules and verify +that the output matches to the one produced by the executable version of the Formal Ledger +Specification, when it is applied to the same random data.

We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get +Constitutional Committee query is complete and tested. Various improvements to the +testing tools. Addition of more test cases.

Low level summary

Conway

  • pull-3888 - Add checks for valid ProtVer when a proposal is a HardFork
  • pull-3902 - Fix pvCanFollow usage in Conway and improve clarity in Shelley
  • pull-3855 - Remove unreachable proposals
  • pull-3903 - Add lenient decoder for Addr
  • pull-3878 - Committee query - implement next epoch change

Testing

  • pull-3893 - Move tree-diff dependency to tests together with all instances
  • pull-3896 - Fix Brute force failure
  • pull-3904 - New ListWhere Pred added to the Constrained Solver.
  • pull-3907 - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file
  • pull-3883 - Committee QuerySpec Imp Test
  • pull-3909 - Make impAnn a bit more useful, by making the logs scoped by impAnn
  • pull-3908 - Use upstream testing instances for very basic types
  • pull-3912 - Removed call to tail, and the 'watchPulser' test
  • pull-3852 - Added constrained generators to conformance tests - Part 1

Improvements and releasing

+ + + + \ No newline at end of file diff --git a/2023-12-06-mithril/index.html b/2023-12-06-mithril/index.html new file mode 100644 index 00000000000..bab45e93b1f --- /dev/null +++ b/2023-12-06-mithril/index.html @@ -0,0 +1,24 @@ + + + + + +Mithril Team Update | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking.

Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io.

Low level overview

  • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
  • Worked on the issue P2P threat modeling and risk analysis #1350
  • Worked on the issue Create a test network on Sanchonet #1173
  • Worked on the issue Upgrade breaking changes crates #1357
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Completed the issue Enhance aggregator REST API performances #1327
  • Completed the issue Signer runtime is stuck for some SPO #1312
  • Completed the issue Make mithril-client examples full crates #1385
  • Completed the issue Manual publication to crates.io with GitHub action #1380
  • Completed the issue Remove sqlite dependency from mithril-client crate #1390
+ + + + \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 00000000000..7ff412a8ca2 --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ + + + + + +Page Not Found | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + + + \ No newline at end of file diff --git a/archive/index.html b/archive/index.html new file mode 100644 index 00000000000..26037306f0c --- /dev/null +++ b/archive/index.html @@ -0,0 +1,24 @@ + + + + + +Archive | Cardano Development Updates + + + + + + + + + + + + +
+
Skip to main content

Archive

Archive

2022

2023

+ + + + \ No newline at end of file diff --git a/assets/css/styles.1b2b551c.css b/assets/css/styles.1b2b551c.css new file mode 100644 index 00000000000..f7a74aae298 --- /dev/null +++ b/assets/css/styles.1b2b551c.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area.breadcrumbs__link[href]:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.docsWrapper_BCFX,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.sidebarItemTitle_pO2u,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:#0000004d}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#docusaurus-base-url-issue-banner-container,.collapseSidebarButton_PEFL,.docSidebarContainer_b6E3,.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity .2s ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:.15s;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.breadcrumbHomeIcon_OVgt{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg);position:sticky}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;top:0;transition:background-color var(--ifm-transition-fast) ease}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/files/2022-11-24-UCL-60c46564c5dee25b0060304c060ab1cf.pdf b/assets/files/2022-11-24-UCL-60c46564c5dee25b0060304c060ab1cf.pdf new file mode 100644 index 00000000000..724ed4392dd Binary files /dev/null and b/assets/files/2022-11-24-UCL-60c46564c5dee25b0060304c060ab1cf.pdf differ diff --git a/assets/images/2022-11-02-csj-vs-baseline-9fd0e0e080975cc6cfbe035731b4f38d.svg b/assets/images/2022-11-02-csj-vs-baseline-9fd0e0e080975cc6cfbe035731b4f38d.svg new file mode 100644 index 00000000000..8c8eeb6606f --- /dev/null +++ b/assets/images/2022-11-02-csj-vs-baseline-9fd0e0e080975cc6cfbe035731b4f38d.svg @@ -0,0 +1,2277 @@ + + + + + + + + 1980-01-01T00:00:00+00:00 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/2022-11-02-csj-vs-baseline-sliced-77ff018af70191b4122b1e7cf56c79b8.svg b/assets/images/2022-11-02-csj-vs-baseline-sliced-77ff018af70191b4122b1e7cf56c79b8.svg new file mode 100644 index 00000000000..e75d1eaf09c --- /dev/null +++ b/assets/images/2022-11-02-csj-vs-baseline-sliced-77ff018af70191b4122b1e7cf56c79b8.svg @@ -0,0 +1,2041 @@ + + + + + + + + 1980-01-01T00:00:00+00:00 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/2022-11-11-noticed-headers-55bb0b4d41e8f0cff0066e1bec91bdd2.png b/assets/images/2022-11-11-noticed-headers-55bb0b4d41e8f0cff0066e1bec91bdd2.png new file mode 100644 index 00000000000..98f661897e5 Binary files /dev/null and b/assets/images/2022-11-11-noticed-headers-55bb0b4d41e8f0cff0066e1bec91bdd2.png differ diff --git a/assets/images/2022-11-16-comparing-TICKF-batch-c6570a71c4a5d53b10cb7309d2cc742c.png b/assets/images/2022-11-16-comparing-TICKF-batch-c6570a71c4a5d53b10cb7309d2cc742c.png new file mode 100644 index 00000000000..15e1c6e0b0b Binary files /dev/null and b/assets/images/2022-11-16-comparing-TICKF-batch-c6570a71c4a5d53b10cb7309d2cc742c.png differ diff --git a/assets/images/2022-11-16-removed-stuttering-e49aa27a0e549f0195373203da971ba7.png b/assets/images/2022-11-16-removed-stuttering-e49aa27a0e549f0195373203da971ba7.png new file mode 100644 index 00000000000..606656fac37 Binary files /dev/null and b/assets/images/2022-11-16-removed-stuttering-e49aa27a0e549f0195373203da971ba7.png differ diff --git a/assets/images/2022-12-14-ledger-ops-benchmark-c46be3db45ff5480ed104e0d520711a6.png b/assets/images/2022-12-14-ledger-ops-benchmark-c46be3db45ff5480ed104e0d520711a6.png new file mode 100644 index 00000000000..69a3758ff57 Binary files /dev/null and b/assets/images/2022-12-14-ledger-ops-benchmark-c46be3db45ff5480ed104e0d520711a6.png differ diff --git a/assets/images/2023-01-11-utxo-hd-replay-benchmarks-dcf6daaf5460de7591a60db1457d2e58.png b/assets/images/2023-01-11-utxo-hd-replay-benchmarks-dcf6daaf5460de7591a60db1457d2e58.png new file mode 100644 index 00000000000..906827f577b Binary files /dev/null and b/assets/images/2023-01-11-utxo-hd-replay-benchmarks-dcf6daaf5460de7591a60db1457d2e58.png differ diff --git a/assets/images/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks-6b129a1acaa4bb48443ee81add51fd39.png b/assets/images/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks-6b129a1acaa4bb48443ee81add51fd39.png new file mode 100644 index 00000000000..2e9cbe7de3b Binary files /dev/null and b/assets/images/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks-6b129a1acaa4bb48443ee81add51fd39.png differ diff --git a/assets/images/2023-07-06-p2p-progress-194a909569eebb016b1f24fb8941e2cc.png b/assets/images/2023-07-06-p2p-progress-194a909569eebb016b1f24fb8941e2cc.png new file mode 100644 index 00000000000..59cde79f6ac Binary files /dev/null and b/assets/images/2023-07-06-p2p-progress-194a909569eebb016b1f24fb8941e2cc.png differ diff --git a/assets/images/2023-08-31-p2p-relays-8e5be189ad8437375c5067026c003556.png b/assets/images/2023-08-31-p2p-relays-8e5be189ad8437375c5067026c003556.png new file mode 100644 index 00000000000..7298d24bed9 Binary files /dev/null and b/assets/images/2023-08-31-p2p-relays-8e5be189ad8437375c5067026c003556.png differ diff --git a/assets/images/2023-08-31-relay-versions-0a8d445e1b0f3a793ccdd94f4aacd421.png b/assets/images/2023-08-31-relay-versions-0a8d445e1b0f3a793ccdd94f4aacd421.png new file mode 100644 index 00000000000..a9721ebe815 Binary files /dev/null and b/assets/images/2023-08-31-relay-versions-0a8d445e1b0f3a793ccdd94f4aacd421.png differ diff --git a/assets/images/2023-09-14-p2p-relays-1b3da3da7ec3915f63ca8668bd38aff9.png b/assets/images/2023-09-14-p2p-relays-1b3da3da7ec3915f63ca8668bd38aff9.png new file mode 100644 index 00000000000..8960e26e7ec Binary files /dev/null and b/assets/images/2023-09-14-p2p-relays-1b3da3da7ec3915f63ca8668bd38aff9.png differ diff --git a/assets/images/2023-09-14-relay-versions-a689a96e93e12ee1c78dfe14229f0ea9.png b/assets/images/2023-09-14-relay-versions-a689a96e93e12ee1c78dfe14229f0ea9.png new file mode 100644 index 00000000000..b611d86543a Binary files /dev/null and b/assets/images/2023-09-14-relay-versions-a689a96e93e12ee1c78dfe14229f0ea9.png differ diff --git a/assets/images/2023-10-04-p2p-relays-75c2baf57ea9346a40f0098b2abb4a99.png b/assets/images/2023-10-04-p2p-relays-75c2baf57ea9346a40f0098b2abb4a99.png new file mode 100644 index 00000000000..76b781b81d7 Binary files /dev/null and b/assets/images/2023-10-04-p2p-relays-75c2baf57ea9346a40f0098b2abb4a99.png differ diff --git a/assets/images/2023-10-04-relay-versions-5168d3ed0ad365a18e86263fcccffd23.png b/assets/images/2023-10-04-relay-versions-5168d3ed0ad365a18e86263fcccffd23.png new file mode 100644 index 00000000000..afcec848767 Binary files /dev/null and b/assets/images/2023-10-04-relay-versions-5168d3ed0ad365a18e86263fcccffd23.png differ diff --git a/assets/images/2023-Q2-beacon-graph-ded65e814bfe6d927faa1c5c66bbbfad.png b/assets/images/2023-Q2-beacon-graph-ded65e814bfe6d927faa1c5c66bbbfad.png new file mode 100644 index 00000000000..32c77ec19f4 Binary files /dev/null and b/assets/images/2023-Q2-beacon-graph-ded65e814bfe6d927faa1c5c66bbbfad.png differ diff --git a/assets/images/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks-74f9d76c2602f09652f584cc4d6a0962.png b/assets/images/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks-74f9d76c2602f09652f584cc4d6a0962.png new file mode 100644 index 00000000000..75c58abe23a Binary files /dev/null and b/assets/images/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks-74f9d76c2602f09652f584cc4d6a0962.png differ diff --git a/assets/images/doc-adoption-cd944582f02809777c58be53e13453c5.png b/assets/images/doc-adoption-cd944582f02809777c58be53e13453c5.png new file mode 100644 index 00000000000..fe32333d9fb Binary files /dev/null and b/assets/images/doc-adoption-cd944582f02809777c58be53e13453c5.png differ diff --git a/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png b/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png new file mode 100644 index 00000000000..97e4164618b Binary files /dev/null and b/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png differ diff --git a/assets/images/happy-path-csj-prototype-bench-1-2c33ba45f44a086415e703fe8f0f7ad1.svg b/assets/images/happy-path-csj-prototype-bench-1-2c33ba45f44a086415e703fe8f0f7ad1.svg new file mode 100644 index 00000000000..71262d6b9fa --- /dev/null +++ b/assets/images/happy-path-csj-prototype-bench-1-2c33ba45f44a086415e703fe8f0f7ad1.svg @@ -0,0 +1,1812 @@ + + + + + + + + 2022-10-05T14:01:43.231609 + image/svg+xml + + + Matplotlib v3.5.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/happy-path-csj-prototype-bench-2-e23d2986ddef0a187df9ce336b2db116.svg b/assets/images/happy-path-csj-prototype-bench-2-e23d2986ddef0a187df9ce336b2db116.svg new file mode 100644 index 00000000000..bdfae76e616 --- /dev/null +++ b/assets/images/happy-path-csj-prototype-bench-2-e23d2986ddef0a187df9ce336b2db116.svg @@ -0,0 +1,1888 @@ + + + + + + + + 2022-10-19T12:30:35.894508 + image/svg+xml + + + Matplotlib v3.5.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/happy-path-csj-prototype-prelim-5bbe2e2a20a2740e6238a7c73e618168.svg b/assets/images/happy-path-csj-prototype-prelim-5bbe2e2a20a2740e6238a7c73e618168.svg new file mode 100644 index 00000000000..a35a5935f8e --- /dev/null +++ b/assets/images/happy-path-csj-prototype-prelim-5bbe2e2a20a2740e6238a7c73e618168.svg @@ -0,0 +1,1424 @@ + + + + + + + + 2022-09-21T14:18:47.635974 + image/svg+xml + + + Matplotlib v3.5.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png b/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png new file mode 100644 index 00000000000..e257edc1f93 Binary files /dev/null and b/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png differ diff --git a/assets/js/0048047b.7e1f75e8.js b/assets/js/0048047b.7e1f75e8.js new file mode 100644 index 00000000000..a2bd5a52050 --- /dev/null +++ b/assets/js/0048047b.7e1f75e8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[38518],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,p=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),d=u(a),m=r,s=d["".concat(p,".").concat(m)]||d[m]||h[m]||o;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[d]="string"==typeof t?t:r,l[1]=i;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-12-28-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-12-28-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-28-node-cli-api.md",source:"@site/blog/2022-12-28-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-12-28T00:00:00.000Z",formattedDate:"December 28, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.325,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-12-28-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-05-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-16-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function h(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-12-28---2023-01-10"},"2022-12-28 - 2023-01-10"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4762"},"Fix hedgehog-extras sha hash")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4759"},"Update hegehog-extras bounds")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4751"},"GitHub token fix")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4743"},"Use setup-haskell action")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4738"},"Use Github Action to install libsecp256k1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4714"},"Update index state and hedgehog-extras.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4710"},"Cleaned cabal files")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4737"},"Add cache versioning")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4742"},"Delete obsolete scripts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4746"},"Use SECURITY.md published in Cardano Engineering Handbook"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4749"},"Filter out duplicate collateral inputs in tx build cmds")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4754"},"Optimise query stake-snapshot command"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Copyright updates"))),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/007e4c05.e45fd96d.js b/assets/js/007e4c05.e45fd96d.js new file mode 100644 index 00000000000..70cae938c46 --- /dev/null +++ b/assets/js/007e4c05.e45fd96d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73800],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=u(a),h=r,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||i;return a?n.createElement(s,l(l({ref:t},c),{},{components:a})):n.createElement(s,l({ref:t},c))}));function s(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=h;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[d]="string"==typeof e?e:r,l[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-07-18-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-07-18-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-18-node-cli-api.md",source:"@site/blog/2023-07-18-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-07-18T00:00:00.000Z",formattedDate:"July 18, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.065,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-07-18-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-20-goedel"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-14-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-07-05---2023-07-18"},"2023-07-05 - 2023-07-18"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Integrate Conway certificates in cardano-api"),(0,r.kt)("li",{parentName:"ul"},"Prepare cardano-cli and cardano-api for cardano-node 8.1.2"),(0,r.kt)("li",{parentName:"ul"},"Tagged cardano-cli 8.3.0.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Query for the hash of the constitution (Conway)"),(0,r.kt)("li",{parentName:"ul"},"Ability to create votes and governance actions"))),(0,r.kt)("li",{parentName:"ul"},"Tagged cardano-cli 8.3.1.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Make it build with ghc-9.6"))),(0,r.kt)("li",{parentName:"ul"},"Upgrade to optparse-applicative-fork-0.18.1.0 for parsing command line options")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/74"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"optparse-applicative-fork-0.18.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/72"},"Integrate cardano-api changes for fixed Show and Eq instances for Proposal type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/68"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.3.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/67"},"Add alonzo era to ",(0,r.kt)("inlineCode",{parentName:"a"},"Parser AnyShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/66"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"sbe")," variable name for the type is ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/65"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.3.0.0")))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/123"},"Fix ghc version CPP")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/122"},"Add a HasTypeProxy constraint to getVerificationKey")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/119"},"Incorporate remaining ledger certificates")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/117"},"Release cardano-api 8.8.1.0, cardano-api-gen 8.1.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/115"},"Fix Eq, Show for Proposal type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/112"},"Wire up remaining governance actions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/108"},"Export ",(0,r.kt)("inlineCode",{parentName:"a"},"withShelleyBasedEraConstraintsForLedger"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/106"},"Remove unnecessary constraint")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/104"},"Make it build with ghc-9.6")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/103"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraints")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/102"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.8.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/101"},"Add CastVerificationKeyRole StakePoolKey StakeKey instance")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/99"},"Update ledger and consensus")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/98"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"era")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"sbe")," when type is ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5391"},"Fix Shutdown test for new exit codes"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5387"},"Fix markdown links"))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/69"},"Apply ",(0,r.kt)("inlineCode",{parentName:"a"},"stylish-haskell")," to project"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/00bb8269.def94b86.js b/assets/js/00bb8269.def94b86.js new file mode 100644 index 00000000000..78c3e7b479e --- /dev/null +++ b/assets/js/00bb8269.def94b86.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51257],{69088:a=>{a.exports=JSON.parse('{"label":"mithril","permalink":"/cardano-updates/tags/mithril","allTagsPath":"/cardano-updates/tags","count":34}')}}]); \ No newline at end of file diff --git a/assets/js/015be621.e0570f17.js b/assets/js/015be621.e0570f17.js new file mode 100644 index 00000000000..647632309f5 --- /dev/null +++ b/assets/js/015be621.e0570f17.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80613],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(n),h=r,d=c["".concat(l,".").concat(h)]||c[h]||m[h]||o;return n?a.createElement(d,i(i({ref:t},u),{},{components:n})):a.createElement(d,i({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i="Executive summary",s={permalink:"/cardano-updates/2022-09-20-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-20-consensus.md",source:"@site/blog/2022-09-20-consensus.md",title:"Consensus Team Update",description:"- We proposed a fix for the performance degradation observed when running",date:"2022-09-20T00:00:00.000Z",formattedDate:"September 20, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:3.895,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-09-27-network"},nextItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-09-19-db-sync"}},l={authorsImageUrls:[void 0]},p=[{value:"UTxO HD",id:"utxo-hd",level:2},{value:"Genesis",id:"genesis",level:2},{value:"Technical debt",id:"technical-debt",level:2}],u={toc:p},c="wrapper";function m(e){let{components:t,...o}=e;return(0,r.kt)(c,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We proposed a fix for the performance degradation observed when running\ndistributed multi-node benchmarks in the UTxO HD feature branch. While this\nfixed the problems observed when running local benchmarks, it broke the\n",(0,r.kt)("inlineCode",{parentName:"li"},"ThreadNet")," tests due to concurrency issues. Therefore, we think it is wise to\nstart redesigning the UTxO HD mempool integration."),(0,r.kt)("li",{parentName:"ul"},"We did several rounds of code review on the alternative implementation of\ndiff-sequences required by the UTxO HD feature based on the idea of\nanti-diffs. This alternative implementation is close to being merged, and the\nnext step is to integrate this to the UTxO HD branch, so that we can run\nad-hoc replaying and syncing from scratch benchmarks and compare these with\nthe baseline. The micro-benchmarks we elaborated for the alternative\nimplementation show speedups of up to 4x, so we are optimistic about the\nperformance of replaying and syncing from scratch benchmarks, however it is\nimportant to notice that ",(0,r.kt)("em",{parentName:"li"},"due to the nature of UTxO HD")," we will still be\nslower than the baseline."),(0,r.kt)("li",{parentName:"ul"},"The final draft of the Genesis implementation specification is ready for\nreview."),(0,r.kt)("li",{parentName:"ul"},"We implemented a prototype for the happy path of Genesis' ChainSync Jumping\n(CSJ). The prototype is slower than the baseline, however it is not the latest\nversion of the prototype and the jump interval is very small."),(0,r.kt)("li",{parentName:"ul"},"Work on integrating Conway has ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3971#issuecomment-1252524031"},"stopped")," since\npriorities have changed."),(0,r.kt)("li",{parentName:"ul"},"We started work on benchmarking epoch-boundaries and epoch overhead\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4014"},"pr-4014"),". To this end, we made use of a modified version of our\n",(0,r.kt)("inlineCode",{parentName:"li"},"db-analyser")," tool. We ran the new benchmarking setup using the Cardano\nmainnet chain, and we can see that block tick and application take\nsubstantially longer at epoch boundaries, although there are a couple of slots\nduring an epoch in which these computations take more than normal. We notified\nthe ledger team about these findings. We will use this modified version of\n",(0,r.kt)("inlineCode",{parentName:"li"},"db-analyser")," to investigate the epoch overhead.")),(0,r.kt)("h1",{id:"workstreams"},"Workstreams"),(0,r.kt)("h2",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Spent quite some time investigating the root cause of the degradation in\nperformance observed in the benchmarks. We run the ",(0,r.kt)("inlineCode",{parentName:"p"},"make forge-stress"),"\nbenchmarks locally in order to debug this behavior."),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Transaction batching doesn't make a notable difference in the outcome\n(considering we are using the in-memory backend).")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The mempool batching implementation required asynchronous transaction\nvalidation which is a violation of the ",(0,r.kt)("inlineCode",{parentName:"p"},"LocalTxSubmission")," protocol\ncontract and therefore if we continued on that route, the impact would\nhave been quite big.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The STM logic we implemented by using a ",(0,r.kt)("inlineCode",{parentName:"p"},"TMVar")," for the mempool internal\nstate was buggy and under certain circumstances it seemed to lock.\nReverting the mempool internal state to be stored in a ",(0,r.kt)("inlineCode",{parentName:"p"},"TVar")," seems to\nsolve this problem.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The results we get after this change look almost identical to the ones\nfrom the baseline.")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3997"},"The anti-diff prototype (PR\n#3997)")," has\nbeen reviewed and is close to being merged."),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"A follow-up issue (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4010"},"issue\n#4010"),")\nto integrate the anti-diff prototype in the various ",(0,r.kt)("inlineCode",{parentName:"li"},"consensus"),' packages\nwas created. A first version of the integration exists, and all tests\npass. A next step is to get some indication of the "real" performance gain\nby profiling ',(0,r.kt)("inlineCode",{parentName:"li"},"db-analyser")," (or ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node"),").")))),(0,r.kt)("h2",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Final draft of the Genesis implementation specification, now up for review.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Local benchmark setup for parameter tuning via the happy path ChainSync\nJumping (CSJ) prototype (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3987"},"Issue 3987"),")."),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Context: Our Genesis design requires us to check in with a large (~20)\nnumber of servers periodically while syncing. These servers are offered\njump requests via the ChainSync protocol (hence the name), which they can\naccept or decline. If a peer declines, the Genesis rule allows us to\ndetermine whether a node actually has a better chain.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'The "happy path" is when no peer declines a jump. We want this to have\nclose to no overhead compared to status quo, i.e. syncing without Genesis.')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented a prototype for this happy path, and are now starting to\ntest in various configurations (number of peers, latency, bandwidth) to\ntune the performance of ChainSync jumping, i.e. how complicated our logic\nof choosing when to jump needs to be."),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Example:"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Simulated connection: 50 MBit/s, 50ms latency")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Jump interval: 3000 slots (on the low end, could be increased to up to\n",(0,r.kt)("inlineCode",{parentName:"p"},"3k/f"),")")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Red: baseline (1.35.3), one peer in topology file")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Blue: Preliminary version of our prototype, with 10 peers."),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("img",{src:n(88213).Z,width:"654",height:"459"})),(0,r.kt)("p",{parentName:"li"},"It is slower by about ~30%, but it is not the latest version of the\nprototype, and the jump interval is very small, making CSJ more of a\nbottleneck."))))),(0,r.kt)("h2",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Fix flakiness in ChainDB QSM tests (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3990"},"PR 3990"),").")))}m.isMDXComponent=!0},88213:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/happy-path-csj-prototype-prelim-5bbe2e2a20a2740e6238a7c73e618168.svg"}}]); \ No newline at end of file diff --git a/assets/js/017cd6b7.6c855c6e.js b/assets/js/017cd6b7.6c855c6e.js new file mode 100644 index 00000000000..88dcd7dae0c --- /dev/null +++ b/assets/js/017cd6b7.6c855c6e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3649],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-11-18-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-11-18-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-18-hydra.md",source:"@site/blog/2022-11-18-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-11-18T00:00:00.000Z",formattedDate:"November 18, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.085,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-18-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-23-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-18-mithril"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},u="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version ",(0,n.kt)("inlineCode",{parentName:"p"},"0.8.1"),", which includes several fixes and a user-wished extension of the persistence introduced by ",(0,n.kt)("inlineCode",{parentName:"p"},"0.8.0")," of replaying server outputs to make clients like the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-tui")," be aware of the latest ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-poc")," to ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra"},(0,n.kt)("inlineCode",{parentName:"a"},"hydra")),"!"),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implemented replaying of server outputs to address ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Released version 0.8.1 containing this and other fixes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.8.1"},"Release notes")),(0,n.kt)("li",{parentName:"ul"},"Worked on the bounded tx validity as one of the on-chain script fixes, but couldn","\u2019","t finish it just yet ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/615"},"#615")),(0,n.kt)("li",{parentName:"ul"},"Collaborated with the education team on a Hydra tutorial."),(0,n.kt)("li",{parentName:"ul"},"Discovered and discussed issues with the ","\u201c","seen ledger","\u201d","."),(0,n.kt)("li",{parentName:"ul"},"Renamed the Hydra repository ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-poc")," -> ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Create and discuss an ADR about handling tx validity correctly."),(0,n.kt)("li",{parentName:"ul"},"Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: ",(0,n.kt)("strong",{parentName:"li"},'"Developing Hydra" on Day 2, Nov 21st, 13:50 CET')),(0,n.kt)("li",{parentName:"ul"},"Have a team workshop / hackathon after the summit:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Retrospective"),(0,n.kt)("li",{parentName:"ul"},"Roadmapping session"),(0,n.kt)("li",{parentName:"ul"},"Hack on something complex or useful")))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/019bb279.7e5077df.js b/assets/js/019bb279.7e5077df.js new file mode 100644 index 00000000000..9429ed11d81 --- /dev/null +++ b/assets/js/019bb279.7e5077df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83167],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>N});var n=a(67294);function l(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function r(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e=0||(l[a]=t[a]);return l}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(l[a]=t[a])}return l}var m=n.createContext({}),o=function(t){var e=n.useContext(m),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},u=function(t){var e=o(t.components);return n.createElement(m.Provider,{value:e},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,l=t.mdxType,r=t.originalType,m=t.parentName,u=p(t,["components","mdxType","originalType","parentName"]),s=o(a),k=l,N=s["".concat(m,".").concat(k)]||s[k]||d[k]||r;return a?n.createElement(N,i(i({ref:e},u),{},{components:a})):n.createElement(N,i({ref:e},u))}));function N(t,e){var a=arguments,l=e&&e.mdxType;if("string"==typeof t||l){var r=a.length,i=new Array(r);i[0]=k;var p={};for(var m in e)hasOwnProperty.call(e,m)&&(p[m]=e[m]);p.originalType=t,p[s]="string"==typeof t?t:l,i[1]=p;for(var o=2;o{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>p,toc:()=>o});var n=a(87462),l=(a(67294),a(3905));const r={title:"Consensus Team Update",slug:"2022-08-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2022-08-31-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-08-31-consensus.md",source:"@site/blog/2022-08-31-consensus.md",title:"Consensus Team Update",description:"Executive summary",date:"2022-08-31T00:00:00.000Z",formattedDate:"August 31, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:8.925,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-08-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-01-ledger"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-08-12-network"}},m={authorsImageUrls:[void 0]},o=[{value:"Executive summary",id:"executive-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Conway",id:"conway",level:3},{value:"UTxO HD",id:"utxo-hd",level:3},{value:"Only small rollbacks",id:"only-small-rollbacks",level:4},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3}],u={toc:o},s="wrapper";function d(t){let{components:e,...a}=t;return(0,l.kt)(s,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"executive-summary"},"Executive summary"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"We did most of the heavy lifting required to integrate the Conway era."),(0,l.kt)("li",{parentName:"ul"},"We have property tests for the UTxO HD backing store API implementations. A\npossible bug was identified. Work is ongoing to make sure the property-tests\ncover all the relevant cases."),(0,l.kt)("li",{parentName:"ul"},'We implemented and benchmarked the "anti-diff" prototype to speed up the UTxO\nHD functionality. Results show a rough speedup of ',(0,l.kt)("inlineCode",{parentName:"li"},"4x")," to ",(0,l.kt)("inlineCode",{parentName:"li"},"5.5x")," across\nseveral scenarios. Note that: ",(0,l.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/tasty-bench-0.3.2/docs/Test-Tasty-Bench.html"},'"Data reported by ',(0,l.kt)("inlineCode",{parentName:"a"},"tasty-bench"),' is only of\nindicative and comparative significance."'),'.\nWe are investigating additional performance improvements. The "anti-diff"\nprototype and benchmarks are still pending code review.'),(0,l.kt)("li",{parentName:"ul"},"We elaborated a draft specification for the Genesis implementation and\n",(0,l.kt)("inlineCode",{parentName:"li"},"ChainSync")," jumping optimization.")),(0,l.kt)("h2",{id:"workstreams"},"Workstreams"),(0,l.kt)("h3",{id:"conway"},"Conway"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Integration PR of the minimal Conway era (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3962"},"Issue #3963"),", ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3971"},"PR\n#3971"),")."),(0,l.kt)("li",{parentName:"ul"},"Discussions with Ledger revealed possible sources of confusion about which\ndata should be changed in the Conway era. As a result, a new technical debt\nissue was raised, which does not block the integration of the Conway era\n(",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3976"},"Issue #3976"),").")),(0,l.kt)("h3",{id:"utxo-hd"},"UTxO HD"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3954"},"Issue #3954"),", ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/tree/jdral/3954-backingstore-property-tests"},"branch"),": The functionality of a\nbacking store, which is the interface to the on-disk part of ledger state in\nUTxO-HD, is tested at a high level through the ",(0,l.kt)("inlineCode",{parentName:"p"},"OnDisk")," tests. However, some\nfunctionalities remain untested, e.g., reads of ranges of keys. As such, we\nhave implemented ",(0,l.kt)("inlineCode",{parentName:"p"},"quickcheck-state-machine")," tests that exercise backing stores\ndirectly. The tests are reusable for different backing store implementations\nbecause the tests are implementation-agnostic: Any backing store that conforms\nto the backing store interface can be plugged into the tests. Work is still\nongoing to label/monitor the tests, such that we can verify that interesting\ncases are being tested. Furthermore, a possible bug has been identified in the\nLMDB backing store with respect to range reads, though the bug has not been\nresolved yet.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3946"},"Issue #3946"),", ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/tree/jdral/CAD-4199-prototype-anti-diffs"},"branch"),", ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3882"},"PR #3882"),': The\n"anti-diff" prototype proposes an alternative approach to keeping track of\nsequences (more specifically, ',(0,l.kt)("inlineCode",{parentName:"p"},"FingerTree"),'s) of diffs. These diff sequences\nare a component of the in-memory parts of the ledger state in UTxO-HD. Since\nthe consensus code often requires the cumulative diff of a sequence of diffs,\nthe current implementation "caches" cumulative diffs of each subtree in the\ndiff sequence. This caching allows relatively fast reconstruction of the total\ncumulative diff, but this caching proved to incur a non-negligible cost: when\nwe manipulate diff sequences through splits and appends, we force re-computing\na logarithmic number of caches. This is problematic, since we often split and\nappend in consensus: we split when we flush diffs to a backing store or when\nwe roll back blocks, and we append when pushing blocks. The new approach\nshould reduce the overhead of this caching.'),(0,l.kt)("p",{parentName:"li"},'We implemented micro-benchmarks for the "anti-diff" prototype: we\nfirst generate a sequence of commands (',(0,l.kt)("inlineCode",{parentName:"p"},"Forward"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"Push"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"Flush"),", or\n",(0,l.kt)("inlineCode",{parentName:"p"},"Rollback"),") through a simulation, after which we measure the performance of\napplying the commands to a diff sequence. In this context, ",(0,l.kt)("inlineCode",{parentName:"p"},"Forward")," means\nforwarding of values through a diff, whereas ",(0,l.kt)("inlineCode",{parentName:"p"},"Rollback"),' means switching to\na different fork by rolling back diffs/blocks and pushing new ones.\nMoreover, we compare the performance for the two implementations: the\n"legacy" approach, and the anti-diff approach.'),(0,l.kt)("p",{parentName:"li"},"Some preliminary results were positive, but we needed to revisit the\nbenchmark's configuration to obtain more definitive results. After a\ndiscussion with @dcoutts and the consensus team about this configuration\n(e.g., number of commands generated, choice of the security parameter ",(0,l.kt)("inlineCode",{parentName:"p"},"k"),"),\nthe benchmarks should now be closer to the realistic setting. The following\nconfiguration specifies the default configuration that is used in the\nbenchmarking code:"),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Number of commands generated: ",(0,l.kt)("inlineCode",{parentName:"li"},"10_000")),(0,l.kt)("li",{parentName:"ul"},"Security parameter ",(0,l.kt)("inlineCode",{parentName:"li"},"k"),": ",(0,l.kt)("inlineCode",{parentName:"li"},"2160")),(0,l.kt)("li",{parentName:"ul"},"Number of initial backing values: ",(0,l.kt)("inlineCode",{parentName:"li"},"100")),(0,l.kt)("li",{parentName:"ul"},"Number of key-value pairs deleted by a push: ",(0,l.kt)("inlineCode",{parentName:"li"},"50")),(0,l.kt)("li",{parentName:"ul"},"Number of key-value pairs inserted by a push: ",(0,l.kt)("inlineCode",{parentName:"li"},"50")),(0,l.kt)("li",{parentName:"ul"},"Number of key-value pairs forwarded by a forward: ",(0,l.kt)("inlineCode",{parentName:"li"},"50")),(0,l.kt)("li",{parentName:"ul"},"Probability of a large (in the range ",(0,l.kt)("inlineCode",{parentName:"li"},"[1000, 2000]"),") rollback: ",(0,l.kt)("inlineCode",{parentName:"li"},"0.05")),(0,l.kt)("li",{parentName:"ul"},"Probability of a small (in the range ",(0,l.kt)("inlineCode",{parentName:"li"},"[1, 10]"),") rollback: ",(0,l.kt)("inlineCode",{parentName:"li"},"0.95")),(0,l.kt)("li",{parentName:"ul"},"Order of commands:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"An equal number of forward and pushes."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"1")," flush every ",(0,l.kt)("inlineCode",{parentName:"li"},"10")," pushes."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"1")," rollback every ",(0,l.kt)("inlineCode",{parentName:"li"},"100")," pushes")))),(0,l.kt)("p",{parentName:"li"},"Moreover, we run four benchmark scenarios:"),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Default configuration"),(0,l.kt)("li",{parentName:"ul"},"Without rollbacks"),(0,l.kt)("li",{parentName:"ul"},"With only small rollbacks"),(0,l.kt)("li",{parentName:"ul"},"Without rollbacks, larger flushes (",(0,l.kt)("inlineCode",{parentName:"li"},"1")," flush every ",(0,l.kt)("inlineCode",{parentName:"li"},"100")," pushes)")),(0,l.kt)("h3",{parentName:"li",id:"how-to-read-results"},"How to read results"),(0,l.kt)("p",{parentName:"li"},"Note: this section uses documentation from the\n",(0,l.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/tasty-bench"},"tasty-bench")," package to\nexplain how to read the results of running our benchmarks."),(0,l.kt)("p",{parentName:"li"},"Running a benchmark scenario gives us the following (curated) output:"),(0,l.kt)("pre",{parentName:"li"},(0,l.kt)("code",{parentName:"pre",className:"language-text"},"...\nAntiDiff: OK (18.27s)\n 2.527 s \xb1 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x\nLegacyDiff: OK (32.73s)\n 10.829 s \xb1 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory\n...\n")),(0,l.kt)("p",{parentName:"li"},"The output says that the first benchmark, which exercises the anti-diff\nprototype, was repeatedly executed for ",(0,l.kt)("inlineCode",{parentName:"p"},"18.27")," seconds (wall-clock time),\nits predicted mean CPU time was ",(0,l.kt)("inlineCode",{parentName:"p"},"2.527")," seconds and means of individual\nsamples do not often diverge from it further than ",(0,l.kt)("inlineCode",{parentName:"p"},"\xb1 47")," milliseconds\n(double standard deviation). We also configure the RTS to collect GC\nstatistics, which enables ",(0,l.kt)("inlineCode",{parentName:"p"},"tasty-bench")," to estimate and report memory usage.\nThis data is reported as per ",(0,l.kt)("inlineCode",{parentName:"p"},"RTSStats")," fields: ",(0,l.kt)("inlineCode",{parentName:"p"},"allocated_bytes"),",\n",(0,l.kt)("inlineCode",{parentName:"p"},"copied_bytes")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"max_mem_in_use_bytes"),". So, the output of the first\nbenchmark says that a total of ",(0,l.kt)("inlineCode",{parentName:"p"},"2.1 GB")," of memory was allocated, that a\ntotal of ",(0,l.kt)("inlineCode",{parentName:"p"},"544 MB")," of memory were copied, and that the peak memory in usage\nwas ",(0,l.kt)("inlineCode",{parentName:"p"},"2.2 GB"),". We read the output for the second benchmark in the same way."),(0,l.kt)("p",{parentName:"li"},"Furthermore, the benchmark compares the mean CPU times for\nboth the anti-diff and legacy approaches: In this case, the mean CPU time\nfor the anti-diff approach is ",(0,l.kt)("inlineCode",{parentName:"p"},"~0.23x")," the mean CPU time for the legacy\napproach. Conversely, the mean CPU time for the legacy approach is\n",(0,l.kt)("inlineCode",{parentName:"p"},"1 / 0.23 ~= 4.35x")," the mean CPU time for the anti-diff approach. We will\ncall ",(0,l.kt)("inlineCode",{parentName:"p"},"0.23x")," the ",(0,l.kt)("em",{parentName:"p"},"improvement factor"),". We will call ",(0,l.kt)("inlineCode",{parentName:"p"},"4.35x")," the ",(0,l.kt)("em",{parentName:"p"},"speedup"),"."),(0,l.kt)("p",{parentName:"li"},"Note that these improvement factors (and reported results) are subject to\nnoise, randomness, the specific configuration parameters, and the whims\nof statistics. Data reported by ",(0,l.kt)("inlineCode",{parentName:"p"},"tasty-bench")," is only of indicative and\ncomparative significance."),(0,l.kt)("h3",{parentName:"li",id:"results"},"Results"),(0,l.kt)("p",{parentName:"li"},"For each of the 4 scenarios, we list the results of running the anti-diff and\nlegacy approaches 5 times. We run the benchmarks 5 times to get an indication\nof whether the results are similar across multiple runs. Furthermore, we\ncalculate the accompanying ",(0,l.kt)("em",{parentName:"p"},"ranges")," (if applicable) of improvement factors and\nspeedups."),(0,l.kt)("p",{parentName:"li"},"Note also the decrease in total bytes allocated and total bytes copied for\nthe anti-diff approach compared to the legacy approach."),(0,l.kt)("h4",{parentName:"li",id:"default-configuration"},"Default configuration"),(0,l.kt)("table",{parentName:"li"},(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.533 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"4.7 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"557 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.792 s"),(0,l.kt)("td",{parentName:"tr",align:null},"162 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.508 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"245 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"515 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.850 s"),(0,l.kt)("td",{parentName:"tr",align:null},"30 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.9 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.562 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"5.0 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"552 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.993 s"),(0,l.kt)("td",{parentName:"tr",align:null},"149 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.9 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.168 s (0.22x)"),(0,l.kt)("td",{parentName:"tr",align:null},"5.3 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"434 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"9.976 s"),(0,l.kt)("td",{parentName:"tr",align:null},"39 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.527 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"47 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"544 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.829 s"),(0,l.kt)("td",{parentName:"tr",align:null},"148 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")))),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"li"},"[0.22, 0.23]")),(0,l.kt)("li",{parentName:"ul"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"li"},"[1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]"))),(0,l.kt)("h4",{parentName:"li",id:"no-rollbacks"},"No rollbacks"),(0,l.kt)("table",{parentName:"li"},(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.638 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"36 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.656 s"),(0,l.kt)("td",{parentName:"tr",align:null},"207 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.638 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"75 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.654 s"),(0,l.kt)("td",{parentName:"tr",align:null},"322 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.663 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"74 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.799 s"),(0,l.kt)("td",{parentName:"tr",align:null},"216 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.645 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"51 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.732 s"),(0,l.kt)("td",{parentName:"tr",align:null},"261 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.639 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"19 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.653 s"),(0,l.kt)("td",{parentName:"tr",align:null},"234 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")))),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"li"},"0.19")),(0,l.kt)("li",{parentName:"ul"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"li"},"1 / 0.19 ~= 5.25"))))),(0,l.kt)("h4",{id:"only-small-rollbacks"},"Only small rollbacks"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.833 s (0.18x)"),(0,l.kt)("td",{parentName:"tr",align:null},"36 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"185 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.362 s"),(0,l.kt)("td",{parentName:"tr",align:null},"867 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.6 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.696 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"30 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"185 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.822 s"),(0,l.kt)("td",{parentName:"tr",align:null},"106 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.702 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"44 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"186 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.906 s"),(0,l.kt)("td",{parentName:"tr",align:null},"147 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.701 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"47 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"185 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.949 s"),(0,l.kt)("td",{parentName:"tr",align:null},"197 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.677 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"55 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"186 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.856 s"),(0,l.kt)("td",{parentName:"tr",align:null},"177 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")))),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"p"},"[0.18, 0.19]"))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"p"},"[1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]")),(0,l.kt)("h4",{parentName:"li",id:"no-rollbacks-larger-flushes-every-100-pushes"},"No rollbacks, larger flushes (every 100 pushes)"),(0,l.kt)("table",{parentName:"li"},(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.643 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"21 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.591 s"),(0,l.kt)("td",{parentName:"tr",align:null},"351 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.616 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"47 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.520 s"),(0,l.kt)("td",{parentName:"tr",align:null},"232 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.640 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"34 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.540 s"),(0,l.kt)("td",{parentName:"tr",align:null},"150 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.635 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"76 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.589 s"),(0,l.kt)("td",{parentName:"tr",align:null},"131 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.628 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"19 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.490 s"),(0,l.kt)("td",{parentName:"tr",align:null},"5.9 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB"))))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"p"},"0.25"))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"p"},"1 / 0.25 ~= 4")))),(0,l.kt)("h3",{id:"genesis"},"Genesis"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"We elaborated a draft of the specification of the Genesis implementation and\nthe ChainSync Jumping optimization. In particular, this includes a proof\nsketch that the latter preserves liveness and safety in all cases (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3964"},"Issue\n3964"),").",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@nfrisby's main realization during this sprint was that he had been\nfocusing so far on the case where the selected chain is an extension of\nthe intersection of our peers' ChainSync candidates."),(0,l.kt)("li",{parentName:"ul"},'This is the main case, ie an "absorbing" state, but it\'s not the only\ncase.'),(0,l.kt)("li",{parentName:"ul"},"The new proof sketch begins by case splitting on that predicate, and\nthat made the sketch quite a bit easier to follow."))),(0,l.kt)("li",{parentName:"ul"},'We continued working on the "happy path" ',(0,l.kt)("inlineCode",{parentName:"li"},"ChainSync")," Jumping prototype (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3960"},"Issue\n3960"),").")),(0,l.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"We started working on the issues required to re-enable nightly CI runs..\nNightly CI runs have far more lax time constraints, which gives the option to\nrun significantly more property tests than in our regular CI. To this end, we\nmerged a PR to easily adapt the number of tests globally (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3947"},"PR\n#3947"),").")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/01a85c17.545379d8.js b/assets/js/01a85c17.545379d8.js new file mode 100644 index 00000000000..3548879dfe3 --- /dev/null +++ b/assets/js/01a85c17.545379d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64013],{39058:(e,t,a)=>{a.d(t,{Z:()=>p});var l=a(67294),r=a(86010),n=a(93285),s=a(87524),i=a(39960),c=a(95999);const m={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};function o(e){let{sidebar:t}=e;return l.createElement("aside",{className:"col col--3"},l.createElement("nav",{className:(0,r.Z)(m.sidebar,"thin-scrollbar"),"aria-label":(0,c.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,r.Z)(m.sidebarItemTitle,"margin-bottom--md")},t.title),l.createElement("ul",{className:(0,r.Z)(m.sidebarItemList,"clean-list")},t.items.map((e=>l.createElement("li",{key:e.permalink,className:m.sidebarItem},l.createElement(i.Z,{isNavLink:!0,to:e.permalink,className:m.sidebarItemLink,activeClassName:m.sidebarItemLinkActive},e.title)))))))}var u=a(13102);function d(e){let{sidebar:t}=e;return l.createElement("ul",{className:"menu__list"},t.items.map((e=>l.createElement("li",{key:e.permalink,className:"menu__list-item"},l.createElement(i.Z,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active"},e.title)))))}function g(e){return l.createElement(u.Zo,{component:d,props:e})}function b(e){let{sidebar:t}=e;const a=(0,s.i)();return t?.items.length?"mobile"===a?l.createElement(g,{sidebar:t}):l.createElement(o,{sidebar:t}):null}function p(e){const{sidebar:t,toc:a,children:s,...i}=e,c=t&&t.items.length>0;return l.createElement(n.Z,i,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},l.createElement(b,{sidebar:t}),l.createElement("main",{className:(0,r.Z)("col",{"col--7":c,"col--9 col--offset-1":!c}),itemScope:!0,itemType:"http://schema.org/Blog"},s),a&&l.createElement("div",{className:"col col--2"},a))))}},91223:(e,t,a)=>{a.r(t),a.d(t,{default:()=>p});var l=a(67294),r=a(86010),n=a(95999);const s=()=>(0,n.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var i=a(1944),c=a(35281),m=a(39058),o=a(13008);const u={tag:"tag_Nnez"};function d(e){let{letterEntry:t}=e;return l.createElement("article",null,l.createElement("h2",null,t.letter),l.createElement("ul",{className:"padding--none"},t.tags.map((e=>l.createElement("li",{key:e.permalink,className:u.tag},l.createElement(o.Z,e))))),l.createElement("hr",null))}function g(e){let{tags:t}=e;const a=function(e){const t={};return Object.values(e).forEach((e=>{const a=function(e){return e[0].toUpperCase()}(e.label);t[a]??=[],t[a].push(e)})),Object.entries(t).sort(((e,t)=>{let[a]=e,[l]=t;return a.localeCompare(l)})).map((e=>{let[t,a]=e;return{letter:t,tags:a.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}(t);return l.createElement("section",{className:"margin-vert--lg"},a.map((e=>l.createElement(d,{key:e.letter,letterEntry:e}))))}var b=a(90197);function p(e){let{tags:t,sidebar:a}=e;const n=s();return l.createElement(i.FG,{className:(0,r.Z)(c.k.wrapper.blogPages,c.k.page.blogTagsListPage)},l.createElement(i.d,{title:n}),l.createElement(b.Z,{tag:"blog_tags_list"}),l.createElement(m.Z,{sidebar:a},l.createElement("h1",null,n),l.createElement(g,{tags:t})))}},13008:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(67294),r=a(86010),n=a(39960);const s={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function i(e){let{permalink:t,label:a,count:i}=e;return l.createElement(n.Z,{href:t,className:(0,r.Z)(s.tag,i?s.tagWithCount:s.tagRegular)},a,i&&l.createElement("span",null,i))}}}]); \ No newline at end of file diff --git a/assets/js/0281a492.3b7b7eac.js b/assets/js/0281a492.3b7b7eac.js new file mode 100644 index 00000000000..2cb9f75fcba --- /dev/null +++ b/assets/js/0281a492.3b7b7eac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79503],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function n(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,o=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(a),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||o;return a?r.createElement(h,n(n({ref:t},d),{},{components:a})):r.createElement(h,n({ref:t},d))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=a.length,n=new Array(o);n[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:l,n[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>n,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-06-08-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},n=void 0,i={permalink:"/cardano-updates/2023-06-08-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-sre.md",source:"@site/blog/2023-06-08-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.795,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-06-08-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-08-goedel"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-06-08-system-test"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Bitte",id:"bitte",level:3},{value:"Bitte-cells",id:"bitte-cells",level:3},{value:"Cardano-graphql",id:"cardano-graphql",level:3},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Ci-ops",id:"ci-ops",level:3},{value:"Ci-world",id:"ci-world",level:3},{value:"Cicero",id:"cicero",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3},{value:"Openziti",id:"openziti",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer."),(0,l.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,l.kt)("h3",{id:"bitte"},"Bitte"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Equinix bare metal capability was added to bitte: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte/pull/194"},"bitte-pull-194")),(0,l.kt)("li",{parentName:"ul"},"Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte/pull/201"},"bitte-pull-201"))),(0,l.kt)("h3",{id:"bitte-cells"},"Bitte-cells"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Improvements made for patroni cluster recovery of large databases: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte-cells/compare/main...patroni-flex"},"bitte-cells-branch"))),(0,l.kt)("h3",{id:"cardano-graphql"},"Cardano-graphql"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update cardano-graphql and nixos service: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-graphql/pull/815"},"cardano-graphql-pull-815"))),(0,l.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update cardano-node to use the updated iohk-nix environments: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5241"},"cardano-node-pull-5241"))),(0,l.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update cardano-graphql, adds monitoring improvements and misc bug fixes: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/pull/411"},"cardano-ops-pull-411")),(0,l.kt)("li",{parentName:"ul"},"Work in progress on mixed legacy and p2p topology clusters in cardano-ops: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/master...ops-local"},"cardano-ops-branch"))),(0,l.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Add a declarative cardano-faucet dashboard: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/e7d40d34aff52bbeb309f87939bd0d40f585e60a"},"cardano-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Remove a requirement for root user in Nomad docker images: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/68"},"cardano-world-pull-68")),(0,l.kt)("li",{parentName:"ul"},"Enable explorer in cardano-world for high IOPS metal access: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/69"},"cardano-world-pull-69")),(0,l.kt)("li",{parentName:"ul"},"Migrate explorer cluster to cardano-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/75"},"cardano-world-pull-75")),(0,l.kt)("li",{parentName:"ul"},"Migrate testnet metadata server to cardano-world, cleanup envs: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/77"},"cardano-world-pull-77")),(0,l.kt)("li",{parentName:"ul"},"Add a faucet restore delegation script to cardano-world for non-functioning delegated pools: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/79"},"cardano-world-pull-79")),(0,l.kt)("li",{parentName:"ul"},"Integrate node 8.x into cardano-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/84"},"cardano-world-pull-84")),(0,l.kt)("li",{parentName:"ul"},"Update cardano-world to use iohk-nix for node environments: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/87"},"cardano-world-pull-87")),(0,l.kt)("li",{parentName:"ul"},"Create a stakepool analysis query for cluster pool performance overview: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/64fe3b9d4067c24eef028ac1c561d6f9a7d5a9a8"},"cardano-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Added an iptables fixup script for broken bridged networking nomad jobs: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/02550206e4e34d121135794b6e54084635e55a50"},"cardano-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Improve cardano-world job automation with additional parameterization: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/92"},"cardano-world-pr-92")),(0,l.kt)("li",{parentName:"ul"},"Update preview network experimental config defaults: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/93"},"cardano-world-pr-93"))),(0,l.kt)("h3",{id:"ci-ops"},"Ci-ops"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-ops/pull/108"},"ci-ops-pull-108"))),(0,l.kt)("h3",{id:"ci-world"},"Ci-world"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Resolve ci-world linux buildkite agent cleanup bug: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/commit/3d053b202a6e40fab23db49801de7d6e580fab1f"},"ci-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Integrate new darwin builders into ci-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/pull/22"},"ci-world-pull-22")),(0,l.kt)("li",{parentName:"ul"},"Migrate patroni HA db to it's own namespace in ci-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/pull/24"},"ci-world-pull-24"))),(0,l.kt)("h3",{id:"cicero"},"Cicero"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Implement a cicero webhook backoff with exponential decay plus jitter: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cicero/pull/79"},"cicero-pull-79"))),(0,l.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update iohk-nix to be source of truth for node environments: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/534"},"iohk-nix-pull-534")),(0,l.kt)("li",{parentName:"ul"},"Update preview network experimental config defaults: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/544"},"iohk-nix-pull-544"))),(0,l.kt)("h3",{id:"openziti"},"Openziti"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Add darwin intel and arm support to ziti-edge-tunnel nix modules: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/johnalotoski/openziti-bins/pull/1"},"openziti-bins-pull-1"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/034a14a6.3aafc153.js b/assets/js/034a14a6.3aafc153.js new file mode 100644 index 00000000000..16ad0e0d015 --- /dev/null +++ b/assets/js/034a14a6.3aafc153.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95018],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(n),p=a,f=u["".concat(l,".").concat(p)]||u[p]||m[p]||o;return n?r.createElement(f,i(i({ref:t},d),{},{components:n})):r.createElement(f,i({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-06-28-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-06-28-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-28-performance-and-tracing.md",source:"@site/blog/2023-06-28-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-06-28T00:00:00.000Z",formattedDate:"June 28, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.885,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-06-28-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-28-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-23-goedel"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: The first batch of refactoring and documentation for our ",(0,a.kt)("inlineCode",{parentName:"li"},"tx-generator")," has been merged to ",(0,a.kt)("inlineCode",{parentName:"li"},"master"),"."),(0,a.kt)("li",{parentName:"ul"},"Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"The compiler switch to GHC9 as the default build platform for ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard. "),(0,a.kt)("p",null,"Using the ",(0,a.kt)("inlineCode",{parentName:"p"},"forge-stress")," approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"tx-generator")," is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress."),(0,a.kt)("p",null,"Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/03d856aa.52e2f164.js b/assets/js/03d856aa.52e2f164.js new file mode 100644 index 00000000000..3fc5bae897b --- /dev/null +++ b/assets/js/03d856aa.52e2f164.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6413],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=o.createContext({}),l=function(e){var t=o.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=l(r),d=n,h=c["".concat(s,".").concat(d)]||c[d]||m[d]||a;return r?o.createElement(h,i(i({ref:t},u),{},{components:r})):o.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=d;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[c]="string"==typeof e?e:n,i[1]=p;for(var l=2;l{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>p,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var o=r(87462),n=(r(67294),r(3905)),a=r(80175);const i={title:"Network Team Update",slug:"2022-11-11-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},p=void 0,s={permalink:"/cardano-updates/2022-11-11-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-network.md",source:"@site/blog/2022-11-11-network.md",title:"Network Team Update",description:"High-level summary",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.595,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-11-11-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-11-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-04-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"Detail description",id:"detail-description",level:2},{value:"Performance regression",id:"performance-regression",level:3},{value:"New P2P topology form",id:"new-p2p-topology-form",level:3},{value:"Tracing improvements",id:"tracing-improvements",level:3},{value:"Open Source Improvements",id:"open-source-improvements",level:3}],c={toc:u},m="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"In last sprint we got a performance report of P2P performance testing cluster\n(which consists of 50 nodes). There is a performance regression in the header\nnotification metric. The P2P cluster is constructed with the same\ntopology as the non-p2p reference one this indicates some regression which\nneeds to be further investigated. This poses a risk for releasing P2P."),(0,n.kt)("p",null,"We also continued to work on peer sharing: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"pull #4019"),"."),(0,n.kt)("p",null,"We continued working on dynamic block production which is required for P2P\nrelease for BP nodes: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"pull #3159"),"."),(0,n.kt)("p",null,"We simplified the P2P topology format: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4559"},"issue #4559"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3888"},"pull #3888"),"."),(0,n.kt)("p",null,"We added a new trace point for asynchronous demotions of local peers with\n",(0,n.kt)("inlineCode",{parentName:"p"},"Warning")," severity. This trace is ",(0,n.kt)("strong",{parentName:"p"},"important")," for SPOs."),(0,n.kt)("h2",{id:"detail-description"},"Detail description"),(0,n.kt)("h3",{id:"performance-regression"},"Performance regression"),(0,n.kt)("p",null,"Below we include a graph which shows the performance regression of the P2P code base vs non P2P."),(0,n.kt)("img",{src:a.Z}),(0,n.kt)("p",null,"On the ",(0,n.kt)("inlineCode",{parentName:"p"},"x")," axis is time in seconds which measures the delay from the start of\nthe slot to when a header was received. The ",(0,n.kt)("inlineCode",{parentName:"p"},"y")," axis is the percentile of nodes\nthat received a header. We are currently investigating possible causes of the\nregression. "),(0,n.kt)("h3",{id:"new-p2p-topology-form"},"New P2P topology form"),(0,n.kt)("p",null,"The new topology file format is described in this ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4559"},"issue #4559"),"."),(0,n.kt)("h3",{id:"tracing-improvements"},"Tracing improvements"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We improved a handshake error reporting, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4136"},"pull #4136")),(0,n.kt)("li",{parentName:"ul"},"We added ",(0,n.kt)("inlineCode",{parentName:"li"},"TraceDemoteLocalAsynchronous")," rendered as ",(0,n.kt)("inlineCode",{parentName:"li"},"DemoteLocalAsynchronous"),"\nin ",(0,n.kt)("inlineCode",{parentName:"li"},"json")," format, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4127"},"pull #4127"),". Such demotions should be investigated by the\npool operator. They can indicate a problem in the deployed system, but also\nthey could indicate a remote problem in arranged connections with other SPOs.")),(0,n.kt)("h3",{id:"open-source-improvements"},"Open Source Improvements"),(0,n.kt)("p",null,"We improved documentation of ",(0,n.kt)("inlineCode",{parentName:"p"},"io-sim")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols")," for open-source\ncontributors and/or maintenance tasks: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/22"},"pull #22"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/45"},"pull #45"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/48"},"pull #48"),". "))}d.isMDXComponent=!0},80175:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/2022-11-11-noticed-headers-55bb0b4d41e8f0cff0066e1bec91bdd2.png"}}]); \ No newline at end of file diff --git a/assets/js/042169f6.41e4831f.js b/assets/js/042169f6.41e4831f.js new file mode 100644 index 00000000000..a96d7721dc9 --- /dev/null +++ b/assets/js/042169f6.41e4831f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27449],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),c=n,d=h["".concat(s,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-12-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-01-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-mithril.md",source:"@site/blog/2022-12-01-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2022-12-01T00:00:00.000Z",formattedDate:"December 1, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.04,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2022-12-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"DB sync Team Update",permalink:"/cardano-updates/2022-12-01-db-sync"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-12-01-system-test"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes. "),(0,n.kt)("p",null,"Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implemented custom Mithril SPOs on testing/pre-release networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/563"},"#563")),(0,n.kt)("li",{parentName:"ul"},"Deprecated Signer Declarative Pool Id registration mode ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/585"},"#585")),(0,n.kt)("li",{parentName:"ul"},"Completed the second stage of the store automatic migration process ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/600"},"#600")),(0,n.kt)("li",{parentName:"ul"},"Completed the deployment pipelines to crates.io registry ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/588"},"#588")),(0,n.kt)("li",{parentName:"ul"},"Completed automatic generation of nodes/libraries versions manifest in releases notes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/599"},"#599")),(0,n.kt)("li",{parentName:"ul"},"Completed CI/CD handling of PR from forks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/597"},"#597")),(0,n.kt)("li",{parentName:"ul"},"Worked on the CIP design for Mithril piggybacked on the Cardano network layer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/586"},"#586")),(0,n.kt)("li",{parentName:"ul"},"Worked on signing the artifacts released in the distributions by the CI/CD ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/587"},"#587")),(0,n.kt)("li",{parentName:"ul"},"Worked on multi-platforms end to end test ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/601"},"#601")),(0,n.kt)("li",{parentName:"ul"},"Worked on the refactorizaton of the aggregator multi-signer engine ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/398"},"#398"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0431617f.5c919503.js b/assets/js/0431617f.5c919503.js new file mode 100644 index 00000000000..299dc7a0cea --- /dev/null +++ b/assets/js/0431617f.5c919503.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68153],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},m=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),s=c(r),d=n,f=s["".concat(p,".").concat(d)]||s[d]||u[d]||o;return r?a.createElement(f,l(l({ref:t},m),{},{components:r})):a.createElement(f,l({ref:t},m))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-04-28-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-04-28-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-goedel.md",source:"@site/blog/2023-04-28-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-04-28T00:00:00.000Z",formattedDate:"April 28, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.375,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-04-28-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-04-28-crypto"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-04-28-network"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],m={toc:c},s="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The team is working on porting an existing formalisation of Ouroboros\nPraos to a newer foundation."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team worked on documentation.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team worked on an application layer for the Praos formalisation.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/04326247.8876239e.js b/assets/js/04326247.8876239e.js new file mode 100644 index 00000000000..6a0af04420a --- /dev/null +++ b/assets/js/04326247.8876239e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25759],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,p=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),d=u(a),m=r,s=d["".concat(p,".").concat(m)]||d[m]||h[m]||o;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[d]="string"==typeof t?t:r,l[1]=i;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-01-25-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-01-25-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-25-node-cli-api.md",source:"@site/blog/2023-01-25-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-01-25T00:00:00.000Z",formattedDate:"January 25, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.585,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-01-25-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-25-consensus"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-20-crypto"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function h(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-01-25---2023-02-07"},"2023-01-25 - 2023-02-07"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli query stake-snapshot")," command. "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4853"},"Fix how changed files are selected in stylish-haskell CI check")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Copyright updates")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4848"},"Remove hlint from nix required CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4838"},"Remove reconfigure-hlint.sh script")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4837"},"Fix hlint warnings")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4833"},"Implement ADR-2: Restructure modules for generators")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4803"},"Stylish Haskell in CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4802"},"Revert skip doc in ci")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4800"},"Skip CI on doc only changes")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4792"},"Skip CI if only changes are documentation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4776"},"Build all of cardano-node in CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4766"},"Check cabal files in CI"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4785"},"Straight line error handling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4787"},"New NodeToClientVersionOf typeclass")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4832"},"Remove NoImplicitPrelude from cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4809"},"Add ReaderT of NodeToClientVersion to LocalStateQueryExpr")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4808"},"Use hoistMaybe")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4788"},"Better error message for query utxo without oops"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4805"},"New query stake-snapshot integration test")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4671"},"Make leadership-schedule test less flaky"))),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/046dd16d.729d4d40.js b/assets/js/046dd16d.729d4d40.js new file mode 100644 index 00000000000..91629069803 --- /dev/null +++ b/assets/js/046dd16d.729d4d40.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49237],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=o.createContext({}),l=function(e){var t=o.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=l(e.components);return o.createElement(p.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(r),h=n,m=u["".concat(p,".").concat(h)]||u[h]||c[h]||a;return r?o.createElement(m,i(i({ref:t},d),{},{components:r})):o.createElement(m,i({ref:t},d))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=h;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[u]="string"==typeof e?e:n,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var o=r(87462),n=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-09-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-09-15-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-network.md",source:"@site/blog/2023-09-15-network.md",title:"Network Team Update",description:"High-level overview of sprint 44",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.41,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-09-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-15-ledger"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-15-sre"}},p={authorsImageUrls:[void 0]},l=[{value:"High-level overview of sprint 44",id:"high-level-overview-of-sprint-44",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"Cardano-Node-8.4.0 Release",id:"cardano-node-840-release",level:3},{value:"Towards Typed Protocols 0.2.0.0",id:"towards-typed-protocols-0200",level:3},{value:"Tech Debt",id:"tech-debt",level:3},{value:"P2P adoption",id:"p2p-adoption",level:3},{value:"Open Source",id:"open-source",level:3}],d={toc:l},u="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,o.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-44"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+44%22"},"sprint 44")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"In this sprint, we focused on developing bootstrap peers."),(0,n.kt)("p",null,"Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we\nidentified a possible improvement to bootstrap peers. A more detailed\ndescription is available ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4675"},"here"),"."),(0,n.kt)("h3",{id:"cardano-node-840-release"},"Cardano-Node-8.4.0 Release"),(0,n.kt)("p",null,"We also were responsible for the ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node-8.4.0-pre")," release. A final\nintegration ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5467"},"PR")," is currently being merged. We published\nnew versions of ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-api")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-cli"),"."),(0,n.kt)("h3",{id:"towards-typed-protocols-0200"},"Towards Typed Protocols 0.2.0.0"),(0,n.kt)("p",null,"We also updated the future ",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0")," and its integration with\n",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node"),". This is towards our goal which we planned for the next\nquarter. The identified tasks are to fix breaking tests, and then measure and\naddress possible performance regressions."),(0,n.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,n.kt)("p",null,"Mark Tullsen (Galois) submitted two more PRs: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4663"},"ouroboros-network-#4663"),",\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4664"},"ouroboros-network-#4664"),". We provided feedback on their other pull requests: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661")," and\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4660"},"ouroboros-network-#4660"),"."),(0,n.kt)("h3",{id:"p2p-adoption"},"P2P adoption"),(0,n.kt)("p",null,"In the last two weeks, there was a regression in P2P adoption concerning\nthe number of SPOs or stakes, although the number of overall P2P relays has\nincreased. Karl Knutsson (",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"Cardano Foundation"),") is investigating\nthis issue.\n",(0,n.kt)("img",{alt:"P2P relays",src:r(70480).Z,width:"2014",height:"1586"})),(0,n.kt)("p",null,"The following graphs show several different versions of relays running on the mainnet. The\ngreen line ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionV10.True")," denotes P2P relays, which slowly\nincrease over time. The ",(0,n.kt)("inlineCode",{parentName:"p"},"V9")," and earlier versions of the ",(0,n.kt)("inlineCode",{parentName:"p"},"node-to-node"),"\nthe protocol indicates nodes version ",(0,n.kt)("inlineCode",{parentName:"p"},"1.35.x")," or earlier.\n",(0,n.kt)("img",{alt:"node versions",src:r(20669).Z,width:"2016",height:"1576"})),(0,n.kt)("p",null,"Data has been kindly provided by ",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"Cardano Foundation")," and their mainnet\nmonitoring infrastructure."),(0,n.kt)("h3",{id:"open-source"},"Open Source"),(0,n.kt)("p",null,"We are in the process of upstreaming our ffi to Windows Named Pipes API to the ",(0,n.kt)("inlineCode",{parentName:"p"},"Win32")," package, see ","[win32-220]","."))}c.isMDXComponent=!0},70480:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/2023-09-14-p2p-relays-1b3da3da7ec3915f63ca8668bd38aff9.png"},20669:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/2023-09-14-relay-versions-a689a96e93e12ee1c78dfe14229f0ea9.png"}}]); \ No newline at end of file diff --git a/assets/js/04c3317f.e2f79174.js b/assets/js/04c3317f.e2f79174.js new file mode 100644 index 00000000000..520c8158443 --- /dev/null +++ b/assets/js/04c3317f.e2f79174.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83050],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),m=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=m(e.components);return a.createElement(i.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,i=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=m(r),c=n,h=u["".concat(i,".").concat(c)]||u[c]||d[c]||s;return r?a.createElement(h,o(o({ref:t},p),{},{components:r})):a.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,o=new Array(s);o[0]=c;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var m=2;m{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>m});var a=r(87462),n=(r(67294),r(3905));const s={title:"System Test Team Update",slug:"2023-03-27-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-27-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-27-system-test.md",source:"@site/blog/2023-03-27-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2023-03-27T00:00:00.000Z",formattedDate:"March 27, 2023",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.785,hasTruncateMarker:!1,authors:[{name:"Martin Kourim",title:"System Test Engineer",url:"https://github.com/mkoura",imageURL:"https://github.com/mkoura.png",key:"mkoura"}],frontMatter:{title:"System Test Team Update",slug:"2023-03-27-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-31-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-24-hydra"}},i={authorsImageUrls:[void 0]},m=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"Node:",id:"node",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],p={toc:m},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the ",(0,n.kt)("em",{parentName:"p"},"1.35.5")," and ",(0,n.kt)("em",{parentName:"p"},"1.35.6")," releases (and their predecessing release candidates) and ran tests on branch with the ",(0,n.kt)("em",{parentName:"p"},"UTxO-HD")," functionality."),(0,n.kt)("h2",{id:"workstreams"},"Workstreams"),(0,n.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"improvements in searching for unexpected error messages in log files during test run"),(0,n.kt)("li",{parentName:"ul"},"added support for UTxO-HD testing"),(0,n.kt)("li",{parentName:"ul"},"added support for the new P2P topology format"),(0,n.kt)("li",{parentName:"ul"},"added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)"),(0,n.kt)("li",{parentName:"ul"},"added preliminary support for the Conway era"),(0,n.kt)("li",{parentName:"ul"},"added support for running tests on the ",(0,n.kt)("em",{parentName:"li"},"Preview")," testnet")),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node-tests/pulls?q=is%3Apr+is%3Aclosed+updated%3A2023-01-13..2023-03-26"},"Full list of closed PRs")),(0,n.kt)("h3",{id:"node"},"Node:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"ran tests on node branch with the UTxO-HD functionality"),(0,n.kt)("li",{parentName:"ul"},"tested the ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_5.html"},"1.35.5")," release"),(0,n.kt)("li",{parentName:"ul"},"tested the ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_6.html"},"1.35.6")," release")),(0,n.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"improvements in db-sync sync tests"),(0,n.kt)("li",{parentName:"ul"},"improvements in db-sync functional tests")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/04cbd10c.9008202b.js b/assets/js/04cbd10c.9008202b.js new file mode 100644 index 00000000000..721fa017cf5 --- /dev/null +++ b/assets/js/04cbd10c.9008202b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97245],{4032:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/05f2862f.32b47b8d.js b/assets/js/05f2862f.32b47b8d.js new file mode 100644 index 00000000000..e0d46ccda9b --- /dev/null +++ b/assets/js/05f2862f.32b47b8d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18479],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=u(a),d=n,m=h["".concat(s,".").concat(d)]||h[d]||c[d]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-04-07-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-07-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-07-hydra.md",source:"@site/blog/2023-04-07-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-07T00:00:00.000Z",formattedDate:"April 7, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.875,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-07-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-14-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-06-mithril"}},s={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:u},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team published the monthly report for March, created\nseparate links for different versions of documentation, and clarified potential\nsolutions for the Rollbacks bug. The team also discussed Query API requests for\nthe Hydra Voting project and met with community members to answer questions\nabout Hydra. Moving forward, the team plans to integrate the specification into\nthe repository, implement a short-term fix for the Rollbacks issue, and draft a\nQuery API ADR."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published monthly reports on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-03"},"website")),(0,n.kt)("li",{parentName:"ul"},"Separate last released and latest versions of docs (e.g. normal ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/core-concepts/behavior/#replay-of-past-server-outputs"},"released")," vs. ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/core-concepts/behavior/#replay-of-past-server-outputs"},"/unstable"),")"),(0,n.kt)("li",{parentName:"ul"},"Discussed Query API concerns from Hydra Voting project (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/discussions/797"},"link"),")"),(0,n.kt)("li",{parentName:"ul"},"Clarified rollbacks bug and defined possible solutions (short and long term) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Met with community members to answer questions about Hydra")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finally get the docs integrated into the repository ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693")),(0,n.kt)("li",{parentName:"ul"},"Dirt road fix for rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Disclaimer text and detail known issues about mainnet compatibility\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0645cd02.fa280ace.js b/assets/js/0645cd02.fa280ace.js new file mode 100644 index 00000000000..4f540a3cc2e --- /dev/null +++ b/assets/js/0645cd02.fa280ace.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46982],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=p(r),c=n,m=d["".concat(u,".").concat(c)]||d[c]||h[c]||l;return r?a.createElement(m,o(o({ref:t},s),{},{components:r})):a.createElement(m,o({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=c;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-07-21-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-07-21-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-ledger.md",source:"@site/blog/2023-07-21-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-07-21T00:00:00.000Z",formattedDate:"July 21, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.715,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-07-21-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-21-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-21-sre"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What we achieved",id:"what-we-achieved",level:2},{value:"What is currently in progress",id:"what-is-currently-in-progress",level:2}],s={toc:p},d="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet.\nAll members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era.\nWe also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release).\nAdditionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available.\nWe also made progress on the constraint-based generators, which can now generate valid transactions and ledger states. "),(0,n.kt)("h2",{id:"what-we-achieved"},"What we achieved"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3521"},"pull-3521"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3554"},"pull-3554"),"] Improved Governance model (GovernanceProcedures, ProposalProcedure)"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3520"},"pull-3520"),"] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert ) "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3531"},"pull-3531"),"] Refactored and simplified code interacting with Plutus"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3558"},"pull-3558"),"] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix. "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3550"},"pull-3550"),"] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed."),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3551"},"pull-3551"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3546"},"pull-3546"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3472"},"pull-3472"),"] Updated tools and added some small improvements "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3146"},"issue-3146"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3498"},"pull-3498"),"] Introduced Conway protocol parameters "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2948"},"issue-2948"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3499"},"pull-3499"),"] Implemented ConwayGenesis with the new protocol parameters")),(0,n.kt)("h2",{id:"what-is-currently-in-progress"},"What is currently in progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3494"},"issue-3494"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3495"},"pull-3495"),"] Implement returning of proposal deposits"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3436"},"issue-3436"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3523"},"pull-3523"),"] Implement transferring lovelace from UTxO to treasury"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3509"},"issue-3509"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3552"},"pull-3552"),"] Add script-support for the committee hot key"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3532"},"issue-3532"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3556"},"pull-3556"),"] Add script-support for the constitution"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3543"},"issue-3543"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3557"},"pull-3557"),"] Improve the 'new committee' governance action by specifying the members to be replaced, expiration epoch of new members and adding script-support")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/06a283ef.b8b2b1f9.js b/assets/js/06a283ef.b8b2b1f9.js new file mode 100644 index 00000000000..cb7eb0960be --- /dev/null +++ b/assets/js/06a283ef.b8b2b1f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2307],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),l=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=l(n),h=a,m=p["".concat(i,".").concat(h)]||p[h]||u[h]||o;return n?r.createElement(m,s(s({ref:t},d),{},{components:n})):r.createElement(m,s({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=h;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[p]="string"==typeof e?e:a,s[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB Sync Team Update",slug:"2022-10-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},s=void 0,c={permalink:"/cardano-updates/2022-10-04-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-04-db-sync.md",source:"@site/blog/2022-10-04-db-sync.md",title:"DB Sync Team Update",description:"DBSync Update",date:"2022-10-04T00:00:00.000Z",formattedDate:"October 4, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB Sync Team Update",slug:"2022-10-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-05-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-04-node-cli-api"}},i={authorsImageUrls:[void 0]},l=[{value:"DBSync Update",id:"dbsync-update",level:2},{value:"Fast restarts",id:"fast-restarts",level:3},{value:"Property based testing",id:"property-based-testing",level:3},{value:"Tech Debt",id:"tech-debt",level:3},{value:"Smash",id:"smash",level:3}],d={toc:l},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"dbsync-update"},"DBSync Update"),(0,a.kt)("h3",{id:"fast-restarts"},"Fast restarts"),(0,a.kt)("p",null," We fixed a long overdue issue in db-sync which caused long delays on restarts\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1266"},"1266"),". This has been\none of db-sync main objectives for this period. Restarts are now very fast,\nbecause db-sync deletes almost nothing from the db, it just replays the ledger rules until it\nreaches the tip of the db. The fix also improves reconnection speed, in cases where the node\nrestarts or the connection is temporarily lost. It also speeds up even more in cases where due to a\ndeployment mess up a very old snapshot or no snapshot at all is used."),(0,a.kt)("h3",{id:"property-based-testing"},"Property based testing"),(0,a.kt)("p",null,"We added stateful property based testing, using ",(0,a.kt)("inlineCode",{parentName:"p"},"quickcheck-state-machine"),"\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1269"},"1269"),". These tests use empty or\nalmost empty blocks to test the new behaviour of restarts and rollbacks."),(0,a.kt)("p",null," These tests generate arbitrarily a list of symbolic commands from these:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"RollForward Int\nRollBack BlockNo\nStopDBSync\nStartDBSync\nRestartNode\nAssertBlockNo BlockNo\n")),(0,a.kt)("p",null,"The commands are translated into real commands. For example ",(0,a.kt)("inlineCode",{parentName:"p"},"RollForward Int")," will forge a new block\nthat fits on the current chain. These real commands are executed against db-sync using the mock\nchain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync\nwhich looks like this:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-haskell"}," Model\n { serverTip :: BlockNo\n , dbSyncTip :: BlockNo\n , dbSynsIsOn :: Bool\n , dbSynsHasSynced :: Bool\n }\n")),(0,a.kt)("p",null,"Finally a number of postconditions are checked, related to the eventual block number of db-sync."),(0,a.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,a.kt)("p",null,"We handled a number of tech debt in\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1275"},"1275"),"\nThis improves the code format of db-sync, deletes many queries that were never used and groups the\nothers. This tech debt resolution not only improves the experience of working in db-sync, but can\nfacilitate some of our other objectives, as it makes it very explicit which queries are used\nduring syncing and which indexes are necessary."),(0,a.kt)("h3",{id:"smash"},"Smash"),(0,a.kt)("p",null,"We worked on fixing an issue related to fetching pool metadata\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1276"},"1276"),".\nThe issue which is described in\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1270"},"1270")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/07541956.2c467b7c.js b/assets/js/07541956.2c467b7c.js new file mode 100644 index 00000000000..4028b49217c --- /dev/null +++ b/assets/js/07541956.2c467b7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39419],{95884:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/15","page":15,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/14","nextPage":"/cardano-updates/page/16","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/07fdf123.654288cb.js b/assets/js/07fdf123.654288cb.js new file mode 100644 index 00000000000..df9eebb6b25 --- /dev/null +++ b/assets/js/07fdf123.654288cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39439],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>b});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),p=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(i.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,i=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(r),m=n,b=d["".concat(i,".").concat(m)]||d[m]||c[m]||l;return r?a.createElement(b,o(o({ref:t},u),{},{components:r})):a.createElement(b,o({ref:t},u))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[d]="string"==typeof e?e:n,o[1]=s;for(var p=2;p{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>s,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"Node Release Team Update",slug:"2023-01-13-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2023-01-13-release",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-release.md",source:"@site/blog/2023-01-13-release.md",title:"Node Release Team Update",description:"Node Reelease Update",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:.64,hasTruncateMarker:!1,authors:[{name:"Samuel Leathers",title:"Service Reliability Manager",url:"https://github.com/disassembler",imageURL:"https://github.com/disassembler.png",key:"disassembler"}],frontMatter:{title:"Node Release Team Update",slug:"2023-01-13-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-13-hydra"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-01-13-system-test"}},i={authorsImageUrls:[void 0]},p=[{value:"Node Reelease Update",id:"node-reelease-update",level:2},{value:"2022-11-02 - 2023-01-13",id:"2022-11-02---2023-01-13",level:2},{value:"Executive Summary",id:"executive-summary",level:3},{value:"Completed",id:"completed",level:3},{value:"In Progress",id:"in-progress",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"node-reelease-update"},"Node Reelease Update"),(0,n.kt)("h2",{id:"2022-11-02---2023-01-13"},"2022-11-02 - 2023-01-13"),(0,n.kt)("h3",{id:"executive-summary"},"Executive Summary"),(0,n.kt)("p",null,"A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on\n",(0,n.kt)("inlineCode",{parentName:"p"},"release/1.35")," branch and does not bump cardano-ledger."),(0,n.kt)("p",null,"The team successfully integrated an interim release bump of ledger and consensus into cardano-node master.\nThis work will not be released in a node version, but will be continued by the current dependency bump in progress."),(0,n.kt)("p",null,"We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again."),(0,n.kt)("p",null,"The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress."),(0,n.kt)("h3",{id:"completed"},"Completed"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/1.35.4"},"Release 1.35.4"))),(0,n.kt)("h3",{id:"in-progress"},"In Progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/commits/release/1.35"},"Release 1.35.5")),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.5_rc1/src_docs/source/test_results/node/tag_1_35_5_rc1.rst"},"Test Status"))))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0801ba5a.ebcbb7d6.js b/assets/js/0801ba5a.ebcbb7d6.js new file mode 100644 index 00000000000..ec07cfb339c --- /dev/null +++ b/assets/js/0801ba5a.ebcbb7d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[19644],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(a),d=n,c=u["".concat(p,".").concat(d)]||u[d]||m[d]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-05-26-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-05-26-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-hydra.md",source:"@site/blog/2023-05-26-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.11,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-05-26-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-26-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-26-ledger"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:s},u="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team accomplished several important tasks. They held their\nmonthly review meeting and drafted the report for May. They made progress on\nimplementing the first end-to-end journey for external commits using "Option A"\nfor normal UTxOs, while still considering "Option B". The team also integrated a\nSpanish translation contributed by the community, created micro-benchmarks for\ntransaction validation and deserialization, and made improvements to\nhydra-node\'s version reporting. Last but not least, they implemented the ability\nto commit multiple UTxOs to a head at once.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Held the monthly review meeting (",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/1_N6b4RDe579TgLawiJzbE0NLofD3ljE6/view"},"recording")," + ",(0,n.kt)("a",{parentName:"li",href:"https://docs.google.com/presentation/d/1anUC3Z1idloyR6uwiSHLZtV6-LQvUcByHPMUgCBOVIA"},"slides"),") & drafted the report for May."),(0,n.kt)("li",{parentName:"ul"},"Have a first end-to-end journey for external commits implementing ","\u201c","Option A","\u201d","\nfor normal UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/887"},"#887")," (still considering ","\u201c","Option B","\u201d",")."),(0,n.kt)("li",{parentName:"ul"},"Integrated the spanish translation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/866"},"#866"),"."),(0,n.kt)("li",{parentName:"ul"},"Created micro-benchmarks for transaction validation and deserialization ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/884"},"#884"),"."),(0,n.kt)("li",{parentName:"ul"},"Improve hydra-node ","\u2013","version reporting on non-released builds ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/849"},"#849")),(0,n.kt)("li",{parentName:"ul"},"Some minor CI improvements following up last weeks changes."),(0,n.kt)("li",{parentName:"ul"},"Allow commit transactions with multiple UTxO ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/774"},"#774"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Investigate and re-open our team-internal head on mainnet."),(0,n.kt)("li",{parentName:"ul"},"Improve and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete external commits with script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),"."),(0,n.kt)("li",{parentName:"ul"},"Authenticate network messages ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"#727"),"."),(0,n.kt)("li",{parentName:"ul"},"Add hydra as tool to developr platform ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/872"},"#872"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/089154c4.cd4dba30.js b/assets/js/089154c4.cd4dba30.js new file mode 100644 index 00000000000..d697bca0f8f --- /dev/null +++ b/assets/js/089154c4.cd4dba30.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72344],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},d=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},c="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,p=t.parentName,d=i(t,["components","mdxType","originalType","parentName"]),c=u(a),m=r,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||o;return a?n.createElement(h,l(l({ref:e},d),{},{components:a})):n.createElement(h,l({ref:e},d))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[c]="string"==typeof t?t:r,l[1]=i;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-11-02-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-11-02-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-node-cli-api.md",source:"@site/blog/2022-11-02-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.265,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-11-02-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-02-ledger"},nextItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2022-11-02-release"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],d={toc:u},c="wrapper";function s(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-11-02---2022-11-15"},"2022-11-02 - 2022-11-15"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Documentation improvments"),(0,r.kt)("li",{parentName:"ul"},"Merged community contributions"),(0,r.kt)("li",{parentName:"ul"},"Exposing types from cardano-api requested by the community/other teamss"),(0,r.kt)("li",{parentName:"ul"},"Test output has been improved so diagnosing failures is now easier"),(0,r.kt)("li",{parentName:"ul"},"Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)"),(0,r.kt)("li",{parentName:"ul"},"Refactoring of cardano-testnet making it more useable as a library (ongoing)"),(0,r.kt)("li",{parentName:"ul"},"Release 1.35.4 was merged & released")),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4567"},"Community contributions - doc fixes and spelling errors"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4546"},"Reduce exposed modules in cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4587"},"Add Ord instance for AddressInEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4496"},"Export TxTotalAndReturnCollateralSupportedInEra from Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4635"},"Expose TextEnvelopeCddl from Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4628"},"Expose txScriptValidityToScriptValidity in Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4599"},"export RawBytesHexError"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/2883"},"Add Plutus minting script doc")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4575/files"},"Improve test output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4586"},"Enable stale bot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4557"},"Add link to troubleshooting page in the wiki")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4550"},"Use environment files in Github Actions"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4544"},"Add single entrypoint for starting testnets")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4575"},"Improve cardano-testnet test output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4595"},"Reorder module hierarchy"))),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/08c82b6d.8647aa4f.js b/assets/js/08c82b6d.8647aa4f.js new file mode 100644 index 00000000000..0dc44ac2526 --- /dev/null +++ b/assets/js/08c82b6d.8647aa4f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[81],{7232:a=>{a.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"updates"}')}}]); \ No newline at end of file diff --git a/assets/js/09abc415.e2f175c7.js b/assets/js/09abc415.e2f175c7.js new file mode 100644 index 00000000000..78aeddad631 --- /dev/null +++ b/assets/js/09abc415.e2f175c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[416],{15546:a=>{a.exports=JSON.parse('{"label":"devx","permalink":"/cardano-updates/tags/devx","allTagsPath":"/cardano-updates/tags","count":2}')}}]); \ No newline at end of file diff --git a/assets/js/0a44a251.e62524d6.js b/assets/js/0a44a251.e62524d6.js new file mode 100644 index 00000000000..18f59201b6e --- /dev/null +++ b/assets/js/0a44a251.e62524d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[63565],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-12-14-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-12-14-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-node-cli-api.md",source:"@site/blog/2022-12-14-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.46,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-12-14-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2022-12-14-db-sync"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-12-14-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-12-14---2022-12-27"},"2022-12-14 - 2022-12-27"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped. "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4703"},"Move style guide to wiki"))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4734"},"Cache secp256k1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4717"},"Use cabal-cache")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4699"},"build(deps): bump certifi from 2020.4.5.2 to 2022.12.7 in /doc/.sphinx")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4724"},"Update cabal.project"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4125"},"Add aarch64-darwin to nix-shell"))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4626"},"Improved error message for failed asset name decode")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4700"},"Remove cardano-cli address build-script"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4698"},"Move signing key reading to cardano-api"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4712"},"Only run chairman test on latest era")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4679"},"Add fix and test for ",(0,r.kt)("inlineCode",{parentName:"a"},"foldBlocks")))),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Copyright updates"))),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0ade4266.b7cf47d6.js b/assets/js/0ade4266.b7cf47d6.js new file mode 100644 index 00000000000..4b11f3f49cd --- /dev/null +++ b/assets/js/0ade4266.b7cf47d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16227],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(s,".").concat(c)]||d[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-11-17-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-17-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-17-hydra.md",source:"@site/blog/2023-11-17-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-11-17T00:00:00.000Z",formattedDate:"November 17, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.135,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-11-17-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Initial CIP 1694 Security Analysis and Responses",permalink:"/cardano-updates/2023-11-20-cip1694"},nextItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-11-17-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team made several impactful updates. They addressed\nmisleading errors regarding collect com transactions, resolved a security\nadvisory (CVE-2023-42806), and simplified the Hydra Head protocol by using\ninline datums. The team also tackled minor inconsistencies in specifications and\nimplementation, documented reasons for potentially dropped close transactions by\nthe cardano-node, and collaborated with SundaeLabs on an offline mode for\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node"),". Additionally, they engaged in discussions with researchers about\nincremental de-/commits."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Removed misleading errors about collect com transactions ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/839"},"#839")),(0,n.kt)("li",{parentName:"ul"},"Addressed security advisory ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq"},"CVE-2023-42806")," in PR ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1161"},"#1161")),(0,n.kt)("li",{parentName:"ul"},"Changed the head protocol to use inline datums, simplifying things in the hydra-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1162"},"#1162")),(0,n.kt)("li",{parentName:"ul"},"Addressed minor inconsistencies in spec and implementation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1104"},"#1104")),(0,n.kt)("li",{parentName:"ul"},"Documented why close transacations might be dropped by the cardano-node (can","\u2019","t fix) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1039"},"#1039")),(0,n.kt)("li",{parentName:"ul"},"Tidy up a few things here and there"),(0,n.kt)("li",{parentName:"ul"},"Worked with SundaeLabs on the offline mode for ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")),(0,n.kt)("li",{parentName:"ul"},"Discussed incremental de-/commits with researchers")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Start work on incremental decommits protocol specification ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1057"},"#1057")),(0,n.kt)("li",{parentName:"ul"},"Provide support to Hypix"),(0,n.kt)("li",{parentName:"ul"},"Address all ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/labels/bug%20%3Abug%3A"},"open bugs")),(0,n.kt)("li",{parentName:"ul"},"Release version 0.14.0 with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/milestone/14?closed=1"},"this scope")),(0,n.kt)("li",{parentName:"ul"},"Update dependencies to prepare for Conway ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1114"},"#1114")),(0,n.kt)("li",{parentName:"ul"},"Shepherd off-line mode PR over the finish line"),(0,n.kt)("li",{parentName:"ul"},"Complete tidying up chain layer via stateless observation changes in hydra-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1096"},"#1096"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0af81f82.4b115c93.js b/assets/js/0af81f82.4b115c93.js new file mode 100644 index 00000000000..df3b4507f64 --- /dev/null +++ b/assets/js/0af81f82.4b115c93.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[10114],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(a),c=n,m=s["".concat(u,".").concat(c)]||s[c]||h[c]||l;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=c;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:n,o[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-03-31-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-03-31-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-ledger.md",source:"@site/blog/2023-03-31-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.97,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-03-31-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-31-hydra"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-03-27-system-test"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Support for the next release",id:"support-for-the-next-release",level:3},{value:"Experiments for DRep stake distribution",id:"experiments-for-drep-stake-distribution",level:3},{value:"Technical debt and bug fixes",id:"technical-debt-and-bug-fixes",level:3},{value:"Documentation changes",id:"documentation-changes",level:3}],d={toc:p},s="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We are still heavily involved in work related to preparing the next release.\nThe other main thing we have worked on is experimentation about how we will\nhandle the DRep stake distribution for CIP-1694 in the conway ledger era.\nLastly, we merged a fix for\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4826"},"node-4826"),"\ninto our main branch (there will be a post-mortem shortly)."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"support-for-the-next-release"},"Support for the next release"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3363"},"pull-3363")," - Fix problems relating to Arbitrary instances used by consensus."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3361"},"pull-3361")," - Remove the alonze genesis from the conway genesis."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3360"},"pull-3360")," - Translate bad pointer addresses to valid ones in conway."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3357"},"pull-3357")," - Fix a bug relating to zero valued ADA in the script context."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3356"},"pull-3356")," - Added needed instances (Arbitrary and Serialization) for conway integration."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3345"},"pull-3345")," - Added helper functions for the CLI."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3342"},"pull-3342")," - Fix a bug with a CLI helper function (having to do with deposit tracking).")),(0,n.kt)("h3",{id:"experiments-for-drep-stake-distribution"},"Experiments for DRep stake distribution"),(0,n.kt)("p",null,"Adding another stake distribution to the ledger state presents some new challenges.\nWe would like to be able to use the current stake distribution at the epoch boundary\nfor DRep voting so that people can always vote themselves in time for any proposal.\nTo this end, we have a prototype of an incremental computation based on the incremental\nlambda calculus, together with tests and benchmarks (which are very promising).\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3344"},"pull-3344"),"."),(0,n.kt)("p",null,"Additionally, more of the ledger state is going to need to be rearranged to accomodate\nthe new incremental computations.\nWe have two draft PRs up for possibles solution.\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3353"},"pull-3353")," and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3364"},"pull-3364"),"."),(0,n.kt)("h3",{id:"technical-debt-and-bug-fixes"},"Technical debt and bug fixes"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3343"},"pull-3343")," - A fix ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/4826"},"node-4826"),"."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3333"},"pull-3333")," - Moving more code out of the shelley packages. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3347"},"pull-3347")," - Bug fix for the multi-asset generators."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3341"},"pull-3341")," - Removal of code duplication.")),(0,n.kt)("h3",{id:"documentation-changes"},"Documentation changes"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3354"},"pull-3354"),' - Rename "optional datums" with "supplemental datums" in the alonzo spec.'),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3352"},"pull-3352")," - Add a section to the Shelly errata about the individual deposit tracking."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3351"},"pull-3351")," - Further clarify the details regarding the script integrity hash."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3350"},"pull-3350")," - Some cleanup of the Babbage spec.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0b0bfceb.29fc63d0.js b/assets/js/0b0bfceb.29fc63d0.js new file mode 100644 index 00000000000..7aabf57d633 --- /dev/null +++ b/assets/js/0b0bfceb.29fc63d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60903],{3905:(e,a,t)=>{t.d(a,{Zo:()=>c,kt:()=>h});var r=t(67294);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var a=1;a=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var i=r.createContext({}),p=function(e){var a=r.useContext(i),t=a;return e&&(t="function"==typeof e?e(a):l(l({},a),e)),t},c=function(e){var a=p(e.components);return r.createElement(i.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},m=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(t),m=n,h=d["".concat(i,".").concat(m)]||d[m]||u[m]||o;return t?r.createElement(h,l(l({ref:a},c),{},{components:t})):r.createElement(h,l({ref:a},c))}));function h(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var o=t.length,l=new Array(o);l[0]=m;var s={};for(var i in a)hasOwnProperty.call(a,i)&&(s[i]=a[i]);s.originalType=e,s[d]="string"==typeof e?e:n,l[1]=s;for(var p=2;p{t.r(a),t.d(a,{assets:()=>i,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var r=t(87462),n=(t(67294),t(3905));const o={title:"SRE Team Update",slug:"2023-10-13-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,s={permalink:"/cardano-updates/2023-10-13-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-sre.md",source:"@site/blog/2023-10-13-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-10-13T00:00:00.000Z",formattedDate:"October 13, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:2.595,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-10-13-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-10-13-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-11-mithril"}},i={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Sanchonet-demo",id:"sanchonet-demo",level:3}],c={toc:p},d="wrapper";function u(e){let{components:a,...t}=e;return(0,n.kt)(d,(0,r.Z)({},c,t,{components:a,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet environment was updated to 8.5.0-pre."),(0,n.kt)("li",{parentName:"ul"},"Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Various improvements and fixes including:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Add GHA cron schedule"),(0,n.kt)("li",{parentName:"ul"},"Add nix auto-gc to avoid running out of storage during large package set builds"),(0,n.kt)("li",{parentName:"ul"},"Add new packages to capkgs"),(0,n.kt)("li",{parentName:"ul"},"Reduce runner storage requirement leaving more room for builds"),(0,n.kt)("li",{parentName:"ul"},"Restructure capkgs attribute names to avoid package name collisions"),(0,n.kt)("li",{parentName:"ul"},"Return to non-musl builds for cardano packages to retain journald compatability"),(0,n.kt)("li",{parentName:"ul"},"Update cache usage to from file level to folder level to reduce network and latency overhead"),(0,n.kt)("li",{parentName:"ul"},"Commit diff: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/a274b72...b197e22"},"capkgs-compare"))))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/16"},"cardano-parts-pull-16")),(0,n.kt)("li",{parentName:"ul"},"Dbsync, smash, faucet and more: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/15"},"cardano-parts-pull-15"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes"),(0,n.kt)("li",{parentName:"ul"},"Adds nginx vhost metrics exporter profile"),(0,n.kt)("li",{parentName:"ul"},"Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down"),(0,n.kt)("li",{parentName:"ul"},"Adds bash *-ng autocompletion compatible wrappers"),(0,n.kt)("li",{parentName:"ul"},"Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview"),(0,n.kt)("li",{parentName:"ul"},"Adds downstream grafana cloud dashboard as templates"),(0,n.kt)("li",{parentName:"ul"},"Adds downstream grafana cloud alerts as templates"),(0,n.kt)("li",{parentName:"ul"},"Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish"),(0,n.kt)("li",{parentName:"ul"},"Updates the basic profile with IOG cache and commonly used bins"),(0,n.kt)("li",{parentName:"ul"},"Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning"),(0,n.kt)("li",{parentName:"ul"},"Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks"),(0,n.kt)("li",{parentName:"ul"},"Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets"),(0,n.kt)("li",{parentName:"ul"},"Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration"),(0,n.kt)("li",{parentName:"ul"},"Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion"),(0,n.kt)("li",{parentName:"ul"},"Updates the colmena template with dbsync, smash, faucet machines profiles and roles"),(0,n.kt)("li",{parentName:"ul"},"Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns"),(0,n.kt)("li",{parentName:"ul"},"Bumps capkgs node-ng to 8.5.0-pre")))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Dbsync, smash, faucet and more: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/3"},"cardano-playground-pull-3"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview"),(0,n.kt)("li",{parentName:"ul"},"Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts"),(0,n.kt)("li",{parentName:"ul"},"Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change"),(0,n.kt)("li",{parentName:"ul"},"Optimizes machine sizes"),(0,n.kt)("li",{parentName:"ul"},"Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets"),(0,n.kt)("li",{parentName:"ul"},"Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion"),(0,n.kt)("li",{parentName:"ul"},"Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning"),(0,n.kt)("li",{parentName:"ul"},"Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration")))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update sanchonet network to cardano-node 8.5.0: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/c8a480fa7cdb6eff4f8b4565450c57361ddfdec4"},"cardano-world-commit"))),(0,n.kt)("h3",{id:"sanchonet-demo"},"Sanchonet-demo"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo/commit/4124465c0c663d11c8cf4ef80af18a5246f89b31"},"sanchonet-demo-commit"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0b1b72af.a3f1baa4.js b/assets/js/0b1b72af.a3f1baa4.js new file mode 100644 index 00000000000..998e858da3f --- /dev/null +++ b/assets/js/0b1b72af.a3f1baa4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26276],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),m=s(r),h=n,g=m["".concat(u,".").concat(h)]||m[h]||c[h]||i;return r?a.createElement(g,l(l({ref:t},p),{},{components:r})):a.createElement(g,l({ref:t},p))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[m]="string"==typeof e?e:n,l[1]=o;for(var s=2;s{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2022-12-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2022-12-09-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-crypto.md",source:"@site/blog/2022-12-09-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2022-12-09T00:00:00.000Z",formattedDate:"December 9, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.39,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-12-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-12-12-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-09-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"MuSig2",id:"musig2",level:3},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:2}],p={toc:s},m="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The four open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency. "),(0,n.kt)("li",{parentName:"ul"},"Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe. "),(0,n.kt)("li",{parentName:"ul"},"cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"[Still in progress]"," We are introducing a more granular error handling mechanism ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/33"},"PR#33")),(0,n.kt)("li",{parentName:"ul"},"We merged the API redesig ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/35"},"PR#35")),(0,n.kt)("li",{parentName:"ul"},"We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/36"},"PR#36"))),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We merged the individual signature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/620"},"PR#620")),(0,n.kt)("li",{parentName:"ul"},"We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes/commits/master"},"kes repo"),") ")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nothing new to report. Still working in merging these PRs. "),(0,n.kt)("li",{parentName:"ul"},"We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a ",(0,n.kt)("a",{parentName:"li",href:"https://gitlab.haskell.org/ghc/ghc/-/issues/22564"},"bug in GHC"))),(0,n.kt)("h2",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We keep progressing in the secure forgetting PR and resolving some bugs on memory handling ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"PR#255")),(0,n.kt)("li",{parentName:"ul"},"Fixed a 'use-after-free' bug in the KES agent.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0b5e25e7.c75d5f30.js b/assets/js/0b5e25e7.c75d5f30.js new file mode 100644 index 00000000000..adf2a114d9f --- /dev/null +++ b/assets/js/0b5e25e7.c75d5f30.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23621],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),d=o,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||a;return n?r.createElement(h,s(s({ref:t},p),{},{components:n})):r.createElement(h,s({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:o,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-11-01-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-11-01-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-01-consensus.md",source:"@site/blog/2023-11-01-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-11-01T00:00:00.000Z",formattedDate:"November 1, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.44,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-11-01-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-08-mithril"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-01-mithril"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2}],p={toc:l},c="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"This week the Consensus team made progress on two fronts: the question of ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/422"},"survivable eclipse duration"),", which is part of our work ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/427"},"supporting Genesis delivery"),", and how to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4251"},"improve the handling of blocks from the future"),".\nRegarding the UTxO-HD branch, we managed to run a node with ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"legacy blocks"),", which is syncing with mainnet, up to including Alonzo.\nWe also ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/465#issuecomment-1788685122"},"investigated")," a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0c10bcf4.c8aa7ca2.js b/assets/js/0c10bcf4.c8aa7ca2.js new file mode 100644 index 00000000000..c86a466fe87 --- /dev/null +++ b/assets/js/0c10bcf4.c8aa7ca2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72872],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=u(a),m=n,c=h["".concat(s,".").concat(m)]||h[m]||d[m]||i;return a?r.createElement(c,o(o({ref:t},p),{},{components:a})):r.createElement(c,o({ref:t},p))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-05-19-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-19-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-19-hydra.md",source:"@site/blog/2023-05-19-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-05-19T00:00:00.000Z",formattedDate:"May 19, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.045,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-05-19-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-24-node-cli-api"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-17-consensus"}},s={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:u},h="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the "Coding Standards" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete validation of timed transactions feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/196"},"#196"),"."),(0,n.kt)("li",{parentName:"ul"},"Write ","\u201c","ops","\u201d"," instructions and troubleshooting ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/569"},"#569")," and improve logs."),(0,n.kt)("li",{parentName:"ul"},"Remove ",(0,n.kt)("inlineCode",{parentName:"li"},"--ledger-genesis")," argument to hydra-node options ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/863"},"#863"),"."),(0,n.kt)("li",{parentName:"ul"},"Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/877"},"#877"),"."),(0,n.kt)("li",{parentName:"ul"},"Use nix to build test binaries to increase CI speed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/867"},"#867"),"."),(0,n.kt)("li",{parentName:"ul"},"Updated our ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/wiki/Coding-Standards"},"Coding Standards"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting."),(0,n.kt)("li",{parentName:"ul"},'Have a first end-to-end journey for external commits implementing "Option A" ',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),"."),(0,n.kt)("li",{parentName:"ul"},"Integrate spanish translation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/866"},"#866"),"."),(0,n.kt)("li",{parentName:"ul"},"Improve and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"),"."),(0,n.kt)("li",{parentName:"ul"},"Allow commit transactions with multiple UTxO ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/774"},"#774"),"."),(0,n.kt)("li",{parentName:"ul"},"Explored stateless observation and refined hydra explorer ticket ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/696"},"#696"),".")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0c11045c.7ecdd83c.js b/assets/js/0c11045c.7ecdd83c.js new file mode 100644 index 00000000000..d2d3233f423 --- /dev/null +++ b/assets/js/0c11045c.7ecdd83c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39745],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,g=d["".concat(p,".").concat(m)]||d[m]||u[m]||o;return r?n.createElement(g,i(i({ref:t},c),{},{components:r})):n.createElement(g,i({ref:t},c))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-02-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-03-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-goedel.md",source:"@site/blog/2023-02-03-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-02-03T00:00:00.000Z",formattedDate:"February 3, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.57,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-02-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-03-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-03-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This sprint the team has been preparing several papers for peer review\nand knowledge sharing and consulting within IO and the community."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"R&D Seminar on experience participating in a member based organisation"),(0,a.kt)("li",{parentName:"ul"},"Full day tutorial on performance engineering presented at HiPEAC\n2023 conference"),(0,a.kt)("li",{parentName:"ul"},"Finished preparing and submitted a paper on performance engineering\nto an ACM workshop"),(0,a.kt)("li",{parentName:"ul"},"Preparing a draft paper for future submission about verifying design\nrefinements for distributed system design"),(0,a.kt)("li",{parentName:"ul"},"Consulting on performance design of other IO projects")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0c48efb1.01a06fce.js b/assets/js/0c48efb1.01a06fce.js new file mode 100644 index 00000000000..3f334329590 --- /dev/null +++ b/assets/js/0c48efb1.01a06fce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[41794],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),u=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(c.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=u(a),h=n,m=s["".concat(c,".").concat(h)]||s[h]||d[h]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-02-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-17-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-hydra.md",source:"@site/blog/2023-02-17-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.75,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-17-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-17-ledger"}},c={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:u},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team completed work on dealing differently with contests\nduring the contestation period. These will now always push out the deadline and\nhence contestation periods are easier to pick (depending on the network a Head\nruns on). Furthermore, they added an important acceptance test and completed\ninternal refactoring of the protocol logic making future changes easier."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Push contestation deadline on each contest ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/716"},"#716")),(0,n.kt)("li",{parentName:"ul"},"Wrote an acceptance (property) test ","\u201c","can always close/fanout when collect is successful","\u201d"),(0,n.kt)("li",{parentName:"ul"},"Internal refactoring of our ",(0,n.kt)("inlineCode",{parentName:"li"},"HeadLogic")),(0,n.kt)("li",{parentName:"ul"},"Groomed remaining things from ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/452"},"#452")," into dedicated features")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete full minting policy ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/720"},"#720")),(0,n.kt)("li",{parentName:"ul"},"Release 0.9.0 with updated scripts"),(0,n.kt)("li",{parentName:"ul"},"Plan mainnet milestone and a 0.10.0 version"),(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs for specification (upon feedback)"),(0,n.kt)("li",{parentName:"ul"},"Have smoke tests fixed and running regularly")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0d671897.dc5836f3.js b/assets/js/0d671897.dc5836f3.js new file mode 100644 index 00000000000..3f6b888392a --- /dev/null +++ b/assets/js/0d671897.dc5836f3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29059],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),d=a,h=u["".concat(l,".").concat(d)]||u[d]||m[d]||i;return n?r.createElement(h,o(o({ref:t},p),{},{components:n})):r.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const i={title:"DB Sync Team Update",slug:"2022-11-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2022-11-01-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-01-db-sync.md",source:"@site/blog/2022-11-01-db-sync.md",title:"DB Sync Team Update",description:"High level summary",date:"2022-11-01T00:00:00.000Z",formattedDate:"November 1, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.86,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB Sync Team Update",slug:"2022-11-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-11-02-system-test"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-28-hydra"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Schema simplifications",id:"schema-simplifications",level:3},{value:"Performance",id:"performance",level:3},{value:"Migrations and resyncing",id:"migrations-and-resyncing",level:3},{value:"Release",id:"release",level:3}],p={toc:c},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DBSync team is preparing a release which introduces schema simplifications, removes indexes,\nunique and foreign keys. It also provides a way to fix older values and migrates without the need to\nresync from genesis."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("h3",{id:"schema-simplifications"},"Schema simplifications"),(0,a.kt)("p",null,"Indexes, Unique and Foreign keys are removed in order to speedup syncing\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1295"},"#1295"),"\nThe same pr also introduces a different way to rollback, which doesn't rely on foreign keys and\nindexes."),(0,a.kt)("h3",{id:"performance"},"Performance"),(0,a.kt)("p",null,"The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A\nconservative number of these will be included in the next release and the rest can be found in\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/52/views/7"},"performance view"),"."),(0,a.kt)("h3",{id:"migrations-and-resyncing"},"Migrations and resyncing"),(0,a.kt)("p",null,"The next release will be 13.1.0, it will enable a migration without the need to resync. It will also\nintroduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1294"},"#1294")),(0,a.kt)("h3",{id:"release"},"Release"),(0,a.kt)("p",null,"The release has been mostly cherry-picked from master\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1294"},"#1294")," and its scope can be seen\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/52/views/6"},"release view")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0d7612e9.c2555544.js b/assets/js/0d7612e9.c2555544.js new file mode 100644 index 00000000000..562b954f71e --- /dev/null +++ b/assets/js/0d7612e9.c2555544.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95739],{1844:a=>{a.exports=JSON.parse('{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync","allTagsPath":"/cardano-updates/tags","count":14}')}}]); \ No newline at end of file diff --git a/assets/js/0d889cfb.7f793126.js b/assets/js/0d889cfb.7f793126.js new file mode 100644 index 00000000000..ba726f70298 --- /dev/null +++ b/assets/js/0d889cfb.7f793126.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27237],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,c=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-17-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-hydra.md",source:"@site/blog/2023-03-17-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-17T00:00:00.000Z",formattedDate:"March 17, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.015,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-17-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-17-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has continued work on the mainnet compatibility of the\nhydra-node. They added a golden test suite for ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts, added\nsome detection of ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," misconfiguration, established a limit of 100 ADA\nper commit and other smaller tasks to prepare for a mainnet beta release."),(0,n.kt)("p",null,"Next week there will be a small team workshop to push for demonstrating a Hydra\nHead on the Cardano mainnet, ideally just in time for the monthly review\nmeeting. See the hydra channels on the IOG Technical Community discord server\nfor details."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement a 100 ADA hard-coded commit limit in the hydra-node\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/763"},"#763")),(0,n.kt)("li",{parentName:"ul"},"Pay back funds to faucet after smoke-test run\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/773"},"#773")),(0,n.kt)("li",{parentName:"ul"},"Setup custom github runner for smoke-tests on mainnet\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/775"},"#775")),(0,n.kt)("li",{parentName:"ul"},"Created golden tests to assure the script hash stays the same between\nchanges ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/772"},"#772")),(0,n.kt)("li",{parentName:"ul"},"Removed hardcoded error codes in plutus scripts\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/768"},"#768")),(0,n.kt)("li",{parentName:"ul"},"Detect misconfiguration of a hydra-node given persistent state\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/767"},"#767")),(0,n.kt)("li",{parentName:"ul"},"Met with potential users for hydra-pay"),(0,n.kt)("li",{parentName:"ul"},"Prepared hydra workshop")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Hydra monthly meeting"),(0,n.kt)("li",{parentName:"ul"},"Open a multi-party head on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0db650db.bac77798.js b/assets/js/0db650db.bac77798.js new file mode 100644 index 00000000000..0a623c57a25 --- /dev/null +++ b/assets/js/0db650db.bac77798.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[74607],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>d});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function l(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var u=a.createContext({}),s=function(t){var e=a.useContext(u),n=e;return t&&(n="function"==typeof t?t(e):l(l({},e),t)),n},p=function(t){var e=s(t.components);return a.createElement(u.Provider,{value:e},t.children)},m="mdxType",c={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},h=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,o=t.originalType,u=t.parentName,p=i(t,["components","mdxType","originalType","parentName"]),m=s(n),h=r,d=m["".concat(u,".").concat(h)]||m[h]||c[h]||o;return n?a.createElement(d,l(l({ref:e},p),{},{components:n})):a.createElement(d,l({ref:e},p))}));function d(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=n.length,l=new Array(o);l[0]=h;var i={};for(var u in e)hasOwnProperty.call(e,u)&&(i[u]=e[u]);i.originalType=t,i[m]="string"==typeof t?t:r,l[1]=i;for(var s=2;s{n.r(e),n.d(e,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-03-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-22-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-consensus.md",source:"@site/blog/2023-03-22-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-03-22T00:00:00.000Z",formattedDate:"March 22, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.63,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-03-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-23-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-22-node-cli-api"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low-level details",id:"low-level-details",level:2}],p={toc:s},m="wrapper";function c(t){let{components:e,...n}=t;return(0,r.kt)(m,(0,a.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This week the consensus team continued working on the refactoring of the UTxO HD\nprototype, and design and testing of Genesis. We also extracted the ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-sim"),"\npackage, which provides a file-system abstraction layer that can be used for\ntesting and simulation. This makes the Consensus code base smaller, while\nproviding a package that the community can reuse and contribute to. We also\nfixed a failing property test related to iterators. We are also working on\nmempool and VRF improvements."),(0,r.kt)("h2",{id:"low-level-details"},"Low-level details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Extraction of ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim")," code from ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-network"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4425"},"https://github.com/input-output-hk/ouroboros-network/pull/4425")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/1"},"https://github.com/input-output-hk/fs-sim/pull/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/2"},"https://github.com/input-output-hk/fs-sim/pull/2")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4460"},"https://github.com/input-output-hk/ouroboros-network/pull/4460")))),(0,r.kt)("li",{parentName:"ul"},"Smaller changes in ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim")," code (some required by ",(0,r.kt)("inlineCode",{parentName:"li"},"UTxO-HD"),"):",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/5"},"https://github.com/input-output-hk/fs-sim/pull/5")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/6"},"https://github.com/input-output-hk/fs-sim/pull/6")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/7"},"https://github.com/input-output-hk/fs-sim/pull/7")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/8"},"https://github.com/input-output-hk/fs-sim/pull/8")))),(0,r.kt)("li",{parentName:"ul"},"Released cardano-lmdb-simple-0.6.0.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/20"},"https://github.com/input-output-hk/lmdb-simple/pull/20")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/150"},"https://github.com/input-output-hk/cardano-haskell-packages/pull/150"))))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0dc0e43e.00835288.js b/assets/js/0dc0e43e.00835288.js new file mode 100644 index 00000000000..6f7da5a995b --- /dev/null +++ b/assets/js/0dc0e43e.00835288.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29614],{67195:a=>{a.exports=JSON.parse('{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing","allTagsPath":"/cardano-updates/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/0de82e28.ff3d9525.js b/assets/js/0de82e28.ff3d9525.js new file mode 100644 index 00000000000..9ab23bcb2d4 --- /dev/null +++ b/assets/js/0de82e28.ff3d9525.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[66743],{37624:a=>{a.exports=JSON.parse('{"title":"Tutorial - Extras","slug":"/category/tutorial---extras","permalink":"/cardano-updates/docs/category/tutorial---extras","navigation":{"previous":{"title":"Congratulations!","permalink":"/cardano-updates/docs/tutorial-basics/congratulations"},"next":{"title":"Manage Docs Versions","permalink":"/cardano-updates/docs/tutorial-extras/manage-docs-versions"}}}')}}]); \ No newline at end of file diff --git a/assets/js/0dea9a3b.e1158297.js b/assets/js/0dea9a3b.e1158297.js new file mode 100644 index 00000000000..566fe9ede47 --- /dev/null +++ b/assets/js/0dea9a3b.e1158297.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4910],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(r),h=a,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||o;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=h;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:a,i[1]=p;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>p,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Open-Source Update",slug:"2023-01-13-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/quarterly/2023-01-13-open-source",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-13-open-source.md",source:"@site/quarterly/2023-01-13-open-source.md",title:"Open-Source Update",description:"Open Source Quarterly Update",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"open-source",permalink:"/cardano-updates/quarterly/tags/open-source"}],readingTime:2.215,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Open-Source Update",slug:"2023-01-13-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},prevItem:{title:"Network Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-13-network"},nextItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2022-11-15-consensus"}},l={authorsImageUrls:[void 0]},s=[{value:"Open Source Quarterly Update",id:"open-source-quarterly-update",level:2},{value:"2022-11 - 2023-01",id:"2022-11---2023-01",level:2},{value:"Summary",id:"summary",level:3},{value:"Detailed log",id:"detailed-log",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"open-source-quarterly-update"},"Open Source Quarterly Update"),(0,a.kt)("h2",{id:"2022-11---2023-01"},"2022-11 - 2023-01"),(0,a.kt)("h3",{id:"summary"},"Summary"),(0,a.kt)("p",null,"In the last quarter the open-source initiative delivered a comprehensive report\non the state of our repositories. As part of this work stream we\nidentified the key open-source repositories for the cardano project across all\nthe projects From a list of more than 500 repositories (some of which are\nforks) we identified key repositories which constitute the core of Cardano.\n20 of them were identified as to be transferred to the future MBO which will\ngovern Cardano development. Some where excluded (like ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim"},(0,a.kt)("inlineCode",{parentName:"a"},"io-sim"))," and\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols"},(0,a.kt)("inlineCode",{parentName:"a"},"typed-protocols")),"), to be govern by IOG, since they have a much broader\napplication than Cardano itself, and thus we think their open-source future\nwill be better outside of the Cardano umbrella."),(0,a.kt)("p",null,"Christian Taylor identified a number of ways we can improve our repositories to\nmake them more attractive for open-source contributions by analysing each of\nthem. This includes adding or improving various documentation files, like\n",(0,a.kt)("inlineCode",{parentName:"p"},"CONTRIBUTING")," files, adding code of conduct, improving readme files, issue\n& pull request templates etc. Christian also computed various interesting\nmetrics which gives a very good insight into the development practices: e.g.\naverage merge ratio, average number of reviews, comments and many more! The\npresentation is available ",(0,a.kt)("a",{parentName:"p",href:"https://docs.google.com/presentation/d/127IFEavlrZeeoFrVXFYWzSt0ugOkSL7isxjyM1vmMzQ"},"here"),"."),(0,a.kt)("p",null,"We followed with work on the ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},"Cardano Engineering Handbook"),". We included\na standard code of conduct which is now used by most important projects in the\nCardano space. We included ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),"'s security policy and added\na responsible disclosure policy. We also described how roles and\nresponsibilities should be clarified. This progress was made by\na collaborative effort of the Cardano Core, Plutus and Architecture teams, and\nit wouldn't be possible without Michael Peyton Jones, Arnaud Bailly, Kevin\nHammond, Jared Corduan and Marcin Szamotulski."),(0,a.kt)("p",null,"We also improved the documentation of key repositories, by adding description,\nimproving their ",(0,a.kt)("inlineCode",{parentName:"p"},"README")," file & ",(0,a.kt)("inlineCode",{parentName:"p"},"CONTRIBUTING")," files, adding code of conducts\nfollowing the ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},"Cardano Engineering Handbook"),". This includes improvements to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network"},(0,a.kt)("inlineCode",{parentName:"a"},"ouroboros-network"))," (both ",(0,a.kt)("inlineCode",{parentName:"li"},"network")," & ",(0,a.kt)("inlineCode",{parentName:"li"},"consensus"),")"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger"},(0,a.kt)("inlineCode",{parentName:"a"},"cardano-ledger"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node"},(0,a.kt)("inlineCode",{parentName:"a"},"cardano-node")))),(0,a.kt)("p",null,"And also"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim"},(0,a.kt)("inlineCode",{parentName:"a"},"io-sim"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols"},(0,a.kt)("inlineCode",{parentName:"a"},"typed-protocols"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-prelude"},(0,a.kt)("inlineCode",{parentName:"a"},"cardano-prelude"))," (work in progress)")),(0,a.kt)("p",null,"The work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan. "),(0,a.kt)("p",null,"In this quarter we also identified a number of projects which can be published to\n",(0,a.kt)("inlineCode",{parentName:"p"},"Hackage")," (Haskell's package repository) or ",(0,a.kt)("inlineCode",{parentName:"p"},"crate")," (Rust package repository).\nThe list contains 21 packages, 2 of which (",(0,a.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/hedgehog-extras"},(0,a.kt)("inlineCode",{parentName:"a"},"hedgehog-extras"))," and\n",(0,a.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/quickcheck-dynamic"},(0,a.kt)("inlineCode",{parentName:"a"},"quickcheck-dynamic")),") are already published on Hackage and another 5 (from\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim"},(0,a.kt)("inlineCode",{parentName:"a"},"io-sim"))," repository) are close to be published."),(0,a.kt)("h3",{id:"detailed-log"},"Detailed log"),(0,a.kt)("p",null,"The progress of the open-source project is tracked in ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/60/views/1"},"this project"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0dfea636.45223f2a.js b/assets/js/0dfea636.45223f2a.js new file mode 100644 index 00000000000..c09fc4aab82 --- /dev/null +++ b/assets/js/0dfea636.45223f2a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21200],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(n),m=a,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||o;return n?r.createElement(h,i(i({ref:t},s),{},{components:n})):r.createElement(h,i({ref:t},s))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-07-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-04-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-04-db-sync.md",source:"@site/blog/2023-07-04-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-07-04T00:00:00.000Z",formattedDate:"July 4, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.73,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-07-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-07-06-developer-experience"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-04-node-cli-api"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],s={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We've made progress in all high level objectives"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"CIP-1694 integration design"),(0,a.kt)("li",{parentName:"ul"},"UTxO-HD integration proof of concept"),(0,a.kt)("li",{parentName:"ul"},"schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested"),(0,a.kt)("li",{parentName:"ul"},"Many devx issues resolved")),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We have improved and validated the design for the Conway integration in db-sync"),(0,a.kt)("li",{parentName:"ul"},"Improved the initial integration of the UTxO-HD feauture branches which are under test"),(0,a.kt)("li",{parentName:"ul"},"Prepared a new release 13.1.1.3 which supports node 8.1.1\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1455"},"#1455"),"."),(0,a.kt)("li",{parentName:"ul"},"This also fixes a bug\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1451"},"#1451")),(0,a.kt)("li",{parentName:"ul"},"Added new tests to the new tx_out options\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1429"},"#1429")),(0,a.kt)("li",{parentName:"ul"},"Fixed a chronic issue in db-sync related to exception handling and concurrency\nThis fixes many other issues and simplifies the logic in db-sync\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1447"},"#1447")),(0,a.kt)("li",{parentName:"ul"},"A number of fixes and improvements in ci, docker, devx, docs\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1436"},"#1436"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1442"},"#1442"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1448"},"#1448"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1452"},"#1452"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0e0c98f4.b615e9a6.js b/assets/js/0e0c98f4.b615e9a6.js new file mode 100644 index 00000000000..60fdd49ced4 --- /dev/null +++ b/assets/js/0e0c98f4.b615e9a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60280],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>k});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var p=r.createContext({}),l=function(e){var t=r.useContext(p),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=l(o),h=n,k=c["".concat(p,".").concat(h)]||c[h]||d[h]||a;return o?r.createElement(k,i(i({ref:t},u),{},{components:o})):r.createElement(k,i({ref:t},u))}));function k(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,i=new Array(a);i[0]=h;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var l=2;l{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=o(87462),n=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-08-18-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-08-18-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-network.md",source:"@site/blog/2023-08-18-network.md",title:"Network Team Update",description:"High-level overview of sprint 42",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.09,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-08-18-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-18-ledger"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-18-sre"}},p={authorsImageUrls:[void 0]},l=[{value:"High-level overview of sprint 42",id:"high-level-overview-of-sprint-42",level:2},{value:"Eclipse Evasion",id:"eclipse-evasion",level:3},{value:"CDDL specs for protocol codecs",id:"cddl-specs-for-protocol-codecs",level:3},{value:"Ouroboros-Network-Framework API changes",id:"ouroboros-network-framework-api-changes",level:3},{value:"Nix setup (CI)",id:"nix-setup-ci",level:3},{value:"Other contributions",id:"other-contributions",level:2},{value:"Cardano Network Service Assurance",id:"cardano-network-service-assurance",level:3},{value:"Galois Review",id:"galois-review",level:3},{value:"CI",id:"ci",level:3},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3}],u={toc:l},c="wrapper";function d(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,r.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-42"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+42%22"},"sprint 42")),(0,n.kt)("h3",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,n.kt)("p",null,"We merged and released a new version of the ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," package (version\n",(0,n.kt)("inlineCode",{parentName:"p"},"0.9.0.0"),") which includes ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"big ledger peers feature"),".\nThis is the primary peer selection mechanism to defend against eclipses. We\nalso prepared a PR to updated ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/165"},(0,n.kt)("inlineCode",{parentName:"a"},"ouroboros-cosnensus")),"\nand ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ekg-forward/pull/30"},(0,n.kt)("inlineCode",{parentName:"a"},"ekg-forward"))," packages."),(0,n.kt)("h3",{id:"cddl-specs-for-protocol-codecs"},"CDDL specs for protocol codecs"),(0,n.kt)("p",null,"We made the ",(0,n.kt)("inlineCode",{parentName:"p"},"cddl")," spec for network codec more inline with the implementation\nwhich is highly polymorphic. ",(0,n.kt)("inlineCode",{parentName:"p"},"cddl")," doesn't have the notion of polymorphism,\nbut has ",(0,n.kt)("inlineCode",{parentName:"p"},"any")," which can generate any valid cbor term. We matched it with an\n",(0,n.kt)("inlineCode",{parentName:"p"},"Any")," type on the Haskell side and made all remaining tests & specs use it.\nThis simplified the specifications and made it easier to understand which parts\nare defined in the spec, and which parts are left unspecified. See\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4595"},"ouroboros-network#4595"),"."),(0,n.kt)("h3",{id:"ouroboros-network-framework-api-changes"},"Ouroboros-Network-Framework API changes"),(0,n.kt)("p",null,"We also released ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network-framework")," and other network components.\nThe ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network-framework")," package contains a redesign of API exposed to\n",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),". We consolidated, cleaned it and made it easier to\nextend in the future if there will be new arguments that need to be passed to\nmini-protocol initiator and responders which comes from the low-level network\nlayer."),(0,n.kt)("h3",{id:"nix-setup-ci"},"Nix setup (CI)"),(0,n.kt)("p",null,"We also made a major review of our ",(0,n.kt)("inlineCode",{parentName:"p"},"nix")," setup. With help from our DevX team\nwe ended up with a clean ",(0,n.kt)("inlineCode",{parentName:"p"},"flake.nix")," file which can:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"compile & test the code on ",(0,n.kt)("inlineCode",{parentName:"li"},"x86_64-linux"),", ",(0,n.kt)("inlineCode",{parentName:"li"},"x86_64-darwin")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"aarch64-darwin")),(0,n.kt)("li",{parentName:"ul"},"cross-compile to ",(0,n.kt)("inlineCode",{parentName:"li"},"Windows")," on ",(0,n.kt)("inlineCode",{parentName:"li"},"x86_64-linux")," ")),(0,n.kt)("p",null,"And provides a shell which contains all the build tools, including ",(0,n.kt)("inlineCode",{parentName:"p"},"ghc-9.6"),",\n",(0,n.kt)("inlineCode",{parentName:"p"},"hls"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"cddl"),", and more. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4640"},"ouroboros-network#4640"),",\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4643"},"ouroboros-network#4643"),"."),(0,n.kt)("h2",{id:"other-contributions"},"Other contributions"),(0,n.kt)("h3",{id:"cardano-network-service-assurance"},"Cardano Network Service Assurance"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The work and writeup in finishing up the CNSA, first stage (first\ncontract)."),(0,n.kt)("li",{parentName:"ul"},"Getting Sam Cowger (Galois Inc) up to speed."),(0,n.kt)("li",{parentName:"ul"},"The IOG Networking team carried a reivew of CNSA project progress: a limitted\ncode & design review.")),(0,n.kt)("h3",{id:"galois-review"},"Galois Review"),(0,n.kt)("p",null,"Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3832"},"ouroboros-network#3832"),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3834"},"ouroboros-network#3834"),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3835"},"ouroboros-network#3835"),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3836"},"ouroboros-network#3836"),";")),(0,n.kt)("p",null,"scoping, requirements, and getting started."),(0,n.kt)("h3",{id:"ci"},"CI"),(0,n.kt)("p",null,"We added a nightly run for GitHub actions and made the GitHub actions test be\nexecuted with extra concurrency ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4637"},"ouroboros-network#4637"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4649"},"ouroboros-network#4649"),"."),(0,n.kt)("p",null,"We also added GitHub's dependabot ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4650"},"ouroboros-network#4650"),"."),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We settled on implementation design of bootstrap peers which is being\nimplemented, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4615"},"ouroboros-network#4615"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0e384e19.2cd17c73.js b/assets/js/0e384e19.2cd17c73.js new file mode 100644 index 00000000000..9ffcc94ded0 --- /dev/null +++ b/assets/js/0e384e19.2cd17c73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59671],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(r),m=a,y=p["".concat(s,".").concat(m)]||p[m]||d[m]||o;return r?n.createElement(y,l(l({ref:t},c),{},{components:r})):n.createElement(y,l({ref:t},c))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={sidebar_position:1},l="Tutorial Intro",i={unversionedId:"intro",id:"intro",title:"Tutorial Intro",description:"Let's discover Docusaurus in less than 5 minutes.",source:"@site/docs/intro.md",sourceDirName:".",slug:"/intro",permalink:"/cardano-updates/docs/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"defaultSidebar",next:{title:"Tutorial - Basics",permalink:"/cardano-updates/docs/category/tutorial---basics"}},s={},u=[{value:"Getting Started",id:"getting-started",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Generate a new site",id:"generate-a-new-site",level:2},{value:"Start your site",id:"start-your-site",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"tutorial-intro"},"Tutorial Intro"),(0,a.kt)("p",null,"Let's discover ",(0,a.kt)("strong",{parentName:"p"},"Docusaurus in less than 5 minutes"),"."),(0,a.kt)("h2",{id:"getting-started"},"Getting Started"),(0,a.kt)("p",null,"Get started by ",(0,a.kt)("strong",{parentName:"p"},"creating a new site"),"."),(0,a.kt)("p",null,"Or ",(0,a.kt)("strong",{parentName:"p"},"try Docusaurus immediately")," with ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("a",{parentName:"strong",href:"https://docusaurus.new"},"docusaurus.new")),"."),(0,a.kt)("h3",{id:"what-youll-need"},"What you'll need"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://nodejs.org/en/download/"},"Node.js")," version 16.14 or above:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"When installing Node.js, you are recommended to check all checkboxes related to dependencies.")))),(0,a.kt)("h2",{id:"generate-a-new-site"},"Generate a new site"),(0,a.kt)("p",null,"Generate a new Docusaurus site using the ",(0,a.kt)("strong",{parentName:"p"},"classic template"),"."),(0,a.kt)("p",null,"The classic template will automatically be added to your project after you run the command:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"npm init docusaurus@latest my-website classic\n")),(0,a.kt)("p",null,"You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor."),(0,a.kt)("p",null,"The command also installs all necessary dependencies you need to run Docusaurus."),(0,a.kt)("h2",{id:"start-your-site"},"Start your site"),(0,a.kt)("p",null,"Run the development server:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"cd my-website\nnpm run start\n")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"cd")," command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there."),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"npm run start")," command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/."),(0,a.kt)("p",null,"Open ",(0,a.kt)("inlineCode",{parentName:"p"},"docs/intro.md")," (this page) and edit some lines: the site ",(0,a.kt)("strong",{parentName:"p"},"reloads automatically")," and displays your changes."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0e717c32.e588556c.js b/assets/js/0e717c32.e588556c.js new file mode 100644 index 00000000000..113584023bb --- /dev/null +++ b/assets/js/0e717c32.e588556c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26397],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),h=p(r),c=a,d=h["".concat(s,".").concat(c)]||h[c]||m[c]||n;return r?i.createElement(d,l(l({ref:t},u),{},{components:r})):i.createElement(d,l({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,l=new Array(n);l[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[h]="string"==typeof e?e:a,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var i=r(87462),a=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-11-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-11-29-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-29-mithril.md",source:"@site/blog/2023-11-29-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-29T00:00:00.000Z",formattedDate:"November 29, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.415,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-29-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-24-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"This week, the Mithril team released the initial version of the ",(0,a.kt)("a",{parentName:"p",href:"https://crates.io/crates/mithril-client"},"Mithril client library"),", enabling developers to integrate core Mithril features into their applications. They also released a new distribution, ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2347.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2347.0")),", which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements."),(0,a.kt)("p",null,"The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance. "),(0,a.kt)("p",null,"Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Release of the ",(0,a.kt)("a",{parentName:"li",href:"https://crates.io/crates/mithril-client"},(0,a.kt)("inlineCode",{parentName:"a"},"mithril-client"))," library crate"),(0,a.kt)("li",{parentName:"ul"},"Publication of a ",(0,a.kt)("a",{parentName:"li",href:"https://mithril.network/doc/dev-blog/2023/11/27/mithril-client-library-released"},"dev blog post")," about the released Mithril library"),(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2347.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2347.0"))),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,a.kt)("inlineCode",{parentName:"strong"},"mithril-client")," WASM library")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1336"},"#1336")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Enhance Mithril/Cardano node communication")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1315"},"#1315")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"P2P threat modeling and risk analysis")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1350"},"#1350")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Support P2P relay in infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1361"},"#1361")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Make Cardano node version custom in CI/CD")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1355"},"#1355")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Manually deploy a test Mithril network")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1356"},"#1356")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"mithril-client verbosity not following usage menu")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1325"},"#1325")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Error message for mithril-client snapshot download")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1375"},"#1375"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0e828f3a.84204c63.js b/assets/js/0e828f3a.84204c63.js new file mode 100644 index 00000000000..77494336018 --- /dev/null +++ b/assets/js/0e828f3a.84204c63.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[77338],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=p(a),c=n,h=m["".concat(u,".").concat(c)]||m[c]||d[c]||l;return a?r.createElement(h,i(i({ref:t},s),{},{components:a})):r.createElement(h,i({ref:t},s))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[m]="string"==typeof e?e:n,i[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-09-15-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-09-15-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-ledger.md",source:"@site/blog/2023-09-15-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.645,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-09-15-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-15-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-15-network"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3},{value:"Testing",id:"testing",level:3}],s={toc:p},m="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(m,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The Ledger team's focus is still mainly on the Conway era implementation."),(0,n.kt)("p",null,"We were able to add ability to specify initial Constitutional Comittee and the initial\nversion of Constitution. Priority in which Governance Action are now enacted matches the\nspecification. DRep's deposits are now properly accounted for. Governance actions that are\nnot allowed to be voted on by Stake Pool operators and Constitutional Committee members\nare prevented by transaction submission failure, rather than simply being ignored. There\nwas a few important CDDL fixes as well as a lot of new round trip serialization\ntests. Constraint based testing framework has also received a lot of improvements."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-era"},"Conway era"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3681"},"pull-3681")," - Conway Genesis additions"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3690"},"pull-3690")," - Preserve the order of ProposalProcedures"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3705"},"pull-3705")," - Removed ProtVer from EnactState"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3700"},"pull-3700")," - Add conway-specific certs to deposit/refunds"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3704"},"pull-3704")," - Add comments on deprecating certs to Conway CDDL"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3698"},"pull-3698")," - Reordering of governance actions"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3712"},"pull-3712")," - Disallow empty fields in ConwayTxBodyRaw"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3716"},"pull-3716")," - Abstract threshold calculation"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3725"},"pull-3725")," - Fix mistaken use of dollar sign in cddl files"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3718"},"pull-3718")," - Predicate failure for mismatched Voter GovAction"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3721"},"pull-3721")," - Committee expiration, validation and modification")),(0,n.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3629"},"pull-3629")," - Add rule-transition diagrams in dot syntax"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3680"},"pull-3680")," - Bump Plutus deps to 1.11"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3708"},"pull-3708")," - Post release changes")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3730"},"pull-3730")," - Implement ",(0,n.kt)("inlineCode",{parentName:"li"},"Show")," instance for ",(0,n.kt)("inlineCode",{parentName:"li"},"Rep")," using ",(0,n.kt)("inlineCode",{parentName:"li"},"IsTypeable")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3697"},"pull-3697")," - Rewrite testEql using Typeable to make it impossible to forget cases"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3709"},"pull-3709")," - Add many new features to the Constrained modues in cardano-ledger-test"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3726"},"pull-3726")," - Conway and other eras serialization roundtrip tests"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3713"},"pull-3713")," - Improve CI resiliency against GitHub issues")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0ee9866d.aa05b5be.js b/assets/js/0ee9866d.aa05b5be.js new file mode 100644 index 00000000000..2a4ea25905b --- /dev/null +++ b/assets/js/0ee9866d.aa05b5be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87314],{25206:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/27","page":27,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/26","nextPage":"/cardano-updates/page/28","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/0fa2fd29.15fed629.js b/assets/js/0fa2fd29.15fed629.js new file mode 100644 index 00000000000..e5c7698772c --- /dev/null +++ b/assets/js/0fa2fd29.15fed629.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83646],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=s(a),c=n,m=h["".concat(u,".").concat(c)]||h[c]||d[c]||i;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-06-16-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-16-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-16-hydra.md",source:"@site/blog/2023-06-16-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-16T00:00:00.000Z",formattedDate:"June 16, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.815,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-16-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-23-sre"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-15-mithril"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},h="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team focused their efforts on continuing to investigate and\nexperiment operating a head on mainnet. They collected several bugs and issues\nand worked on fixing them. Now the team is soon to release a new version,\n0.11.0, which comes with a lot of improvements and bug fixes."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Restored and fixed a bug which stalled our head on mainnet ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/927"},"#927")),(0,n.kt)("li",{parentName:"ul"},"Solved one user issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/914"},"#914")),(0,n.kt)("li",{parentName:"ul"},"Reduced significantly local state size and logs by removing the full scripts from it ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/928"},"#928")),(0,n.kt)("li",{parentName:"ul"},"(pending review) Reduced snapshot size in the API, by only including tx ids ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/922"},"#922"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New release 0.11.0"),(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting."),(0,n.kt)("li",{parentName:"ul"},"Fix some minor bugs discovered when operating our head on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Complete journey for external commits using multiple script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"Publish benchmarks and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/10532414.69c8af62.js b/assets/js/10532414.69c8af62.js new file mode 100644 index 00000000000..c4c4a3f5ed6 --- /dev/null +++ b/assets/js/10532414.69c8af62.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6890],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),u=a,f=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return r?n.createElement(f,l(l({ref:t},s),{},{components:r})):n.createElement(f,l({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-08-04-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-04-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-goedel.md",source:"@site/blog/2023-08-04-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.43,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-08-04-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-04-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-04-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is formalising mini protocols and also further developing the\nperformance modelling prototype."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Developing new framework for specification and verification of\nmini-protocols which is closer to the Haskell implementation.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Developed a new internal representation for the DeltaQ algebra that\nallows for more modularity in backend implementations")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Discussions regarding the Cardano networking specification"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/10659ce5.04295867.js b/assets/js/10659ce5.04295867.js new file mode 100644 index 00000000000..78b014d9b8e --- /dev/null +++ b/assets/js/10659ce5.04295867.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40400],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),m=r,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-11-16-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-11-16-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-node-cli-api.md",source:"@site/blog/2022-11-16-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-11-16T00:00:00.000Z",formattedDate:"November 16, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.68,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-11-16-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-16-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-16-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-11-16---2022-11-29"},"2022-11-16 - 2022-11-29"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4562"},"Add a native tokens tutorial and exercises"))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4674"},"Update cardano-cli's help")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4644"},"Remove error calls in renderShelleyTxCmdError"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4639"},"Implement Cardano.Api.DeserialiseAnyOf"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4650"},"Fix windows CI"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/113fed8c.43bf9228.js b/assets/js/113fed8c.43bf9228.js new file mode 100644 index 00000000000..07b8c4caa96 --- /dev/null +++ b/assets/js/113fed8c.43bf9228.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33215],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),d=a,h=p["".concat(l,".").concat(d)]||p[d]||m[d]||o;return n?r.createElement(h,s(s({ref:t},u),{},{components:n})):r.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-07-12-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-07-12-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-12-consensus.md",source:"@site/blog/2023-07-12-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-07-12T00:00:00.000Z",formattedDate:"July 12, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.59,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-07-12-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-13-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-07-12-performance-and-tracing"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4620"},"proposed fix"),". The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine."),(0,a.kt)("p",null,"The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility."),(0,a.kt)("p",null,"On the support front, the team ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/200"},"drafted")," an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/11423591.8e82ecb7.js b/assets/js/11423591.8e82ecb7.js new file mode 100644 index 00000000000..a1ff2823b32 --- /dev/null +++ b/assets/js/11423591.8e82ecb7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96410],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function n(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,o=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(a),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||o;return a?r.createElement(h,n(n({ref:t},d),{},{components:a})):r.createElement(h,n({ref:t},d))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=a.length,n=new Array(o);n[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:l,n[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>n,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-06-08-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},n=void 0,i={permalink:"/cardano-updates/2023-06-08-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-sre.md",source:"@site/blog/2023-06-08-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.795,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-06-08-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-08-goedel"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-06-08-system-test"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Bitte",id:"bitte",level:3},{value:"Bitte-cells",id:"bitte-cells",level:3},{value:"Cardano-graphql",id:"cardano-graphql",level:3},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Ci-ops",id:"ci-ops",level:3},{value:"Ci-world",id:"ci-world",level:3},{value:"Cicero",id:"cicero",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3},{value:"Openziti",id:"openziti",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer."),(0,l.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,l.kt)("h3",{id:"bitte"},"Bitte"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Equinix bare metal capability was added to bitte: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte/pull/194"},"bitte-pull-194")),(0,l.kt)("li",{parentName:"ul"},"Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte/pull/201"},"bitte-pull-201"))),(0,l.kt)("h3",{id:"bitte-cells"},"Bitte-cells"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Improvements made for patroni cluster recovery of large databases: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte-cells/compare/main...patroni-flex"},"bitte-cells-branch"))),(0,l.kt)("h3",{id:"cardano-graphql"},"Cardano-graphql"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update cardano-graphql and nixos service: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-graphql/pull/815"},"cardano-graphql-pull-815"))),(0,l.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update cardano-node to use the updated iohk-nix environments: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5241"},"cardano-node-pull-5241"))),(0,l.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update cardano-graphql, adds monitoring improvements and misc bug fixes: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/pull/411"},"cardano-ops-pull-411")),(0,l.kt)("li",{parentName:"ul"},"Work in progress on mixed legacy and p2p topology clusters in cardano-ops: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/master...ops-local"},"cardano-ops-branch"))),(0,l.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Add a declarative cardano-faucet dashboard: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/e7d40d34aff52bbeb309f87939bd0d40f585e60a"},"cardano-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Remove a requirement for root user in Nomad docker images: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/68"},"cardano-world-pull-68")),(0,l.kt)("li",{parentName:"ul"},"Enable explorer in cardano-world for high IOPS metal access: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/69"},"cardano-world-pull-69")),(0,l.kt)("li",{parentName:"ul"},"Migrate explorer cluster to cardano-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/75"},"cardano-world-pull-75")),(0,l.kt)("li",{parentName:"ul"},"Migrate testnet metadata server to cardano-world, cleanup envs: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/77"},"cardano-world-pull-77")),(0,l.kt)("li",{parentName:"ul"},"Add a faucet restore delegation script to cardano-world for non-functioning delegated pools: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/79"},"cardano-world-pull-79")),(0,l.kt)("li",{parentName:"ul"},"Integrate node 8.x into cardano-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/84"},"cardano-world-pull-84")),(0,l.kt)("li",{parentName:"ul"},"Update cardano-world to use iohk-nix for node environments: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/87"},"cardano-world-pull-87")),(0,l.kt)("li",{parentName:"ul"},"Create a stakepool analysis query for cluster pool performance overview: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/64fe3b9d4067c24eef028ac1c561d6f9a7d5a9a8"},"cardano-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Added an iptables fixup script for broken bridged networking nomad jobs: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/02550206e4e34d121135794b6e54084635e55a50"},"cardano-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Improve cardano-world job automation with additional parameterization: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/92"},"cardano-world-pr-92")),(0,l.kt)("li",{parentName:"ul"},"Update preview network experimental config defaults: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/93"},"cardano-world-pr-93"))),(0,l.kt)("h3",{id:"ci-ops"},"Ci-ops"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-ops/pull/108"},"ci-ops-pull-108"))),(0,l.kt)("h3",{id:"ci-world"},"Ci-world"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Resolve ci-world linux buildkite agent cleanup bug: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/commit/3d053b202a6e40fab23db49801de7d6e580fab1f"},"ci-world-commit")),(0,l.kt)("li",{parentName:"ul"},"Integrate new darwin builders into ci-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/pull/22"},"ci-world-pull-22")),(0,l.kt)("li",{parentName:"ul"},"Migrate patroni HA db to it's own namespace in ci-world: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/pull/24"},"ci-world-pull-24"))),(0,l.kt)("h3",{id:"cicero"},"Cicero"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Implement a cicero webhook backoff with exponential decay plus jitter: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cicero/pull/79"},"cicero-pull-79"))),(0,l.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update iohk-nix to be source of truth for node environments: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/534"},"iohk-nix-pull-534")),(0,l.kt)("li",{parentName:"ul"},"Update preview network experimental config defaults: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/544"},"iohk-nix-pull-544"))),(0,l.kt)("h3",{id:"openziti"},"Openziti"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Add darwin intel and arm support to ziti-edge-tunnel nix modules: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/johnalotoski/openziti-bins/pull/1"},"openziti-bins-pull-1"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1147f4da.c6a37e99.js b/assets/js/1147f4da.c6a37e99.js new file mode 100644 index 00000000000..1aede2135fd --- /dev/null +++ b/assets/js/1147f4da.c6a37e99.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21463],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(n),p=a,g=c["".concat(s,".").concat(p)]||c[p]||m[p]||o;return n?r.createElement(g,i(i({ref:t},d),{},{components:n})):r.createElement(g,i({ref:t},d))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Embedding Quality Workstream",slug:"2022-11-03-embedding-quality",authors:"dorin100",tags:["embedding-quality"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-03-embedding-quality",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-03-embedding-quality.md",source:"@site/blog/2022-11-03-embedding-quality.md",title:"Embedding Quality Workstream",description:"High level summary",date:"2022-11-03T00:00:00.000Z",formattedDate:"November 3, 2022",tags:[{label:"embedding-quality",permalink:"/cardano-updates/tags/embedding-quality"}],readingTime:.65,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"Embedding Quality Workstream",slug:"2022-11-03-embedding-quality",authors:"dorin100",tags:["embedding-quality"],hide_table_of_contents:!1},prevItem:{title:"Open-Source Team",permalink:"/cardano-updates/2022-10-31-open-source"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-02-consensus"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2}],d={toc:u},c="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We made good progress on most of the Action Items we agreed on Lisbon, like:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Cardano System Tests was fully open to public (tools, tests, results)\nSee ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests"},"cardano-node-tests webpage"),"."),(0,a.kt)("li",{parentName:"ul"},"We defined an ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/blob/master/.github/ISSUE_TEMPLATE/user-facing-feature.md"},"user-facing-functionality template")," that is used with the cardano-cli team ",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"this includes acceptance criteria & user stories, and definition of done"))),(0,a.kt)("li",{parentName:"ul"},"We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)"),(0,a.kt)("li",{parentName:"ul"},"We started to apply a ",(0,a.kt)("em",{parentName:"li"},"labelling convention")," on ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues"},"cardano-node issues")," that will be used to generate some visual dashboards with some metrics ","[TBD]"),(0,a.kt)("li",{parentName:"ul"},"Ziyand Liu started an ",(0,a.kt)("em",{parentName:"li"},"End-to-End Development and Testing Process for Plutus Features"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/120c0b00.b79d45ef.js b/assets/js/120c0b00.b79d45ef.js new file mode 100644 index 00000000000..1adbdb1ec74 --- /dev/null +++ b/assets/js/120c0b00.b79d45ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59955],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(a),m=r,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-11-30-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2022-11-30-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-node-cli-api.md",source:"@site/blog/2022-11-30-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-11-30T00:00:00.000Z",formattedDate:"November 30, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.01,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-11-30-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-30-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-30-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-11-30---2022-12-13"},"2022-11-30 - 2022-12-13"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped. "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4675"},"Append tx output in cli transaction build command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4592"},"Update Error messages in cardano-cli"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4675"},"Replace Data.Map with Data.Map.Strict")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4708"},"Update Github actions"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12208c5e.498a6ea8.js b/assets/js/12208c5e.498a6ea8.js new file mode 100644 index 00000000000..34d08a9b809 --- /dev/null +++ b/assets/js/12208c5e.498a6ea8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32852],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=c(a),d=n,m=u["".concat(p,".").concat(d)]||u[d]||h[d]||o;return a?r.createElement(m,i(i({ref:t},s),{},{components:a})):r.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-07-21-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-21-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-hydra.md",source:"@site/blog/2023-07-21-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-21T00:00:00.000Z",formattedDate:"July 21, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.7,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-21-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-26-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-07-21-ledger"}},p={authorsImageUrls:[void 0]},c=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:c},u="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team updated the specification to align with recent\noff-chain protocol changes, completed refactoring the snapshot emission\nin preparation for event-sourced protocol logic, and updated to GHC\n9.2.7, resulting in improved compile times and slightly smaller Plutus\nscripts."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated the specification to match the recent off-chain protocol\nchanges to complete\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Refactored the snapshot emission logic in preparation for event\nsourced protocol logic."),(0,n.kt)("li",{parentName:"ul"},"Updated to GHC 9.2.7, which led to improved compile times and\nslightly smaller plutus scripts.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting next wednesday and July report"),(0,n.kt)("li",{parentName:"ul"},"Reflect latest information onto our roadmap."),(0,n.kt)("li",{parentName:"ul"},"Actual implemention of event-sourced persistence\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/913"},"#913"),"."),(0,n.kt)("li",{parentName:"ul"},"Update the use cases section on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family"},"https://hydra.family")),(0,n.kt)("li",{parentName:"ul"},"Remove deprecated internal commit\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/954"},"#954"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12525f14.359b7596.js b/assets/js/12525f14.359b7596.js new file mode 100644 index 00000000000..2648ffa140d --- /dev/null +++ b/assets/js/12525f14.359b7596.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46207],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),i=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},h=function(e){var t=i(e.components);return n.createElement(o.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,p=e.originalType,o=e.parentName,h=u(e,["components","mdxType","originalType","parentName"]),d=i(a),c=r,m=d["".concat(o,".").concat(c)]||d[c]||s[c]||p;return a?n.createElement(m,l(l({ref:t},h),{},{components:a})):n.createElement(m,l({ref:t},h))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var p=a.length,l=new Array(p);l[0]=c;var u={};for(var o in t)hasOwnProperty.call(t,o)&&(u[o]=t[o]);u.originalType=e,u[d]="string"==typeof e?e:r,l[1]=u;for(var i=2;i{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>s,frontMatter:()=>p,metadata:()=>u,toc:()=>i});var n=a(87462),r=(a(67294),a(3905));const p={title:"Ledger Team Update",slug:"2023-04-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,u={permalink:"/cardano-updates/quarterly/2023-04-03-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-03-ledger.md",source:"@site/quarterly/2023-04-03-ledger.md",title:"Ledger Team Update",description:"Ledger Quarterly Update",date:"2023-04-03T00:00:00.000Z",formattedDate:"April 3, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/quarterly/tags/ledger"}],readingTime:6.405,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-04-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Network Q1 2023 Update",permalink:"/cardano-updates/quarterly/2023-04-04-network"},nextItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-18-consensus"}},o={authorsImageUrls:[void 0]},i=[{value:"Ledger Quarterly Update",id:"ledger-quarterly-update",level:2},{value:"2023-01 - 2023-03",id:"2023-01---2023-03",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"CIPs",id:"cips",level:4},{value:"Formal ledger model",id:"formal-ledger-model",level:4},{value:"Conway ledger era",id:"conway-ledger-era",level:4},{value:"DRep stake distribution computation",id:"drep-stake-distribution-computation",level:4},{value:"Integration work",id:"integration-work",level:4},{value:"Deposit tracking",id:"deposit-tracking",level:4},{value:"New ledger API",id:"new-ledger-api",level:4},{value:"Constraint-based generators",id:"constraint-based-generators",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Critical fixes",id:"critical-fixes",level:5},{value:"Next steps",id:"next-steps",level:3},{value:"More details",id:"more-details",level:3}],h={toc:i},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"ledger-quarterly-update"},"Ledger Quarterly Update"),(0,r.kt)("h2",{id:"2023-01---2023-03"},"2023-01 - 2023-03"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"cips"},"CIPs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Entering the Voltaire phase")," -\nCIP-1694 received a major update after participation in the design has expanded to\nmore and more people, including those who attended the Colorado workshop.\nSee ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Ledger CIP category")," -\nThe ledger team continues to embrace the CIP process, and has begun the process of\nregistering the ledger as an official CIP category.\nSee ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/456"},"CIP-84"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Ledger serialization")," -\nA CIP for the ledger serialization deprecation cycle has been accepted.\nSee ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/tree/master/CIP-0080"},"CIP-80"),".")),(0,r.kt)("h4",{id:"formal-ledger-model"},"Formal ledger model"),(0,r.kt)("p",null,"Our new formal specifications backed by Agda have seen a lot of progress.\nThe majority of the ideas in CIP-1694 are now present, and we have made enough progress\nthat we can now safely say that the PDF produced by the Agda model will be the\nofficial ledger specification for the Conway ledger era.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"the repository"),"."),(0,r.kt)("h4",{id:"conway-ledger-era"},"Conway ledger era"),(0,r.kt)("p",null,"Progress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model.\nThe major component still missing is the DRep stake distribution, which still presents some\ntechnical challenges."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3176"},"pull-3176"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3216"},"pull-3216"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3226"},"pull-3226"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3291"},"pull-3291"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3326"},"pull-3326"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3330"},"pull-3330"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3339"},"pull-3339"),"]"),(0,r.kt)("h4",{id:"drep-stake-distribution-computation"},"DRep stake distribution computation"),(0,r.kt)("p",null,"Adding another large stake distribution to the ledger state must proceed with caution.\nWe do not want the memory used by the node to increase too much,\nand performance problems can lead to reduced block production.\nWe have prototyped, tested, and benchmarked several approaches that could give us\nthe current DRep stake distribution at each epoch boundary.\nThis has very important implications, since we want every ADA holder to be able to at any\ntime (such as during a contentious vote) register themselves as a DRep and still have time\nto vote themselves on the issue."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3344"},"pull-3344"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3353"},"pull-3353"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3364"},"pull-3364"),"]"),(0,r.kt)("h4",{id:"integration-work"},"Integration work"),(0,r.kt)("p",null,"The ledger has made some wonderful improvements over the past six months,\nbut which entail a significant amount of integration efforts:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Our new versioned CBOR schemes"),(0,r.kt)("li",{parentName:"ul"},"Individual deposit tracking"),(0,r.kt)("li",{parentName:"ul"},"An improved cross-era interface utilizing lenses"),(0,r.kt)("li",{parentName:"ul"},"A new ledger API"),(0,r.kt)("li",{parentName:"ul"},"Re-arranging the ledger stake in preparation for CIP-1694"),(0,r.kt)("li",{parentName:"ul"},"Versioning our Haskell packages\nusing ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaPs"),"."),(0,r.kt)("li",{parentName:"ul"},"Consistent conventions for variable names")),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3279"},"pull-3279"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3282"},"pull-3282"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3288"},"pull-3288"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3289"},"pull-3289"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3292"},"pull-3292"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3297"},"pull-3297"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3298"},"pull-3298"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3299"},"pull-3299"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3300"},"pull-3300"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3302"},"pull-3302"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3303"},"pull-3303"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3308"},"pull-3308"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3342"},"pull-3342"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3345"},"pull-3345"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3356"},"pull-3356"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3357"},"pull-3357"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3360"},"pull-3360"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3361"},"pull-3361"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3363"},"pull-3363"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4349"},"pull-4349"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/378"},"pull-378"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/376"},"pull-376"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/373"},"pull-373"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/370"},"pull-370"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/361"},"pull-361"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4976"},"pull-4976"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5013"},"pull-5013"),"]"),(0,r.kt)("h4",{id:"deposit-tracking"},"Deposit tracking"),(0,r.kt)("p",null,"Individual deposits (for stake credential and stake pool registrations) were not tracked by the ledger.\nDeposits were returned according to the current protocol parameters.\nWhen the values of these two protocol parameters change, the deposit pot\nis adjusted by adding to, or removing from, the reserves."),(0,r.kt)("p",null,"This has several problems:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Most people expect a deposit to be paid back exactly."),(0,r.kt)("li",{parentName:"ul"},"We cannot increase the deposit amount once the reserves hits zero."),(0,r.kt)("li",{parentName:"ul"},"If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials."),(0,r.kt)("li",{parentName:"ul"},"Because of the problems above, it is going to be incredibly hard to ever change the values."),(0,r.kt)("li",{parentName:"ul"},"There is a serious issue involving hard forks.\nThe consensus layer makes the decision about whether or not to enact a hard fork based on\nthe protocol parameter update state two stability windows before the end of the epoch.\nHowever, the ledger will reject a protocol parameter update on the epoch boundary\nif the deposit pot adjustments cannot be reconciled with the reseve pot.\nThis means that if quorum is met regarding changing the major protocol version,\nbut the update is rejected on the epoch boundary, consensus will change the era but the\nledger will not change the major protocol version, leaving the ledger in a split-brain state.")),(0,r.kt)("p",null,"Because we never actually changed the values of the two deposits amounts in the protocol parameters\non mainnet, we were able to retroactively change the behavior.\nWe made the following changes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Individual deposits are tracked in the ",(0,r.kt)("inlineCode",{parentName:"li"},"DState"),"."),(0,r.kt)("li",{parentName:"ul"},"The amount deposited is always returned.")),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3195"},"pull-3195"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3202"},"pull-3202"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3217"},"pull-3217"),"]"),(0,r.kt)("h4",{id:"new-ledger-api"},"New ledger API"),(0,r.kt)("p",null,"We have significantly built up the ledger API.\nWe will eventually replace much of the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-api")," in the node repository with this ledger API."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3242"},"pull-3242"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3248"},"pull-3248"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3328"},"pull-3328"),"]"),(0,r.kt)("h4",{id:"constraint-based-generators"},"Constraint-based generators"),(0,r.kt)("p",null,"Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks\nwhich span several epochs, mimicking a real network.\nThese tests are, in theory, excellent for checking properties.\nThey are, however, very difficult to maintain and are not as random as we would like\n(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks)."),(0,r.kt)("p",null,"We have a new declaritive infrastructure for building constraint-based generators,\nwhich instead generate a random ledger state representative of not just an initial state,\nbut also those representative of the end result of a long sequence of valid blocks.\nMoreover, these generators are very fast and are much more random than our old generators.\nBefore we can start using them for our existing property tests, however, we still need to\nexpand them to generate a valid block for a given ledger state."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"),"]"),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"We continued to address technical debt as much as we can."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3167"},"pull-3167"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3170"},"pull-3170"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3172"},"pull-3172"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3175"},"pull-3175"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3184"},"pull-3184"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3205"},"pull-3205"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3208"},"pull-3208"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3210"},"pull-3210"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3212"},"pull-3212"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3218"},"pull-3218"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3222"},"pull-3222"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3223"},"pull-3223"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3224"},"pull-3224"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3225"},"pull-3225"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3229"},"pull-3229"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3239"},"pull-3239"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3241"},"pull-3241"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3244"},"pull-3244"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3245"},"pull-3245"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3249"},"pull-3249"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3260"},"pull-3260"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3263"},"pull-3263"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3264"},"pull-3264"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3268"},"pull-3268"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3269"},"pull-3269"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3270"},"pull-3270"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3274"},"pull-3274"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3276"},"pull-3276"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3277"},"pull-3277"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3286"},"pull-3286"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3290"},"pull-3290"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3295"},"pull-3295"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3296"},"pull-3296"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3306"},"pull-3306"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3307"},"pull-3307"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3310"},"pull-3310"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3311"},"pull-3311"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3316"},"pull-3316"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3320"},"pull-3320"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3323"},"pull-3323"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3327"},"pull-3327"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3331"},"pull-3331"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3332"},"pull-3332"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3333"},"pull-3333"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3338"},"pull-3338"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3341"},"pull-3341"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3347"},"pull-3347"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3350"},"pull-3350"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3351"},"pull-3351"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3352"},"pull-3352"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3354"},"pull-3354"),"]"),(0,r.kt)("h5",{id:"critical-fixes"},"Critical fixes"),(0,r.kt)("p",null,"We fixed two critical issues:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Growing block production delay on the epoch boundary: [",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3209"},"pull-3209"),"]"),(0,r.kt)("li",{parentName:"ul"},"Unexpected node shutdown from ",(0,r.kt)("inlineCode",{parentName:"li"},"balanceR"),": [",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3343"},"pull-3343"),"]")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Conway spec")," -\nComplete the first version of the conway formal specification."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"DRep stake distribution")," -\nHave the ledger compute the DRep stake distribution with acceptible performance."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Devnet ready")," -\nHave the Haskell implementation of the conway era in sync with the formal specification,\nand integrate the changes with consensus and node.\nAll the details might not be finalized, but the wire specification and the API should\nbe stable so that conway can be placed on a devnet for tool builders to start integrating with."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Plutus V3")," -\nIntegrate Plutus V3 into the ledger, including a new script context which supports DReps.")),(0,r.kt)("h3",{id:"more-details"},"More details"),(0,r.kt)("p",null,"This quarterly report was based off of the following fortnightly ones:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-01-05-ledger"},"2023-01-05")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-01-19-ledger"},"2023-01-19")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-02-02-ledger"},"2023-02-02")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-02-17-ledger"},"2023-02-17")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-03-03-ledger"},"2023-03-03")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-03-17-ledger"},"2023-03-17")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-03-31-ledger"},"2023-03-31"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12637b23.8c689cc8.js b/assets/js/12637b23.8c689cc8.js new file mode 100644 index 00000000000..ae7d1207db6 --- /dev/null +++ b/assets/js/12637b23.8c689cc8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32706],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(l,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[d]="string"==typeof e?e:r,i[1]=p;for(var u=2;u{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-05-24-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-05-24-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-24-node-cli-api.md",source:"@site/blog/2023-05-24-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-05-24T00:00:00.000Z",formattedDate:"May 24, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-05-24-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-26-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-19-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-05-24---2023-06-06"},"2023-05-24 - 2023-06-06"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released. "),(0,r.kt)("li",{parentName:"ul"},"We provided assitance where needed in the release"),(0,r.kt)("li",{parentName:"ul"},"An integration repository ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fusion-flamingo"},"https://github.com/input-output-hk/fusion-flamingo")," was created to enable my team to more easily work on cardano-cli and cardano-api")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5290"},"Update ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli")," changelog")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5197"},"Propagate protocol parameters conversion errors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5149"},"Command line option for parsing UTC time to slot number")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/31"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"a"},"tasty-discover"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/30"},"Move tests to standard locations")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/26"},"Make cardano-api:internal component public")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/24"},"update chaps index")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/18"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"ErrorSpec")," check for all constructors, move golden tests together")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/17"},"Expose toAlonzoCostModels")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/9"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"ErrorsSpec")," use generated types and constructors names")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/32"},"Check changelog in tag script")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/34"},"Use tag script from ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-dev")," repository instead")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/38"},"Use .x suffix for release branches")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5291"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"cryptoInit")," instead of ",(0,r.kt)("inlineCode",{parentName:"a"},"sodiumInit"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5284"},"Move configuration tests to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-node")," tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5243"},"update chaps & integration")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5240"},"#5222 Remove ",(0,r.kt)("inlineCode",{parentName:"a"},"ApplicationName")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"ApplicationVersion")," config parameters")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/126e82e6.4290e249.js b/assets/js/126e82e6.4290e249.js new file mode 100644 index 00000000000..d1f689b8dce --- /dev/null +++ b/assets/js/126e82e6.4290e249.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96871],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),h=n,m=c["".concat(u,".").concat(h)]||c[h]||s[h]||o;return a?r.createElement(m,l(l({ref:t},d),{},{components:a})):r.createElement(m,l({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=h;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-11-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-11-02-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-ledger.md",source:"@site/blog/2022-11-02-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.275,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-02-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-02-node-cli-api"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Axiomatic Set Theory",id:"axiomatic-set-theory",level:3},{value:"Completed Technical Debt",id:"completed-technical-debt",level:3}],d={toc:p},c="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We have made the decision to use the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger repository"),"\nin place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure\nto the model. In particular, we now have a lot of support for axiomatic set theory.\nWhile the next ledger era is still in the design phase, most of the team remains working\non technical debt.\nIn particular, we have moved a lot more code out of the Shelley specific modules and into\na ledger core module, we have finished up our benchmarking around the problematic ",(0,n.kt)("inlineCode",{parentName:"p"},"TICKF"),"\nledger transition (while improving the performance), made conveniences to the development\nenvironment, cleaned up all the recent changes to the cost model, added a lot of documentation,\nfixed some flaky tests, and deleted some dead code."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"axiomatic-set-theory"},"Axiomatic Set Theory"),(0,n.kt)("p",null,"The formal ledger model now has support for much of the set theory that we make use of in\nthe formal ledger specifications. See [",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/20"},"pull-20"),"]."),(0,n.kt)("h3",{id:"completed-technical-debt"},"Completed Technical Debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We have addressed issues with two of our most problematic and flaky tests.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3039"},"pull-3039"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3093"},"pull-3093"),"]."),(0,n.kt)("li",{parentName:"ul"},"We have added more documentation and tests to the Twiddler module. This is a module which\nmakes our CBOR serialization round-trip tests much more robust, and will also hopefully\nhelp enforce the mandate for downstream libraries to never re-serialize data that needs\nto be hashed. See [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3073"},"pull-3073"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3095"},"pull-3095"),"]\n(we cannot merge 3095 just yet, due to a preference for merging other features)."),(0,n.kt)("li",{parentName:"ul"},"We have finished our long analysis of the problematic ",(0,n.kt)("inlineCode",{parentName:"li"},"TICKF")," transition.\nWe now have a lot of benchmarks surrounding this code, and have added performance improvements.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3068"},"pull-3068"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3035"},"issue-3035"),"]."),(0,n.kt)("li",{parentName:"ul"},"We have restored support for\n",(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/ghcid"},"ghcid"),"\nin our repository. This is a tool for developing with Haskell that many of us find greatly\nimproves our productivity by providing us with constant feedback from the type checker.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3112"},"pull-3112"),"]."),(0,n.kt)("li",{parentName:"ul"},"After much activity on the cost model, we have done some final clean up of the code.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3075"},"pull-3075"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3101"},"pull-3101"),"]."),(0,n.kt)("li",{parentName:"ul"},"We moved a lot of the existing user facing documentation regarding native tokens into the\nledger repository, and cleaned it up\n(most of the heavy lifting was done by our amazing technical writers).\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3091"},"pull-3091"),"]."),(0,n.kt)("li",{parentName:"ul"},"We removed dead code. See [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3089"},"pull-3089"),"]."),(0,n.kt)("li",{parentName:"ul"},"We moved a lot of code from the Shelley specific libraries to the ledger core library.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3109"},"pull-3109"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3110"},"pull-3110"),"]."),(0,n.kt)("li",{parentName:"ul"},"We've removed more of the awkward legacy template Haskell names.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3108"},"pull-3108"),"].")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12a1613f.0e2fe3c1.js b/assets/js/12a1613f.0e2fe3c1.js new file mode 100644 index 00000000000..1022b945806 --- /dev/null +++ b/assets/js/12a1613f.0e2fe3c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4615],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),m=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=m(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=m(n),p=r,g=d["".concat(c,".").concat(p)]||d[p]||u[p]||i;return n?a.createElement(g,o(o({ref:t},s),{},{components:n})):a.createElement(g,o({ref:t},s))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var m=2;m{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>m});var a=n(87462),r=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-08-11-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-08-11-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-11-performance-and-tracing.md",source:"@site/blog/2023-08-11-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-08-11T00:00:00.000Z",formattedDate:"August 11, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.335,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-08-11-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-11-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-10-mithril"}},c={authorsImageUrls:[void 0]},m=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],s={toc:m},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: We've concluded benchmarking node version ",(0,r.kt)("inlineCode",{parentName:"li"},"8.2.0"),"."),(0,r.kt)("li",{parentName:"ul"},"Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.")),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"As part of our release benchmarking cycle, we've completed and analysed the runs for the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.0")," version of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version."),(0,r.kt)("h3",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"A significant amount of optimizations for the new tracing system has finally been merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),". At the moment,\nwe're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding\ninsight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward. "),(0,r.kt)("p",null,"Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent\nand reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were\nable to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks. "),(0,r.kt)("p",null,"A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12c83d8a.ebd0fc40.js b/assets/js/12c83d8a.ebd0fc40.js new file mode 100644 index 00000000000..e938f6ed272 --- /dev/null +++ b/assets/js/12c83d8a.ebd0fc40.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58774],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},h=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,d=s["".concat(u,".").concat(m)]||s[m]||c[m]||o;return r?a.createElement(d,i(i({ref:t},h),{},{components:r})):a.createElement(d,i({ref:t},h))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Hydra Team Update",slug:"2023-07-28-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-28-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-28-hydra.md",source:"@site/blog/2023-07-28-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-28T00:00:00.000Z",formattedDate:"July 28, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.005,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-28-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-07-31-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-27-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},s="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"During this week, the Hydra team achieved significant progress in various areas.\nThey conducted the monthly review meeting for July, which continously ensures\ntransparent communication and project evaluation. The team migrated the core\nlogic of the node to an event-sourced architecture and incremental writes of\nevents to persistence, enhancing the project","\u2019","s performance and maintainability.\nFurthermore, the team added the ability to read protocol parameters via the API\nand fixed the CI workflows to support pull requests from forks of external\ncontributors, streamlining the development process for community involvement."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Held the monthly review meeting for July (",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/14ANZ3efuxgXpYK94EBWxZLR9TtN7voru/"},"recording"),")"),(0,n.kt)("li",{parentName:"ul"},"Migrate the core logic of the node to an event-sourced architecture ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/999"},"#999")),(0,n.kt)("li",{parentName:"ul"},"Updated persistence to faster incremental writes of events ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1000"},"#1000")),(0,n.kt)("li",{parentName:"ul"},"Added ability to read protocol parameters via API ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/735"},"#735")),(0,n.kt)("li",{parentName:"ul"},"Fix CI workflows to support pull requests from forks of external contributors ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/993"},"#993")),(0,n.kt)("li",{parentName:"ul"},"Updated to GHC 9.2.8 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1005"},"#1005")),(0,n.kt)("li",{parentName:"ul"},"Prepared an updated use cases section on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family"},"https://hydra.family")," (published with next release)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Publish monthly report"),(0,n.kt)("li",{parentName:"ul"},"Complete user transaction submission work ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/966"},"#966")),(0,n.kt)("li",{parentName:"ul"},"Remove commit from internal wallet (deprecated) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/954"},"#954"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12d5d907.1addbe15.js b/assets/js/12d5d907.1addbe15.js new file mode 100644 index 00000000000..65c7b82bf48 --- /dev/null +++ b/assets/js/12d5d907.1addbe15.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16348],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=u(a),d=n,m=h["".concat(s,".").concat(d)]||h[d]||c[d]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-04-07-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-07-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-07-hydra.md",source:"@site/blog/2023-04-07-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-07T00:00:00.000Z",formattedDate:"April 7, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.875,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-07-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-14-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-06-mithril"}},s={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:u},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team published the monthly report for March, created\nseparate links for different versions of documentation, and clarified potential\nsolutions for the Rollbacks bug. The team also discussed Query API requests for\nthe Hydra Voting project and met with community members to answer questions\nabout Hydra. Moving forward, the team plans to integrate the specification into\nthe repository, implement a short-term fix for the Rollbacks issue, and draft a\nQuery API ADR."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published monthly reports on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-03"},"website")),(0,n.kt)("li",{parentName:"ul"},"Separate last released and latest versions of docs (e.g. normal ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/core-concepts/behavior/#replay-of-past-server-outputs"},"released")," vs. ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/core-concepts/behavior/#replay-of-past-server-outputs"},"/unstable"),")"),(0,n.kt)("li",{parentName:"ul"},"Discussed Query API concerns from Hydra Voting project (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/discussions/797"},"link"),")"),(0,n.kt)("li",{parentName:"ul"},"Clarified rollbacks bug and defined possible solutions (short and long term) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Met with community members to answer questions about Hydra")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finally get the docs integrated into the repository ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693")),(0,n.kt)("li",{parentName:"ul"},"Dirt road fix for rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Disclaimer text and detail known issues about mainnet compatibility\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12ef8706.114e8e85.js b/assets/js/12ef8706.114e8e85.js new file mode 100644 index 00000000000..2382f66e295 --- /dev/null +++ b/assets/js/12ef8706.114e8e85.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[61039],{91703:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/6","page":6,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/5","nextPage":"/cardano-updates/tags/hydra/page/7","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/1377d1fa.d6f4b9df.js b/assets/js/1377d1fa.d6f4b9df.js new file mode 100644 index 00000000000..894437016b2 --- /dev/null +++ b/assets/js/1377d1fa.d6f4b9df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79841],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var u=n.createContext({}),p=function(t){var e=n.useContext(u),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(u.Provider,{value:e},t.children)},c="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},s=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,u=t.parentName,d=i(t,["components","mdxType","originalType","parentName"]),c=p(a),s=r,h=c["".concat(u,".").concat(s)]||c[s]||m[s]||o;return a?n.createElement(h,l(l({ref:e},d),{},{components:a})):n.createElement(h,l({ref:e},d))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var u in e)hasOwnProperty.call(e,u)&&(i[u]=e[u]);i.originalType=t,i[c]="string"==typeof t?t:r,l[1]=i;for(var p=2;p{a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-10-19-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-10-19-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-19-node-cli-api.md",source:"@site/blog/2022-10-19-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-10-19T00:00:00.000Z",formattedDate:"October 19, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.57,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-10-19-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-21-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-18-consensus"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-submit-api",id:"cardano-submit-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],d={toc:p},c="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-10-19---2022-11-01"},"2022-10-19 - 2022-11-01"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Ask the node about the current mempool's capacity and sizes"),(0,r.kt)("li",{parentName:"ul"},"Request the next transaction from the mempool's current list"),(0,r.kt)("li",{parentName:"ul"},"Query if a particular transaction exists in the mempool")),(0,r.kt)("p",null,"Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric ",(0,r.kt)("inlineCode",{parentName:"p"},"tx_submit_fail_count")," has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Documentation improvments"),(0,r.kt)("li",{parentName:"ul"},"Release 1.35.4 was merged & released"),(0,r.kt)("li",{parentName:"ul"},"Exported various types from cardano-api that were requested by community members")),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4508"},"Release 1.35.4"))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4276"},"Add tx-mempool command to CLI")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4538"},"Fix query era mismatch bug in transaction build command")),(0,r.kt)("li",{parentName:"ul"},"[Serenity]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4516"},"Condense Read and Validation modules in cardano-cli"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4482"},"Return Lovelace for calculateMinimumUTxO")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4554"},"Export IsPlutusScriptLanguage from cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4546"},"Reduce exposed modules in cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4568"},"Add ToJSON and FromJSON instances for Address")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4565"},"Export TxIns type alias from Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4534"},"Export more generators from cardano-api"))),(0,r.kt)("h3",{id:"cardano-submit-api"},"cardano-submit-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4566"},"Add tx_submit_fail_count metric"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4549"},"Upgrade to cabal-3.8.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4613"},"Update building-the-node-using-nix.md"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"None")),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/144cea98.f99162b0.js b/assets/js/144cea98.f99162b0.js new file mode 100644 index 00000000000..c195150544a --- /dev/null +++ b/assets/js/144cea98.f99162b0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[50881],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function o(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function r(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(o[a]=t[a]);return o}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(o[a]=t[a])}return o}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,o=t.mdxType,r=t.originalType,p=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),d=u(a),h=o,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||r;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var r=a.length,l=new Array(r);l[0]=h;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[d]="string"==typeof t?t:o,l[1]=i;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>i,toc:()=>u});var n=a(87462),o=(a(67294),a(3905));const r={title:"Node API & CLI Team Update",slug:"2023-02-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-02-22-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-22-node-cli-api.md",source:"@site/blog/2023-02-22-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-02-22T00:00:00.000Z",formattedDate:"February 22, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.385,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-02-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-22-consensus"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-02-21-db-sync"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"Documentation",id:"documentation",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function m(t){let{components:e,...a}=t;return(0,o.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"2023-02-22---2023-03-07"},"2023-02-22 - 2023-03-07"),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"General bug fixes "),(0,o.kt)("h2",{id:"completed"},"Completed"),(0,o.kt)("h3",{id:"docs"},"docs"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4882"},"Fix some markdown links")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4881"},"Update changelog with PR4788 changes"))),(0,o.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,o.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,o.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,o.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,o.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4901"},"Remove pattern Tx"))),(0,o.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs"))),(0,o.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,o.kt)("h2",{id:"in-progress"},"In Progress"),(0,o.kt)("h2",{id:"documentation"},"Documentation"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4949"},"Fix path to mkfiles.sh script in documentation"))),(0,o.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4932"},"New build complete job")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4764"},"Update ouroboros-network"))),(0,o.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4910"},"New --node-socket-path cli option")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4909"},"Fix qKesKesKeyExpiry to not always be null")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4880"},"Detect invalid counter and certificate")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4823"},"Straight line code for tx commands")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"New cardano-cli ping command.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4655"},"Move cardano-ping from ouroboros-network to cardano-node project"))),(0,o.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4941"},"Combinators for TxBodyCon\u017btent and related types")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4903"},"Reduce number of calls to toLedgerPParams")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4825"},"Better error message for query utxo without oops 2"))),(0,o.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4911"},"Less verbose node-to-client and node-to-node version logging"))),(0,o.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4879"},"Re-enable kes-period-info test")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3783"},"Transaction debug script command"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/144cf255.88218aa6.js b/assets/js/144cf255.88218aa6.js new file mode 100644 index 00000000000..c169b9f7788 --- /dev/null +++ b/assets/js/144cf255.88218aa6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55553],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>d});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},h=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(r),c=i,d=u["".concat(p,".").concat(c)]||u[c]||m[c]||a;return r?n.createElement(d,o(o({ref:t},h),{},{components:r})):n.createElement(d,o({ref:t},h))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var n=r(87462),i=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-11-04-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},o="High level overview",l={permalink:"/cardano-updates/2022-11-04-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-mithril.md",source:"@site/blog/2022-11-04-mithril.md",title:"Mithril Team Update",description:"This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.",date:"2022-11-04T00:00:00.000Z",formattedDate:"November 4, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.015,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Mithril Team Update",slug:"2022-11-04-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-04-hydra"},nextItem:{title:"Open-Source Team",permalink:"/cardano-updates/2022-10-31-open-source"}},p={authorsImageUrls:[void 0]},s=[],h={toc:s},u="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(u,(0,n.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates."),(0,i.kt)("h1",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"We have been moving forward on the implementation of the release process ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/500"},"#500"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Setup of the new hosted environments for ",(0,i.kt)("inlineCode",{parentName:"li"},"testing-preview"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"pre-release-preview")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"release-preprod")," with their terraform and GitHub environments ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/542"},"#542")),(0,i.kt)("li",{parentName:"ul"},"Adapted the CI workflows to work with the new release process ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/543"},"#543")),(0,i.kt)("li",{parentName:"ul"},"Publication of an ",(0,i.kt)("a",{parentName:"li",href:"https://mithril.network/doc/adr/3"},"ADR3")),(0,i.kt)("li",{parentName:"ul"},"Publication of a ",(0,i.kt)("a",{parentName:"li",href:"https://mithril.network/doc/dev-blog/2022/10/28/updated-environments"},"dev blog post")," about Mithril networks evolution "),(0,i.kt)("li",{parentName:"ul"},"Releasing our first Mithril distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2244.0"},"2244.0")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the API versioning mechanism ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/565"},"#565")),(0,i.kt)("li",{parentName:"ul"},"Worked on the implementation of the stores migration process for the signer and aggregator nodes ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/562"},"#562")),(0,i.kt)("li",{parentName:"ul"},"Prepared a Mithril ",(0,i.kt)("inlineCode",{parentName:"li"},"devnet")," video demo ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/526"},"#526")),(0,i.kt)("li",{parentName:"ul"},"Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/484"},"#484"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/14eb3368.75d4fe89.js b/assets/js/14eb3368.75d4fe89.js new file mode 100644 index 00000000000..b68945b7bca --- /dev/null +++ b/assets/js/14eb3368.75d4fe89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[9817],{31986:(e,t,a)=>{a.d(t,{Z:()=>p});var n=a(87462),r=a(67294),i=a(86010),l=a(35281),s=a(52802),c=a(48596),o=a(39960),m=a(44996),d=a(95999);function u(e){return r.createElement("svg",(0,n.Z)({viewBox:"0 0 24 24"},e),r.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const h={breadcrumbsContainer:"breadcrumbsContainer_Z_bl",breadcrumbHomeIcon:"breadcrumbHomeIcon_OVgt"};function b(e){let{children:t,href:a,isLast:n}=e;const i="breadcrumbs__link";return n?r.createElement("span",{className:i,itemProp:"name"},t):a?r.createElement(o.Z,{className:i,href:a,itemProp:"item"},r.createElement("span",{itemProp:"name"},t)):r.createElement("span",{className:i},t)}function v(e){let{children:t,active:a,index:l,addMicrodata:s}=e;return r.createElement("li",(0,n.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,i.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,r.createElement("meta",{itemProp:"position",content:String(l+1)}))}function g(){const e=(0,m.Z)("/");return r.createElement("li",{className:"breadcrumbs__item"},r.createElement(o.Z,{"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:(0,i.Z)("breadcrumbs__link",h.breadcrumbsItemLink),href:e},r.createElement(u,{className:h.breadcrumbHomeIcon})))}function p(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?r.createElement("nav",{className:(0,i.Z)(l.k.docs.docBreadcrumbs,h.breadcrumbsContainer),"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},r.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&r.createElement(g,null),e.map(((t,a)=>{const n=a===e.length-1;return r.createElement(v,{key:a,active:n,index:a,addMicrodata:!!t.href},r.createElement(b,{href:t.href,isLast:n},t.label))})))):null}},34228:(e,t,a)=>{a.r(t),a.d(t,{default:()=>I});var n=a(67294),r=a(1944),i=a(52802),l=a(44996),s=a(86010),c=a(39960),o=a(13919),m=a(95999);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:a}=e;return n.createElement(c.Z,{href:t,className:(0,s.Z)("card padding--lg",d.cardContainer)},a)}function h(e){let{href:t,icon:a,title:r,description:i}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,s.Z)("text--truncate",d.cardTitle),title:r},a," ",r),i&&n.createElement("p",{className:(0,s.Z)("text--truncate",d.cardDescription),title:i},i))}function b(e){let{item:t}=e;const a=(0,i.Wl)(t);return a?n.createElement(h,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,m.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function v(e){let{item:t}=e;const a=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i.xz)(t.docId??void 0);return n.createElement(h,{href:t.href,icon:a,title:t.label,description:r?.description})}function g(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(v,{item:t});case"category":return n.createElement(b,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function p(e){let{className:t}=e;const a=(0,i.jA)();return n.createElement(E,{items:a.items,className:t})}function E(e){const{items:t,className:a}=e;if(!t)return n.createElement(p,e);const r=(0,i.MN)(t);return n.createElement("section",{className:(0,s.Z)("row",a)},r.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(g,{item:e})))))}var f=a(80049),N=a(23120),Z=a(44364),k=a(31986),_=a(92503);const L={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function T(e){let{categoryGeneratedIndex:t}=e;return n.createElement(r.d,{title:t.title,description:t.description,keywords:t.keywords,image:(0,l.Z)(t.image)})}function x(e){let{categoryGeneratedIndex:t}=e;const a=(0,i.jA)();return n.createElement("div",{className:L.generatedIndexPage},n.createElement(N.Z,null),n.createElement(k.Z,null),n.createElement(Z.Z,null),n.createElement("header",null,n.createElement(_.Z,{as:"h1",className:L.title},t.title),t.description&&n.createElement("p",null,t.description)),n.createElement("article",{className:"margin-top--lg"},n.createElement(E,{items:a.items,className:L.list})),n.createElement("footer",{className:"margin-top--lg"},n.createElement(f.Z,{previous:t.navigation.previous,next:t.navigation.next})))}function I(e){return n.createElement(n.Fragment,null,n.createElement(T,e),n.createElement(x,e))}},80049:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(87462),r=a(67294),i=a(95999),l=a(32244);function s(e){const{previous:t,next:a}=e;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},t&&r.createElement(l.Z,(0,n.Z)({},t,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&r.createElement(l.Z,(0,n.Z)({},a,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},44364:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(67294),r=a(86010),i=a(95999),l=a(35281),s=a(74477);function c(e){let{className:t}=e;const a=(0,s.E)();return a.badge?n.createElement("span",{className:(0,r.Z)(t,l.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(i.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},23120:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(67294),r=a(86010),i=a(52263),l=a(39960),s=a(95999),c=a(80143),o=a(35281),m=a(60373),d=a(74477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function h(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function b(e){let{versionLabel:t,to:a,onClick:r}=e;return n.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(l.Z,{to:a,onClick:r},n.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:l}}=(0,i.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:d}=(0,m.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:v}=(0,c.Jo)(s),g=u??(p=v).docs.find((e=>e.id===p.mainDocId));var p;return n.createElement("div",{className:(0,r.Z)(t,o.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(h,{siteTitle:l,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(b,{versionLabel:v.label,to:g.path,onClick:()=>d(v.name)})))}function g(e){let{className:t}=e;const a=(0,d.E)();return a.banner?n.createElement(v,{className:t,versionMetadata:a}):null}},92503:(e,t,a)=>{a.d(t,{Z:()=>o});var n=a(87462),r=a(67294),i=a(86010),l=a(95999),s=a(86668);const c={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function o(e){let{as:t,id:a,...o}=e;const{navbar:{hideOnScroll:m}}=(0,s.L)();return"h1"!==t&&a?r.createElement(t,(0,n.Z)({},o,{className:(0,i.Z)("anchor",m?c.anchorWithHideOnScrollNavbar:c.anchorWithStickyNavbar),id:a}),o.children,r.createElement("a",{className:"hash-link",href:`#${a}`,title:(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):r.createElement(t,(0,n.Z)({},o,{id:void 0}))}},32244:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(67294),r=a(86010),i=a(39960);function l(e){const{permalink:t,title:a,subLabel:l,isNext:s}=e;return n.createElement(i.Z,{className:(0,r.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},l&&n.createElement("div",{className:"pagination-nav__sublabel"},l),n.createElement("div",{className:"pagination-nav__label"},a))}}}]); \ No newline at end of file diff --git a/assets/js/14fc0a72.a4681214.js b/assets/js/14fc0a72.a4681214.js new file mode 100644 index 00000000000..cfc542ed521 --- /dev/null +++ b/assets/js/14fc0a72.a4681214.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43686],{52256:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/performance-tracing","page":1,"postsPerPage":5,"totalPages":5,"totalCount":25,"nextPage":"/cardano-updates/tags/performance-tracing/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/14ffac04.cf60f381.js b/assets/js/14ffac04.cf60f381.js new file mode 100644 index 00000000000..1bca6a1e668 --- /dev/null +++ b/assets/js/14ffac04.cf60f381.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59494],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(a),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||n;return a?r.createElement(h,o(o({ref:t},d),{},{components:a})):r.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,o=new Array(n);o[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:l,o[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>i,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-09-01-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-09-01-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-ledger.md",source:"@site/blog/2023-09-01-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.355,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-09-01-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-01-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-01-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3},{value:"Testing",id:"testing",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"Broadly speaking the Ledger team focused on a few main areas of Conway era:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Creation of voting state snapshots in order to correctly delay ratification for one epoch"),(0,l.kt)("li",{parentName:"ul"},"Validation of the Governance Actions sequencing and ordering"),(0,l.kt)("li",{parentName:"ul"},"Proper expiry of DReps and Proposal Procedures"),(0,l.kt)("li",{parentName:"ul"},"Expanding Conway Genesis functionality"),(0,l.kt)("li",{parentName:"ul"},"Utilization of some of the new Protocol Parameters in ledger validation rules")),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway-era"},"Conway era"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3659"},"pull-3659")," - Validate Network for ProposalProcedure and TreasuryWithdrawal"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3637"},"pull-3637")," - Avoid using sequence of tuples, by adding GovActionId to GovActionState"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3651"},"pull-3651")," - Inactive DReps"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3664"},"pull-3664")," - Track proposal expiry"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3668"},"pull-3668")," - Add min committee size predicate to NewCommittee"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3669"},"pull-3669")," - Add Proposal deposit check against PParam"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3676"},"pull-3676")," - Fix inactive PoolStake not counting as Drep Stake"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3635"},"pull-3635")," - Make snapshots of GovActionsState"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3670"},"pull-3670")," - Validate previously enacted govAction"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3694"},"pull-3694")," - Improve error reporting on the positive coin decoder"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3674"},"pull-3674")," - Added RATIFY thresholds"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3684"},"pull-3684")," - Add proposal delaying, remove predicate failure from ENACT"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3688"},"pull-3688")," - DRep Refunds and update evalTransactionBalance")),(0,l.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3677"},"pull-3677")," - Minor patch that fixes the DRep distribution computation"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3686"},"pull-3686")," - Post patch release fixup"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3695"},"pull-3695")," - Changelog for cardano-node-8.3 release"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3683"},"pull-3683")," - Add two new bench mark programs")),(0,l.kt)("h3",{id:"testing"},"Testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3662"},"pull-3662")," - Equality on raw types")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/15072f11.49e121a3.js b/assets/js/15072f11.49e121a3.js new file mode 100644 index 00000000000..dae693cb273 --- /dev/null +++ b/assets/js/15072f11.49e121a3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83129],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),d=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=d(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=d(r),m=n,g=s["".concat(u,".").concat(m)]||s[m]||c[m]||o;return r?a.createElement(g,l(l({ref:t},p),{},{components:r})):a.createElement(g,l({ref:t},p))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:n,l[1]=i;for(var d=2;d{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-11-07-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/quarterly/2022-11-07-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-07-ledger.md",source:"@site/quarterly/2022-11-07-ledger.md",title:"Ledger Team Update",description:"Ledger Quarterly Update",date:"2022-11-07T00:00:00.000Z",formattedDate:"November 7, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/quarterly/tags/ledger"}],readingTime:1.255,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-07-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/quarterly/2022-11-09-network"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/quarterly/2022-10-07-node-cli-api"}},u={authorsImageUrls:[void 0]},d=[{value:"Ledger Quarterly Update",id:"ledger-quarterly-update",level:2},{value:"2022-09 - 2022-11-04",id:"2022-09---2022-11-04",level:2},{value:"Next steps",id:"next-steps",level:2}],p={toc:d},s="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"ledger-quarterly-update"},"Ledger Quarterly Update"),(0,n.kt)("h2",{id:"2022-09---2022-11-04"},"2022-09 - 2022-11-04"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We finished a minimal ledger era capable of master key rotation.\nThis will be re-purposed our upcoming work."),(0,n.kt)("li",{parentName:"ul"},"We have the humble beginnings of a proper ledger API."),(0,n.kt)("li",{parentName:"ul"},"We improved the problematic cost model serialization\n(recall the song and dance about updating the cost model one epoch after the hard fork)."),(0,n.kt)("li",{parentName:"ul"},"We have added benchmarks for problematic areas."),(0,n.kt)("li",{parentName:"ul"},"Massive repository restructure and cleanup.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Unified and consistent variable name schemes (not completely finished, but nearly there)."),(0,n.kt)("li",{parentName:"ul"},"Massive reduction in type constraints, which causes a lot of developer friction,\nin our code and also downstream."),(0,n.kt)("li",{parentName:"ul"},"More organized module structures."),(0,n.kt)("li",{parentName:"ul"},"Improved generators for our property tests."),(0,n.kt)("li",{parentName:"ul"},"We removed our dependency on cardano-prelude."))),(0,n.kt)("li",{parentName:"ul"},"The formal ledger model has come a long way.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"We created a fork of Agda that provides some meta-programming support for the ledger rules."),(0,n.kt)("li",{parentName:"ul"},"We have a large amount of the basic UTxO support in the model."),(0,n.kt)("li",{parentName:"ul"},"We can generate a good looking PDF from the model."),(0,n.kt)("li",{parentName:"ul"},"We can produce Haskell from the model."),(0,n.kt)("li",{parentName:"ul"},"We have a nice finite set theory library that we can use for many of the ledger rules."),(0,n.kt)("li",{parentName:"ul"},"We have nix support for the model.")))),(0,n.kt)("h2",{id:"next-steps"},"Next steps"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Individual tracking of deposits. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3113"},"issue-3113"),"]"),(0,n.kt)("li",{parentName:"ul"},"Versioned CBOR encoders/decoders. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3014"},"issue-3014"),"]"),(0,n.kt)("li",{parentName:"ul"},"New ledger era transaction body (and the surround work associated with it)."),(0,n.kt)("li",{parentName:"ul"},"Designs for the next ledger era.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/154dea53.1fc8ba85.js b/assets/js/154dea53.1fc8ba85.js new file mode 100644 index 00000000000..bf365f05d61 --- /dev/null +++ b/assets/js/154dea53.1fc8ba85.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45542],{46622:a=>{a.exports=JSON.parse('{"label":"ledger","permalink":"/cardano-updates/tags/ledger","allTagsPath":"/cardano-updates/tags","count":30}')}}]); \ No newline at end of file diff --git a/assets/js/15691c1d.51e197de.js b/assets/js/15691c1d.51e197de.js new file mode 100644 index 00000000000..9626a2cb299 --- /dev/null +++ b/assets/js/15691c1d.51e197de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43729],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>y});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),u=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=u(n),h=a,y=d["".concat(l,".").concat(h)]||d[h]||p[h]||r;return n?i.createElement(y,o(o({ref:t},c),{},{components:n})):i.createElement(y,o({ref:t},c))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var i=n(87462),a=(n(67294),n(3905));const r={title:"SECP bindings Security Issue Report",slug:"2023-08-17-secp-issue",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2023-08-17-secp-issue",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-secp-security-issue-report.md",source:"@site/blog/2023-08-17-secp-security-issue-report.md",title:"SECP bindings Security Issue Report",description:"Security Issue Report: SECP256k1 bug",date:"2023-08-17T00:00:00.000Z",formattedDate:"August 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:3.3,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"SECP bindings Security Issue Report",slug:"2023-08-17-secp-issue",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-08-17-db-sync"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-15-node-cli-api"}},l={authorsImageUrls:[void 0]},u=[{value:"Security Issue Report: SECP256k1 bug",id:"security-issue-report-secp256k1-bug",level:2},{value:"Summary of Issue",id:"summary-of-issue",level:3},{value:"Criticality Level",id:"criticality-level",level:4},{value:"What Action was Taken",id:"what-action-was-taken",level:4},{value:"Potential Effect",id:"potential-effect",level:4},{value:"Actual Effect",id:"actual-effect",level:4},{value:"Ongoing Mitigations Needed, if any",id:"ongoing-mitigations-needed-if-any",level:4},{value:"Responsibility for Mitigations",id:"responsibility-for-mitigations",level:4},{value:"Detailed description of Incident",id:"detailed-description-of-incident",level:3},{value:"Recommendations",id:"recommendations",level:3}],c={toc:u},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,i.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"security-issue-report-secp256k1-bug"},"Security Issue Report: SECP256k1 bug"),(0,a.kt)("p",null,"Date Occurred: July 15, 2022\nSeverity: Potentially Very High if exploited on Mainnet\nAuthors: I\xf1igo Querejeta Azurmendi"),(0,a.kt)("p",null,"Date of Report: August 17, 2023"),(0,a.kt)("h3",{id:"summary-of-issue"},"Summary of Issue"),(0,a.kt)("h4",{id:"criticality-level"},"Criticality Level"),(0,a.kt)("p",null,"Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet\nContext"),(0,a.kt)("p",null,"New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains.\nHow was the Issue Detected"),(0,a.kt)("p",null,"The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there."),(0,a.kt)("h4",{id:"what-action-was-taken"},"What Action was Taken"),(0,a.kt)("p",null,"The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod).\nFixes were applied to prevent the use of the primitives.\nA full security audit was carried out on the bindings.\nThe rollout of the primitives was postponed to a new hard fork (Valentine)"),(0,a.kt)("h4",{id:"potential-effect"},"Potential Effect"),(0,a.kt)("p",null,"The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction."),(0,a.kt)("h4",{id:"actual-effect"},"Actual Effect"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Delay to the Vasil hard-fork"),(0,a.kt)("li",{parentName:"ul"},"Temporary removal of SECP256k1 primitives"),(0,a.kt)("li",{parentName:"ul"},"Additional hard-fork to introduce SECP256k1 primitives")),(0,a.kt)("h4",{id:"ongoing-mitigations-needed-if-any"},"Ongoing Mitigations Needed, if any"),(0,a.kt)("p",null,"None"),(0,a.kt)("h4",{id:"responsibility-for-mitigations"},"Responsibility for Mitigations"),(0,a.kt)("p",null,"Core team"),(0,a.kt)("h3",{id:"detailed-description-of-incident"},"Detailed description of Incident"),(0,a.kt)("p",null,"New Plutus ",(0,a.kt)("strong",{parentName:"p"},"secp256k1")," cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet."),(0,a.kt)("p",null,"The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L518"},"This")," is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L61"},"expected")," structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely."),(0,a.kt)("li",{parentName:"ul"},"The same happened with the Schnorr ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1_schnorrsig.h#L170"},"verification function"),". It takes as input a SECP256k1_xonly_pubkey, which is again an ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1_extrakeys.h#L10"},"opaque structure")," that holds a parsed and valid public key.")),(0,a.kt)("p",null,"The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated."),(0,a.kt)("p",null,"The fix was addressed in ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/289"},"this")," PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts."),(0,a.kt)("h3",{id:"recommendations"},"Recommendations"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Check all new Plutus bindings for correct use."),(0,a.kt)("li",{parentName:"ul"},"Audit all new Plutus built-in bindings."),(0,a.kt)("li",{parentName:"ul"},"Continue to develop specific End-to-End tests for all new Plutus features."),(0,a.kt)("li",{parentName:"ul"},'Do not assume that any existing library functions are "safe". Treat all external calls circumspectly.')))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/15dc596d.ecdc1050.js b/assets/js/15dc596d.ecdc1050.js new file mode 100644 index 00000000000..72138efb580 --- /dev/null +++ b/assets/js/15dc596d.ecdc1050.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6962],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(r),d=a,y=c["".concat(l,".").concat(d)]||c[d]||m[d]||o;return r?n.createElement(y,s(s({ref:t},u),{},{components:r})):n.createElement(y,s({ref:t},u))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:a,s[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"System Test Team Update",slug:"2022-11-02-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-11-02-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-system-test.md",source:"@site/blog/2022-11-02-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.4,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"System Test Team Update",slug:"2022-11-02-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2022-11-02-release"},nextItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-11-01-db-sync"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have been focused on:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Fully opening our test results (on top of the existing tests & tools):",(0,a.kt)("br",{parentName:"li"}),"See ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/"},"cardano-node-tests webpage"),"."),(0,a.kt)("li",{parentName:"ul"},"Started to test and automate the new functionalities added in the ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35.4-rc1")," node tag",(0,a.kt)("br",{parentName:"li"}),"See ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.4_rc1/src_docs/source/test_results/node/tag_1_35_4_rc1.rst"},"test results tracking page"),"."),(0,a.kt)("li",{parentName:"ul"},"Made some improvements to the automated db-sync sync tests",(0,a.kt)("br",{parentName:"li"}),"See ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/tree/db_sync_tests/db_sync_tests"},"db-sync tests"),"."),(0,a.kt)("li",{parentName:"ul"},"Multiple cleanups and updates to the cardano-node-tests framework"),(0,a.kt)("li",{parentName:"ul"},"Updated the nightly pipelines for the cardano-node-tests after the Babbage HF")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/166775fd.be23135f.js b/assets/js/166775fd.be23135f.js new file mode 100644 index 00000000000..520e315ed9d --- /dev/null +++ b/assets/js/166775fd.be23135f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[99847],{39399:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/ledger/page/2","page":2,"postsPerPage":5,"totalPages":6,"totalCount":30,"previousPage":"/cardano-updates/tags/ledger","nextPage":"/cardano-updates/tags/ledger/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/16a93549.ab7d990e.js b/assets/js/16a93549.ab7d990e.js new file mode 100644 index 00000000000..84faca841d5 --- /dev/null +++ b/assets/js/16a93549.ab7d990e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4307],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(r),m=n,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||o;return r?a.createElement(h,l(l({ref:t},d),{},{components:r})):a.createElement(h,l({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"SRE Team Update",slug:"2023-07-07-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-07-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-sre.md",source:"@site/blog/2023-07-07-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.815,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-07-07-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-07-hydra"},nextItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-07-06-developer-experience"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ogmios",id:"cardano-ogmios",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-rosetta",id:"cardano-rosetta",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Spongix",id:"spongix",level:3}],d={toc:u},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment"),(0,n.kt)("li",{parentName:"ul"},"Explorer component updates"),(0,n.kt)("li",{parentName:"ul"},"Spongix caching server rewrite for R2 Cloudflare support and various performance improvements")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nixos service update to enable non-systemd socket activation multi-node relays: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5360"},"cardano-node-pull-5360"))),(0,n.kt)("h3",{id:"cardano-ogmios"},"Cardano-ogmios"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano ogmios bump to 5.6.0 for nixos service: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ogmios/pull/6"},"cardano-ogmios-pull-6"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/88a17c9...dfde751"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-rosetta"},"Cardano-rosetta"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-rosetta nixos modifications for rosetta 2.1.0 service: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/cardano-rosetta/pull/532"},"cardano-rosetta-pull-532"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-node entrypoint improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/99"},"cardano-world-pull-99")),(0,n.kt)("li",{parentName:"ul"},"Further automate pool performance SQL query: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/100"},"cardano-world-pull-100")),(0,n.kt)("li",{parentName:"ul"},"Performance and benchmark job related tweaks: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/02f1ba424d3e36bd114df6f53b769d2cd25301c3"},"cardano-world-commit")),(0,n.kt)("li",{parentName:"ul"},"Explorer related component version bumps and traefik definition handline: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/101"},"cardano-world-pull-101"))),(0,n.kt)("h3",{id:"spongix"},"Spongix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/spongix/compare/afd77728f5823d61732425df52a363949096e163...4890ff93308f45584bea8443cc13fbc16c8ce911"},"spongix-simple-branch"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1752e4e5.873d8644.js b/assets/js/1752e4e5.873d8644.js new file mode 100644 index 00000000000..afdb1b96dc3 --- /dev/null +++ b/assets/js/1752e4e5.873d8644.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[770],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),m=a,d=c["".concat(u,".").concat(m)]||c[m]||h[m]||o;return n?r.createElement(d,s(s({ref:t},p),{},{components:n})):r.createElement(d,s({ref:t},p))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-10-18-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-18-consensus.md",source:"@site/blog/2023-10-18-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-10-18T00:00:00.000Z",formattedDate:"October 18, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-20-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-18-mithril"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Support",id:"support",level:3}],p={toc:l},c="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node."),(0,a.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The Plutus workload benchmark for the in-memory backend ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/203#issuecomment-1768560330"},"showed no regressions")," for the metrics of interest, but it does show an increase in resource usage."),(0,a.kt)("li",{parentName:"ul"},"We got additional ad-hoc ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/5495#issuecomment-1768593069"},"measurements")," on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB."),(0,a.kt)("li",{parentName:"ul"},"We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.")),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We produced the first draft for a Survivable Eclipse Duration Model (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/422"},"422"),").")),(0,a.kt)("h3",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/amesgen"},"Esgen")," finished his cycle as release engineer. Node ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.5.0-pre"},"8.5.0")," has been released."),(0,a.kt)("li",{parentName:"ul"},"We resumed work on the subpar handling of block from the future (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4251"},"4251"),")."),(0,a.kt)("li",{parentName:"ul"},"We prepared the integration of ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5502"},"new tracing events")," for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4251"},"issue"),").")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17630979.ef34abf8.js b/assets/js/17630979.ef34abf8.js new file mode 100644 index 00000000000..678816b97c8 --- /dev/null +++ b/assets/js/17630979.ef34abf8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93724],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(r),d=a,y=c["".concat(l,".").concat(d)]||c[d]||m[d]||o;return r?n.createElement(y,s(s({ref:t},u),{},{components:r})):n.createElement(y,s({ref:t},u))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:a,s[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"System Test Team Update",slug:"2022-11-02-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-11-02-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-system-test.md",source:"@site/blog/2022-11-02-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.4,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"System Test Team Update",slug:"2022-11-02-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2022-11-02-release"},nextItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-11-01-db-sync"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have been focused on:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Fully opening our test results (on top of the existing tests & tools):",(0,a.kt)("br",{parentName:"li"}),"See ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/"},"cardano-node-tests webpage"),"."),(0,a.kt)("li",{parentName:"ul"},"Started to test and automate the new functionalities added in the ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35.4-rc1")," node tag",(0,a.kt)("br",{parentName:"li"}),"See ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.4_rc1/src_docs/source/test_results/node/tag_1_35_4_rc1.rst"},"test results tracking page"),"."),(0,a.kt)("li",{parentName:"ul"},"Made some improvements to the automated db-sync sync tests",(0,a.kt)("br",{parentName:"li"}),"See ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/tree/db_sync_tests/db_sync_tests"},"db-sync tests"),"."),(0,a.kt)("li",{parentName:"ul"},"Multiple cleanups and updates to the cardano-node-tests framework"),(0,a.kt)("li",{parentName:"ul"},"Updated the nightly pipelines for the cardano-node-tests after the Babbage HF")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/177280a4.d0786185.js b/assets/js/177280a4.d0786185.js new file mode 100644 index 00000000000..8081deba1ed --- /dev/null +++ b/assets/js/177280a4.d0786185.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95447],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(a),c=n,m=u["".concat(p,".").concat(c)]||u[c]||d[c]||o;return a?r.createElement(m,i(i({ref:t},h),{},{components:a})):r.createElement(m,i({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-11-11-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-11-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-hydra.md",source:"@site/blog/2022-11-11-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.94,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-11-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-11-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-11-ledger"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:s},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team published together with Obsidian Systems a light paper\non our "Hydra for Payments" project (',(0,n.kt)("a",{parentName:"p",href:"https://iohk.io/en/blog/posts/2022/11/10/hydra-for-payments-introducing-developer-tooling-to-unlock-micropayments-on-cardano/"},"Link"),"). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," processes. "),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published Hydra for Payments light paper (",(0,n.kt)("a",{parentName:"li",href:"https://iohk.io/en/blog/posts/2022/11/10/hydra-for-payments-introducing-developer-tooling-to-unlock-micropayments-on-cardano/"},"Link"),")"),(0,n.kt)("li",{parentName:"ul"},"Have a draft RFP ready for a first review internally"),(0,n.kt)("li",{parentName:"ul"},"Answered the internal auditor","\u2019","s questions"),(0,n.kt)("li",{parentName:"ul"},"Fixed a bug with following the chain when starting with persistence (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/599"},"#599"),")"),(0,n.kt)("li",{parentName:"ul"},"Minor improvements to logging for better observability (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/598"},"#598"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/600"},"#600"),")"),(0,n.kt)("li",{parentName:"ul"},"Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/590"},"#590"),")")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement event-sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Close more gaps ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: ",(0,n.kt)("strong",{parentName:"li"},'"Developing Hydra" on Day 2, Nov 21st, 13:50 CET'))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17896441.12db7610.js b/assets/js/17896441.12db7610.js new file mode 100644 index 00000000000..549ad1badea --- /dev/null +++ b/assets/js/17896441.12db7610.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27918],{31986:(e,t,n)=>{n.d(t,{Z:()=>g});var a=n(87462),l=n(67294),r=n(86010),o=n(35281),s=n(52802),c=n(48596),i=n(39960),d=n(44996),m=n(95999);function u(e){return l.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),l.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl",breadcrumbHomeIcon:"breadcrumbHomeIcon_OVgt"};function b(e){let{children:t,href:n,isLast:a}=e;const r="breadcrumbs__link";return a?l.createElement("span",{className:r,itemProp:"name"},t):n?l.createElement(i.Z,{className:r,href:n,itemProp:"item"},l.createElement("span",{itemProp:"name"},t)):l.createElement("span",{className:r},t)}function p(e){let{children:t,active:n,index:o,addMicrodata:s}=e;return l.createElement("li",(0,a.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,l.createElement("meta",{itemProp:"position",content:String(o+1)}))}function h(){const e=(0,d.Z)("/");return l.createElement("li",{className:"breadcrumbs__item"},l.createElement(i.Z,{"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:(0,r.Z)("breadcrumbs__link",v.breadcrumbsItemLink),href:e},l.createElement(u,{className:v.breadcrumbHomeIcon})))}function g(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?l.createElement("nav",{className:(0,r.Z)(o.k.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},l.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&l.createElement(h,null),e.map(((t,n)=>{const a=n===e.length-1;return l.createElement(p,{key:n,active:a,index:n,addMicrodata:!!t.href},l.createElement(b,{href:t.href,isLast:a},t.label))})))):null}},15154:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});var a=n(67294),l=n(1944),r=n(902);const o=a.createContext(null);function s(e){let{children:t,content:n}=e;const l=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(o.Provider,{value:l},t)}function c(){const e=(0,a.useContext)(o);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=c();return a.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var d=n(86010),m=n(87524),u=n(80049);function v(){const{metadata:e}=c();return a.createElement(u.Z,{previous:e.previous,next:e.next})}var b=n(23120),p=n(44364),h=n(35281),g=n(95999);function E(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function f(e){let{lastUpdatedBy:t}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function L(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:l}=e;return a.createElement("span",{className:h.k.common.lastUpdated},a.createElement(g.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(E,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:l?a.createElement(f,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var Z=n(84881),N=n(71526);const C={lastUpdated:"lastUpdated_vwxv"};function _(e){return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(N.Z,e)))}function k(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(Z.Z,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",C.lastUpdated)},(n||l)&&a.createElement(L,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function x(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:o}=e,s=o.length>0,i=!!(t||n||r);return s||i?a.createElement("footer",{className:(0,d.Z)(h.k.docs.docFooter,"docusaurus-mt-lg")},s&&a.createElement(_,{tags:o}),i&&a.createElement(k,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var T=n(86043),H=n(93743),U=n(87462);const y={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function A(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,U.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",y.tocCollapsibleButton,!t&&y.tocCollapsibleButtonExpanded,n.className)}),a.createElement(g.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const w={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function I(e){let{toc:t,className:n,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:o,toggleCollapsed:s}=(0,T.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(w.tocCollapsible,!o&&w.tocCollapsibleExpanded,n)},a.createElement(A,{collapsed:o,onClick:s}),a.createElement(T.z,{lazy:!0,className:w.tocCollapsibleContent,collapsed:o},a.createElement(H.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const M={tocMobile:"tocMobile_ITEo"};function B(){const{toc:e,frontMatter:t}=c();return a.createElement(I,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(h.k.docs.docTocMobile,M.tocMobile)})}var O=n(39407);function V(){const{toc:e,frontMatter:t}=c();return a.createElement(O.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:h.k.docs.docTocDesktop})}var S=n(92503),P=n(80210);function R(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(h.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(S.Z,{as:"h1"},n)),a.createElement(P.Z,null,t))}var D=n(31986);const z={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function F(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?a.createElement(B,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(V,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&z.docItemCol)},a.createElement(b.Z,null),a.createElement("div",{className:z.docItemContainer},a.createElement("article",null,a.createElement(D.Z,null),a.createElement(p.Z,null),n.mobile,a.createElement(R,null,t),a.createElement(x,null)),a.createElement(v,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function j(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(s,{content:e.content},a.createElement(l.FG,{className:t},a.createElement(i,null),a.createElement(F,null,a.createElement(n,null))))}},80049:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(87462),l=n(67294),r=n(95999),o=n(32244);function s(e){const{previous:t,next:n}=e;return l.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},t&&l.createElement(o.Z,(0,a.Z)({},t,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&l.createElement(o.Z,(0,a.Z)({},n,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},44364:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(67294),l=n(86010),r=n(95999),o=n(35281),s=n(74477);function c(e){let{className:t}=e;const n=(0,s.E)();return n.badge?a.createElement("span",{className:(0,l.Z)(t,o.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}},23120:(e,t,n)=>{n.d(t,{Z:()=>h});var a=n(67294),l=n(86010),r=n(52263),o=n(39960),s=n(95999),c=n(80143),i=n(35281),d=n(60373),m=n(74477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function v(e){const t=u[e.versionMetadata.banner];return a.createElement(t,e)}function b(e){let{versionLabel:t,to:n,onClick:l}=e;return a.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(o.Z,{to:n,onClick:l},a.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function p(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,r.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:m}=(0,d.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:p}=(0,c.Jo)(s),h=u??(g=p).docs.find((e=>e.id===g.mainDocId));var g;return a.createElement("div",{className:(0,l.Z)(t,i.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(v,{siteTitle:o,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(b,{versionLabel:p.label,to:h.path,onClick:()=>m(p.name)})))}function h(e){let{className:t}=e;const n=(0,m.E)();return n.banner?a.createElement(p,{className:t,versionMetadata:n}):null}},84881:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(67294),l=n(95999),r=n(35281),o=n(87462),s=n(86010);const c={iconEdit:"iconEdit_Z9Sw"};function i(e){let{className:t,...n}=e;return a.createElement("svg",(0,o.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(c.iconEdit,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function d(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},a.createElement(i,null),a.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},32244:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(67294),l=n(86010),r=n(39960);function o(e){const{permalink:t,title:n,subLabel:o,isNext:s}=e;return a.createElement(r.Z,{className:(0,l.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&a.createElement("div",{className:"pagination-nav__sublabel"},o),a.createElement("div",{className:"pagination-nav__label"},n))}},39407:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(87462),l=n(67294),r=n(86010),o=n(93743);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},c="table-of-contents__link toc-highlight",i="table-of-contents__link--active";function d(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(s.tableOfContents,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:c,linkActiveClassName:i})))}},93743:(e,t,n)=>{n.d(t,{Z:()=>b});var a=n(87462),l=n(67294),r=n(86668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function s(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=s({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,l.useRef)(void 0),n=d();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=i(s,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===d)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const v=l.memo(u);function b(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...b}=e;const p=(0,r.L)(),h=d??p.tableOfContents.minHeadingLevel,g=u??p.tableOfContents.maxHeadingLevel,E=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>s({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:h,maxHeadingLevel:g});return m((0,l.useMemo)((()=>{if(c&&i)return{linkClassName:c,linkActiveClassName:i,minHeadingLevel:h,maxHeadingLevel:g}}),[c,i,h,g])),l.createElement(v,(0,a.Z)({toc:E,className:n,linkClassName:c},b))}},13008:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(67294),l=n(86010),r=n(39960);const o={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function s(e){let{permalink:t,label:n,count:s}=e;return a.createElement(r.Z,{href:t,className:(0,l.Z)(o.tag,s?o.tagWithCount:o.tagRegular)},n,s&&a.createElement("span",null,s))}},71526:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(67294),l=n(86010),r=n(95999),o=n(13008);const s={tags:"tags_jXut",tag:"tag_QGVx"};function c(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,l.Z)(s.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:s.tag},a.createElement(o.Z,{label:t,permalink:n}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/17e76f05.72c79f2a.js b/assets/js/17e76f05.72c79f2a.js new file mode 100644 index 00000000000..559a43bd396 --- /dev/null +++ b/assets/js/17e76f05.72c79f2a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64966],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),h=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=h(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=h(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||p[c]||i;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var h=2;h{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>h});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-05-12-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-12-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-hydra.md",source:"@site/blog/2023-05-12-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.145,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-05-12-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-12-goedel"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-12-network"}},s={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:h},u="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team achieved a number of milestones, including the release\nof the first mainnet compatible version. Besides this they also addressed\ninconsistencies in rollback handling, added an architecture page to the website,\nreducing the size of logs using event IDs. They also had productive discussions\nwith researchers on plans for incremental commits/decommits and had a whiteboard\nsession on DeFi and lending protocols. The goals for next week include\ncompleting the validation of the timed transactions feature, exploring stateless\nobservation, refining the Hydra explorer ticket, writing ops instructions and\ntroubleshooting, and implementing the first end-to-end journey for external\ncommits."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released first mainnnet compatible version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.10.0"},"0.10.0")),(0,n.kt)("li",{parentName:"ul"},"Addressed inconsist handling of rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Added ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/core-concepts/architecture/"},"architecture page")," and fixed haddock links on our website ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/838"},"#838")),(0,n.kt)("li",{parentName:"ul"},"Opened a new hydra head on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Talked with researchers on initial plan for incremental commits/decommits"),(0,n.kt)("li",{parentName:"ul"},"Had a Whiteboard session on DeFi and lending protocols"),(0,n.kt)("li",{parentName:"ul"},"Reduced size of logs using event ids ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/859"},"#859")),(0,n.kt)("li",{parentName:"ul"},"Published the ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-04"},"monthly report for April"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete validation of timed transactions feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/196"},"#196")),(0,n.kt)("li",{parentName:"ul"},"Explored stateless observation and refined hydra explorer ticket ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/696"},"#696")),(0,n.kt)("li",{parentName:"ul"},"Write ","\u201c","ops","\u201d"," instructions and troubleshooting ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/569"},"#569")," and improve logs"),(0,n.kt)("li",{parentName:"ul"},"Have a first end-to-end journey for external commits implemented ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17f4ca64.bfe3c38a.js b/assets/js/17f4ca64.bfe3c38a.js new file mode 100644 index 00000000000..f4fd74ed619 --- /dev/null +++ b/assets/js/17f4ca64.bfe3c38a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[37426],{32942:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/mithril/page/3","page":3,"postsPerPage":5,"totalPages":7,"totalCount":34,"previousPage":"/cardano-updates/tags/mithril/page/2","nextPage":"/cardano-updates/tags/mithril/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/187056c8.90cfbf91.js b/assets/js/187056c8.90cfbf91.js new file mode 100644 index 00000000000..23d662506cd --- /dev/null +++ b/assets/js/187056c8.90cfbf91.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40430],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=u(r),d=n,h=c["".concat(p,".").concat(d)]||c[d]||m[d]||o;return r?a.createElement(h,i(i({ref:t},s),{},{components:r})):a.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2022-11-11-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-11-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-crypto.md",source:"@site/blog/2022-11-11-crypto.md",title:"Crypto Team Update",description:"High level overview",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.305,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-11-11-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-16-performance-and-tracing"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-11-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The SECP primitives AC has been met, and the test-vectors ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/320"},"PR")," has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/336"},"PR")," has been merged, and we've adapted the KES secure ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"PR")," to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#"),"). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork. "),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation. "),(0,n.kt)("li",{parentName:"ul"},"We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool. "),(0,n.kt)("li",{parentName:"ul"},"In parallel, we keep progressing on the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent"},"KES agent")),(0,n.kt)("li",{parentName:"ul"},"VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification. "),(0,n.kt)("li",{parentName:"ul"},"Our libsodium fork now links directly to upstream libsodium.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/18c41134.31284dc4.js b/assets/js/18c41134.31284dc4.js new file mode 100644 index 00000000000..c434dbdfcf2 --- /dev/null +++ b/assets/js/18c41134.31284dc4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[82859],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(n),m=a,k=d["".concat(l,".").concat(m)]||d[m]||p[m]||o;return n?r.createElement(k,s(s({ref:t},c),{},{components:n})):r.createElement(k,s({ref:t},c))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,s[1]=i;for(var u=2;u{n.r(t),n.d(t,{Highlight:()=>c,assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={sidebar_position:4},s="Markdown Features",i={unversionedId:"tutorial-basics/markdown-features",id:"tutorial-basics/markdown-features",title:"Markdown Features",description:"Docusaurus supports Markdown and a few additional features.",source:"@site/docs/tutorial-basics/markdown-features.mdx",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/markdown-features",permalink:"/cardano-updates/docs/tutorial-basics/markdown-features",draft:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"defaultSidebar",previous:{title:"Create a Blog Post",permalink:"/cardano-updates/docs/tutorial-basics/create-a-blog-post"},next:{title:"Deploy your site",permalink:"/cardano-updates/docs/tutorial-basics/deploy-your-site"}},l={},u=[{value:"Front Matter",id:"front-matter",level:2},{value:"Links",id:"links",level:2},{value:"Images",id:"images",level:2},{value:"Code Blocks",id:"code-blocks",level:2},{value:"Admonitions",id:"admonitions",level:2},{value:"MDX and React Components",id:"mdx-and-react-components",level:2}],c=e=>{let{children:t,color:n}=e;return(0,a.kt)("span",{style:{backgroundColor:n,borderRadius:"20px",color:"#fff",padding:"10px",cursor:"pointer"},onClick:()=>{alert(`You clicked the color ${n} with label ${t}`)}},t)},d={toc:u,Highlight:c},p="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(p,(0,r.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"markdown-features"},"Markdown Features"),(0,a.kt)("p",null,"Docusaurus supports ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("a",{parentName:"strong",href:"https://daringfireball.net/projects/markdown/syntax"},"Markdown"))," and a few ",(0,a.kt)("strong",{parentName:"p"},"additional features"),"."),(0,a.kt)("h2",{id:"front-matter"},"Front Matter"),(0,a.kt)("p",null,"Markdown documents have metadata at the top called ",(0,a.kt)("a",{parentName:"p",href:"https://jekyllrb.com/docs/front-matter/"},"Front Matter"),":"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text",metastring:'title="my-doc.md"',title:'"my-doc.md"'},"// highlight-start\n---\nid: my-doc-id\ntitle: My document title\ndescription: My document description\nslug: /my-custom-url\n---\n// highlight-end\n\n## Markdown heading\n\nMarkdown text with [links](./hello.md)\n")),(0,a.kt)("h2",{id:"links"},"Links"),(0,a.kt)("p",null,"Regular Markdown links are supported, using url paths or relative file paths."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-md"},"Let's see how to [Create a page](/create-a-page).\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-md"},"Let's see how to [Create a page](./create-a-page.md).\n")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Result:")," Let's see how to ",(0,a.kt)("a",{parentName:"p",href:"/cardano-updates/docs/tutorial-basics/create-a-page"},"Create a page"),"."),(0,a.kt)("h2",{id:"images"},"Images"),(0,a.kt)("p",null,"Regular Markdown images are supported."),(0,a.kt)("p",null,"You can use absolute paths to reference images in the static directory (",(0,a.kt)("inlineCode",{parentName:"p"},"static/img/docusaurus.png"),"):"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-md"},"![Docusaurus logo](/img/docusaurus.png)\n")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Docusaurus logo",src:n(6097).Z,width:"200",height:"200"})),(0,a.kt)("p",null,"You can reference images relative to the current file as well, as shown in ",(0,a.kt)("a",{parentName:"p",href:"/cardano-updates/docs/tutorial-extras/manage-docs-versions"},"the extra guides"),"."),(0,a.kt)("h2",{id:"code-blocks"},"Code Blocks"),(0,a.kt)("p",null,"Markdown code blocks are supported with Syntax highlighting."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'```jsx title="src/components/HelloDocusaurus.js"\nfunction HelloDocusaurus() {\n return (\n

Hello, Docusaurus!

\n )\n}\n```\n')),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-jsx",metastring:'title="src/components/HelloDocusaurus.js"',title:'"src/components/HelloDocusaurus.js"'},"function HelloDocusaurus() {\n return

Hello, Docusaurus!

;\n}\n")),(0,a.kt)("h2",{id:"admonitions"},"Admonitions"),(0,a.kt)("p",null,"Docusaurus has a special syntax to create admonitions and callouts:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},":::tip My tip\n\nUse this awesome feature option\n\n:::\n\n:::danger Take care\n\nThis action is dangerous\n\n:::\n")),(0,a.kt)("admonition",{title:"My tip",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"Use this awesome feature option")),(0,a.kt)("admonition",{title:"Take care",type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"This action is dangerous")),(0,a.kt)("h2",{id:"mdx-and-react-components"},"MDX and React Components"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://mdxjs.com/"},"MDX")," can make your documentation more ",(0,a.kt)("strong",{parentName:"p"},"interactive")," and allows using any ",(0,a.kt)("strong",{parentName:"p"},"React components inside Markdown"),":"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-jsx"},"export const Highlight = ({children, color}) => (\n {\n alert(`You clicked the color ${color} with label ${children}`)\n }}>\n {children}\n \n);\n\nThis is Docusaurus green !\n\nThis is Facebook blue !\n")),(0,a.kt)("p",null,"This is ",(0,a.kt)(c,{color:"#25c2a0",mdxType:"Highlight"},"Docusaurus green")," !"),(0,a.kt)("p",null,"This is ",(0,a.kt)(c,{color:"#1877F2",mdxType:"Highlight"},"Facebook blue")," !"))}m.isMDXComponent=!0},6097:(e,t,n)=>{n.d(t,{Z:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAT3UlEQVR42u1dCVQVV5pWXNt2N0czykl33KImZ7IgKgqIghq3KCDK+qowCek2c2K0Mx3idBxakzYxJnZiq3Gf6Bg7UdN2R51MxnTSia3gew9Rwccm7oqiiIK4sPxTt1hEHo9XvPVW1fed852Dr+67UNb/1f3/+9/731atAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO8i2CxGjDUJXzMGmcSZnmoHAF7B6GMJvYPNwq5gk1AmMS/YJMbaahtkNsRLbeghmoU4d7cDAO+NCEbhQCMjrZbe5q81bhdyVOwuXbtqZdDSZ+yau9oBgNcgGeIvmzDQJkUy1ix8ZKMtsWvuagcAXsNYs/iyLSNlIgk2GebLQjKJQ6R/32+mbcWYI8KTrm6HJwR4170yCV80Y6T1I4kklH122lFNG9e2wxMC3Ao/U1KnQLPgF2SK/xeri5TiIxlikX1DBXVANpoXSy/DzGCjYfdYs2FRiFkcxWxEu/GF0RAm3fT1Bv8JJyV+LLlV08ccnNuFCQeGAdrheWkkXxaSGueruZFDurlrzfn4QSbDGRgAqJD3JK4NMcU8oo3RIz1hOB4q6AZeCzKK0aoXCIs58DBBt9Esfip5Ke3UPkN1Eg8TdB8N+5grr+JRxPAJHiLoTgaZhf97MiuqvVqTgNPxEEEPcK0qBTIyNa6rnWw1CLooJjHMUZc6KMWnNs9xDg8Q9ACLQtMMvbhfeFi7tuoLZMhBz1NczaUw2H4OFizhAYFe5l0uM+61m53wgMAWM+C7aBr425Ey2c8umPpdxmO+oxQPWz8cvnOmTGf7Gf1DDHXs25lYxMrIfmafOdnvOe4WONZsk4XhaD7nkJpAPQN96w2a/cw+c7S/QYsC6vuq46D/CHD+7zQaRvDmYsXVbG6CEWmZQ5YGWRk0+8zR/phb1bg/9pkLgvVk/twso+EViETbfPw1PyuDHrDQ36n4o6GL1eHRn7skDhlrEnZyuvbKMN/TIglKM9AzmyfLbzL2sBjZz89sniJfg2G7Nvbwad+m3qB9OrQh/z0RTschzK1yXZAu8zi/CxQ9NJL4fT6d+kwdQG27drB6q9WxXbcO1GfaAPL78wswcBfx6Y2T6ZHxv5DJfuY1acj5Kl55JHHPtOCBaOozZQC18mltUxhWlNoyobjwDQVyng/hVhyBaYbBrEKhW0aNL2Y85LO2lB37daHhX86AAemAPC4z6R5sEt9j6nWXONr8vJ3D4qhj287tIRIIxMP7PmrKd151p1vV3MjRtmt7eiT0F+QbN4z6xQ6T/eO2XdrbbP8z3y5wtyAQT+VAxAh336wcczQVhPfsKM+ANJWsYp+xRFS7Hh2b/C6LSWBIEIgnsuh73T1b1VRA3ql/dxq5d5bd74/4OlJu21TgjtktCMT9uwbdFJDXjx5TBzQ5cigRR71I/hZJ7bpbTwf3mT4QxgSBuHtbrSHcnUlAlstwxXqdgcmjmsyTIJkIgag2SGcZ8qYCckcWyAUdTpBnsBr398yWKTAoCESd07xD3rFeHMdmqxztj81uNe5v6B+CYVAQiAeD9qPiIOkP/NIVN9l//nArg/ZNeNLh/nzjn7Tqr//rw2FQEIg6M+lN7RcY/LvR3PQHupdh6S9R+LH5ZMh8i17NfoeS81bSO6fX0cfn/ps2X/wL7bzyv/TNtYP0z5KjdLw0hwrKL1DR/Rt0r+q+Plys0d/HyMtDGib4nNlx5ur+QPcZuLPQTSa9bjk0oyuM2dX9adm4Zx57jeIzk+lXliX0Ru4KSjm1hlac/S/69MKXtP3yXvrr1b/Td8WplHbzOGWV5dPZO5fo+v0Slxi4ZgTiiUw66BoD/32BPQO/zI2Ba0cgbs6kg9aMPfFbWn5mM/258H80a+CaEYi7M+ngA7JR4ERpHgFqEogbM+lgDSelv0LfFx+B1SNIBxtzWsarlH27ABavZoF4YsOUHhliEuX4AlCOwsJC2rVrF7+JwjHGuU8Em4X9MHDn+afzOzRtzGVlZbR69WqKjY2lqKgoev/996m4uNihvqqrqyklJYU6dKhf3Kq/Pel6izuKK246bYQXLlygvXv30ldffUWZmZlO9cX6CAwMpI4dO1Lbtm3pueeeo61btzrUV1ZWFj3++ONWKxseffRRMpvNLe7vzTffrClF5ONDEydOhIuldb53ZqNTxpyfn08RERFWBsiM2mQytbi/+fPn29zCnJSU1KK+ioqKyNe3poTpU089RRs3bqTt27dTQEBAvUiuXr2quL8ff/xRFgYT7e7duxGk64E/FBsdFsfhw4epR48eNTsvO3WioKAgmjRpEvXu3Vv+rHPnzvTTTz8p7u/dd9+tqXwouS/Lly+nS5cuUUlJCa1fv17ui11j7pFSTJs2Tf4O+7tu3bpV//ndu3fr3v40Y8YMRX1VVFTQkCFD5O8sW7YMmXS98MLdQofEYbFYqFu3brLBsBGEBa11KC0tpcTERPkaa8NGGXs4ePCg/HZu06YN7du3z+r6/v3769/e6enpdvvbs2dPTeHrnj1l968xLl68SN2712yR/vbbb+3299lnn8ltn3jiCbp37x4y6XphedWdFouDBbiDBw+WDWb27NlUWVlp1aaqqooiIyPlNsOHD3/IqBrj9u3bNGjQILnt4sWLbbZbuHCh3Mbf37/J31kH9rvq+mPBuS2w0Yi18fPzk4NvW2C/iwmDtd22bRsy6RAINWvM48aNq48z2L9tgblH/fv3l9suWLDAZrt58+bJbZ5++ulmhcRGpscee8yu4a9YsUJuM2zYMNk1soXy8nLq16+f3Hbnzp0227EJAtZm4MCBVv0hkw4XS8aNGzdkV4S9bZmxMMM6f/683e+lpaVR+/Y1W5A//PBDq+vr1q2Tr7E2GRkZil2nrl27Um5ubpOTBuwaa/PNN9/Y7a/u97MRgsUmjcE+Y8JgbbZs2YJMut6oZGnJ6NGjHz5bQzKYggLlWXf2BmbxA/suC+LZbNKOHTsoLi6OWrduLXPz5s2K+2P5DNYXC5rz8h6sGbt8+bI8qrFrrI3S4JuNNOw7ycnJVtfffvvtZkcjTPNqnMtOb7BrRGPGjJFnlpiRfPDBB826VbbABNGrVy/rii/t2tGqVata7OY9++yz8ve7dOkiC41NAdfNng0dOlR2x5TCaDTKfwf77tKlS2UhsJiEuXFs0oCJ+9ChQ+pYauKOPel65sT0JJckCpXmJVhgzLLZM2fOpEWLFj00ArR0oqCp/AuLj9hI0lIwkbKRrG7mqy42YVyyZIl61mJhqYnruercdtUuI2HTzZs2baK1a9fSkSPOrURm8U1droOxb9++tGHDBixWxGJFkVJLjmEFYoMcCYuxmpsBQ5Cuu+Xu8+hk2SmoQ63L3ZFJ90w8cuD6YVi9KgWCTLrHuDB3uVwep5qqoQC1CASZdM8z+sQb9P6ZTbSjcD+KNnAvEGTSUfYHAkGQDoGhcBymeUGUHkUmHdS6wG5VlmFPOgjq/gAdEMQRbCCoZYEgkw5CIMikgxAIMukgBIJMOgiBIEgHIRBM84KgegSCTDoIgSCTzvcWXbNAv7bE0/oL0fSPG1F0+k4k3aoMp4rqmUSkL8LFAus563gCbb88h4ruR+hOCKoQCIJ07/CFDAP9rWg23a+GILgVCDLp3uGSghi6WREOMXAvEGTSPcrxUpzxtTRqQAQqEQgCck9WNzFQasksCEBVAkEm3WMjB8SBIB20QbhVmOYFbXBpQazLDYjlR25XhetGIJOyXuw5JntuF2TSNVd61EAlLpytqpa4sjCWJmSLMtdcidG2QKhV67CcxHVh2WJVLVcik65zjmVZ9QyRxmcKFHpSJMkoaGqOSHGnDPTGuXj53w1pLIvSnECk+yoPzRZPh2Un/r3x/YZZEifBxdLrcpOMB6JQyt3Fc7QokOb4OoJ0vdEs0LgTLRNGHQ/cnE07JZEcLo2SXTCtC2RCdmJ8aI64MNSSOI25YMik64COiqMxPy6M0cMI0oDCGmTSdeBWuUIcYbWBe6kGZrdacM/VIafF7sikazggb2nMYU8gJZURehJIVUhO0iPIpGt29HCdOBj/qDMXS3ohfIogXctLUDJd516xaeCvb8yhMv24WGekQP2VsFNJ3TDNq1G60r2qY4IkFLWLpIX3fMojIkEm3QsV0LMFlwuEcfS/P0N+ft29ypdf/qWnBEJhFiEJmXQIRDH7RQ2uP5fcW+zbt6PHBDIhJ/EluFhwsRRxzsl4OmgeTyZTiFdZXDzVUwLJd6uLhSBdO0H63huzdRWkM9fKreJAJl07SULGjy7H6iuTbhHXI5Ou8URhGBKFHCcKEZB7fxQ5iqUm/C41QSadk8WKrhHJJ4X6crFCLeKfkEnXiavl7HL31LJZutgPUrfcPSxXmIoNU3rcMGURsGGKpw1TyKTzKZTxmWJtnkT6OSOBxhyYRX6fPW9lML0C+3k9KdgUR47s4dSWW4kF3Gy5RSbdtXTUMEaM6NG84bVuRUNSAiThSCNNlkCDk/25FAfjqFE9XVO0IVtcW1uwoTLMInyEsj86FohSllaGU7mOyv5MPR7bIyRrXmcUjoNAQFR3h0BAVHeHQEBUdwchEFR3ByEQVHdHkA6BQCCY5oVAIBBk0tUrEH//Htwm/jyZSedWIMikc55JVxFdkkmHiwWBgAjSIRAQmXQQAkEmHYRAkEkHeRDIP0ujaOG5eJqWK8j8jfQzOyQHAkEmXfcC2XA12uaOuk1F0RAIgnRtC4Qd4XyifBZZ7kRaHefMRg5722wbjySsD9YX61MLx0OH5cwNnJwX1xXTvDoTyF3JeD8pjKHncx4Y+xTp51VXYuRrrM3CJk6ybUx22u2D/mLlPuquTc4RavqrVv2e9LthOcKqgPNRP0MmXQcCqZAMdsFZ28b/unTNf1QvGpceZ1cg48xx5NPOh4Z/PsVmG79tz1Prtj5q3ZPekD/4mZLaIZOu9dpXx+1XKBl3XFlFk9BMAw1+a4Tddo8Zhqkyk95EQbz5cLG0Xsk9S3TLUQfN8ddnErRS9seMIF3rZ4FYPC+QF3IFrQjkFjLpOAvE5UwsMGhFIBZk0rV+FsgJweMC+Vilp95a34uwBpl0rdffNXtWIKzS+9Hbs2hlYSwZThnkqWA2onx+LZr7KeDGFdxDsw3jwnIS18mnSWWLd9iIEmpJfMvtU8DIpHtwBMny/Ahii/8mBe88JxRb8BJIc3tCEUG6Nt0re/zgcozqBVLrfm3GNK+aC1Ef408cjBM5Po2qhfdS6dZTppBJd2/cEWoRuRQIY8/RfdWQSbfP3LlhSoPuxSGpcb7IpMO1UsIe/n1UkUm3OxrmCsF2jTs09aU+0kO5zQwcLhYHTBe5Fgdb1HirMlwLLtbdSVkv9lSS01ha93CCzMpP4UGQzve5g+7iHzk+z7CF97JWadIvr8EDqmJZcmTSvUSzd5aWKOX8swn1y+tVLpCD001JnezHHkdE/yYe1B17IkEm3U3BeTq/o8faK9Hy0nvVn3JrET5SvAxeeii/sfGwqqSY5DVk0j3sXh3jd/Rgm7V43+Ou8F7uSyyT+P1EizjdnkC+sDPk7x+TPrcvMukemr3K5DtA532PuyP3EZojvtvc9G6mggd3LcgoLAg49PD6FQTp7li5K6hGIE3tcVejQGSRWBKn2RpBLrXgAbK2vws0zu2PaV7t7P1whnV73NUuEHZstC2B3HFwtuVIkEn8cKxRiJFGkn8NyZgbGGw07IaROzmCZKtLIGyPu6oz6fY2VkkP5R4MEwJxlCGmOG4y6ferw525l5u2BHIdhsmRQOBiOUy2gNLhGCRb/M6ZIB3U8PZaZ5haNosbgRTcjXT8XnKFqbZGkK9gmDxtjlKPOLZwNs37j1uzHbwXYWlzOwMXwTCRKFSaKJyeK8huFU8jh5K6xNaJQqGUuVU2R476aVqzOAqGiaUmSnjmXiTXy0xePZOgLN7ISxymfL06pfhID+YcjJMTgXAah7xymu9CclfuR8jFJhTcy1EHSvgYlsE41VVq1NPccX0O1wJhFVcU3UuOmNzyfeWpcb7Ih/C1YYqnfAirsnijkt8l7iz/EZ1vUJQMnJif0NvRQnBrYZw8bZriRyDbrvE9euwpnqOs1E+OsNjhogsBh17sKT2YIhgnLxunRC7WZc3OF6ic4w1SN6WRLTJP0ehxOSRrXmfn6lwZxWgYJ8r+NKywmMbhdG5DLrkYp+ReqsbnGCa7qij1pzBOVDdh3HqN7zMN/3pjttLA/D9dVt8q6suoNmNNwl9gnPreRPV76c1czbE4WKJyUo6il8euFErxcWkROD9TUqdgk2EfjJOf3IgnRfLepViqrOY37mCbtKbmKhLH1pDvU9q6pVIi29SOmS19zWxNqC3MUM25W6Vg5KhmhRlaUavWHjgoxzAHs1scBe4ZclUOl4sjJt9AxrIoboVRUhmuNCA/F2ZJnOTRs0BC0wy9gk3iamyr5ad2lquCd1alZM2VGG6PNGBJQJbnCM+ze7+sSslKr56RPj7D0K92WQrWbnEiFLYsxZG1W2zEYMszeC0herUiQv77FGTIz7EDcRSVEPUYKMUnyGgYIY0qyVIAuVN6WMdrdyZiuYqXgvixRwX5KOjxmTWLHdnORLZchfnrEdLb9+XTCZKLEiv78GfvRXA0QsykmxXhlF8eST8UR9G6i9H0q7x4Cm10H2HZQoUkhmsSj0/IFnZOyBFeDctNGNoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsI3/BxVeQNnL1kBuAAAAAElFTkSuQmCC"}}]); \ No newline at end of file diff --git a/assets/js/1a21d6a2.8c1f975e.js b/assets/js/1a21d6a2.8c1f975e.js new file mode 100644 index 00000000000..198aedc0663 --- /dev/null +++ b/assets/js/1a21d6a2.8c1f975e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18694],{98253:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/crypto","page":1,"postsPerPage":5,"totalPages":4,"totalCount":18,"nextPage":"/cardano-updates/tags/crypto/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/1a657a20.8a85f02f.js b/assets/js/1a657a20.8a85f02f.js new file mode 100644 index 00000000000..726825e0e30 --- /dev/null +++ b/assets/js/1a657a20.8a85f02f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97382],{26170:a=>{a.exports=JSON.parse('{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api","allTagsPath":"/cardano-updates/tags","count":27}')}}]); \ No newline at end of file diff --git a/assets/js/1a932c01.6aaf6224.js b/assets/js/1a932c01.6aaf6224.js new file mode 100644 index 00000000000..7a7521a9bb7 --- /dev/null +++ b/assets/js/1a932c01.6aaf6224.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2348],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>y});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),s=p(n),m=a,y=s["".concat(u,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(y,l(l({ref:t},c),{},{components:n})):r.createElement(y,l({ref:t},c))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-08-17-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-17-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-db-sync.md",source:"@site/blog/2023-08-17-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-08-17T00:00:00.000Z",formattedDate:"August 17, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.41,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-08-17-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-17-crypto"},nextItem:{title:"SECP bindings Security Issue Report",permalink:"/cardano-updates/2023-08-17-secp-issue"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],c={toc:p},s="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have integrated many new Conway feutures and allow db-sync to sync sanchonet.\nWe also continued testing and improving the new db-sync options."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Conway integration\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1484"},"#1484")),(0,a.kt)("li",{parentName:"ul"},"Support for Sanchonet\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1476"},"#1476")),(0,a.kt)("li",{parentName:"ul"},"Stake distribution is computed earlier\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1484"},"#1484")),(0,a.kt)("li",{parentName:"ul"},"Deposit ledger events are now used. This reduces the db queries and makes syncing faster\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1484"},"#1484")),(0,a.kt)("li",{parentName:"ul"},"Testing new db-sync options\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1466"},"#1466")),(0,a.kt)("li",{parentName:"ul"},"Added support for ghc-9.6\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1479"},"#1479")),(0,a.kt)("li",{parentName:"ul"},"Tech debt: improve exceptions\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1471"},"#1471"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1afca88e.5924808c.js b/assets/js/1afca88e.5924808c.js new file mode 100644 index 00000000000..da0ab99a84f --- /dev/null +++ b/assets/js/1afca88e.5924808c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49835],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var l=n.createContext({}),p=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(o),h=r,m=d["".concat(l,".").concat(h)]||d[h]||c[h]||a;return o?n.createElement(m,i(i({ref:t},u),{},{components:o})):n.createElement(m,i({ref:t},u))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var n=o(87462),r=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-10-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-10-02-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-02-network.md",source:"@site/blog/2023-10-02-network.md",title:"Network Team Update",description:"High-level overview of sprint 45",date:"2023-10-02T00:00:00.000Z",formattedDate:"October 2, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.485,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-10-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-04-mithril"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-29-goedel"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level overview of sprint 45",id:"high-level-overview-of-sprint-45",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"Towards Typed Protocols 0.2.0.0",id:"towards-typed-protocols-0200",level:3},{value:"Tech Debt",id:"tech-debt",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"IOSimPOR",id:"iosimpor",level:4},{value:"IOSim",id:"iosim",level:4},{value:"Cardano Newtork Service Assurance",id:"cardano-newtork-service-assurance",level:3},{value:"P2P adoption",id:"p2p-adoption",level:3},{value:"Open Source",id:"open-source",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview-of-sprint-45"},"High-level overview of ",(0,r.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+45%22"},"sprint 45")),(0,r.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,r.kt)("p",null,"We started reviewing the bootstrap peers PR, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4615"},"ouroboros-network#4615"),"."),(0,r.kt)("h3",{id:"towards-typed-protocols-0200"},"Towards Typed Protocols 0.2.0.0"),(0,r.kt)("p",null,"We discovered a performance regression when using ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0"),", and we\nstarted investigating where it comes from. Currently, we see that\n",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0")," can outperform ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.1.0.0")," when running\nin isolation with a simple ",(0,r.kt)("inlineCode",{parentName:"p"},"ping-pong")," protocol, so the regression might be in\nthe new block fetch implementation which comes with ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0"),"\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/3"},"typed-protocols#3"),"."),(0,r.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,r.kt)("p",null,"We merged two PRs written by Galois engineers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a pull request which refactors the main entry function for P2P, see ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3834"},"ouroboros-network#3834"),"; "),(0,r.kt)("li",{parentName:"ul"},"a pull request which reviews usage of ",(0,r.kt)("inlineCode",{parentName:"li"},"unsafe")," function in the network code based.")),(0,r.kt)("p",null,"Galois also made progress with the following two issues:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"add microbenchmarks to some of our tests: ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3832"},"ouroboros-network#3832")),(0,r.kt)("li",{parentName:"ul"},"inspect use of ",(0,r.kt)("inlineCode",{parentName:"li"},"error")," in ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-network")," repository:\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3836"},"ouroboros-network#3836"))),(0,r.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,r.kt)("h4",{id:"iosimpor"},"IOSimPOR"),(0,r.kt)("p",null,"We found and fixed a bug in ",(0,r.kt)("inlineCode",{parentName:"p"},"IOSimPOR"),". We'd like to thank Prof. John Hughes\n(Quviq AB) for helping us with debugging the issue."),(0,r.kt)("p",null,"We also provided a more uniform API for ",(0,r.kt)("inlineCode",{parentName:"p"},"IOSimPOR"),", and added ways to make the\ndebugging similar problems in the future easier."),(0,r.kt)("details",null,(0,r.kt)("summary",null,"Technical Details on IOSim refactoring"),"We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future."),(0,r.kt)("h4",{id:"iosim"},"IOSim"),(0,r.kt)("p",null,"To prepare for the next release, we consolidate packages taking advantage of\nthe public sublibraries supported now both by ",(0,r.kt)("inlineCode",{parentName:"p"},"cabal")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Hackage"),". This is\na work in progress, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/issues/114"},"io-sim#114"),"."),(0,r.kt)("h3",{id:"cardano-newtork-service-assurance"},"Cardano Newtork Service Assurance"),(0,r.kt)("p",null,"Galois made the following progress:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A test run of spinning up a CNSA instance was done, as a result documentation\nwas updated."),(0,r.kt)("li",{parentName:"ul"},"Based on the IOG code review of the CNSA code, updates to the CNSA code were\nmade."),(0,r.kt)("li",{parentName:"ul"},'Galois has started the design for adding a CNSA analysis for "fetched bytes\nover time while node is syncing".')),(0,r.kt)("h3",{id:"p2p-adoption"},"P2P adoption"),(0,r.kt)("p",null,"In the last two weeks, we've seen increase in P2P adoption.\n",(0,r.kt)("img",{alt:"P2P relays",src:o(53101).Z,width:"2668",height:"1576"})),(0,r.kt)("p",null,"The following graphs show several different versions of relays running on the mainnet. The\ngreen line ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionV10.True")," denotes P2P relays.\n",(0,r.kt)("img",{alt:"node versions",src:o(40970).Z,width:"2674",height:"1580"})),(0,r.kt)("h3",{id:"open-source"},"Open Source"),(0,r.kt)("p",null,"We upstreamed our FFI bindings to Windows named pipes to ",(0,r.kt)("inlineCode",{parentName:"p"},"Win32")," package, the\nPR was accepted and merged."),(0,r.kt)("p",null,"We also received an external contribution which enhanced our documentation, see\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4676"},"ouroboros-network#4676"),"."))}c.isMDXComponent=!0},53101:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/2023-10-04-p2p-relays-75c2baf57ea9346a40f0098b2abb4a99.png"},40970:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/2023-10-04-relay-versions-5168d3ed0ad365a18e86263fcccffd23.png"}}]); \ No newline at end of file diff --git a/assets/js/1b0bebd5.e1bd57de.js b/assets/js/1b0bebd5.e1bd57de.js new file mode 100644 index 00000000000..421423a65ad --- /dev/null +++ b/assets/js/1b0bebd5.e1bd57de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97801],{17169:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/61","page":61,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/60","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/1b2a226f.ac20107e.js b/assets/js/1b2a226f.ac20107e.js new file mode 100644 index 00000000000..3ef7c33499d --- /dev/null +++ b/assets/js/1b2a226f.ac20107e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88782],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>c});var i=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),d=a,c=h["".concat(s,".").concat(d)]||h[d]||m[d]||n;return r?i.createElement(c,o(o({ref:t},u),{},{components:r})):i.createElement(c,o({ref:t},u))}));function c(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>p});var i=r(87462),a=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-09-07-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-07-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-07-mithril.md",source:"@site/blog/2023-09-07-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-09-07T00:00:00.000Z",formattedDate:"September 7, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.53,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-09-07-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-08-hydra"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-07-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team has released a new distribution ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2335.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2335.0"))," which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information."),(0,a.kt)("p",null,"They have also worked on snapshots enhancements: implementation of the ",(0,a.kt)("inlineCode",{parentName:"p"},"zstandard")," compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes."),(0,a.kt)("p",null,"Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Use 'zstandard' compression for snapshot archives")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/876"},"#876")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design & implement stress test tool for aggregator - phase 2")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1155"},"#1155")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Provide progress information with '--json' option in Client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1095"},"#1095")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Make client download and extract the archive simultaneously")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1115"},"#1115")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add aggregator Cardano node version in snapshot artifact")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/948"},"#948")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Make Cardano node version part of the Mithril network configuration")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/947"},"#947")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Post deployment 'mainnet' infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1091"},"#1091")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Errors refactoring")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/798"},"#798")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add Cloudflare protection of infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/986"},"#986")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Failed to restore recent snapshot with strange error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1160"},"#1160")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update 'ed25519-dalek' to '2.0.0'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1188"},"#1188")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add target networks blocks in release notes")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1151"},"#1151")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Fix end to end 'wait_for_the_expected_time' test")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1191"},"#1191")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Fix docs 'git checkout' command")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1174"},"#1174"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1b2c892c.dc757eff.js b/assets/js/1b2c892c.dc757eff.js new file mode 100644 index 00000000000..cd2c1b43909 --- /dev/null +++ b/assets/js/1b2c892c.dc757eff.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53210],{69530:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/tags/performance-tracing","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/1b2c8e6e.9c8b7196.js b/assets/js/1b2c8e6e.9c8b7196.js new file mode 100644 index 00000000000..32a800d27cd --- /dev/null +++ b/assets/js/1b2c8e6e.9c8b7196.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36303],{43673:a=>{a.exports=JSON.parse('{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api","allTagsPath":"/cardano-updates/tags","count":27}')}}]); \ No newline at end of file diff --git a/assets/js/1b34f23d.944aa387.js b/assets/js/1b34f23d.944aa387.js new file mode 100644 index 00000000000..1479b6b4a43 --- /dev/null +++ b/assets/js/1b34f23d.944aa387.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91990],{3905:(e,t,o)=>{o.d(t,{Zo:()=>h,kt:()=>m});var n=o(67294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},h=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),u=c(o),d=a,m=u["".concat(l,".").concat(d)]||u[d]||p[d]||r;return o?n.createElement(m,i(i({ref:t},h),{},{components:o})):n.createElement(m,i({ref:t},h))}));function m(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=o.length,i=new Array(r);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var n=o(87462),a=(o(67294),o(3905));const r={title:"Initial CIP 1694 Security Analysis and Responses",slug:"2023-11-20-cip1694",authors:"kevinhammond",tags:["ledger","cip1694","security"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-11-20-cip1694",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-20-cip1694.md",source:"@site/blog/2023-11-20-cip1694.md",title:"Initial CIP 1694 Security Analysis and Responses",description:"High level summary",date:"2023-11-20T00:00:00.000Z",formattedDate:"November 20, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"},{label:"cip1694",permalink:"/cardano-updates/tags/cip-1694"},{label:"security",permalink:"/cardano-updates/tags/security"}],readingTime:5.345,hasTruncateMarker:!1,authors:[{name:"Kevin Hammond",title:"Head of Software Engineering, Cardano Core",url:"https://github.com/kevinhammond",imageURL:"https://github.com/kevinhammond.png",key:"kevinhammond"}],frontMatter:{title:"Initial CIP 1694 Security Analysis and Responses",slug:"2023-11-20-cip1694",authors:"kevinhammond",tags:["ledger","cip1694","security"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-22-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-17-hydra"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Initial CIP-1694 Security Analysis and Responses",id:"initial-cip-1694-security-analysis-and-responses",level:2},{value:"Section: The constitutional committee",id:"section-the-constitutional-committee",level:3},{value:"Section: Size of the constitutional committee",id:"section-size-of-the-constitutional-committee",level:3},{value:"Section: Terms",id:"section-terms",level:3},{value:"Section: Registered DReps",id:"section-registered-dreps",level:3},{value:"Section: Ratification",id:"section-ratification",level:3},{value:"Section: Content",id:"section-content",level:3},{value:"Section: Protocol Parameter groups",id:"section-protocol-parameter-groups",level:3},{value:"Section: Votes",id:"section-votes",level:3},{value:"Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes",id:"section-separation-of-hard-fork-initiation-from-standard-protocol-parameter-changes",level:3},{value:"Section: Changes post Edinburgh workshop (July 2023)",id:"section-changes-post-edinburgh-workshop-july-2023",level:3},{value:"Section: Reduced deposits for some government actions",id:"section-reduced-deposits-for-some-government-actions",level:3}],h={toc:c},u="wrapper";function p(e){let{components:t,...o}=e;return(0,a.kt)(u,(0,n.Z)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here."),(0,a.kt)("h2",{id:"initial-cip-1694-security-analysis-and-responses"},"Initial CIP-1694 Security Analysis and Responses"),(0,a.kt)("h3",{id:"section-the-constitutional-committee"},"Section: The constitutional committee"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},'\u201cFor example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.')),(0,a.kt)("p",null,"There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-size-of-the-constitutional-committee"},"Section: Size of the constitutional committee"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.")),(0,a.kt)("p",null,"Thanks. Yes, we\u2019ve been thinking about this issue for a long time, see for example the section \u2018Final safety measure, post bootstrapping\u2019. We don\u2019t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps"),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-terms"},"Section: Terms"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The following sentence is a bit awkward to read: \u201cFor example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.\u201d \u2014> Suggestion: \u201cFor example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.\u201d ")),(0,a.kt)("p",null,"Thanks. Yes, that suggestion is a bit easier to read."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-registered-dreps"},"Section: Registered DReps"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u201cAdditionally, registered DReps will need to vote regularly to still be considered active.\u201d - There is a minor issue with requiring \u201cvoting regularly\u201d. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).")),(0,a.kt)("p",null,"Thanks. We\u2019ve added a mechanism to prevent that issue in the spec/code where if there\u2019s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-ratification"},"Section: Ratification"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"It is a bit unclear why protocol changes: network group and technical group are two separate groups.")),(0,a.kt)("p",null,"These correspond exactly to the groups that are administered by the Parameter Committee."),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"I didn\u2019t understand the rationale for requiring 100% \u201cYes\u201d votes to pass \u201cInfo\u201d type governance actions? It seems they have the least potential to harm the system.")),(0,a.kt)("p",null,"Yes, it\u2019s not about harming the system, since ",(0,a.kt)("inlineCode",{parentName:"p"},"Info"),"\nactions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action. "),(0,a.kt)("p",null,"Once an action is enacted it\u2019s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-content"},"Section: Content"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.")),(0,a.kt)("p",null,"Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-protocol-parameter-groups"},"Section: Protocol Parameter groups"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.")),(0,a.kt)("p",null,"These are existing protocol parameters, described in e.g. ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cardano.org/explore-cardano/parameter-guide/#:~:text=Protocol%20parameters%20on%20Cardano%20are,to%20changing%20conditions%20over%20time."},"https://cips.cardano.org/cips/cip9/"),"9 or ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cardano.org/explore-cardano/parameter-guide/#:~:text=Protocol%20parameters%20on%20Cardano%20are,to%20changing%20conditions%20over%20time."},"The Cardano Protocol Parameters Guide"),"."),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories. ")),(0,a.kt)("p",null,"All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-votes"},"Section: Votes"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?")),(0,a.kt)("p",null,"They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don\u2019t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-separation-of-hard-fork-initiation-from-standard-protocol-parameter-changes"},"Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.")),(0,a.kt)("p",null,"There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-changes-post-edinburgh-workshop-july-2023"},"Section: Changes post Edinburgh workshop (July 2023)"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u201cAll governance actions are enacted one epoch after they are ratified.\u201d - I\u2019m not sure if this line is currently in the main body of the CIP?")),(0,a.kt)("p",null,"It is, but it is phrased differently: \u2018All governance actions are enacted on the epoch boundary after their ratification.\u2019"),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-reduced-deposits-for-some-government-actions"},"Section: Reduced deposits for some government actions"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.")),(0,a.kt)("p",null,"Indeed. We have no plans for this at the moment."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1be78505.eb072735.js b/assets/js/1be78505.eb072735.js new file mode 100644 index 00000000000..836136e8ebc --- /dev/null +++ b/assets/js/1be78505.eb072735.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29514,4972],{19963:(e,t,n)=>{n.r(t),n.d(t,{default:()=>fe});var a=n(67294),l=n(86010),o=n(1944),r=n(35281),c=n(43320),i=n(52802),s=n(74477),d=n(1116),m=n(93285),u=n(95999),b=n(12466),p=n(85936);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(16550),g=n(87524),k=n(86668),_=n(21327),v=n(87462);function C(e){return a.createElement("svg",(0,v.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const S={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function I(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",S.collapseSidebarButton),onClick:t},a.createElement(C,{className:S.collapseSidebarButtonIcon}))}var N=n(59689),T=n(902);const Z=Symbol("EmptyContext"),x=a.createContext(Z);function B(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(x.Provider,{value:o},t)}var y=n(86043),L=n(48596),w=n(39960),A=n(72389);function M(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function F(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,k.L)(),f=function(e){const t=(0,A.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),g=(0,i._F)(t,o),_=(0,L.Mg)(h,o),{collapsed:C,setCollapsed:S}=(0,y.u)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(x);if(e===Z)throw new T.i6("DocSidebarItemsExpandedStateProvider");return e}(),B=function(e){void 0===e&&(e=!C),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,T.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:g,collapsed:C,updateCollapsed:B}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":C},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":_})},a.createElement(w.Z,(0,v.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?B(!1):(e.preventDefault(),B())}:()=>{n?.(t)},"aria-current":_?"page":void 0,"aria-expanded":b?!C:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(M,{categoryLabel:u,onClick:e=>{e.preventDefault(),B()}})),a.createElement(y.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:C},a.createElement(V,{items:m,tabIndex:C?-1:0,onItemClick:n,activePath:o,level:c+1})))}var H=n(13919),P=n(39471);const W={menuExternalLink:"menuExternalLink_NmtK"};function D(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,H.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(w.Z,(0,v.Z)({className:(0,l.Z)("menu__link",!E&&W.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(P.Z,null)))}const R={menuHtmlItem:"menuHtmlItem_M9Kj"};function z(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[R.menuHtmlItem,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function U(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(F,(0,v.Z)({item:t},n));case"html":return a.createElement(z,(0,v.Z)({item:t},n));default:return a.createElement(D,(0,v.Z)({item:t},n))}}function K(e){let{items:t,...n}=e;return a.createElement(B,null,t.map(((e,t)=>a.createElement(U,(0,v.Z)({key:t,item:e,index:t},n)))))}const V=(0,a.memo)(K),j={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function G(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,N.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{className:(0,l.Z)("menu thin-scrollbar",j.menu,c&&j.menuWithAnnouncementBar,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(V,{items:n,activePath:t,level:1})))}const Y="sidebar_njMd",q="sidebarWithHideableNavbar_wUlq",O="sidebarHidden_VK0M",X="sidebarLogo_isFc";function J(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,k.L)();return a.createElement("div",{className:(0,l.Z)(Y,c&&q,r&&O)},c&&a.createElement(_.Z,{tabIndex:-1,className:X}),a.createElement(G,{path:t,sidebar:n}),i&&a.createElement(I,{onClick:o}))}const Q=a.memo(J);var $=n(13102),ee=n(72961);const te=e=>{let{sidebar:t,path:n}=e;const o=(0,ee.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(V,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function ne(e){return a.createElement($.Zo,{component:te,props:e})}const ae=a.memo(ne);function le(e){const t=(0,g.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement(Q,e),l&&a.createElement(ae,e))}const oe={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function re(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:oe.expandButton,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(C,{className:oe.expandButtonIcon}))}const ce={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry"};function ie(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function se(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,f.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,ce.docSidebarContainer,n&&ce.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ce.docSidebarContainer)&&n&&s(!0)}},a.createElement(ie,null,a.createElement(le,{sidebar:t,path:c,onCollapse:d,isHidden:i})),i&&a.createElement(re,{toggleSidebar:d}))}const de={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function me(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(de.docMainContainer,(t||!o)&&de.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",de.docItemWrapper,t&&de.docItemWrapperEnhanced)},n))}const ue={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX"};function be(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:ue.docsWrapper},a.createElement(E,null),a.createElement("div",{className:ue.docPage},n&&a.createElement(se,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(me,{hiddenSidebarContainer:l},t)))}var pe=n(4972),he=n(90197);function Ee(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(he.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function fe(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(pe.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(Ee,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(be,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(67294),l=n(95999),o=n(1944),r=n(93285);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]); \ No newline at end of file diff --git a/assets/js/1be923a7.8d35f70e.js b/assets/js/1be923a7.8d35f70e.js new file mode 100644 index 00000000000..7f100facccb --- /dev/null +++ b/assets/js/1be923a7.8d35f70e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47658],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=l(n),h=o,m=d["".concat(s,".").concat(h)]||d[h]||c[h]||a;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=h;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[d]="string"==typeof e?e:o,i[1]=p;for(var l=2;l{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>p,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-06-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-06-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-12-network.md",source:"@site/blog/2023-06-12-network.md",title:"Network Team Update",description:"Network Update",date:"2023-06-12T00:00:00.000Z",formattedDate:"June 12, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.205,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-06-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-14-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-06-09-crypto"}},s={authorsImageUrls:[void 0]},l=[{value:"Network Update",id:"network-update",level:2},{value:"Key contributions and advances",id:"key-contributions-and-advances",level:3},{value:"New cardano-ping / cardano-cli ping release",id:"new-cardano-ping--cardano-cli-ping-release",level:4},{value:"Other smaller contributions",id:"other-smaller-contributions",level:3}],u={toc:l},d="wrapper";function c(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"network-update"},"Network Update"),(0,o.kt)("h3",{id:"key-contributions-and-advances"},"Key contributions and advances"),(0,o.kt)("p",null,"We merged ",(0,o.kt)("inlineCode",{parentName:"p"},"light peer sharing")," feature, which allows to include inbound peers\ninto outbound governor known peers. This is the primary way for new\nunregistered nodes to enter the network, which then can be shared using peer\nsharing. Note that peer sharing is an experimental feature which is disabled\nuntil genesis & eclipse evasion as fully implemented. See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3596"},"#3596"),"."),(0,o.kt)("p",null,"We are making progress reviewing eclipse evasion, ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"#3886"),"."),(0,o.kt)("p",null,"We fixed another bug in local root peers. We found out that if the local roots\nwhere ignored until the first domain name was resolved, see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4583"},"#4583"),". The bug\nfix was backported and released in ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.8.1.1"),"."),(0,o.kt)("p",null,"We re-started working on dynamically enabling block forging to address issue\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"#3159"),", which will enable us to release ",(0,o.kt)("inlineCode",{parentName:"p"},"P2P")," on block producing nodes. See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/140"},"#140"),"."),(0,o.kt)("h4",{id:"new-cardano-ping--cardano-cli-ping-release"},"New ",(0,o.kt)("inlineCode",{parentName:"h4"},"cardano-ping")," / ",(0,o.kt)("inlineCode",{parentName:"h4"},"cardano-cli ping")," release"),(0,o.kt)("p",null,"We prepared a new release of ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ping")," library which supports the new\nquery feature (query supported versions). See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4589"},"#4589"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4593"},"#4593")," and ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"#5313"),".\nThe new version of ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," will use ",(0,o.kt)("inlineCode",{parentName:"p"},"ISO8601")," formatted\ntimestamps; also the formatting of ping results is slightly improved, and it\nwill introduce the new ",(0,o.kt)("inlineCode",{parentName:"p"},"--query-versions")," (",(0,o.kt)("inlineCode",{parentName:"p"},"-Q"),") switch. If the remote site\nsupports the query parameter, the command will print:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"redacted-ip:port network rtt: 0.064\nredacted-ip:port handshake rtt: 0.064010896s\nredacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat\norAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]\n")),(0,o.kt)("p",null,"otherwise it will print the negotiation results"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"redacted-ip:port network rtt: 0.045\nredacted-ip:port handshake rtt: 0.101867615s\nredacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder\n")),(0,o.kt)("p",null,"Note that in that case ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," offers ",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorAndResponder"),", which\nallows us to detect whether the remote side is an ",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorOnly")," or\n",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorAndResponder"),". Also ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," will no longer announce\nitself as ",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorAndResponder"),", except for the case mentioned above."),(0,o.kt)("h3",{id:"other-smaller-contributions"},"Other smaller contributions"),(0,o.kt)("p",null,"On a request from the Marlow Team, we published haddocks of ",(0,o.kt)("inlineCode",{parentName:"p"},"typed-protocols"),",\nwhich are now available ",(0,o.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/typed-protocols/"},"here")," (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/40"},"#40"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/41"},"#41"),")."),(0,o.kt)("p",null,"We made a new release of ",(0,o.kt)("inlineCode",{parentName:"p"},"strict-stm-1.1.0.1")," on Hackage, which fixed a bug in\npackage description file, ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/101"},"#101")," ."),(0,o.kt)("p",null,"We also helped to debug a deadlock when using named pipes on Windows in the new\n",(0,o.kt)("inlineCode",{parentName:"p"},"RawBearer")," API. The API is being used to store secret keys only in memory.\nThe PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395"},"#4395")," is under review."),(0,o.kt)("p",null,"We also have two more PRs which are under review:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"#4530"),": enabling ledger peers on a fixed number of slots before the tip of the chain;"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4580"},"#4580"),": a PR which fixes inconsistencies in one of our cddl specs.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1c192ca4.8659f9df.js b/assets/js/1c192ca4.8659f9df.js new file mode 100644 index 00000000000..f63e20c04ae --- /dev/null +++ b/assets/js/1c192ca4.8659f9df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23146],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(r),c=a,d=m["".concat(s,".").concat(c)]||m[c]||h[c]||n;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>p});var i=r(87462),a=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-11-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-15-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-15-mithril.md",source:"@site/blog/2023-11-15-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-15T00:00:00.000Z",formattedDate:"November 15, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.92,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-15-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-11-14-node-cli-api"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},m="wrapper";function h(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files."),(0,a.kt)("p",null,"Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Prototype a P2P relay with ",(0,a.kt)("inlineCode",{parentName:"strong"},"libp2p"))," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,a.kt)("inlineCode",{parentName:"strong"},"mithril-client")," library")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1311"},"#1311")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Fix certificate hashes re-computation in aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1343"},"#1343")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Remove ",(0,a.kt)("inlineCode",{parentName:"strong"},"unstable")," tag in ",(0,a.kt)("inlineCode",{parentName:"strong"},"unstable")," release")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1235"},"#1235")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1caacab6.f165aa95.js b/assets/js/1caacab6.f165aa95.js new file mode 100644 index 00000000000..c9f4eb9ab52 --- /dev/null +++ b/assets/js/1caacab6.f165aa95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85442],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=s(a),h=n,m=u["".concat(p,".").concat(h)]||u[h]||c[h]||o;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-10-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-10-hydra.md",source:"@site/blog/2023-03-10-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-10T00:00:00.000Z",formattedDate:"March 10, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.825,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-16-goedel"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-09-mithril"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:s},u="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team addressed issues with committing complex UTxOs into a\nHydra Head, prepared the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," to be run on mainnet (soon) and improved\nthe test suite of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts. The specification is constantly\ngetting improved upon reviewer feedback on overleaf - this week the graphical\nnotation was refined to be more transaction-focused."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Clarified ","\u201c","bug","\u201d"," of committing UTxOs with reference scripts to a Hydra head ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/737"},"#737")),(0,n.kt)("li",{parentName:"ul"},"Prepare usage of ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")," on mainnet by updating command line options ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/715"},"#715")),(0,n.kt)("li",{parentName:"ul"},"Improved our mutation test suite to all expected errors ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/705"},"#705")),(0,n.kt)("li",{parentName:"ul"},"Re-opened our persistent hydraw demo head on ",(0,n.kt)("inlineCode",{parentName:"li"},"preprod")," using version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.9.0")),(0,n.kt)("li",{parentName:"ul"},"Updated on-chain graphs to be more transaction-focused in the specification")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature"),(0,n.kt)("li",{parentName:"ul"},"Prepare the Hydra workshop"),(0,n.kt)("li",{parentName:"ul"},"Address all todo\u2019s in the Hydra specification"),(0,n.kt)("li",{parentName:"ul"},"Unblock the auctions project with ","\u201c","commit from script","\u201d"," a solution")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1d10bd9e.e7b9cd1c.js b/assets/js/1d10bd9e.e7b9cd1c.js new file mode 100644 index 00000000000..b7cde83fe3a --- /dev/null +++ b/assets/js/1d10bd9e.e7b9cd1c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[5978],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-03-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-03-08-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-node-cli-api.md",source:"@site/blog/2023-03-08-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-03-08T00:00:00.000Z",formattedDate:"March 8, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.795,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-03-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-08-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-08-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-03-08---2023-03-21"},"2023-03-08 - 2023-03-21"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"General bug fixes and some refactoring "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4958"},"Remove error calls in Cardano.CLI.Shelley.Run.Transaction")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4880"},"Detect invalid counter and certificate")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5003"},"Add missing imports")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5001"},"Add LedgerStateBabbage and LedgerStateConway pattern synonyms")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4967"},"Remove unnecessary functions")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4953"},"Remove duplicate scripts when building transaction body for Mary, Alonzo and Babbage")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4903"},"Reduce number of calls to toLedgerPParams")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4686"},"Add ToJSON/FromJSON instances for ChainPoint")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4683"},"Derive Eq instance for AcquiringFailure")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4682"},"Export ",(0,r.kt)("inlineCode",{parentName:"a"},"fromShelleyBasedScript")," from Cardano.Api")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4344"},"Remove unnecessary validation of Data")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3775"},'Remove hint of "string" support for ScriptData')," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4988"},"Conway hard forks on prot-ver 9")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4968"},"Reinstate -Werror for cardano-node and fix errors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4921"},"Take all dependencies from Hackage or CHaP")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4911"},"Less verbose node-to-client and node-to-node version logging")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"Get AcceptedConnectionsLimit from the configuration")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4729"},"fix cardano-testnet Babbage genesis.json"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1da92289.64c6b1ce.js b/assets/js/1da92289.64c6b1ce.js new file mode 100644 index 00000000000..f916d2dd929 --- /dev/null +++ b/assets/js/1da92289.64c6b1ce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22954],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(n),p=a,g=c["".concat(s,".").concat(p)]||c[p]||m[p]||o;return n?r.createElement(g,i(i({ref:t},d),{},{components:n})):r.createElement(g,i({ref:t},d))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Embedding Quality Workstream",slug:"2022-11-03-embedding-quality",authors:"dorin100",tags:["embedding-quality"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-03-embedding-quality",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-03-embedding-quality.md",source:"@site/blog/2022-11-03-embedding-quality.md",title:"Embedding Quality Workstream",description:"High level summary",date:"2022-11-03T00:00:00.000Z",formattedDate:"November 3, 2022",tags:[{label:"embedding-quality",permalink:"/cardano-updates/tags/embedding-quality"}],readingTime:.65,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"Embedding Quality Workstream",slug:"2022-11-03-embedding-quality",authors:"dorin100",tags:["embedding-quality"],hide_table_of_contents:!1},prevItem:{title:"Open-Source Team",permalink:"/cardano-updates/2022-10-31-open-source"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-02-consensus"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2}],d={toc:u},c="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We made good progress on most of the Action Items we agreed on Lisbon, like:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Cardano System Tests was fully open to public (tools, tests, results)\nSee ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests"},"cardano-node-tests webpage"),"."),(0,a.kt)("li",{parentName:"ul"},"We defined an ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/blob/master/.github/ISSUE_TEMPLATE/user-facing-feature.md"},"user-facing-functionality template")," that is used with the cardano-cli team ",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"this includes acceptance criteria & user stories, and definition of done"))),(0,a.kt)("li",{parentName:"ul"},"We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)"),(0,a.kt)("li",{parentName:"ul"},"We started to apply a ",(0,a.kt)("em",{parentName:"li"},"labelling convention")," on ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues"},"cardano-node issues")," that will be used to generate some visual dashboards with some metrics ","[TBD]"),(0,a.kt)("li",{parentName:"ul"},"Ziyand Liu started an ",(0,a.kt)("em",{parentName:"li"},"End-to-End Development and Testing Process for Plutus Features"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1e0f95a7.4185e54d.js b/assets/js/1e0f95a7.4185e54d.js new file mode 100644 index 00000000000..06658bb9bab --- /dev/null +++ b/assets/js/1e0f95a7.4185e54d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65123],{85782:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/17","page":17,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/16","nextPage":"/cardano-updates/page/18","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/1e24dd00.03c90e48.js b/assets/js/1e24dd00.03c90e48.js new file mode 100644 index 00000000000..67383c0ff58 --- /dev/null +++ b/assets/js/1e24dd00.03c90e48.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[11652],{42664:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/tags/open-source","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/1e4232ab.8f20f4ae.js b/assets/js/1e4232ab.8f20f4ae.js new file mode 100644 index 00000000000..666464c1819 --- /dev/null +++ b/assets/js/1e4232ab.8f20f4ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88818],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(r),m=n,f=p["".concat(s,".").concat(m)]||p[m]||d[m]||o;return r?a.createElement(f,i(i({ref:t},u),{},{components:r})):a.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={sidebar_position:2},i="Create a Document",l={unversionedId:"tutorial-basics/create-a-document",id:"tutorial-basics/create-a-document",title:"Create a Document",description:"Documents are groups of pages connected through:",source:"@site/docs/tutorial-basics/create-a-document.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-document",permalink:"/cardano-updates/docs/tutorial-basics/create-a-document",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"defaultSidebar",previous:{title:"Create a Page",permalink:"/cardano-updates/docs/tutorial-basics/create-a-page"},next:{title:"Create a Blog Post",permalink:"/cardano-updates/docs/tutorial-basics/create-a-blog-post"}},s={},c=[{value:"Create your first Doc",id:"create-your-first-doc",level:2},{value:"Configure the Sidebar",id:"configure-the-sidebar",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"create-a-document"},"Create a Document"),(0,n.kt)("p",null,"Documents are ",(0,n.kt)("strong",{parentName:"p"},"groups of pages")," connected through:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"a ",(0,n.kt)("strong",{parentName:"li"},"sidebar")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"previous/next navigation")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"versioning"))),(0,n.kt)("h2",{id:"create-your-first-doc"},"Create your first Doc"),(0,n.kt)("p",null,"Create a Markdown file at ",(0,n.kt)("inlineCode",{parentName:"p"},"docs/hello.md"),":"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-md",metastring:'title="docs/hello.md"',title:'"docs/hello.md"'},"# Hello\n\nThis is my **first Docusaurus document**!\n")),(0,n.kt)("p",null,"A new document is now available at ",(0,n.kt)("a",{parentName:"p",href:"http://localhost:3000/docs/hello"},"http://localhost:3000/docs/hello"),"."),(0,n.kt)("h2",{id:"configure-the-sidebar"},"Configure the Sidebar"),(0,n.kt)("p",null,"Docusaurus automatically ",(0,n.kt)("strong",{parentName:"p"},"creates a sidebar")," from the ",(0,n.kt)("inlineCode",{parentName:"p"},"docs")," folder."),(0,n.kt)("p",null,"Add metadata to customize the sidebar label and position:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-md",metastring:'title="docs/hello.md" {1-4}',title:'"docs/hello.md"',"{1-4}":!0},"---\nsidebar_label: 'Hi!'\nsidebar_position: 3\n---\n\n# Hello\n\nThis is my **first Docusaurus document**!\n")),(0,n.kt)("p",null,"It is also possible to create your sidebar explicitly in ",(0,n.kt)("inlineCode",{parentName:"p"},"sidebars.js"),":"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="sidebars.js"',title:'"sidebars.js"'},"module.exports = {\n tutorialSidebar: [\n 'intro',\n // highlight-next-line\n 'hello',\n {\n type: 'category',\n label: 'Tutorial',\n items: ['tutorial-basics/create-a-document'],\n },\n ],\n};\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1e57c0e2.66497df8.js b/assets/js/1e57c0e2.66497df8.js new file mode 100644 index 00000000000..0527b2dcdc1 --- /dev/null +++ b/assets/js/1e57c0e2.66497df8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64313],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,f=u["".concat(s,".").concat(d)]||u[d]||m[d]||o;return a?r.createElement(f,l(l({ref:t},c),{},{components:a})):r.createElement(f,l({ref:t},c))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-08-18-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-18-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-goedel.md",source:"@site/blog/2023-08-18-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.72,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-08-18-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-23-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-18-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:p},u="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Development of an automated prover for showing conformance of\nprograms to state machines (as part of the mini-protocol framework)")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Completion of the documentation of the (current state of the)\nmini-protocol framework")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Discussion about two DeltaQ lectures with two practical sessions as part\nof 4th year masters course on distributed systemsby colleagues at UC\nLouvain in the Autumn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Discussion about four DeltaQ lectures by colleagues at U. Bergen as part\nof a 5th year Masters course in the Autumn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Adapted original DeltaQ implementation to the new typeclasses and\nwrote property tests for its algebraic laws"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.4c243540.js b/assets/js/1f391b9e.4c243540.js new file mode 100644 index 00000000000..029ae362029 --- /dev/null +++ b/assets/js/1f391b9e.4c243540.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[13085],{14247:(e,n,t)=>{t.r(n),t.d(n,{default:()=>d});var a=t(67294),l=t(86010),r=t(1944),c=t(35281),i=t(93285),o=t(80210),s=t(39407);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};function d(e){const{content:n}=e,{metadata:{title:t,description:d,frontMatter:u}}=n,{wrapperClassName:f,hide_table_of_contents:v}=u;return a.createElement(r.FG,{className:(0,l.Z)(f??c.k.wrapper.mdxPages,c.k.page.mdxPage)},a.createElement(r.d,{title:t,description:d}),a.createElement(i.Z,null,a.createElement("main",{className:"container container--fluid margin-vert--lg"},a.createElement("div",{className:(0,l.Z)("row",m.mdxPageWrapper)},a.createElement("div",{className:(0,l.Z)("col",!v&&"col--8")},a.createElement("article",null,a.createElement(o.Z,null,a.createElement(n,null)))),!v&&n.toc.length>0&&a.createElement("div",{className:"col col--2"},a.createElement(s.Z,{toc:n.toc,minHeadingLevel:u.toc_min_heading_level,maxHeadingLevel:u.toc_max_heading_level}))))))}},39407:(e,n,t)=>{t.d(n,{Z:()=>m});var a=t(87462),l=t(67294),r=t(86010),c=t(93743);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},o="table-of-contents__link toc-highlight",s="table-of-contents__link--active";function m(e){let{className:n,...t}=e;return l.createElement("div",{className:(0,r.Z)(i.tableOfContents,"thin-scrollbar",n)},l.createElement(c.Z,(0,a.Z)({},t,{linkClassName:o,linkActiveClassName:s})))}},93743:(e,n,t)=>{t.d(n,{Z:()=>v});var a=t(87462),l=t(67294),r=t(86668);function c(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const a=t.slice(2,e.level);e.parentIndex=Math.max(...a),t[e.level]=n}));const a=[];return n.forEach((e=>{const{parentIndex:t,...l}=e;t>=0?n[t].children.push(l):a.push(l)})),a}function i(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return n.flatMap((e=>{const n=i({toc:e.children,minHeadingLevel:t,maxHeadingLevel:a});return function(e){return e.level>=t&&e.level<=a}(e)?[{...e,children:n}]:n}))}function o(e){const n=e.getBoundingClientRect();return n.top===n.bottom?o(e.parentNode):n}function s(e,n){let{anchorTopOffset:t}=n;const a=e.find((e=>o(e).top>=t));if(a){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,l.useRef)(void 0),t=m();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:c}=e;function i(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),i=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const a=[];for(let l=n;l<=t;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:c}),o=s(i,{anchorTopOffset:t.current}),m=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(l),e.classList.add(l),n.current=e):e.classList.remove(l)}(e,e===m)}))}return document.addEventListener("scroll",i),document.addEventListener("resize",i),i(),()=>{document.removeEventListener("scroll",i),document.removeEventListener("resize",i)}}),[e,t])}function u(e){let{toc:n,className:t,linkClassName:a,isChild:r}=e;return n.length?l.createElement("ul",{className:r?void 0:t},n.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:t,linkClassName:a}))))):null}const f=l.memo(u);function v(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...v}=e;const g=(0,r.L)(),h=m??g.tableOfContents.minHeadingLevel,L=u??g.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>i({toc:c(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:h,maxHeadingLevel:L});return d((0,l.useMemo)((()=>{if(o&&s)return{linkClassName:o,linkActiveClassName:s,minHeadingLevel:h,maxHeadingLevel:L}}),[o,s,h,L])),l.createElement(f,(0,a.Z)({toc:p,className:t,linkClassName:o},v))}}}]); \ No newline at end of file diff --git a/assets/js/1f965afe.e03ac866.js b/assets/js/1f965afe.e03ac866.js new file mode 100644 index 00000000000..b1736445455 --- /dev/null +++ b/assets/js/1f965afe.e03ac866.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20635],{1948:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/network/page/3","page":3,"postsPerPage":5,"totalPages":5,"totalCount":24,"previousPage":"/cardano-updates/tags/network/page/2","nextPage":"/cardano-updates/tags/network/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/1f9c0c9c.5dc5eee7.js b/assets/js/1f9c0c9c.5dc5eee7.js new file mode 100644 index 00000000000..a8d88f36fa1 --- /dev/null +++ b/assets/js/1f9c0c9c.5dc5eee7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[28323],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),m=a,d=h["".concat(s,".").concat(m)]||h[m]||c[m]||i;return r?n.createElement(d,o(o({ref:t},u),{},{components:r})):n.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Mithril Team Update",slug:"2023-09-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-20-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-20-mithril.md",source:"@site/blog/2023-09-20-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-09-20T00:00:00.000Z",formattedDate:"September 20, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.935,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-09-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-20-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-15-goedel"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports. "),(0,a.kt)("p",null,"Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Add snapshot compression parameters in infrastructure deployments")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1200"},"#1200")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Add Cloudflare protection of infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/986"},"#986")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Record statistics about the downloaded snapshot in the aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1127"},"#1127")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Error refactoring")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/798"},"#798")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Activate Cloudflare protection of infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1230"},"#1230")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Release new ",(0,a.kt)("inlineCode",{parentName:"strong"},"2337")," distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1219"},"#1219")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Upgrade dependencies")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1238"},"#1238"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2073b851.3d1c7c5a.js b/assets/js/2073b851.3d1c7c5a.js new file mode 100644 index 00000000000..2327e696336 --- /dev/null +++ b/assets/js/2073b851.3d1c7c5a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47704],{3529:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>u,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var n=o(87462),a=(o(67294),o(3905)),i=o(22004);const r={title:"Network Team Update",slug:"2022-09-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},u=void 0,s={permalink:"/cardano-updates/2022-09-27-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-27-network.md",source:"@site/blog/2022-09-27-network.md",title:"Network Team Update",description:"Network Update",date:"2022-09-27T00:00:00.000Z",formattedDate:"September 27, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.24,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-09-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-30-ledger"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-09-20-consensus"}},l={authorsImageUrls:[void 0]},p=[{value:"Network Update",id:"network-update",level:2},{value:"Ouroboros Network",id:"ouroboros-network",level:3},{value:"Ouroboros Consensus",id:"ouroboros-consensus",level:3},{value:"Some older items, which were not announced",id:"some-older-items-which-were-not-announced",level:4},{value:"Cardano Node",id:"cardano-node",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"Typed Protocols",id:"typed-protocols",level:3},{value:"Input Endorsers Simulation",id:"input-endorsers-simulation",level:3}],k={toc:p},h="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(h,(0,n.Z)({},k,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"network-update"},"Network Update"),(0,a.kt)("h3",{id:"ouroboros-network"},"Ouroboros Network"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We finished high and low level ",(0,a.kt)("em",{parentName:"li"},"peer sharing")," design. See\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/wiki/Peer-Sharing-Implementation-Plan"},"Peer Sharing Implementation Plan")),(0,a.kt)("li",{parentName:"ul"},"We started working on low-level design of ",(0,a.kt)("em",{parentName:"li"},"eclipse evasion")," (work in\nprogress)."),(0,a.kt)("li",{parentName:"ul"},"We decided to use ",(0,a.kt)("strong",{parentName:"li"},"peer sharing")," instead of overloaded and ambiguous ",(0,a.kt)("em",{parentName:"li"},"gossip")," term.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3980"},"PR input-output-hk/ouroboros-network#3980")),(0,a.kt)("li",{parentName:"ul"},"We fixed technical dept\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3905"},"issue input-output-hk/cardano-node#3905")," in\nthe simulation testing of diffusion\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4004"},"PR input-output-hk/cardano-node#4004")),(0,a.kt)("li",{parentName:"ul"},"We deployed all our nodes using our new nix based deployment architecture.\nWhen deploying we found an issue in the\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/3752"},(0,a.kt)("inlineCode",{parentName:"a"},"RTView")),".")),(0,a.kt)("h3",{id:"ouroboros-consensus"},"Ouroboros Consensus"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Recently we found out that the consensus does not log exceptions thrown during\nintiialisation. This was fixed in\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4015"},"PR input-output-hk/ouroboros-network#4015"),"\nAs part of this pull request we also changed that all exceptions rethrown by\nthe connection handler thread are wrapped in ",(0,a.kt)("inlineCode",{parentName:"li"},"ExceptionInHandler"),".")),(0,a.kt)("h4",{id:"some-older-items-which-were-not-announced"},"Some older items, which were not announced"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We identified and fixed an issue related to socket activation (socket options\nwhere not set for sockets passed through socket activation).\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3979"},"PR input-output-hk/cardano-node#3979"),"\nThis fix will be released in the next ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node")," release.")),(0,a.kt)("h3",{id:"cardano-node"},"Cardano Node"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We extended the NixOs service module so that one can modify ",(0,a.kt)("inlineCode",{parentName:"li"},"socketPath"),",\n",(0,a.kt)("inlineCode",{parentName:"li"},"runtimeDir"),", ",(0,a.kt)("inlineCode",{parentName:"li"},"databasePath"),", ",(0,a.kt)("inlineCode",{parentName:"li"},"traceSocketPathAccept"),",\n",(0,a.kt)("inlineCode",{parentName:"li"},"traceSocketPathConnect")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"stateDir")," options.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4196"},"PR input-output-hk/cardano-node#4196"))),(0,a.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,a.kt)("p",null,"We resolved a number of issues before release of ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," on hackage:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2797"},"issue input-output-hk/ouroboros-network#2797")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2650"},"issue input-output-hk/ouroboros-network#2650")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3436"},"issue input-output-hk/ouroboros-network#3436")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2588"},"issue input-output-hk/ouroboros-network#2588")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2587"},"issue input-output-hk/ouroboros-network#2587")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2586"},"issue input-output-hk/ouroboros-network#2586"))),(0,a.kt)("p",null,"See ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/24"},"PR #24"),"."),(0,a.kt)("p",null,"We also improved experience for contributors of ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"typed-protocols")," by adding issue templates:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/25"},"PR input-output-hk/io-sim#25"))),(0,a.kt)("h3",{id:"typed-protocols"},"Typed Protocols"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We pushed a branch which identifies a GHC quirk:\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/tree/coot/typed-protocols-rewrite-StateToken-problem"},"coot/typed-protocols-rewrite-StateToken-problem"),".\nThat's too be resolved in order to push forward review of the redesign in\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/3"},"PR input-output-hk/typed-protocols#3"),"."),(0,a.kt)("li",{parentName:"ul"},"As for ",(0,a.kt)("inlineCode",{parentName:"li"},"io-sim"),", we wrote issue templates:\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/11"},"PR input-output-hk/typed-protocols#11"))),(0,a.kt)("h3",{id:"input-endorsers-simulation"},"Input Endorsers Simulation"),(0,a.kt)("p",null,"New features include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Histograms of block arrival frequency, for both network (inbound) and CPU\n(block validation). This is interesting to check that we're not overloading\nthe CPU block validation capacity, or network link capacity. Or alternatively\nto observe the behaviour in an overload situation if we set the block\ngeneration rate high enough.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},'Pie chart of utilisation of TCP links. This shows how small a fraction of\nlinks are being used at any one time, and shows that once the system "warms\nup" and is operating stably, most block delivery is ballistic.')),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Showing off the new screen layout combinators, that let us put multiple\ncharts, titles etc on screen at once and scale them to whatever screen or\nvideo resolution we like without having to tweak numbers (this example is\nscaled to fit 1080HD video resolution)."))),(0,a.kt)(i.Z,{playing:!0,controls:!0,url:"/p2p-relay-5.mp4",mdxType:"ReactPlayer"}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/209bf559.8a8670ee.js b/assets/js/209bf559.8a8670ee.js new file mode 100644 index 00000000000..39093ff3072 --- /dev/null +++ b/assets/js/209bf559.8a8670ee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80367],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var l=n.createContext({}),p=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(o),h=r,m=d["".concat(l,".").concat(h)]||d[h]||c[h]||a;return o?n.createElement(m,i(i({ref:t},u),{},{components:o})):n.createElement(m,i({ref:t},u))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var n=o(87462),r=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-10-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-10-02-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-02-network.md",source:"@site/blog/2023-10-02-network.md",title:"Network Team Update",description:"High-level overview of sprint 45",date:"2023-10-02T00:00:00.000Z",formattedDate:"October 2, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.485,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-10-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-04-mithril"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-29-goedel"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level overview of sprint 45",id:"high-level-overview-of-sprint-45",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"Towards Typed Protocols 0.2.0.0",id:"towards-typed-protocols-0200",level:3},{value:"Tech Debt",id:"tech-debt",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"IOSimPOR",id:"iosimpor",level:4},{value:"IOSim",id:"iosim",level:4},{value:"Cardano Newtork Service Assurance",id:"cardano-newtork-service-assurance",level:3},{value:"P2P adoption",id:"p2p-adoption",level:3},{value:"Open Source",id:"open-source",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview-of-sprint-45"},"High-level overview of ",(0,r.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+45%22"},"sprint 45")),(0,r.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,r.kt)("p",null,"We started reviewing the bootstrap peers PR, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4615"},"ouroboros-network#4615"),"."),(0,r.kt)("h3",{id:"towards-typed-protocols-0200"},"Towards Typed Protocols 0.2.0.0"),(0,r.kt)("p",null,"We discovered a performance regression when using ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0"),", and we\nstarted investigating where it comes from. Currently, we see that\n",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0")," can outperform ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.1.0.0")," when running\nin isolation with a simple ",(0,r.kt)("inlineCode",{parentName:"p"},"ping-pong")," protocol, so the regression might be in\nthe new block fetch implementation which comes with ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0"),"\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/3"},"typed-protocols#3"),"."),(0,r.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,r.kt)("p",null,"We merged two PRs written by Galois engineers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a pull request which refactors the main entry function for P2P, see ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3834"},"ouroboros-network#3834"),"; "),(0,r.kt)("li",{parentName:"ul"},"a pull request which reviews usage of ",(0,r.kt)("inlineCode",{parentName:"li"},"unsafe")," function in the network code based.")),(0,r.kt)("p",null,"Galois also made progress with the following two issues:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"add microbenchmarks to some of our tests: ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3832"},"ouroboros-network#3832")),(0,r.kt)("li",{parentName:"ul"},"inspect use of ",(0,r.kt)("inlineCode",{parentName:"li"},"error")," in ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-network")," repository:\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3836"},"ouroboros-network#3836"))),(0,r.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,r.kt)("h4",{id:"iosimpor"},"IOSimPOR"),(0,r.kt)("p",null,"We found and fixed a bug in ",(0,r.kt)("inlineCode",{parentName:"p"},"IOSimPOR"),". We'd like to thank Prof. John Hughes\n(Quviq AB) for helping us with debugging the issue."),(0,r.kt)("p",null,"We also provided a more uniform API for ",(0,r.kt)("inlineCode",{parentName:"p"},"IOSimPOR"),", and added ways to make the\ndebugging similar problems in the future easier."),(0,r.kt)("details",null,(0,r.kt)("summary",null,"Technical Details on IOSim refactoring"),"We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future."),(0,r.kt)("h4",{id:"iosim"},"IOSim"),(0,r.kt)("p",null,"To prepare for the next release, we consolidate packages taking advantage of\nthe public sublibraries supported now both by ",(0,r.kt)("inlineCode",{parentName:"p"},"cabal")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Hackage"),". This is\na work in progress, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/issues/114"},"io-sim#114"),"."),(0,r.kt)("h3",{id:"cardano-newtork-service-assurance"},"Cardano Newtork Service Assurance"),(0,r.kt)("p",null,"Galois made the following progress:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A test run of spinning up a CNSA instance was done, as a result documentation\nwas updated."),(0,r.kt)("li",{parentName:"ul"},"Based on the IOG code review of the CNSA code, updates to the CNSA code were\nmade."),(0,r.kt)("li",{parentName:"ul"},'Galois has started the design for adding a CNSA analysis for "fetched bytes\nover time while node is syncing".')),(0,r.kt)("h3",{id:"p2p-adoption"},"P2P adoption"),(0,r.kt)("p",null,"In the last two weeks, we've seen increase in P2P adoption.\n",(0,r.kt)("img",{alt:"P2P relays",src:o(53101).Z,width:"2668",height:"1576"})),(0,r.kt)("p",null,"The following graphs show several different versions of relays running on the mainnet. The\ngreen line ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionV10.True")," denotes P2P relays.\n",(0,r.kt)("img",{alt:"node versions",src:o(40970).Z,width:"2674",height:"1580"})),(0,r.kt)("h3",{id:"open-source"},"Open Source"),(0,r.kt)("p",null,"We upstreamed our FFI bindings to Windows named pipes to ",(0,r.kt)("inlineCode",{parentName:"p"},"Win32")," package, the\nPR was accepted and merged."),(0,r.kt)("p",null,"We also received an external contribution which enhanced our documentation, see\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4676"},"ouroboros-network#4676"),"."))}c.isMDXComponent=!0},53101:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/2023-10-04-p2p-relays-75c2baf57ea9346a40f0098b2abb4a99.png"},40970:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/2023-10-04-relay-versions-5168d3ed0ad365a18e86263fcccffd23.png"}}]); \ No newline at end of file diff --git a/assets/js/20bc6fcd.6a2cce37.js b/assets/js/20bc6fcd.6a2cce37.js new file mode 100644 index 00000000000..b9b6effce06 --- /dev/null +++ b/assets/js/20bc6fcd.6a2cce37.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4093],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),s=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=s(a),m=r,h=c["".concat(p,".").concat(m)]||c[m]||d[m]||i;return a?n.createElement(h,o(o({ref:t},u),{},{components:a})):n.createElement(h,o({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const i={title:"Developer Experience Update",slug:"2023-06-09-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-09-developer-experience",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-developer-experience.md",source:"@site/blog/2023-06-09-developer-experience.md",title:"Developer Experience Update",description:"High level summary",date:"2023-06-09T00:00:00.000Z",formattedDate:"June 9, 2023",tags:[{label:"devx",permalink:"/cardano-updates/tags/devx"}],readingTime:2.035,hasTruncateMarker:!1,authors:[{name:"Moritz Angermann",title:"Head of Developer Experience",url:"https://github.com/angerman",imageURL:"https://github.com/angerman.png",key:"angerman"}],frontMatter:{title:"Developer Experience Update",slug:"2023-06-09-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-06-09-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-09-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"build support & maintainance",id:"build-support--maintainance",level:3},{value:"compiler upgrades",id:"compiler-upgrades",level:3},{value:"CHaP (cardano-haskell-packages)",id:"chap-cardano-haskell-packages",level:3},{value:"GitHub Actions",id:"github-actions",level:3},{value:"iohk-nix",id:"iohk-nix",level:3},{value:"haskell.nix",id:"haskellnix",level:3},{value:"devx",id:"devx",level:3},{value:"upstream tooling",id:"upstream-tooling",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements."),(0,r.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,r.kt)("h3",{id:"build-support--maintainance"},"build support & maintainance"),(0,r.kt)("p",null,"Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure ",(0,r.kt)("inlineCode",{parentName:"p"},"LoadDLL")," errors to ",(0,r.kt)("inlineCode",{parentName:"p"},"blst")," integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base"},"cardano-base")," experiencing significant reductions in CI complexity."),(0,r.kt)("h3",{id:"compiler-upgrades"},"compiler upgrades"),(0,r.kt)("p",null,"After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility."),(0,r.kt)("h3",{id:"chap-cardano-haskell-packages"},"CHaP (cardano-haskell-packages)"),(0,r.kt)("p",null,"We relocated the underlying tooling, (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/foliage"},"foliage"),"), for ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP")," into the IOG organization. Furthermore, we have introduced ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/260"},"improved tooling to quickly add constraints to packages"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/issues/285"},"better error reporting for add-revision")," and ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/foliage/pull/63"},"better hackage url compatibility")," to facilitate easer usage of CHaP."),(0,r.kt)("h3",{id:"github-actions"},"GitHub Actions"),(0,r.kt)("p",null,"Our repository, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/actions"},"input-output-hk/actions"),", now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the ",(0,r.kt)("inlineCode",{parentName:"p"},"base")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"haskell")," install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking ",(0,r.kt)("inlineCode",{parentName:"p"},"cabal"),"."),(0,r.kt)("h3",{id:"iohk-nix"},"iohk-nix"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/iohk-nix"},"iohk-nix")," repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, ",(0,r.kt)("inlineCode",{parentName:"p"},"sodium"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"blst"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"secp256k1"),", are also fixed to certain revisions within the ",(0,r.kt)("inlineCode",{parentName:"p"},"iohk-nix")," repository."),(0,r.kt)("h3",{id:"haskellnix"},"haskell.nix"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/haskell.nix"},"Haskell.nix")," has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to ",(0,r.kt)("inlineCode",{parentName:"p"},"gmp"),"."),(0,r.kt)("h3",{id:"devx"},"devx"),(0,r.kt)("p",null,"The relatively new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/devx"},"devx")," repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The ",(0,r.kt)("inlineCode",{parentName:"p"},"devx")," repository's readme has been updated to reflect its purpose and usage guidelines."),(0,r.kt)("h3",{id:"upstream-tooling"},"upstream tooling"),(0,r.kt)("p",null,"Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/20ca2c37.5368fb83.js b/assets/js/20ca2c37.5368fb83.js new file mode 100644 index 00000000000..fbfc6eb9eeb --- /dev/null +++ b/assets/js/20ca2c37.5368fb83.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[38516],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(n),m=a,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||o;return n?r.createElement(h,i(i({ref:t},s),{},{components:n})):r.createElement(h,i({ref:t},s))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-07-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-04-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-04-db-sync.md",source:"@site/blog/2023-07-04-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-07-04T00:00:00.000Z",formattedDate:"July 4, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.73,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-07-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-07-06-developer-experience"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-04-node-cli-api"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],s={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We've made progress in all high level objectives"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"CIP-1694 integration design"),(0,a.kt)("li",{parentName:"ul"},"UTxO-HD integration proof of concept"),(0,a.kt)("li",{parentName:"ul"},"schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested"),(0,a.kt)("li",{parentName:"ul"},"Many devx issues resolved")),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We have improved and validated the design for the Conway integration in db-sync"),(0,a.kt)("li",{parentName:"ul"},"Improved the initial integration of the UTxO-HD feauture branches which are under test"),(0,a.kt)("li",{parentName:"ul"},"Prepared a new release 13.1.1.3 which supports node 8.1.1\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1455"},"#1455"),"."),(0,a.kt)("li",{parentName:"ul"},"This also fixes a bug\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1451"},"#1451")),(0,a.kt)("li",{parentName:"ul"},"Added new tests to the new tx_out options\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1429"},"#1429")),(0,a.kt)("li",{parentName:"ul"},"Fixed a chronic issue in db-sync related to exception handling and concurrency\nThis fixes many other issues and simplifies the logic in db-sync\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1447"},"#1447")),(0,a.kt)("li",{parentName:"ul"},"A number of fixes and improvements in ci, docker, devx, docs\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1436"},"#1436"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1442"},"#1442"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1448"},"#1448"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1452"},"#1452"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2154b8e4.4635d227.js b/assets/js/2154b8e4.4635d227.js new file mode 100644 index 00000000000..d0a80f3d032 --- /dev/null +++ b/assets/js/2154b8e4.4635d227.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[28480],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var p=a.createContext({}),i=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=i(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},s=a.forwardRef((function(e,t){var r=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,d=u(e,["components","mdxType","originalType","parentName"]),c=i(r),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||n;return r?a.createElement(h,o(o({ref:t},d),{},{components:r})):a.createElement(h,o({ref:t},d))}));function h(e,t){var r=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=r.length,o=new Array(n);o[0]=s;var u={};for(var p in t)hasOwnProperty.call(t,p)&&(u[p]=t[p]);u.originalType=e,u[c]="string"==typeof e?e:l,o[1]=u;for(var i=2;i{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>i});var a=r(87462),l=(r(67294),r(3905));const n={title:"Ledger Team Update",slug:"2023-05-26-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,u={permalink:"/cardano-updates/2023-05-26-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-ledger.md",source:"@site/blog/2023-05-26-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.565,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-05-26-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-26-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-26-network"}},p={authorsImageUrls:[void 0]},i=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway progress",id:"conway-progress",level:3},{value:"Improve testing",id:"improve-testing",level:3},{value:"Integration work",id:"integration-work",level:3},{value:"Technical debt",id:"technical-debt",level:3}],d={toc:i},c="wrapper";function m(e){let{components:t,...r}=e;return(0,l.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"The ledger team made progress on the conway ledger era. In particular, the design and implementation\nof the new certificates is near complete, we refactored some of our data structures\nto be able to support DReps, we cleaned up the serialization format, and renamed things to make\nclearer the differences with Shelley."),(0,l.kt)("p",null,"The team also completed integration work for the next node release, namely 8.1.0.\nAnd, as always, we continue to address technical debt."),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway-progress"},"Conway progress"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3408"},"pull-3408")," - Improve conway delegation certificates"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3428"},"pull-3428")," - Get rid of Constitutional in favor of Genesis and Committee"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3426"},"pull-3426")," - Add DRep to internal data struture (UMap)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3425"},"pull-3425")," - Improve witness logic needed for conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3423"},"pull-3423")," - Rename ShelleyDelegCerts constructors to distinguish them from Conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3421"},"pull-3421")," - Rename DCert -> TxCert"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3454"},"pull-3454")," - conway CDDL minor fixes")),(0,l.kt)("h3",{id:"improve-testing"},"Improve testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3403"},"pull-3403")," - Add Plutus script context golden tests")),(0,l.kt)("h3",{id:"integration-work"},"Integration work"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3410"},"pull-3410")," - Update chaps index"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3416"},"pull-3416")," - Bump cardano-ledger-alonzo-test version"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3414"},"pull-3414")," - Bump cardano-ledger-shelley-test minor version"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3420"},"pull-3420")," - Bump cardano-ledger-shelley-ma-test version"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3441"},"pull-3441")," - Release cardano-ledger-","[alonzo|babbage]","-1.2.1")),(0,l.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3409"},"pull-3409")," - Unit test - no such thing as a reference datum"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3407"},"pull-3407")," - Fixup release process documentation"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3404"},"pull-3404")," - Create TotalDeposits events during all eras"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3402"},"pull-3402")," - Fix broken references in the Shelley spec"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3424"},"pull-3424")," - Remove no longer used cardano-ledger-shelley-ma package"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3432"},"pull-3432")," - Add an example on how to bump up versions in the changelog "),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3440"},"pull-3440")," - Revert back to the group serialization for ProtVer for PParams ")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/21735eff.0b009fcd.js b/assets/js/21735eff.0b009fcd.js new file mode 100644 index 00000000000..be257984d71 --- /dev/null +++ b/assets/js/21735eff.0b009fcd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64156],{60430:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/network/page/2","page":2,"postsPerPage":5,"totalPages":5,"totalCount":24,"previousPage":"/cardano-updates/tags/network","nextPage":"/cardano-updates/tags/network/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/21857c8f.db26831e.js b/assets/js/21857c8f.db26831e.js new file mode 100644 index 00000000000..d1c4d49a639 --- /dev/null +++ b/assets/js/21857c8f.db26831e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85417],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),m=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=m(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=m(r),d=a,y=u["".concat(l,".").concat(d)]||u[d]||c[d]||o;return r?n.createElement(y,s(s({ref:t},p),{},{components:r})):n.createElement(y,s({ref:t},p))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:a,s[1]=i;for(var m=2;m{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>m});var n=r(87462),a=(r(67294),r(3905));const o={title:"System Test Team Update",slug:"2022-12-01-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-12-01-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-system-test.md",source:"@site/blog/2022-12-01-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2022-12-01T00:00:00.000Z",formattedDate:"December 1, 2022",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.765,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"System Test Team Update",slug:"2022-12-01-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-01-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-30-consensus"}},l={authorsImageUrls:[void 0]},m=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],p={toc:m},u="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the ",(0,a.kt)("em",{parentName:"p"},"P2P Single\nRelay")," functionality, and also tested some DB-Sync tags."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"moved the System Test CLI Pipelines from BuildKite to Github Actions"),(0,a.kt)("li",{parentName:"ul"},"improved the reporting tools to support the rerun of the failled tests and update of the reports "),(0,a.kt)("li",{parentName:"ul"},"added support for Github API in ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/mkoura/report-aggregator"},"report-aggregator"),", so reports will be generated from the GitHub nightly jobs from now on"),(0,a.kt)("li",{parentName:"ul"},"added support for mixed topology - P2P, legacy, mixed topologies"),(0,a.kt)("li",{parentName:"ul"},"planned the P2P Single Relay system test activities "),(0,a.kt)("li",{parentName:"ul"},"added support to start regression tests with PV8 + better selection of tests")),(0,a.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)"),(0,a.kt)("li",{parentName:"ul"},"tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/219856ee.fc647f5b.js b/assets/js/219856ee.fc647f5b.js new file mode 100644 index 00000000000..167c697872b --- /dev/null +++ b/assets/js/219856ee.fc647f5b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2109],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},m=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),s=c(r),d=n,f=s["".concat(p,".").concat(d)]||s[d]||u[d]||o;return r?a.createElement(f,l(l({ref:t},m),{},{components:r})):a.createElement(f,l({ref:t},m))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-04-28-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-04-28-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-goedel.md",source:"@site/blog/2023-04-28-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-04-28T00:00:00.000Z",formattedDate:"April 28, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.375,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-04-28-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-04-28-crypto"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-04-28-network"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],m={toc:c},s="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The team is working on porting an existing formalisation of Ouroboros\nPraos to a newer foundation."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team worked on documentation.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team worked on an application layer for the Praos formalisation.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2276e554.dfa87ea9.js b/assets/js/2276e554.dfa87ea9.js new file mode 100644 index 00000000000..7b252f2325a --- /dev/null +++ b/assets/js/2276e554.dfa87ea9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[28843],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),c=u(r),h=o,m=c["".concat(p,".").concat(h)]||c[h]||d[h]||a;return r?n.createElement(m,i(i({ref:t},l),{},{components:r})):n.createElement(m,i({ref:t},l))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=h;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>u});var n=r(87462),o=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-08-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-08-04-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-network.md",source:"@site/blog/2023-08-04-network.md",title:"Network Team Update",description:"High-level overview of sprint 41",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.515,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-08-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-04-ledger"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-04-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level overview of sprint 41",id:"high-level-overview-of-sprint-41",level:2},{value:"Other contributions",id:"other-contributions",level:2}],l={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-overview-of-sprint-41"},"High-level overview of ",(0,o.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+41%22"},"sprint 41")),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"24th July - 6th August 2023")),(0,o.kt)("p",null,"We started the implementation of ",(0,o.kt)("strong",{parentName:"p"},"bootstrap peers"),". Bootstrap peers are designed\nto provide a safety guarantee for nodes joining the network while still taking\nadvantage of the distributed network for nodes that are synced. This will be\nan intermediate step before Genesis which will allow for further distribute the\nsystem. The bootstrap peers will be run by some trusted partners like CF,\nEmurgo or IOG. They are primarily designed for leaf nodes (e.g. full node\nwallets), which often end up syncing and require access to the honest chain. See\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4615"},"ouroboros-network#4615")," for a more detailed implementation plan."),(0,o.kt)("h2",{id:"other-contributions"},"Other contributions"),(0,o.kt)("p",null,"We started to use ",(0,o.kt)("inlineCode",{parentName:"p"},"nothunks")," library to discover if we have any unevaluated\nthunks which can lead to memory leaks ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4633"},"ouroboros-network#4633"),". We found\na small one in the peer metric component of the P2P networking stack. Fixing\nit put us on a small detour of fixing the API of the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/tree/master/strict-checked-vars"},(0,o.kt)("inlineCode",{parentName:"a"},"strict-checked-vars")),"\npackage: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pulls/431"},"cardano-base#431"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pulls/432"},"cardano-base#432"),", as well as adding ",(0,o.kt)("inlineCode",{parentName:"p"},"NFData"),"\ninstance to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/110"},(0,o.kt)("inlineCode",{parentName:"a"},"io-classes")),". We also improved ",(0,o.kt)("inlineCode",{parentName:"p"},"nothunks"),"\nlibrary to make debugging easier and we provided a ",(0,o.kt)("inlineCode",{parentName:"p"},"NoThunks")," instance for\n",(0,o.kt)("inlineCode",{parentName:"p"},"ThreadId")," which we will need in the future (see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/nothunks/pull/33"},"nothunks#33"),")."),(0,o.kt)("p",null,"We released a new version of ",(0,o.kt)("inlineCode",{parentName:"p"},"io-classes")," (version ",(0,o.kt)("inlineCode",{parentName:"p"},"1.2.0.0"),") and related\npackages to ",(0,o.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/io-classes-1.2.0.0io-classes-1.2.0.0"},"Hackage"),"."),(0,o.kt)("p",null,"We addressed all review comments on the eclipse evasion PR which introduces big\nledger peers, ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"ouroboros-network#3886"),"."),(0,o.kt)("p",null,"We fixed how ",(0,o.kt)("inlineCode",{parentName:"p"},"SIGHUP")," signal handlers are registered, so it's not possible to\nshutdown a node which was starting while trying to update network topology,\nsee ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5421"},"cardano-node#5421"),"."),(0,o.kt)("p",null,"I didn't mention that in the previous update, so here it goes: in the previous\nsprint we released ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/blob/f84fcddce472d6cfc2b838b20a2ad085fe0896ed/ouroboros-network/CHANGELOG.md"},(0,o.kt)("inlineCode",{parentName:"a"},"ouroboros-network-0.8.2.0"))," and\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/blob/ouroboros-network-framework-0.7.0.0/ouroboros-network-framework/CHANGELOG.md"},(0,o.kt)("inlineCode",{parentName:"a"},"ouroboros-network-framework-0.7.0.0")),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/237aa4d6.8db3819a.js b/assets/js/237aa4d6.8db3819a.js new file mode 100644 index 00000000000..59ec098af03 --- /dev/null +++ b/assets/js/237aa4d6.8db3819a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98918],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(n),d=a,f=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return n?r.createElement(f,l(l({ref:t},s),{},{components:n})):r.createElement(f,l({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-07-20-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-20-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-20-goedel.md",source:"@site/blog/2023-07-20-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-07-20T00:00:00.000Z",formattedDate:"July 20, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.47,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-07-20-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-21-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-18-node-cli-api"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is working on formalising mini protocols, the performance\nmodelling prototype and also finishing off their ICE papers."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Formalization of the chain synchronization mini-protocol in the\nthorn calculus")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Final pre-publication steps for ICE 2023 papers")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Developing approach for specification and verification of\nmini-protocols")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Started work on porting the DeltaQ framework to a new, more concrete\nbackend based on piecewise-polynomials"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/23a95b4f.a0a27f60.js b/assets/js/23a95b4f.a0a27f60.js new file mode 100644 index 00000000000..ab5aa8f1795 --- /dev/null +++ b/assets/js/23a95b4f.a0a27f60.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94583],{56372:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/tags/consensus","allTagsPath":"/cardano-updates/tags","count":32}')}}]); \ No newline at end of file diff --git a/assets/js/2455acc4.54c4fd43.js b/assets/js/2455acc4.54c4fd43.js new file mode 100644 index 00000000000..a928ffc9131 --- /dev/null +++ b/assets/js/2455acc4.54c4fd43.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21642],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},m="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},s=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),m=u(a),s=r,h=m["".concat(p,".").concat(s)]||m[s]||d[s]||i;return a?n.createElement(h,l(l({ref:e},c),{},{components:a})):n.createElement(h,l({ref:e},c))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=s;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[m]="string"==typeof t?t:r,l[1]=o;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-08-15-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-08-15-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-15-node-cli-api.md",source:"@site/blog/2023-08-15-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-08-15T00:00:00.000Z",formattedDate:"August 15, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.29,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-08-15-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"SECP bindings Security Issue Report",permalink:"/cardano-updates/2023-08-17-secp-issue"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-11-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(t){let{components:e,...a}=t;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-08-02---2023-08-15"},"2023-08-02 - 2023-08-15"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"cardano-node 8.2.1 (pre-release) to SanchoNet"),(0,r.kt)("li",{parentName:"ul"},"Continue moving CLI into era-based top level command structure"),(0,r.kt)("li",{parentName:"ul"},"Wire-up DREP key generation,"),(0,r.kt)("li",{parentName:"ul"},"Fix DREP deregistration certificates"),(0,r.kt)("li",{parentName:"ul"},"Implement Constitutional Committee Key generation on the CLI"),(0,r.kt)("li",{parentName:"ul"},"Introducing era-based protocol parameters on the API"),(0,r.kt)("li",{parentName:"ul"},"Removing depracated functions and types on the API")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/169"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.13.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/164"},"Reenable golden tests")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/163"},"#128 DRep key generation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/160"},"Bump index states")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/159"},"Fix deregistration-certificate: generate deregistration instead of registration certs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/158"},"Structuring legacy code so that era-based code does not depend on it")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/151"},"Plural for command groups")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/144"},"Implement ",(0,r.kt)("inlineCode",{parentName:"a"},"conway governance committee key-hash")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/142"},"Wire up constitution creation in the new era based cli commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/140"},"cardano-cli 8.5.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/137"},"Wire up remaining DReps")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/136"},"Implement ",(0,r.kt)("inlineCode",{parentName:"a"},"conway governance committee hot-key-gen")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/127"},"Convert to use ",(0,r.kt)("inlineCode",{parentName:"a"},"tasty-discover")))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/189"},"Release cardano-api 8.13.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/187"},"Fix build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/185"},"cardano-api 8.13.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/181"},"Modify ",(0,r.kt)("inlineCode",{parentName:"a"},"queryGenesisParameters")," so that its type advertises it only returns genesis parameters for the Shelley era")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/180"},"Introduce EraBasedProtocolParametersUpdate")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/173"},"Delete deprecated functions and types")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/171"},"Simplify code with new constraints functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/170"},"Fix ",(0,r.kt)("inlineCode",{parentName:"a"},"EraCast Certificate"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/168"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.12.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/167"},"Fix committee hot keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/164"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.11.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/163"},"Fix typo Constitional -> Constitutional"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5430"},"cardano-git-rev: New version for CHaP")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5427"},"Fix broken links in docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5423"},"cardano-node 8.2.1"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5427"},"Fix broken links in docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5423"},"cardano-node 8.2.1"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5427"},"Fix broken links in docs")),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/127"},"Convert to use ",(0,r.kt)("inlineCode",{parentName:"a"},"tasty-discover")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/245ecae9.0554e2e3.js b/assets/js/245ecae9.0554e2e3.js new file mode 100644 index 00000000000..c42f5e8b555 --- /dev/null +++ b/assets/js/245ecae9.0554e2e3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65356],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(a),d=n,m=s["".concat(p,".").concat(d)]||s[d]||c[d]||o;return a?r.createElement(m,i(i({ref:t},h),{},{components:a})):r.createElement(m,i({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-09-15-hydra",authors:["v0d1ch","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-09-15-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-hydra.md",source:"@site/blog/2023-09-15-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.94,hasTruncateMarker:!1,authors:[{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"},{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-15-hydra",authors:["v0d1ch","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-15-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-15-ledger"}},p={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, most of the Hydra team was attending a cardano scaling workshop in\nNantes, France. They used this oportunity to meet fellow mithril team and spend\nsome time together to hack on some code and, as always, reflect on the past work\nand find optimal path forward for both projects. They also fixed a bug that\ncaused hydra-node to crash when querying L1, worked on a new network resillience\nproof-of-concept and accepted a new ADR related to stateless transaction\nobservation."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano scaling workshop with members of hydra and mithril teams "),(0,n.kt)("li",{parentName:"ul"},"Accepted user contribution for possible new use-case ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1048"},"#1048")),(0,n.kt)("li",{parentName:"ul"},"Fix for the hydra-node crash related to internal wallet query ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1053"},"#1053")),(0,n.kt)("li",{parentName:"ul"},"Collected experimental CI findings ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1070"},"#1070")),(0,n.kt)("li",{parentName:"ul"},"Propose first POC for the network resilience ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1074"},"#1074"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting & report including updates from Mithril"),(0,n.kt)("li",{parentName:"ul"},"Review POC and discuss our options for the network resilience"),(0,n.kt)("li",{parentName:"ul"},"Update cardano-api to version 8.20"),(0,n.kt)("li",{parentName:"ul"},"Address TODOs on aiken commit validator ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1072"},"#1072")),(0,n.kt)("li",{parentName:"ul"},"Complete hydra-support in kupo ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/CardanoSolutions/kupo/pull/117"},"kupo#117"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/246d9f04.1a9615d1.js b/assets/js/246d9f04.1a9615d1.js new file mode 100644 index 00000000000..b898c4f1868 --- /dev/null +++ b/assets/js/246d9f04.1a9615d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7966],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=p(r),d=n,h=m["".concat(u,".").concat(d)]||m[d]||c[d]||i;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=d;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[m]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-08-04-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-08-04-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-crypto.md",source:"@site/blog/2023-08-04-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.495,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-08-04-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-09-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-04-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"MuSig2",id:"musig2",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},m="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation"),(0,n.kt)("li",{parentName:"ul"},"mithril: Full node verifier"),(0,n.kt)("li",{parentName:"ul"},"musig2: Finalised the missing fuzz tests"),(0,n.kt)("li",{parentName:"ul"},"kes_agent: engineer on PTO. Work halted ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work on a mithril flaky test ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/1105"},"#1105")),(0,n.kt)("li",{parentName:"ul"},"Keep working on Full Node Verifier ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"),".\nShould be merged in the coming week.")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finalised the fuzz tests ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/43"},"#43"))),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2494f6fc.cb95a366.js b/assets/js/2494f6fc.cb95a366.js new file mode 100644 index 00000000000..21ace08ff85 --- /dev/null +++ b/assets/js/2494f6fc.cb95a366.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[57583],{4452:a=>{a.exports=JSON.parse('[{"label":"consensus","permalink":"/cardano-updates/quarterly/tags/consensus","count":4},{"label":"network","permalink":"/cardano-updates/quarterly/tags/network","count":4},{"label":"sre","permalink":"/cardano-updates/quarterly/tags/sre","count":2},{"label":"performance-tracing","permalink":"/cardano-updates/quarterly/tags/performance-tracing","count":1},{"label":"ledger","permalink":"/cardano-updates/quarterly/tags/ledger","count":2},{"label":"open-source","permalink":"/cardano-updates/quarterly/tags/open-source","count":1},{"label":"cli-api-quarterly","permalink":"/cardano-updates/quarterly/tags/cli-api-quarterly","count":1}]')}}]); \ No newline at end of file diff --git a/assets/js/24d5a6d9.56e383b8.js b/assets/js/24d5a6d9.56e383b8.js new file mode 100644 index 00000000000..5493e356336 --- /dev/null +++ b/assets/js/24d5a6d9.56e383b8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98698],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=n,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||i;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Mithril Team Update",slug:"2023-09-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-27-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-27-mithril.md",source:"@site/blog/2023-09-27-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-09-27T00:00:00.000Z",formattedDate:"September 27, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.975,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-09-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-29-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-26-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team has released a new distribution ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2337.0"},(0,n.kt)("inlineCode",{parentName:"a"},"2337.0")),", which includes the following enhancements: support for ",(0,n.kt)("inlineCode",{parentName:"p"},"zstandard")," compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator."),(0,n.kt)("p",null,"They also completed the refactoring and standardization of the errors in the Mithril nodes and published an ",(0,n.kt)("a",{parentName:"p",href:"https://mithril.network/doc/adr/6"},"Architectural decision record")," on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure."),(0,n.kt)("p",null,"Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Release new ",(0,n.kt)("inlineCode",{parentName:"strong"},"2337")," distribution")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1219"},"#1219")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Errors refactoring")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/798"},"#798")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Client traffic creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1207"},"#1207")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Record statistics about the downloaded snapshot in the aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1127"},"#1127")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Create a SPO checklist for KES keys update")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1267"},"#1267")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Spike: Run client in browser WASM PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1254"},"#1254")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Benchmark aggregator performances")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1220"},"#1220")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Activate Cloudflare protection of infrastructure")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1230"},"#1230"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2529.3a3a1ec8.js b/assets/js/2529.3a3a1ec8.js new file mode 100644 index 00000000000..a1671d1f8c0 --- /dev/null +++ b/assets/js/2529.3a3a1ec8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2529],{39058:(e,t,a)=>{a.d(t,{Z:()=>h});var l=a(67294),n=a(86010),r=a(93285),s=a(87524),o=a(39960),i=a(95999);const c={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};function m(e){let{sidebar:t}=e;return l.createElement("aside",{className:"col col--3"},l.createElement("nav",{className:(0,n.Z)(c.sidebar,"thin-scrollbar"),"aria-label":(0,i.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,n.Z)(c.sidebarItemTitle,"margin-bottom--md")},t.title),l.createElement("ul",{className:(0,n.Z)(c.sidebarItemList,"clean-list")},t.items.map((e=>l.createElement("li",{key:e.permalink,className:c.sidebarItem},l.createElement(o.Z,{isNavLink:!0,to:e.permalink,className:c.sidebarItemLink,activeClassName:c.sidebarItemLinkActive},e.title)))))))}var u=a(13102);function d(e){let{sidebar:t}=e;return l.createElement("ul",{className:"menu__list"},t.items.map((e=>l.createElement("li",{key:e.permalink,className:"menu__list-item"},l.createElement(o.Z,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active"},e.title)))))}function g(e){return l.createElement(u.Zo,{component:d,props:e})}function p(e){let{sidebar:t}=e;const a=(0,s.i)();return t?.items.length?"mobile"===a?l.createElement(g,{sidebar:t}):l.createElement(m,{sidebar:t}):null}function h(e){const{sidebar:t,toc:a,children:s,...o}=e,i=t&&t.items.length>0;return l.createElement(r.Z,o,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},l.createElement(p,{sidebar:t}),l.createElement("main",{className:(0,n.Z)("col",{"col--7":i,"col--9 col--offset-1":!i}),itemScope:!0,itemType:"http://schema.org/Blog"},s),a&&l.createElement("div",{className:"col col--2"},a))))}},30390:(e,t,a)=>{a.d(t,{Z:()=>R});var l=a(67294),n=a(86010),r=a(9460),s=a(44996);function o(e){let{children:t,className:a}=e;const{frontMatter:n,assets:o}=(0,r.C)(),{withBaseUrl:i}=(0,s.C)(),c=o.image??n.image;return l.createElement("article",{className:a,itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},c&&l.createElement("meta",{itemProp:"image",content:i(c,{absolute:!0})}),t)}var i=a(39960);const c={title:"title_f1Hy"};function m(e){let{className:t}=e;const{metadata:a,isBlogPostPage:s}=(0,r.C)(),{permalink:o,title:m}=a,u=s?"h1":"h2";return l.createElement(u,{className:(0,n.Z)(c.title,t),itemProp:"headline"},s?m:l.createElement(i.Z,{itemProp:"url",to:o},m))}var u=a(95999),d=a(88824);const g={container:"container_mt6G"};function p(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,d.c)();return t=>{const a=Math.ceil(t);return e(a,(0,u.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return l.createElement(l.Fragment,null,a(t))}function h(e){let{date:t,formattedDate:a}=e;return l.createElement("time",{dateTime:t,itemProp:"datePublished"},a)}function E(){return l.createElement(l.Fragment,null," \xb7 ")}function b(e){let{className:t}=e;const{metadata:a}=(0,r.C)(),{date:s,formattedDate:o,readingTime:i}=a;return l.createElement("div",{className:(0,n.Z)(g.container,"margin-vert--md",t)},l.createElement(h,{date:s,formattedDate:o}),void 0!==i&&l.createElement(l.Fragment,null,l.createElement(E,null),l.createElement(p,{readingTime:i})))}function f(e){return e.href?l.createElement(i.Z,e):l.createElement(l.Fragment,null,e.children)}function v(e){let{author:t,className:a}=e;const{name:r,title:s,url:o,imageURL:i,email:c}=t,m=o||c&&`mailto:${c}`||void 0;return l.createElement("div",{className:(0,n.Z)("avatar margin-bottom--sm",a)},i&&l.createElement(f,{href:m,className:"avatar__photo-link"},l.createElement("img",{className:"avatar__photo",src:i,alt:r})),r&&l.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},l.createElement("div",{className:"avatar__name"},l.createElement(f,{href:m,itemProp:"url"},l.createElement("span",{itemProp:"name"},r))),s&&l.createElement("small",{className:"avatar__subtitle",itemProp:"description"},s)))}const _={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function N(e){let{className:t}=e;const{metadata:{authors:a},assets:s}=(0,r.C)();if(0===a.length)return null;const o=a.every((e=>{let{name:t}=e;return!t}));return l.createElement("div",{className:(0,n.Z)("margin-top--md margin-bottom--sm",o?_.imageOnlyAuthorRow:"row",t)},a.map(((e,t)=>l.createElement("div",{className:(0,n.Z)(!o&&"col col--6",o?_.imageOnlyAuthorCol:_.authorCol),key:t},l.createElement(v,{author:{...e,imageURL:s.authorsImageUrls[t]??e.imageURL}})))))}function P(){return l.createElement("header",null,l.createElement(m,null),l.createElement(b,null),l.createElement(N,null))}var Z=a(18780),k=a(80210);function C(e){let{children:t,className:a}=e;const{isBlogPostPage:s}=(0,r.C)();return l.createElement("div",{id:s?Z.blogPostContainerID:void 0,className:(0,n.Z)("markdown",a),itemProp:"articleBody"},l.createElement(k.Z,null,t))}var I=a(84881),T=a(71526),w=a(87462);function y(){return l.createElement("b",null,l.createElement(u.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))}function F(e){const{blogPostTitle:t,...a}=e;return l.createElement(i.Z,(0,w.Z)({"aria-label":(0,u.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t})},a),l.createElement(y,null))}const L={blogPostFooterDetailsFull:"blogPostFooterDetailsFull_mRVl"};function B(){const{metadata:e,isBlogPostPage:t}=(0,r.C)(),{tags:a,title:s,editUrl:o,hasTruncateMarker:i}=e,c=!t&&i,m=a.length>0;return m||c||o?l.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",t&&L.blogPostFooterDetailsFull)},m&&l.createElement("div",{className:(0,n.Z)("col",{"col--9":c})},l.createElement(T.Z,{tags:a})),t&&o&&l.createElement("div",{className:"col margin-top--sm"},l.createElement(I.Z,{editUrl:o})),c&&l.createElement("div",{className:(0,n.Z)("col text--right",{"col--3":m})},l.createElement(F,{blogPostTitle:s,to:e.permalink}))):null}function R(e){let{children:t,className:a}=e;const s=function(){const{isBlogPostPage:e}=(0,r.C)();return e?void 0:"margin-bottom--xl"}();return l.createElement(o,{className:(0,n.Z)(s,a)},l.createElement(P,null),l.createElement(C,null,t),l.createElement(B,null))}},84881:(e,t,a)=>{a.d(t,{Z:()=>m});var l=a(67294),n=a(95999),r=a(35281),s=a(87462),o=a(86010);const i={iconEdit:"iconEdit_Z9Sw"};function c(e){let{className:t,...a}=e;return l.createElement("svg",(0,s.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(i.iconEdit,t),"aria-hidden":"true"},a),l.createElement("g",null,l.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function m(e){let{editUrl:t}=e;return l.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},l.createElement(c,null),l.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},32244:(e,t,a)=>{a.d(t,{Z:()=>s});var l=a(67294),n=a(86010),r=a(39960);function s(e){const{permalink:t,title:a,subLabel:s,isNext:o}=e;return l.createElement(r.Z,{className:(0,n.Z)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},s&&l.createElement("div",{className:"pagination-nav__sublabel"},s),l.createElement("div",{className:"pagination-nav__label"},a))}},13008:(e,t,a)=>{a.d(t,{Z:()=>o});var l=a(67294),n=a(86010),r=a(39960);const s={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function o(e){let{permalink:t,label:a,count:o}=e;return l.createElement(r.Z,{href:t,className:(0,n.Z)(s.tag,o?s.tagWithCount:s.tagRegular)},a,o&&l.createElement("span",null,o))}},71526:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(67294),n=a(86010),r=a(95999),s=a(13008);const o={tags:"tags_jXut",tag:"tag_QGVx"};function i(e){let{tags:t}=e;return l.createElement(l.Fragment,null,l.createElement("b",null,l.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),l.createElement("ul",{className:(0,n.Z)(o.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:a}=e;return l.createElement("li",{key:a,className:o.tag},l.createElement(s.Z,{label:t,permalink:a}))}))))}},9460:(e,t,a)=>{a.d(t,{C:()=>o,n:()=>s});var l=a(67294),n=a(902);const r=l.createContext(null);function s(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const s=function(e){let{content:t,isBlogPostPage:a}=e;return(0,l.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return l.createElement(r.Provider,{value:s},t)}function o(){const e=(0,l.useContext)(r);if(null===e)throw new n.i6("BlogPostProvider");return e}},88824:(e,t,a)=>{a.d(t,{c:()=>c});var l=a(67294),n=a(52263);const r=["zero","one","two","few","many","other"];function s(e){return r.filter((t=>e.includes(t)))}const o={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,n.Z)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),o}}),[e])}function c(){const e=i();return{selectMessage:(t,a)=>function(e,t,a){const l=e.split("|");if(1===l.length)return l[0];l.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${l.length}: ${e}`);const n=a.select(t),r=a.pluralForms.indexOf(n);return l[Math.min(r,l.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/255b72b4.c906285c.js b/assets/js/255b72b4.c906285c.js new file mode 100644 index 00000000000..fb7acfdf25f --- /dev/null +++ b/assets/js/255b72b4.c906285c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22109],{42018:a=>{a.exports=JSON.parse('{"label":"ledger","permalink":"/cardano-updates/tags/ledger","allTagsPath":"/cardano-updates/tags","count":30}')}}]); \ No newline at end of file diff --git a/assets/js/26678b7e.706c9ffb.js b/assets/js/26678b7e.706c9ffb.js new file mode 100644 index 00000000000..f1b42679b70 --- /dev/null +++ b/assets/js/26678b7e.706c9ffb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47724],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),s=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,d=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(a),c=n,m=p["".concat(d,".").concat(c)]||p[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-12-02-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-02-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-02-hydra.md",source:"@site/blog/2022-12-02-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-12-02T00:00:00.000Z",formattedDate:"December 2, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.965,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-12-02-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-12-09-ledger"},nextItem:{title:"DB sync Team Update",permalink:"/cardano-updates/2022-12-01-db-sync"}},d={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:s},p="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has worked on cleaning up several things in progress\nafter last week's summit. They have extended their model-based testing (MBT)\napproach with transaction creation & observation\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/410"},"#410"),", solved\n",(0,n.kt)("inlineCode",{parentName:"p"},"AcquirePointTooOld")," problems of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," with by changing the wallet\ninitialization ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/439"},"#439"),".\nAlso, the Hydra researchers updated the security proofs of the Coordinated Hydra\nHead, which are bound to be included in the Hydra HeadV1 specification."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review & report - will also be published on our website ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/644"},"#644")),(0,n.kt)("li",{parentName:"ul"},"Extended the model-based testing (MBT) with transaction creation/observation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/410"},"#410")),(0,n.kt)("li",{parentName:"ul"},"Solve ",(0,n.kt)("inlineCode",{parentName:"li"},"AcquirePointTooOld")," problems with new wallet initialization ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/439"},"#439")),(0,n.kt)("li",{parentName:"ul"},"Fixed our hydraw deployments (EC2 instances)"),(0,n.kt)("li",{parentName:"ul"},"Created & discussed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," within tx validity work"),(0,n.kt)("li",{parentName:"ul"},"Received & discussed security proofs of Coordinated Hydra Head (requires more work)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Get ADR21 accepted & close tx validity gap in our implementation"),(0,n.kt)("li",{parentName:"ul"},"Complete review & integrate the Hydra tutorial"),(0,n.kt)("li",{parentName:"ul"},"Review latest hydra-pay work"),(0,n.kt)("li",{parentName:"ul"},"Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec"),(0,n.kt)("li",{parentName:"ul"},"Get Cicero (new CI) working")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/26a4b8b3.b55c0ab6.js b/assets/js/26a4b8b3.b55c0ab6.js new file mode 100644 index 00000000000..fa989622396 --- /dev/null +++ b/assets/js/26a4b8b3.b55c0ab6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47669],{3905:(e,n,t)=>{t.d(n,{Zo:()=>m,kt:()=>g});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),c=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},m=function(e){var n=c(e.components);return r.createElement(s.Provider,{value:n},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=c(t),p=a,g=u["".concat(s,".").concat(p)]||u[p]||d[p]||o;return t?r.createElement(g,i(i({ref:n},m),{},{components:t})):r.createElement(g,i({ref:n},m))}));function g(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=p;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var c=2;c{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=t(87462),a=(t(67294),t(3905));const o={title:"Performance & Tracing Update",slug:"2023-12-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-12-04-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-04-performance-and-tracing.md",source:"@site/blog/2023-12-04-performance-and-tracing.md",title:"Performance & Tracing Update",description:"High level summary",date:"2023-12-04T00:00:00.000Z",formattedDate:"December 4, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.085,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & Tracing Update",slug:"2023-12-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-12-06-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-12-01-hydra"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Development",id:"development",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:c},u="wrapper";function d(e){let{components:n,...t}=e;return(0,a.kt)(u,(0,r.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: Release benchmarking for node ",(0,a.kt)("inlineCode",{parentName:"li"},"8.7.0"),". Also, we performed the first-ever Conway benchmarks."),(0,a.kt)("li",{parentName:"ul"},"Development: Conway capability of our workload generator has been implemented and merged to ",(0,a.kt)("inlineCode",{parentName:"li"},"master"),"."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Quality-of-life improvements to tracing output and addition of a test suite."),(0,a.kt)("li",{parentName:"ul"},"Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"A full set of benchmarks for node ",(0,a.kt)("inlineCode",{parentName:"p"},"8.7.0")," has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of ",(0,a.kt)("inlineCode",{parentName:"p"},"8.7.0")," over ",(0,a.kt)("inlineCode",{parentName:"p"},"8.6.0"),", and can confirm no regressions have been introduced."),(0,a.kt)("p",null,"Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version.\nOnly Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty."),(0,a.kt)("h3",{id:"development"},"Development"),(0,a.kt)("p",null,"Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era.\nCurrently, we're looking into adding Conway-exclusive features, such as ",(0,a.kt)("inlineCode",{parentName:"p"},"DRep")," registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining ",(0,a.kt)("inlineCode",{parentName:"p"},"DRep")," sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've\nimproved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages.\nAdditionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/274d7200.08e977b8.js b/assets/js/274d7200.08e977b8.js new file mode 100644 index 00000000000..892992ef1a6 --- /dev/null +++ b/assets/js/274d7200.08e977b8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26565],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(r),h=a,m=d["".concat(s,".").concat(h)]||d[h]||c[h]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-11-11-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-11-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-ledger.md",source:"@site/blog/2022-11-11-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.41,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-11-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-11-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-11-network"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:u},d="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"I am extremely excited to say that we now have a pull request up which introduces our new versioned\nCBOR serialization. This was an enormous effort, but it will solve a host of problems that we have\nhad since the Shelley phase. It will take time to properly review it, and we will\nneed to put in a lot of effort to integrate it with the downstream components, but this is a huge\nmilestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction\nserialization schemes."),(0,a.kt)("p",null,"We also have a draft pull request that reworks how deposits are tracked. Users of the system will\nnot notice any difference, but it is a necessary change needed to prepare the way for\ndecentralizing the governance of Cardano."),(0,a.kt)("p",null,"Finally, we continued to address technical debt. In particular, we continued to make progress on\nbringing coherency and consistency to the code base with a common naming convention, and\nimproving some error messages."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We have a pull request up for our new versioned CBOR serialization.\nWhen we encounter a problem with our deserializers, it can be very difficult to implement a fix.\nIt is difficult because we can only fix such issues during a hard fork, and leading up to the\nhard fork we must maintain two serializations for the same type in order to not cause unintended\nnetwork splitting (the problematic version must be used before the hard fork,\nand the fixed version is used afterwards).\nThis can be especially tricky with the ",(0,a.kt)("inlineCode",{parentName:"li"},"FromCBOR")," typeclass, since it is not always easy to\nsearch for where all the problematic uses are located.\nThe new versioned CBOR serialization allows us to gracefully handle this transition.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3138"},"pull-3138"),"]."),(0,a.kt)("li",{parentName:"ul"},"We proposed a CIP for backwards compatibility of the transaction serialization schemes.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/372"},"pull-372"),"]."),(0,a.kt)("li",{parentName:"ul"},"We have draft for the new deposit tracking.\nThis draft is not as memory efficient as the final version will be,\nbut it is a sufficient proof of concept that we can write property tests against, ensuring\nthat we have not changed the semantics.\nWe will optimize after we are sure of the correctness.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3127"},"pull-3127"),"]."),(0,a.kt)("li",{parentName:"ul"},"We now provide better support for debugging failed Plutus scripts in an important helper\nfunction, named ",(0,a.kt)("inlineCode",{parentName:"li"},"evaluateTransactionExecutionUnits"),".\nIn particular, it now returns all the information needed to rerun the script with exactly the\nsame arguments. This feature will end up appearing in the CLI and other tools from the Plutus\ntools team.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3135"},"pull-3135"),"]."),(0,a.kt)("li",{parentName:"ul"},"We did a lot more renaming to bring coherency and consistency to the code base.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3126"},"pull-3126"),"], [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3120"},"pull-3120"),"], [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3118"},"pull-3118"),"], and [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3116"},"pull-3116"),"]."),(0,a.kt)("li",{parentName:"ul"},"We have added a few things to the ledger repository to make it conform to the\n",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},"Cardano Engineering Handbook"),"\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3139"},"pull-3139"),"].")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/27c15961.1370e42d.js b/assets/js/27c15961.1370e42d.js new file mode 100644 index 00000000000..f959dc4cbd2 --- /dev/null +++ b/assets/js/27c15961.1370e42d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73798],{32264:a=>{a.exports=JSON.parse('{"label":"goedel","permalink":"/cardano-updates/tags/goedel","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/27c463c7.c17177cd.js b/assets/js/27c463c7.c17177cd.js new file mode 100644 index 00000000000..fec35986c77 --- /dev/null +++ b/assets/js/27c463c7.c17177cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24327],{83769:a=>{a.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/28874657.18164af4.js b/assets/js/28874657.18164af4.js new file mode 100644 index 00000000000..218c69c2296 --- /dev/null +++ b/assets/js/28874657.18164af4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[28592],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=p(n),m=a,d=h["".concat(l,".").concat(m)]||h[m]||c[m]||r;return n?o.createElement(d,i(i({ref:t},u),{},{components:n})):o.createElement(d,i({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:a,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var o=n(87462),a=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2023-03-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-03-08-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-consensus.md",source:"@site/blog/2023-03-08-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-03-08T00:00:00.000Z",formattedDate:"March 8, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.46,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-03-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-09-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-08-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3},{value:"Support",id:"support",level:3}],u={toc:p},h="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(h,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The Consensus team continued working on refactoring and improving the UTxO-HD\nprototype, and introducing improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"lmdb")," related packages. In\nparticular we identified an opportunity to gain performance by handling locks in\na more optimal way."),(0,a.kt)("p",null,"On the Genesis front, we sketched a mitigation for an issue that ",(0,a.kt)("inlineCode",{parentName:"p"},"PNSol")," and\nResearchers caught. We also came op with a road map for not only testing the\nGenesis prototypes, but also for enriching the tests we already have."),(0,a.kt)("p",null,"Regarding technical debt, next to some minor improvements, we created\ncomponent-level micro-benchmarks for adding transactions to the mempool. The\nresults of these benchmarks will be published in the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/ouroboros-consensus/"},"web\npage"),"."),(0,a.kt)("p",null,"We also finished moving the Consensus documentation to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),"\nrepository, released ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," ",(0,a.kt)("inlineCode",{parentName:"p"},"0.3.0.0"),", and reduced the time\nGitHub actions take in ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,a.kt)("p",null,"We continued working on refactoring and improving the UTxO-HD prototype. As a\nresult of the first round of sytem-level benchmarks, we identified an\nopportunity to optimise the way we handle locks to improve performance\n(",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4393"},"#4393"),")."),(0,a.kt)("p",null,"Also, we introduced several improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"lmdb")," related packages:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/19"},"New tests")," for read-only transaction handles."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/18"},"New functions")," and ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/13"},"data types"),"."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/11"},"Updates")," to support improved type safety and smaller constraints in\nthe UTxO HD prototype."),(0,a.kt)("li",{parentName:"ul"},"Windows and MacOS ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/haskell-lmdb/pull/8"},"CI support"),".")),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"We sketched out a mitigation of the issue that ",(0,a.kt)("inlineCode",{parentName:"p"},"PNSol")," and Researchers caught in\nthe Genesis design."),(0,a.kt)("p",null,"We came up with a road map for testing the Genesis prototypes, including early\nmilestones that are applicable to today's master branch, ie tests that are\nuseful before Genesis, and that will be nicely enriched when we do add Genesis."),(0,a.kt)("p",null,"We developed the aforementioned tests, specifically a ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," generator for\nthe Honest leader schedule and one as-aggressive-as-possible Adversarial\nleader schedule that together satisfy the Praos properties that the Consensus\ndesign takes as invariants."),(0,a.kt)("p",null,"We investigated why the improved ",(0,a.kt)("inlineCode",{parentName:"p"},"ChainDB")," queueing implementation behaves\ndifferently in the baseline compared to the prototype, and we are close to\nhaving a full picture of how the Consensus components interact during bulk sync."),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4400"},"created")," component-level micro-benchmarks for adding transactions\nto the mempool. We plan on extending this to more mempool actions and different\ntypes of blocks. We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4422"},"store")," the benchmark data to make it available\nto the GitHub action that ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/12"},"publishes")," the benchmarks results."),(0,a.kt)("p",null,"Other minor improvements include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4429"},"Removal")," of ",(0,a.kt)("inlineCode",{parentName:"li"},"Test.Util.Classify")," in favour of ",(0,a.kt)("inlineCode",{parentName:"li"},"Test.StateMachine.Labelling"),"."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4423"},"Addition")," of ",(0,a.kt)("inlineCode",{parentName:"li"},"-Wunused-packages")," to the default ",(0,a.kt)("inlineCode",{parentName:"li"},"ghc-options")," for Consensus\npackages.")),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We finished moving the Consensus documentation ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4374"},"from"),"\n",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/haskell-lmdb/pull/8"},"to")," ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),", in preparation for\nmigrating the code to the latter repository."),(0,a.kt)("h3",{id:"support"},"Support"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4412"},"released")," ouroboros-consensus 0.3.0.0."),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4421"},"reduced")," the load in the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," GitHub actions,\nthereby reducing the time CI jobs take."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/28bc1d1b.e033ce8a.js b/assets/js/28bc1d1b.e033ce8a.js new file mode 100644 index 00000000000..fb9d4e0acaa --- /dev/null +++ b/assets/js/28bc1d1b.e033ce8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1285],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),u=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=u(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,i=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),p=u(r),c=a,k=p["".concat(i,".").concat(c)]||p[c]||d[c]||s;return r?n.createElement(k,o(o({ref:t},m),{},{components:r})):n.createElement(k,o({ref:t},m))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=c;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const s={title:"System Test Team Update",slug:"2023-06-08-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-08-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-system-test.md",source:"@site/blog/2023-06-08-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:1.005,hasTruncateMarker:!1,authors:[{name:"Martin Kourim",title:"System Test Engineer",url:"https://github.com/mkoura",imageURL:"https://github.com/mkoura.png",key:"mkoura"}],frontMatter:{title:"System Test Team Update",slug:"2023-06-08-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-08-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-06-07-node-cli-api"}},i={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"Testing improvements",id:"testing-improvements",level:3},{value:"Node:",id:"node",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],m={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the ",(0,a.kt)("em",{parentName:"p"},"1.35.7")," and ",(0,a.kt)("em",{parentName:"p"},"8.0.0")," releases."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node-tests/pulls?page=1&q=is%3Apr+is%3Aclosed+updated%3A2023-03-26..2023-06-08"},"Full list of closed PRs")),(0,a.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Make cardano-submit-api REST API service available and run corresponding regression tests by default"),(0,a.kt)("li",{parentName:"ul"},"Update cabal build testing for 8.0.0"),(0,a.kt)("li",{parentName:"ul"},"Add support for testing governance SPO poll"),(0,a.kt)("li",{parentName:"ul"},"Use Poetry for Python dependency management"),(0,a.kt)("li",{parentName:"ul"},"Check status of known GH issues during tests runtime and finish the test accordingly"),(0,a.kt)("li",{parentName:"ul"},"Generate topology files with both IP addresses and DNS names"),(0,a.kt)("li",{parentName:"ul"},"Log issues like failure to start a cluster instance and report errors during tests runtime")),(0,a.kt)("h3",{id:"testing-improvements"},"Testing improvements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Add rollback testing:",(0,a.kt)("ol",{parentName:"li"},(0,a.kt)("li",{parentName:"ol"},"global consensus is reached after rollback, in situation where less than ",(0,a.kt)("inlineCode",{parentName:"li"},"securityParam")," blocks were produced since cluster split"),(0,a.kt)("li",{parentName:"ol"},"global consensus is not reached when more than ",(0,a.kt)("inlineCode",{parentName:"li"},"securityParam")," blocks were produced, and the result is permanent fork"))),(0,a.kt)("li",{parentName:"ul"},"Add tests to governance SPO poll commands")),(0,a.kt)("h3",{id:"node"},"Node:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"tested the ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_7.html"},"1.35.7")," release"),(0,a.kt)("li",{parentName:"ul"},"tested the ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_8_0_0.html"},"8.0.0")," release")),(0,a.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"improvements in db-sync sync tests"),(0,a.kt)("li",{parentName:"ul"},"improvements in db-sync functional tests")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/28d85025.84af456e.js b/assets/js/28d85025.84af456e.js new file mode 100644 index 00000000000..e9f7804c519 --- /dev/null +++ b/assets/js/28d85025.84af456e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[5214],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},m=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),d=u(a),c=n,h=d["".concat(p,".").concat(c)]||d[c]||s[c]||l;return a?r.createElement(h,o(o({ref:t},m),{},{components:a})):r.createElement(h,o({ref:t},m))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=c;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-12-06-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-12-06-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-06-ledger.md",source:"@site/blog/2023-12-06-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-12-06T00:00:00.000Z",formattedDate:"December 6, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.53,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-12-06-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-12-06-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway",id:"conway",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],m={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This period we reached a major milestone, namely we now have an initial version of Conway\nconformance testing working. We are now able to generate random valid data with the help\nof constraint based testing framework, apply that data to Conway Ledger rules and verify\nthat the output matches to the one produced by the executable version of the Formal Ledger\nSpecification, when it is applied to the same random data."),(0,n.kt)("p",null,"We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get\nConstitutional Committee query is complete and tested. Various improvements to the\ntesting tools. Addition of more test cases."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway"},"Conway"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3888"},"pull-3888")," - Add checks for valid ProtVer when a proposal is a HardFork"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3902"},"pull-3902")," - Fix pvCanFollow usage in Conway and improve clarity in Shelley"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3855"},"pull-3855")," - Remove unreachable proposals"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3903"},"pull-3903")," - Add lenient decoder for ",(0,n.kt)("inlineCode",{parentName:"li"},"Addr")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3878"},"pull-3878")," - Committee query - implement next epoch change")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3893"},"pull-3893")," - Move ",(0,n.kt)("inlineCode",{parentName:"li"},"tree-diff")," dependency to tests together with all instances"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3896"},"pull-3896")," - Fix Brute force failure"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3904"},"pull-3904")," - New ListWhere Pred added to the Constrained Solver."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3907"},"pull-3907")," - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3883"},"pull-3883")," - Committee QuerySpec Imp Test"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3909"},"pull-3909")," - Make ",(0,n.kt)("inlineCode",{parentName:"li"},"impAnn")," a bit more useful, by making the logs scoped by ",(0,n.kt)("inlineCode",{parentName:"li"},"impAnn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3908"},"pull-3908")," - Use upstream testing instances for very basic types"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3912"},"pull-3912")," - Removed call to tail, and the ","'","watchPulser","'"," test"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3852"},"pull-3852")," - Added constrained generators to conformance tests - Part 1")),(0,n.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3891"},"pull-3891")," - Bump plutus to 1.17")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/29801efc.c897fcb8.js b/assets/js/29801efc.c897fcb8.js new file mode 100644 index 00000000000..e0954d4ec71 --- /dev/null +++ b/assets/js/29801efc.c897fcb8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[50307],{22660:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/45","page":45,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/44","nextPage":"/cardano-updates/page/46","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/2a8f0182.70e085a1.js b/assets/js/2a8f0182.70e085a1.js new file mode 100644 index 00000000000..bd6361a6b42 --- /dev/null +++ b/assets/js/2a8f0182.70e085a1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[57227],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(a),m=r,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(h,i(i({ref:t},u),{},{components:a})):n.createElement(h,i({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-03-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-03-22-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-node-cli-api.md",source:"@site/blog/2023-03-22-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-03-22T00:00:00.000Z",formattedDate:"March 22, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.645,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-03-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-22-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-22-performance-and-tracing"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],u={toc:c},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-03-22---2023-04-05"},"2023-03-22 - 2023-04-05"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Added new cardano-cli ping command which allows users to ping remote cardano-nodes."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction build")," command now can automatically balance multiassets"),(0,r.kt)("li",{parentName:"ul"},"New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5041"},"Remove unused error constructors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4909"},"Fix qKesKesKeyExpiry to not always be null")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"New cardano-cli ping command.")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5040"},"Remove use of AcquireFailure type")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5038"},"Simplify implementation of executeQueryAnyMode")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5002"},"Script data serialisation")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4956"},"Guard against overflows in Shelley TxIns")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4941"},"Combinators for TxBodyContent and related types")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5011"},"Use Haskell variables for passing values.")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4879"},"Re-enable kes-period-info test."))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2b637fd9.56e9f371.js b/assets/js/2b637fd9.56e9f371.js new file mode 100644 index 00000000000..4bfa9f03bc7 --- /dev/null +++ b/assets/js/2b637fd9.56e9f371.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[69376],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=s(n),d=a,h=u["".concat(p,".").concat(d)]||u[d]||m[d]||o;return n?r.createElement(h,l(l({ref:t},c),{},{components:n})):r.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[u]="string"==typeof e?e:a,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-09-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-14-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-14-db-sync.md",source:"@site/blog/2023-09-14-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-09-14T00:00:00.000Z",formattedDate:"September 14, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.47,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-09-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-15-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-12-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],c={toc:s},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have created a DBSync tag ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-1-1-0")," which can follow sanchonet. Also\nthe team has ran a number of benchmarks and tests for the new options/flavours of DBSync\nand prepared a blogpost which summorises them, for downstream components."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Integration of node-8.3.x and support for Sanchonet on Conway\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1498"},"#1498")),(0,a.kt)("li",{parentName:"ul"},"Simplifications of new feautures\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1496"},"#1496")),(0,a.kt)("li",{parentName:"ul"},"Makes it impossible to restart DBSync with different schema options and adds\ntests for them\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1466"},"#1466")),(0,a.kt)("li",{parentName:"ul"},"CI fixes\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1494"},"#1494"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1491"},"#1491")),(0,a.kt)("li",{parentName:"ul"},"Prepared a blogpost about different DBSync options\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/blob/blog/blog/blog.pdf"},"blog"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2bc04bf6.977be0a1.js b/assets/js/2bc04bf6.977be0a1.js new file mode 100644 index 00000000000..f3fe559a781 --- /dev/null +++ b/assets/js/2bc04bf6.977be0a1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56010],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),u=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(i),d=r,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return i?a.createElement(c,o(o({ref:t},s),{},{components:i})):a.createElement(c,o({ref:t},s))}));function c(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-06-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-01-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-01-mithril.md",source:"@site/blog/2023-06-01-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-06-01T00:00:00.000Z",formattedDate:"June 1, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.415,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-06-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-02-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-31-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team released a new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2321.1"},(0,r.kt)("inlineCode",{parentName:"a"},"2321.1"))," distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots."),(0,r.kt)("p",null,"Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2321.1"},(0,r.kt)("inlineCode",{parentName:"a"},"2321.1"))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implements generic signing/verification of entity services ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance MessageAdapter for Artifact in aggregator REST API")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/925"},"#925")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Create the sub-command for 'Cardano Immutable Files Full' in client")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/895"},"#895")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance state machines Aggregator/Signer")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/933"},"#933")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Adapt the aggregator REST API to list certificates")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/892"},"#892")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Adapt end to end tests to handle new types of data")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/899"},"#899")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Update client documentation")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/897"},"#897")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Update architecture documentations for new types of data")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/898"},"#898")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance terraform infrastructure")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/930"},"#930")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that implements the computation of the stake distribution for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/880"},"#880"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Upgrade Cardano node to '8.0.0'")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/920"},"#920")))),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add export path in Client CLI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/512"},"#512"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2c045882.801eedcd.js b/assets/js/2c045882.801eedcd.js new file mode 100644 index 00000000000..52f97b88e32 --- /dev/null +++ b/assets/js/2c045882.801eedcd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98777],{52488:a=>{a.exports=JSON.parse('{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing","allTagsPath":"/cardano-updates/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/2d0da244.cbe1ecb9.js b/assets/js/2d0da244.cbe1ecb9.js new file mode 100644 index 00000000000..86ad765a557 --- /dev/null +++ b/assets/js/2d0da244.cbe1ecb9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26299],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),c=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(r),m=n,h=s["".concat(u,".").concat(m)]||s[m]||d[m]||o;return r?a.createElement(h,i(i({ref:t},p),{},{components:r})):a.createElement(h,i({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2023-04-28-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-28-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-crypto.md",source:"@site/blog/2023-04-28-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-04-28T00:00:00.000Z",formattedDate:"April 28, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.26,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-04-28-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-05-01-db-sync"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-28-goedel"}},u={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3}],p={toc:c},s="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library."),(0,n.kt)("li",{parentName:"ul"},"KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction."),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Started implementing ECC chip of JubJub over BLS12-381.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"#255")," finally merged \ud83c\udf89"),(0,n.kt)("li",{parentName:"ul"},"Additional tests for BLS bindings ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/384"},"#384")),(0,n.kt)("li",{parentName:"ul"},"Open PR for including test vectors created with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/zkcrypto/bls12_381"},"zkscrypto"),"'s library, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/397"},"PR#397"))),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/389"},"PR#389"),"."),(0,n.kt)("li",{parentName:"ul"},"Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"#317"),"."),(0,n.kt)("li",{parentName:"ul"},"Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim"),(0,n.kt)("li",{parentName:"ul"},"Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes"),(0,n.kt)("li",{parentName:"ul"},"Refactor MonadSodium into MonadMLock ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/388"},"PR#388"),".")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)"),(0,n.kt)("li",{parentName:"ul"},"Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2d52a685.16ff720d.js b/assets/js/2d52a685.16ff720d.js new file mode 100644 index 00000000000..d1603131b63 --- /dev/null +++ b/assets/js/2d52a685.16ff720d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20553],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=s(n),p=a,h=u["".concat(c,".").concat(p)]||u[p]||m[p]||o;return n?r.createElement(h,i(i({ref:t},d),{},{components:n})):r.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-05-31-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-05-31-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-31-performance-and-tracing.md",source:"@site/blog/2023-05-31-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-05-31T00:00:00.000Z",formattedDate:"May 31, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.055,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-05-31-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-31-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-26-goedel"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build\nconfiguration: As it stands, the ",(0,a.kt)("inlineCode",{parentName:"p"},"ghc-bignum")," package is using the Haskell ",(0,a.kt)("inlineCode",{parentName:"p"},"native-backend")," as a default. We strive\nto benchmark a build with the ",(0,a.kt)("inlineCode",{parentName:"p"},"gmp-backend")," next. "),(0,a.kt)("p",null,"A variant of our ",(0,a.kt)("inlineCode",{parentName:"p"},"forge-stress")," local benchmark has been set up to serve as an early indicator for the resource usage profile\nwe'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way\nshorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great\nsupport when evaluating different compiler versions or RTS flags incrementally."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The hub of the new tracing system ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," is designed with a fixed output behaviour, which is limited to various\nlogging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to\ndirectly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with\njob definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing\nbenchmarking run required us to fine-tune communications with the nomad server. "),(0,a.kt)("p",null,"Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible\nand offers more detailed insight than the previous iteration in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-ops"),". The backend will enable you to formulate\nvery specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2d72833d.b2ed8410.js b/assets/js/2d72833d.b2ed8410.js new file mode 100644 index 00000000000..202944bd560 --- /dev/null +++ b/assets/js/2d72833d.b2ed8410.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18303],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),u=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(c.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=u(a),h=n,m=s["".concat(c,".").concat(h)]||s[h]||d[h]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-02-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-17-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-hydra.md",source:"@site/blog/2023-02-17-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.75,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-17-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-17-ledger"}},c={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:u},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team completed work on dealing differently with contests\nduring the contestation period. These will now always push out the deadline and\nhence contestation periods are easier to pick (depending on the network a Head\nruns on). Furthermore, they added an important acceptance test and completed\ninternal refactoring of the protocol logic making future changes easier."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Push contestation deadline on each contest ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/716"},"#716")),(0,n.kt)("li",{parentName:"ul"},"Wrote an acceptance (property) test ","\u201c","can always close/fanout when collect is successful","\u201d"),(0,n.kt)("li",{parentName:"ul"},"Internal refactoring of our ",(0,n.kt)("inlineCode",{parentName:"li"},"HeadLogic")),(0,n.kt)("li",{parentName:"ul"},"Groomed remaining things from ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/452"},"#452")," into dedicated features")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete full minting policy ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/720"},"#720")),(0,n.kt)("li",{parentName:"ul"},"Release 0.9.0 with updated scripts"),(0,n.kt)("li",{parentName:"ul"},"Plan mainnet milestone and a 0.10.0 version"),(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs for specification (upon feedback)"),(0,n.kt)("li",{parentName:"ul"},"Have smoke tests fixed and running regularly")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2d91c21f.2b35d919.js b/assets/js/2d91c21f.2b35d919.js new file mode 100644 index 00000000000..caf50c49544 --- /dev/null +++ b/assets/js/2d91c21f.2b35d919.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30335],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=d(e,["components","mdxType","originalType","parentName"]),s=c(n),m=o,g=s["".concat(l,".").concat(m)]||s[m]||p[m]||a;return n?r.createElement(g,i(i({ref:t},u),{},{components:n})):r.createElement(g,i({ref:t},u))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var d={};for(var l in t)hasOwnProperty.call(t,l)&&(d[l]=t[l]);d.originalType=e,d[s]="string"==typeof e?e:o,i[1]=d;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>d,toc:()=>c});var r=n(87462),o=(n(67294),n(3905));const a={title:"Incident Report",slug:"2023-04-17-ledger",authors:"kevinhammond",tags:["ledger"],hide_table_of_contents:!1},i=void 0,d={permalink:"/cardano-updates/2023-04-17-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-17-incident.md",source:"@site/blog/2023-04-17-incident.md",title:"Incident Report",description:"Incident reporting: Cardano block production temporary outage",date:"2023-04-17T00:00:00.000Z",formattedDate:"April 17, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.38,hasTruncateMarker:!1,authors:[{name:"Kevin Hammond",title:"Head of Software Engineering, Cardano Core",url:"https://github.com/kevinhammond",imageURL:"https://github.com/kevinhammond.png",key:"kevinhammond"}],frontMatter:{title:"Incident Report",slug:"2023-04-17-ledger",authors:"kevinhammond",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-19-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-14-goedel"}},l={authorsImageUrls:[void 0]},c=[{value:"Incident reporting: Cardano block production temporary outage",id:"incident-reporting-cardano-block-production-temporary-outage",level:2},{value:"Further Details",id:"further-details",level:3}],u={toc:c},s="wrapper";function p(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"incident-reporting-cardano-block-production-temporary-outage"},"Incident reporting: Cardano block production temporary outage"),(0,o.kt)("p",null,"On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a \u2018critical\u2019 incident, thus warranting immediate response and investigation by IOG engineers.\nThe investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue \u2013 a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite.\nFollowing successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version.\nWith the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue."),(0,o.kt)("h3",{id:"further-details"},"Further Details"),(0,o.kt)("p",null,"You can read more details on the incident and how it was managed from SundaeSwap\u2019s Pi Lanningham ",(0,o.kt)("a",{parentName:"p",href:"https://www.314pool.com/post/cardano-post-mortem-1"},"here"),". Thanks again to all the community for its support in identifying and fixing this bug."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2dd2949a.e4a51357.js b/assets/js/2dd2949a.e4a51357.js new file mode 100644 index 00000000000..d148b1e1a2f --- /dev/null +++ b/assets/js/2dd2949a.e4a51357.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6996],{64145:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/58","page":58,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/57","nextPage":"/cardano-updates/page/59","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/2e28eb6b.9479c2e3.js b/assets/js/2e28eb6b.9479c2e3.js new file mode 100644 index 00000000000..3ca1956ae38 --- /dev/null +++ b/assets/js/2e28eb6b.9479c2e3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46576],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>d});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(i),c=a,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||n;return i?r.createElement(d,o(o({ref:t},u),{},{components:i})):r.createElement(d,o({ref:t},u))}));function d(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-08-10-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-08-10-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-10-mithril.md",source:"@site/blog/2023-08-10-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-08-10T00:00:00.000Z",formattedDate:"August 10, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-08-10-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-11-performance-and-tracing"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-09-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...i}=e;return(0,a.kt)(m,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the ",(0,a.kt)("strong",{parentName:"p"},"Mithril protocol\u2019s mainnet beta")," launch: the ",(0,a.kt)("inlineCode",{parentName:"p"},"release-mainnet")," network is now consistently producing new certificates and snapshots! The team has released a new distribution ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2331.1"},(0,a.kt)("inlineCode",{parentName:"a"},"2331.1"))," which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the ",(0,a.kt)("inlineCode",{parentName:"p"},"mainnet")," infrastructure."),(0,a.kt)("p",null,"Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2331.1"},(0,a.kt)("inlineCode",{parentName:"a"},"2331.1"))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Release 'mainnet' Mithril network")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/918"},"#918")),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator - phase 1")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Post deployment 'mainnet' infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1091"},"#1091"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Create Production Infrastructure Runbook")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1085"},"#1085")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Ingest 'mainnet' metrics/logs in Grafana")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1122"},"#1122")))),(0,a.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add a 'clean' file to extracted database in client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1131"},"#1131")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Create explorer page with registered signers")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1097"},"#1097")))),(0,a.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor (de)serialization of crypto entities")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/668"},"#668")))),(0,a.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Client fails to unpack some snapshot archive")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1137"},"#1137")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"The 'release-preprod' network stopped producing certificates")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1114"},"#1114")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"The 'release-mainnet' network does not show up in the explorer")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1111"},"#1111")))),(0,a.kt)("li",{parentName:"ul"},"Worked on dependencies:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Upgrade Cardano node to '8.1.2'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1090"},"#1090")))),(0,a.kt)("li",{parentName:"ul"},"Worked on troubleshooting:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Signer can't sign with 'Invalid signature for party' error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1125"},"#1125"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2e2abe90.2e84cbdd.js b/assets/js/2e2abe90.2e84cbdd.js new file mode 100644 index 00000000000..5a2d3c0944c --- /dev/null +++ b/assets/js/2e2abe90.2e84cbdd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[69467],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(r),h=a,m=s["".concat(u,".").concat(h)]||s[h]||c[h]||l;return r?n.createElement(m,o(o({ref:t},d),{},{components:r})):n.createElement(m,o({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,o=new Array(l);o[0]=h;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:a,o[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-01-19-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-01-19-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-19-ledger.md",source:"@site/blog/2023-01-19-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-01-19T00:00:00.000Z",formattedDate:"January 19, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.665,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-01-19-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-01-20-sre"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-01-14-db-sync"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Restructuring the ledger state",id:"restructuring-the-ledger-state",level:3},{value:"PDF hosting",id:"pdf-hosting",level:3},{value:"Powering the new ledger API",id:"powering-the-new-ledger-api",level:3},{value:"Constraint-based generators",id:"constraint-based-generators",level:3},{value:"Technical debt",id:"technical-debt",level:3}],d={toc:p},s="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The ledger team completed some preliminary ground work in preparation for CIP-1694\n(restructuring the ledger state),\nfixed the PDF hosting problem (mostly the formal specs),\nbuilt out more of the new user-friendly ledger API,\nfinished a proof of concept for constraint-based generators for property tests\n(with the hopes of being able to replace our trace generators one day),\nand addressed technical debt."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("h3",{id:"restructuring-the-ledger-state"},"Restructuring the ledger state"),(0,a.kt)("p",null,"The existing governance structures will be replace in the conway ledger era,\nas described in CIP-1694.\nIn particular, the ledger rules will be restructured as follows:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"}," BBODY\n |\n |-------------------------------|\n v v\n TICK LEDGERS\n | |\n |---------| |\n v v v\n RUPD ~NEWEPOCH~ ~LEDGER~\n | |\n |----------| |--------|-------------------|-----------|\n v v v v v\n ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+\n | | |\n |---------|------------| v |\n v v v DELPL v\n SNAP POOLREAP -UPEC- | UTXO\n |--------| |\n v v v\n POOL DELEG ~UTXOS~\n\n-..- Removed\n+..+ Added\n~..~ Modified\n")),(0,a.kt)("p",null,"Moreover, the ledger state will also be restructured in accordance with the new rules.\nIn the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT.\nWe have also adapted all the data structures in the ledger state."),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3216"},"pull-3216"))),(0,a.kt)("h3",{id:"pdf-hosting"},"PDF hosting"),(0,a.kt)("p",null,"We now build all of our PDFs using a GitHub action which is triggered by pushing a tag\nwith a specific form, ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-ledger-spec-YYYY-MM-DD"),".\nThe action creates a GitHub release containing the PDFs.\nThe links in the main ledger README now point to the PDFs in the latest release."),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3245"},"pull-3245")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3260"},"pull-3260"))),(0,a.kt)("h3",{id:"powering-the-new-ledger-api"},"Powering the new ledger API"),(0,a.kt)("p",null,"We have now removed all the ",(0,a.kt)("inlineCode",{parentName:"p"},"HasField")," instances from the protocol parameter data types,\nand replaced them with lenses.\nThis is probably the last major restructuring that the ledger team will do on the code base\nfor the API for a while\n(the Plutus tools team will be working on it next, see ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/5"},"here"),").\nWe also added a new helpful function ",(0,a.kt)("inlineCode",{parentName:"p"},"ensureMinCoinTxOut"),"."),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3242"},"pull-3242")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3248"},"pull-3248"))),(0,a.kt)("h3",{id:"constraint-based-generators"},"Constraint-based generators"),(0,a.kt)("p",null,"Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks\nwhich span several epochs, mimicking a real network.\nThese tests are, in theory, excellent for checking properties.\nThey are, however, very difficult to maintain and are not as random as we would like\n(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks)."),(0,a.kt)("p",null,"We would like to switch to tests which instead generate a random ledger state representative\nof not just an initial state, generate a single random valid block, and then test our properties.\nThe hope is that these will be much more random and easier to maintain."),(0,a.kt)("p",null,"We have finished a proof of concept are encouraged that this approach could work!"),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"))),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3244"},"pull-3244")," massive CI speedup"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3249"},"pull-3249")," better types for fees in the protocol parameters"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3264"},"pull-3264")," move our annotator code to the ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-ledger-binary")," package where it belongs"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3239"},"pull-3239")," move the ",(0,a.kt)("inlineCode",{parentName:"li"},"Wdrls")," type to the ",(0,a.kt)("inlineCode",{parentName:"li"},"Core")," module.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2e52ad4e.1909c27b.js b/assets/js/2e52ad4e.1909c27b.js new file mode 100644 index 00000000000..bff6fc20d6f --- /dev/null +++ b/assets/js/2e52ad4e.1909c27b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[66840],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),u=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(r),d=n,h=c["".concat(s,".").concat(d)]||c[d]||m[d]||i;return r?a.createElement(h,o(o({ref:t},p),{},{components:r})):a.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-03-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-17-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-crypto.md",source:"@site/blog/2023-03-17-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-03-17T00:00:00.000Z",formattedDate:"March 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.255,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-03-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-21-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-17-hydra"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3}],p={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: RFP finished. Code ready for audit."),(0,n.kt)("li",{parentName:"ul"},"cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams."),(0,n.kt)("li",{parentName:"ul"},"KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing."),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Preparing proving system to use the curves needed for main-net PoC. ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/783"},"PR#783")),(0,n.kt)("li",{parentName:"ul"},"RFP for crypto audit ready.")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"BLS12-381 branch approved ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"),". Blocker is Windown's CI. Working on it"),(0,n.kt)("li",{parentName:"ul"},"Testing strategy for BLS bindings:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Preparing test-vectors for Groth16, and simple BLS signatures"),(0,n.kt)("li",{parentName:"ul"},"Finding community projects to help write their use cases"),(0,n.kt)("li",{parentName:"ul"},"Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)"))),(0,n.kt)("li",{parentName:"ul"},"Wrote ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/blogpost_breaking_ed25519_vrf/blob/main/blog.md"},"blogpost")," on how using the same key for ed25519 and VRF completely breaks the security of both systems ")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started integration of sockets interface used in consensus"),(0,n.kt)("li",{parentName:"ul"},"Use that for de/ser"),(0,n.kt)("li",{parentName:"ul"},"Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim"),(0,n.kt)("li",{parentName:"ul"},"Results in having to parametrise for IOSim in KES and DSIGN for testing")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages."),(0,n.kt)("li",{parentName:"ul"},"Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS."),(0,n.kt)("li",{parentName:"ul"},"EdDSA over JubJub ready")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2e69cd33.7723f713.js b/assets/js/2e69cd33.7723f713.js new file mode 100644 index 00000000000..2f1bd899bae --- /dev/null +++ b/assets/js/2e69cd33.7723f713.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45662],{15238:a=>{a.exports=JSON.parse('{"label":"ledger","permalink":"/cardano-updates/tags/ledger","allTagsPath":"/cardano-updates/tags","count":30}')}}]); \ No newline at end of file diff --git a/assets/js/2eba0b82.d58fcc5f.js b/assets/js/2eba0b82.d58fcc5f.js new file mode 100644 index 00000000000..867e71358c8 --- /dev/null +++ b/assets/js/2eba0b82.d58fcc5f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43898],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=p(r),c=n,h=s["".concat(u,".").concat(c)]||s[c]||m[c]||l;return r?a.createElement(h,i(i({ref:t},d),{},{components:r})):a.createElement(h,i({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[s]="string"==typeof e?e:n,i[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"SRE Team Update",slug:"2023-01-20-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-01-20-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-sre.md",source:"@site/blog/2023-01-20-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.13,hasTruncateMarker:!1,authors:[{name:"Michael Fellinger",title:"SRE Team Lead",url:"https://github.com/manveru",imageURL:"https://github.com/manveru.png",key:"manveru"}],frontMatter:{title:"SRE Team Update",slug:"2023-01-20-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-01-20-network"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-19-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cicero",id:"cicero",level:3},{value:"Tullia",id:"tullia",level:3},{value:"Bitte",id:"bitte",level:3},{value:"cardano-world",id:"cardano-world",level:3},{value:"bitte-world",id:"bitte-world",level:3},{value:"ci-world",id:"ci-world",level:3}],d={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing\nsupport for cardano-world."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cicero"},"Cicero"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fixed various race conditions around transformers."),(0,n.kt)("li",{parentName:"ul"},"Brought our CI up to date."),(0,n.kt)("li",{parentName:"ul"},"Migrated to the Nomad exec driver with Nix support for many actions."),(0,n.kt)("li",{parentName:"ul"},"Moved Nix builds to the Nomad clients for much better cache locality."),(0,n.kt)("li",{parentName:"ul"},"Ongoing work on vastly improving the action matching and evaluation speed."),(0,n.kt)("li",{parentName:"ul"})),(0,n.kt)("h3",{id:"tullia"},"Tullia"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Made it easier to support cloning from a PR's fork"),(0,n.kt)("li",{parentName:"ul"},"Update to latest std"),(0,n.kt)("li",{parentName:"ul"},"Add workaround for cgroup issue: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/hashicorp/nomad/issues/12877"},"nomad#12877")),(0,n.kt)("li",{parentName:"ul"},"github preset: add ",(0,n.kt)("inlineCode",{parentName:"li"},"github.ci.remote")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"(read|get)Repository")," functions"),(0,n.kt)("li",{parentName:"ul"},"Fix various issues around CUE handling")),(0,n.kt)("h3",{id:"bitte"},"Bitte"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Upgrade to NixOS 22.11"),(0,n.kt)("li",{parentName:"ul"},"Prototype usage of ",(0,n.kt)("a",{parentName:"li",href:"https://colmena.cli.rs"},"Colmena")," for deploys instead of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/serokell/deploy-rs"},"deploy-rs")),(0,n.kt)("li",{parentName:"ul"},"Finalized work on Equinix Metal support"),(0,n.kt)("li",{parentName:"ul"},"Prototype better secrets management with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/yaxitech/ragenix"},"ragenix")," instead of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/Mic92/sops-nix"},"sops-nix")),(0,n.kt)("li",{parentName:"ul"},"Improve CI and bring it up to date")),(0,n.kt)("h3",{id:"cardano-world"},"cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fixd various OOM issues on preview and preprod"),(0,n.kt)("li",{parentName:"ul"},"Rotated KES keys on preview and preprod"),(0,n.kt)("li",{parentName:"ul"},"Optimize mainnet db-sync to cope with higher load"),(0,n.kt)("li",{parentName:"ul"},"Fix an issue where PostgreSQL would fail after a reboot")),(0,n.kt)("h3",{id:"bitte-world"},"bitte-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated to NixOS 22.11")),(0,n.kt)("h3",{id:"ci-world"},"ci-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated to NixOS 22.11"),(0,n.kt)("li",{parentName:"ul"},"Added Equnix cluster"),(0,n.kt)("li",{parentName:"ul"},"Improve caching of Nix builds")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2ebccc4d.b7a55404.js b/assets/js/2ebccc4d.b7a55404.js new file mode 100644 index 00000000000..99a842849f9 --- /dev/null +++ b/assets/js/2ebccc4d.b7a55404.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98370],{18194:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/47","page":47,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/46","nextPage":"/cardano-updates/page/48","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/2f97c20a.ce7c08f0.js b/assets/js/2f97c20a.ce7c08f0.js new file mode 100644 index 00000000000..77fcea5a952 --- /dev/null +++ b/assets/js/2f97c20a.ce7c08f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15677],{8806:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/32","page":32,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/31","nextPage":"/cardano-updates/page/33","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/2fa57f55.9c6c3715.js b/assets/js/2fa57f55.9c6c3715.js new file mode 100644 index 00000000000..1b73c1918fc --- /dev/null +++ b/assets/js/2fa57f55.9c6c3715.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47176],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var d=n.createContext({}),s=function(e){var t=n.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=s(e.components);return n.createElement(d.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,d=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=s(a),m=r,h=c["".concat(d,".").concat(m)]||c[m]||p[m]||o;return a?n.createElement(h,i(i({ref:t},u),{},{components:a})):n.createElement(h,i({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-09-01-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-09-01-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-01-ledger.md",source:"@site/blog/2022-09-01-ledger.md",title:"Ledger Team Update",description:"Ledger Update",date:"2022-09-01T00:00:00.000Z",formattedDate:"September 1, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.94,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-09-01-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-16-ledger"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-08-31-consensus"}},d={authorsImageUrls:[void 0]},s=[{value:"Ledger Update",id:"ledger-update",level:2},{value:"New minimal ledger era",id:"new-minimal-ledger-era",level:3},{value:"Addressing technical debt",id:"addressing-technical-debt",level:3}],u={toc:s},c="wrapper";function p(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"ledger-update"},"Ledger Update"),(0,r.kt)("p",null,"Since finishing up support for the Vasil Hardfork, the ledger team has been\nfocused on two main things: a new ledger era and technical debt."),(0,r.kt)("h3",{id:"new-minimal-ledger-era"},"New minimal ledger era"),(0,r.kt)("p",null,"We have implemented a new ledger era named ",(0,r.kt)("inlineCode",{parentName:"p"},"conway")," which is nearly identical\nto the ",(0,r.kt)("inlineCode",{parentName:"p"},"babbage")," era. This has been the first time that we have been able to see\nwhat a minimal ledger era looks like. We have finished this task, modulo any\nintegration issues that might come up. The only thing that the ",(0,r.kt)("inlineCode",{parentName:"p"},"conway")," era\ndoes differently from the ",(0,r.kt)("inlineCode",{parentName:"p"},"babbage")," era is provide support for rotating\nthe master keys using the hardfork combinator's state translation.\nWe may end up adding features to the ",(0,r.kt)("inlineCode",{parentName:"p"},"conway")," era, but it is a nice exercise\nseeing what it looks like to get a minimal ledger era supported in all the\ndownstream components."),(0,r.kt)("h3",{id:"addressing-technical-debt"},"Addressing technical debt"),(0,r.kt)("p",null,"We have been addressing technical debt, mostly in an effort to make the\nrepository a more friendly code base to work in."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We have begun work on a ledger API, called ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-ledger-api"),"."),(0,r.kt)("li",{parentName:"ul"},"We have done a big re-design of the major type classes used in the ledger.\nWith hindsight on our side, we now have something much more organized and\neasier to use."),(0,r.kt)("li",{parentName:"ul"},"We have done a lot of re-naming. The names across eras are now much more\nuniform, avoid certain confusions that plagued us, and are clearer in where\nthey are from."),(0,r.kt)("li",{parentName:"ul"},"We have reduced a lot of code duplication that could lead to bugs if you\ndo not have the whole code base in your head."),(0,r.kt)("li",{parentName:"ul"},"We have added a handful of performance improvements."),(0,r.kt)("li",{parentName:"ul"},"We added type safety in a number of locations. In particular, the type of\nvalues that can be minted in a transaction no longer allow for Lovelace\nin the type, and some functions which used to handle both timelock scripts\nand plutus script now correctly enoforce at the type level that only one of\nthem can be used."),(0,r.kt)("li",{parentName:"ul"},"We made our generators so that they now produce a much richer set of\nvalid serializations. There is room within CBOR to serialize the same\ndata structure in multiple ways, and it is helpful to have the generators\nuse a wide variety."),(0,r.kt)("li",{parentName:"ul"},"We have begun re-organizing our test suites.")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2fd426fa.ac550511.js b/assets/js/2fd426fa.ac550511.js new file mode 100644 index 00000000000..a2cb5116792 --- /dev/null +++ b/assets/js/2fd426fa.ac550511.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36016],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(n),h=a,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||o;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:a,i[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-01-11-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-01-11-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-11-consensus.md",source:"@site/blog/2023-01-11-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-01-11T00:00:00.000Z",formattedDate:"January 11, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.35,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-01-11-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-12-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-01-11-performance-and-tracing"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"New Conway era",id:"new-conway-era",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],p={toc:u},c="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The consensus team is resuming its activities after the Christmas break. During\nthese weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and\ndiscussing with the Ledger team the changes that might be required for the next\niterations. The pull request that adds the Conway era is waiting for a second\nreview round and we hope to merge it soon. On the technical debt side we are\nlooking into a property-test failure found in the iterators. We are\ninvestigating if this is an error in the model or in the implementation. We also\nimproved the documentation of our testing code."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,a.kt)("p",null,"We worked with the Ledger team to start preparing the next versions of UTxO-HD.\nThe Ledger team is concerned that for the remaining maps we might need the full\nledger state on epoch boundaries. Since the main consumer of the ledger rules is\nConsensus, the code that requires access to a full state could be moved from the\nledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take\nplace in such bridge, instead of querying the ledger for the values that are\nrequired in the epoch-transition computations."),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4234"},"relocated")," some UTxO-HD definitions, in preparation for merging\nthe prototype into ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."),(0,a.kt)("p",null,"We also completed updated local benchmarks comparing the replay time and memory\nconsumption of:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"the baseline node (",(0,a.kt)("inlineCode",{parentName:"li"},"f2fc76ef45647275c98634da1718290b976ff364"),") "),(0,a.kt)("li",{parentName:"ul"},"the UTxO-HD node with the in-memory backend "),(0,a.kt)("li",{parentName:"ul"},"the UTxO-HD node with the LMDB backend")),(0,a.kt)("p",null,"The following plot shows the results: we can see that the LMDB node barely\nreaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The\nin-memory backend is about 30 minutes faster, but still slower than the baseline\nversion. We are aware of this phenomenon and it is inherent to the problem of\nmaintaining sequences of differences of the last ",(0,a.kt)("inlineCode",{parentName:"p"},"k")," ledger states that allows\nus to perform rollback and roll-forward. We are in the process of measuring\nsyncing from scratch times."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(15253).Z,width:"2500",height:"1700"})),(0,a.kt)("p",null,"We also ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4263"},"added ",(0,a.kt)("inlineCode",{parentName:"a"},"StaticEither")," accessors")," that helped us to simplify\nthe UTxO-HD prototype."),(0,a.kt)("h3",{id:"new-conway-era"},"New Conway era"),(0,a.kt)("p",null,"We incorporated the feedback of the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3971"},"pull request"),", and rebased this\nbranch on top of ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". The PR is pending a second review round and we hope\nto merge this soon."),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("p",null,"We are investigating a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4183"},"property-testing failure")," involving\niterators. Solving this requires understanding the expected behavior of\niterators in the counterexample found by ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," to determine if the error\nis in the model or in the implementation."),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4248"},"moved")," the contents of ",(0,a.kt)("inlineCode",{parentName:"p"},"docs/Testing.md")," closer to the code, so that the\nexplanations about the tests are easier to find in the relevant modules, and the\ndocumentation is easier to keep up to date."))}d.isMDXComponent=!0},15253:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/2023-01-11-utxo-hd-replay-benchmarks-dcf6daaf5460de7591a60db1457d2e58.png"}}]); \ No newline at end of file diff --git a/assets/js/301cd1f4.2e5b4d2a.js b/assets/js/301cd1f4.2e5b4d2a.js new file mode 100644 index 00000000000..e04492c1c31 --- /dev/null +++ b/assets/js/301cd1f4.2e5b4d2a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[11952],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),d=a,m=c["".concat(u,".").concat(d)]||c[d]||h[d]||o;return n?r.createElement(m,s(s({ref:t},p),{},{components:n})):r.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-08-23-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-08-23-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-23-consensus.md",source:"@site/blog/2023-08-23-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-08-23T00:00:00.000Z",formattedDate:"August 23, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.42,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-08-23-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-24-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-18-goedel"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Tech debt",id:"tech-debt",level:2},{value:"Support",id:"support",level:2}],p={toc:l},c="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests.\nOn the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base."),(0,a.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We addressed the issues that came from the benchmarking and testing phase (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/314"},"#314"),").",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We fixed the operational-certificate update exception (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/305"},"#305"),").")))),(0,a.kt)("h2",{id:"tech-debt"},"Tech debt"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/tree/jasagredo/consensus-api"},"this branch"),")."),(0,a.kt)("li",{parentName:"ul"},"We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/tree/jasagredo/test-sop"},"this branch"),")."),(0,a.kt)("li",{parentName:"ul"},"We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/275"},"#275"),")."),(0,a.kt)("li",{parentName:"ul"},"We decreased the flakiness for our test suite (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/284"},"#284"),")."),(0,a.kt)("li",{parentName:"ul"},"We incorporated and merged the pull-request on query versioning (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/273"},"#273"),")."),(0,a.kt)("li",{parentName:"ul"},"We started working on new performance-based regression tests for mempool operations.")),(0,a.kt)("h2",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Nick Frisby")," continues with his engineer responsibilities. Notably getting the Consensus release out for node ",(0,a.kt)("inlineCode",{parentName:"li"},"pre-release 8.3"),". Nick also began integrating it into downstream branches (",(0,a.kt)("inlineCode",{parentName:"li"},"cardano{-api,-cli,-node}"),"). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/283"},"#283")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/301"},"#301")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/304"},"#304")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/308"},"#308"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/31025fde.797a7c77.js b/assets/js/31025fde.797a7c77.js new file mode 100644 index 00000000000..92b3b455640 --- /dev/null +++ b/assets/js/31025fde.797a7c77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22519],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=s(r),d=n,m=c["".concat(u,".").concat(d)]||c[d]||h[d]||i;return r?a.createElement(m,o(o({ref:t},p),{},{components:r})):a.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Hydra Team Update",slug:"2023-09-08-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-08-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-08-hydra.md",source:"@site/blog/2023-09-08-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-08T00:00:00.000Z",formattedDate:"September 8, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.06,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-08-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-12-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-07-mithril"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},c="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team improved the commit process with support for inline\ndatums. They simplified the chain layer by refactoring how the chain state is\npersisted. Updates to the Hydra tutorial were completed, including CI workflows\nto keep it up-to-date. The team engaged in discussions with researchers about\nincremental commits & decommits, and drafted an architectural decision record\nfor a resource-based API. They also explored simpler solutions for the upcoming\nnetwork resilience feature."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Support InlineScriptDatum in commit\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1043"},"#1043")),(0,n.kt)("li",{parentName:"ul"},"Refactored chain state persistency\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1049"},"#1049")),(0,n.kt)("li",{parentName:"ul"},"Completed tutorial updates (by adding CI and some cleanup)\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/997"},"#997")),(0,n.kt)("li",{parentName:"ul"},"Intersect Open Source committee meeting"),(0,n.kt)("li",{parentName:"ul"},'Experimented with various models to better express the \\"Network\nresilience problem\\" to find a KISS solution for\n',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"Drafted and discussed incremental de-/commit features within team\nand with researchers\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/199"},"#199")," and\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1057"},"#1057")),(0,n.kt)("li",{parentName:"ul"},"Created ADR for a resource based overhaul of the API\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1028"},"#1028"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Meetup of Hydra & Mithril contributors in Nantes, France"),(0,n.kt)("li",{parentName:"ul"},"Integrated cardano-api 8.15 to have GHC 9.6 support"),(0,n.kt)("li",{parentName:"ul"},"A clear design for incremental commits (decommits are already\nunderstood)"),(0,n.kt)("li",{parentName:"ul"},"An ADR for improving tx construction & observation to not need chain\nstate")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3143eb67.b959afc8.js b/assets/js/3143eb67.b959afc8.js new file mode 100644 index 00000000000..8ace20c4778 --- /dev/null +++ b/assets/js/3143eb67.b959afc8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7204],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=s(n),d=a,h=m["".concat(l,".").concat(d)]||m[d]||u[d]||o;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-01-11-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-01-11-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-11-performance-and-tracing.md",source:"@site/blog/2023-01-11-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-01-11T00:00:00.000Z",formattedDate:"January 11, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.865,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2023-01-11-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-11-consensus"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-06-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},m="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks."),(0,a.kt)("li",{parentName:"ol"},"New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs."),(0,a.kt)("li",{parentName:"ol"},"Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components."),(0,a.kt)("p",null,"On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters.\nWe now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes."),(0,a.kt)("p",null,"We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development.\nOnce this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/31889a8f.911b77aa.js b/assets/js/31889a8f.911b77aa.js new file mode 100644 index 00000000000..fb829553bcf --- /dev/null +++ b/assets/js/31889a8f.911b77aa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96446],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),h=p(n),d=r,m=h["".concat(l,".").concat(d)]||h[d]||u[d]||o;return n?a.createElement(m,i(i({ref:t},c),{},{components:n})):a.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-10-02-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-10-02-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-consensus.md",source:"@site/blog/2022-11-02-consensus.md",title:"Consensus Team Update",description:"High-level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:3.53,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-10-02-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Embedding Quality Workstream",permalink:"/cardano-updates/2022-11-03-embedding-quality"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-02-ledger"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"High-level status report",id:"high-level-status-report",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Finish the UTxO HD prototype",id:"finish-the-utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:2},{value:"Benchmarking the CSJ prototype",id:"benchmarking-the-csj-prototype",level:3},{value:"Technical debt",id:"technical-debt",level:2}],c={toc:p},h="wrapper";function u(e){let{components:t,...o}=e;return(0,r.kt)(h,(0,a.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"During the past two weeks, the consensus team continued its work on testing the\nUTxO HD prototype. We completed the era-transition and backing store tests, and\nthe mempool tests are advancing at a steady pace. Regarding our work in the\nGenesis design, we continued our collaboration with the research and networking\nteams, and we continue investigating strategies for making the chain-sync\njumping prototype faster."),(0,r.kt)("h2",{id:"high-level-status-report"},"High-level status report"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish the UTxO HD prototype: on track.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We worked on state-machine tests for the mempool, and spotted potential bugs\nin the implementation. Investigation is ongoing."),(0,r.kt)("li",{parentName:"ul"},"We have a set of property tests for the backing store. We still need to\nincorporate the improvements to the LMDB cursor API that these tests\nmade possible."),(0,r.kt)("li",{parentName:"ul"},"We merged the era-transition tests PR."))),(0,r.kt)("li",{parentName:"ul"},"Genesis: on track.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Design work around Genesis continues in collaboration with researchers and\nthe networking team."),(0,r.kt)("li",{parentName:"ul"},"We continued trying to improve the performance of the chain-sync jumping\nprototype. We gained additional insight on which parameters to tweak next.\nIn spite of the baseline still being faster, the current prototype already\nachieves a significant speedup when compared to the naive approach of simply\nrunning full chain-sync with all peers."))),(0,r.kt)("li",{parentName:"ul"},"Tech debt: on track.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We clarified a common source of confusion around VRF tie-breaking and\ncross-era chain selection.")))),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"finish-the-utxo-hd-prototype"},"Finish the UTxO HD prototype"),(0,r.kt)("p",null,"We continued working on property-tests for the UTxO HD prototype. In particular\nwe merged the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4073"},"era-transition tests\nPR"),"."),(0,r.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4081"},"backing store property tests\nPR")," has been\nreviewed. The next steps are:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Improve error handling and command generation."),(0,r.kt)("li",{parentName:"ul"},"Add coverage testing to check that we are not failing to cover interesting\ntest cases.")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"monadic cursor API"),"\nwent through its first review round. The API is in a relatively stable state.\nThis PR also unifies the ",(0,r.kt)("inlineCode",{parentName:"p"},"cborg")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"serialise"),"-based interfaces to LMDB\noperations. The next steps are:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Write\n",(0,r.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/quickcheck-dynamic"},(0,r.kt)("inlineCode",{parentName:"a"},"quickcheck-dynamic")),"\nstate-machine tests for this API."),(0,r.kt)("li",{parentName:"ul"},"Adapt the changes in the serialisation interface in the backing store property\ntests. This will involve adding boilerplate code in consensus to make up for\nthe removal of the ",(0,r.kt)("inlineCode",{parentName:"li"},"cborg"),"-based interface.")),(0,r.kt)("h2",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,r.kt)("p",null,"We worked on the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4121"},"LSM tree\nprototype"),". In\nparticular, we focused on tuning the LSM tree design to the different workloads\nthat consensus has (eg syncing, normal node operation, etc)."),(0,r.kt)("h3",{id:"benchmarking-the-csj-prototype"},"Benchmarking the CSJ prototype"),(0,r.kt)("p",null,'Work on improving the chain-sync jumping performance is ongoing. In particular\nwe compared the performance of different jump intervals, which, somewhat\nsurprisingly, do not make a significant difference. In particular, we are seeing\nperiodic "plateaus" where the chain-sync tip does not progress, but they are\nmuch longer for the prototype. Our hypothesis is that this seem to be due to a\ncombination of the garbage collector (GC) pauses, and the actual time it takes\nthe non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo\nfragment.'),(0,r.kt)("p",null,"In the coming weeks we will try to shorten these plateaus via a combination of\ntweaking GC options and less synchronisation in the CSJ governor."),(0,r.kt)("p",null,"The following plot shows the performance of the chain-sync jumping prototype\nusing different jumping intervals. It compares the syncing progress by plotting\nthe slots of adopted blocks against time. The baseline is still faster, however\nit is worth noting that the current prototype already achieves a significant\nspeedup when compared to the naive approach of simply running full chain-sync\nwith all peers."),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(39294).Z,width:"998",height:"445"})),(0,r.kt)("p",null,'The second plot shows the syncing progress sliced to a chosen ~5min interval,\nand includes, in addition to the slots of adopted blocks, the slots of the tip\nof the ChainSync fragment. This allows us to see how far ahead of the selected\ntip the CS dynamo is, i.e. how much room we have for BlockFetch not to get\nstalled. It shows periodic behaviour (due to the forecasting limit), and shows\nthat the CS fragment tip is not progressing for significant periods\n("plateaus").'),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(96185).Z,width:"998",height:"445"})),(0,r.kt)("h2",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"We ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4098"},"clarified")," a\ncommon source of confusion around VRF tie-breaking and cross-era chain\nselection. This PR involved correcting potentially misleading names of\nVRF-related functions, and providing context for a particular VRF value is\nused for tie-breaking."))}u.isMDXComponent=!0},96185:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-02-csj-vs-baseline-sliced-77ff018af70191b4122b1e7cf56c79b8.svg"},39294:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-02-csj-vs-baseline-9fd0e0e080975cc6cfbe035731b4f38d.svg"}}]); \ No newline at end of file diff --git a/assets/js/324138c8.0ffe20ee.js b/assets/js/324138c8.0ffe20ee.js new file mode 100644 index 00000000000..a1e30d34295 --- /dev/null +++ b/assets/js/324138c8.0ffe20ee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95613],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(n),h=r,m=d["".concat(l,".").concat(h)]||d[h]||c[h]||a;return n?o.createElement(m,s(s({ref:t},u),{},{components:n})):o.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:r,s[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-02-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-02-22-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-22-consensus.md",source:"@site/blog/2023-02-22-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-02-22T00:00:00.000Z",formattedDate:"February 22, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.45,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-02-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-23-performance-and-tracing"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-22-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Support",id:"support",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the past two weeks we got the results from the system level benchmarks\nfor UTxO HD. They showed a substantial performance regression, so we spent some\ntime analyzing the results. We found out the frequency at which ledger snapshots\nwere taken was too high, so we requested the benchmarking team a new run with a\nmore realistic snapshotting policy. We continued refactoring and improving the\nprototype, and we released UTxO-HD related packages to CHaP."),(0,r.kt)("p",null,"We met with IOG researchers and networking specialists to discuss the Genesis\ndesign, which was well received. We continued working on testing and\nbenchmarking different Genesis prototypes."),(0,r.kt)("p",null,"We are also working on solving a test failure related to iterators. This work\nderived in several improvements such as better documentation, a framework for\nwriting unit (and regression) tests, and the possibility of debugging\n",(0,r.kt)("inlineCode",{parentName:"p"},"QuickCheck")," counter examples in the REPL."),(0,r.kt)("p",null,"Finally, we released ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," 0.2.0.0 and\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-cardano")," 0.3.0.0 to CHaP"),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,r.kt)("p",null,"We got the results of the first system level benchmarks for UTxO HD. They seemed\nto indicate a significant regression in performance. After looking into the\nbenchmark logs we found that the benchmark runs took ledger state snapshots too\noften, due to the default snapshotting policy depending on ",(0,r.kt)("inlineCode",{parentName:"p"},"k"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"k")," being so\nsmall in the benchmark runs. Therefore, the next step is to re-run the\nbenchmarks with a snapshotting policy that more closely resembles the one from\nmainnet."),(0,r.kt)("p",null,"At the same time, we continued refactoring and cleaning up the prototype. "),(0,r.kt)("p",null,"Also, we prepared the ",(0,r.kt)("inlineCode",{parentName:"p"},"anti-diff")," packages (",(0,r.kt)("inlineCode",{parentName:"p"},"fingertree-rm"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"diff-containers"),",\n",(0,r.kt)("inlineCode",{parentName:"p"},"simple-semigroupoids"),") and the ",(0,r.kt)("inlineCode",{parentName:"p"},"lmdb")," related packages (",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-lmdb")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-lmdb-simple"),") to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP"),"."),(0,r.kt)("h3",{id:"genesis"},"Genesis"),(0,r.kt)("p",null,"The Genesis design was presented to the IOG researchers and Peter Thompson from\nNSol. It was well received. They pointed out one blindspot, but we think it'll\nbe relatively simple to mitigate."),(0,r.kt)("p",null,"In parallel, we continued developing test and benchmarks for the Genesis\nprototypes. I particular we tested and implemented a potential fix for\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4037#issuecomment-1439708022"},"increased ChainDB dequeue timings"),", which partly\nbehaved as we expected, but still needs further investigation. Also we obtained\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4037#issuecomment-1434745031"},"new benchmarking data")," for the prototype."),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"Related to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4183"},"#4183"),", we developed a ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4379"},"DSL")," for specifying\n",(0,r.kt)("inlineCode",{parentName:"p"},"ChainDB")," unit tests. This will allow us to better understand the\ncounter-examples returned by QuickCheck tests, and to write ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4383"},"regression\ntests")," for them. Also, we ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4358"},"added a module")," to enable\nQuickCheck counter-examples to be run on the REPL, allowing for faster debugging\nfeedback. Also, we improved the documentation related to followers\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4372"},"#4372"),")."),(0,r.kt)("p",null,"We are also working on a design for optimizing the way we handle blocks from the\nfuture."),(0,r.kt)("h3",{id:"support"},"Support"),(0,r.kt)("p",null,"We released ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," 0.2.0.0 and ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-cardano"),"\n0.3.0.0 to CHaP. Remember that we decided to split the packages related to\nConsensus into two bundles, one with the core functionality, Cardano-agnostic\ncode, and another bundle with instantiations specific to Cardano."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/32d4ad41.059e2e13.js b/assets/js/32d4ad41.059e2e13.js new file mode 100644 index 00000000000..db0e417f561 --- /dev/null +++ b/assets/js/32d4ad41.059e2e13.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42575],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(a),c=n,m=u["".concat(p,".").concat(c)]||u[c]||d[c]||o;return a?r.createElement(m,i(i({ref:t},h),{},{components:a})):r.createElement(m,i({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-11-11-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-11-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-hydra.md",source:"@site/blog/2022-11-11-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.94,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-11-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-11-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-11-ledger"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:s},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team published together with Obsidian Systems a light paper\non our "Hydra for Payments" project (',(0,n.kt)("a",{parentName:"p",href:"https://iohk.io/en/blog/posts/2022/11/10/hydra-for-payments-introducing-developer-tooling-to-unlock-micropayments-on-cardano/"},"Link"),"). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," processes. "),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published Hydra for Payments light paper (",(0,n.kt)("a",{parentName:"li",href:"https://iohk.io/en/blog/posts/2022/11/10/hydra-for-payments-introducing-developer-tooling-to-unlock-micropayments-on-cardano/"},"Link"),")"),(0,n.kt)("li",{parentName:"ul"},"Have a draft RFP ready for a first review internally"),(0,n.kt)("li",{parentName:"ul"},"Answered the internal auditor","\u2019","s questions"),(0,n.kt)("li",{parentName:"ul"},"Fixed a bug with following the chain when starting with persistence (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/599"},"#599"),")"),(0,n.kt)("li",{parentName:"ul"},"Minor improvements to logging for better observability (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/598"},"#598"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/600"},"#600"),")"),(0,n.kt)("li",{parentName:"ul"},"Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/590"},"#590"),")")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement event-sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Close more gaps ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: ",(0,n.kt)("strong",{parentName:"li"},'"Developing Hydra" on Day 2, Nov 21st, 13:50 CET'))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3328a3bf.2a0ee70d.js b/assets/js/3328a3bf.2a0ee70d.js new file mode 100644 index 00000000000..bc269e2330a --- /dev/null +++ b/assets/js/3328a3bf.2a0ee70d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86393],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),l=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=l(n),h=a,m=p["".concat(i,".").concat(h)]||p[h]||u[h]||o;return n?r.createElement(m,s(s({ref:t},d),{},{components:n})):r.createElement(m,s({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=h;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[p]="string"==typeof e?e:a,s[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB Sync Team Update",slug:"2022-10-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},s=void 0,c={permalink:"/cardano-updates/2022-10-04-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-04-db-sync.md",source:"@site/blog/2022-10-04-db-sync.md",title:"DB Sync Team Update",description:"DBSync Update",date:"2022-10-04T00:00:00.000Z",formattedDate:"October 4, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB Sync Team Update",slug:"2022-10-04-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-05-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-04-node-cli-api"}},i={authorsImageUrls:[void 0]},l=[{value:"DBSync Update",id:"dbsync-update",level:2},{value:"Fast restarts",id:"fast-restarts",level:3},{value:"Property based testing",id:"property-based-testing",level:3},{value:"Tech Debt",id:"tech-debt",level:3},{value:"Smash",id:"smash",level:3}],d={toc:l},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"dbsync-update"},"DBSync Update"),(0,a.kt)("h3",{id:"fast-restarts"},"Fast restarts"),(0,a.kt)("p",null," We fixed a long overdue issue in db-sync which caused long delays on restarts\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1266"},"1266"),". This has been\none of db-sync main objectives for this period. Restarts are now very fast,\nbecause db-sync deletes almost nothing from the db, it just replays the ledger rules until it\nreaches the tip of the db. The fix also improves reconnection speed, in cases where the node\nrestarts or the connection is temporarily lost. It also speeds up even more in cases where due to a\ndeployment mess up a very old snapshot or no snapshot at all is used."),(0,a.kt)("h3",{id:"property-based-testing"},"Property based testing"),(0,a.kt)("p",null,"We added stateful property based testing, using ",(0,a.kt)("inlineCode",{parentName:"p"},"quickcheck-state-machine"),"\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1269"},"1269"),". These tests use empty or\nalmost empty blocks to test the new behaviour of restarts and rollbacks."),(0,a.kt)("p",null," These tests generate arbitrarily a list of symbolic commands from these:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"RollForward Int\nRollBack BlockNo\nStopDBSync\nStartDBSync\nRestartNode\nAssertBlockNo BlockNo\n")),(0,a.kt)("p",null,"The commands are translated into real commands. For example ",(0,a.kt)("inlineCode",{parentName:"p"},"RollForward Int")," will forge a new block\nthat fits on the current chain. These real commands are executed against db-sync using the mock\nchain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync\nwhich looks like this:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-haskell"}," Model\n { serverTip :: BlockNo\n , dbSyncTip :: BlockNo\n , dbSynsIsOn :: Bool\n , dbSynsHasSynced :: Bool\n }\n")),(0,a.kt)("p",null,"Finally a number of postconditions are checked, related to the eventual block number of db-sync."),(0,a.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,a.kt)("p",null,"We handled a number of tech debt in\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1275"},"1275"),"\nThis improves the code format of db-sync, deletes many queries that were never used and groups the\nothers. This tech debt resolution not only improves the experience of working in db-sync, but can\nfacilitate some of our other objectives, as it makes it very explicit which queries are used\nduring syncing and which indexes are necessary."),(0,a.kt)("h3",{id:"smash"},"Smash"),(0,a.kt)("p",null,"We worked on fixing an issue related to fetching pool metadata\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1276"},"1276"),".\nThe issue which is described in\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1270"},"1270")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/335868d9.3ea9cbb3.js b/assets/js/335868d9.3ea9cbb3.js new file mode 100644 index 00000000000..02b9e07226a --- /dev/null +++ b/assets/js/335868d9.3ea9cbb3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45480],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},l="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),l=p(n),m=a,h=l["".concat(u,".").concat(m)]||l[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},c),{},{components:n})):r.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[l]="string"==typeof e?e:a,s[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-11-29-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-11-29-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-29-consensus.md",source:"@site/blog/2023-11-29-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-11-29T00:00:00.000Z",formattedDate:"November 29, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.51,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-11-29-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-12-01-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-29-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:p},l="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(l,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The Consensus team implemented and tested a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/525"},"patch")," that does not propagate future headers.\nIt is under review, and we expect it can be released in the next Cardano node version.\nOn the UTxO-HD front, we ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/510"},"finished")," prototyping the ",(0,a.kt)("inlineCode",{parentName:"p"},"LedgerDB")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"BackingStore")," redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend.\nWith this prototype finished we can start integrating the rest of the code.\nWe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/513"},"investigated")," the unexpected performance degradation observed when acquiring the block context.\nWe also ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.7.0-pre"},"released Cardano node 8.7.0")," and ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3893"},"moved")," ",(0,a.kt)("inlineCode",{parentName:"p"},"tree-diff")," outside ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-ledger")," libraries."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3399a664.cb1ecec9.js b/assets/js/3399a664.cb1ecec9.js new file mode 100644 index 00000000000..f5c3a94107f --- /dev/null +++ b/assets/js/3399a664.cb1ecec9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70950],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(a),s=i,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||r;return a?n.createElement(h,o(o({ref:t},d),{},{components:a})):n.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,o=new Array(r);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var n=a(87462),i=(a(67294),a(3905));const r={title:"Node API & CLI Team Update",slug:"2023-09-12-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-09-12-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-12-node-cli-api.md",source:"@site/blog/2023-09-12-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-09-12T00:00:00.000Z",formattedDate:"September 12, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:2.605,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-09-12-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-09-14-db-sync"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-08-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,i.kt)(c,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"2023-08-30---2023-09-12"},"2023-08-30 - 2023-09-12"),(0,i.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,i.kt)("p",null,"Release of ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.3.0-pre"},"Cardano-node 8.3.0-pre")," for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs.\nThis release completes ",(0,i.kt)("a",{parentName:"p",href:"https://sancho.network/get-started#sanchonet-feature-rollout"},"phase 2 of SanchoNet feature roll out plan")),(0,i.kt)("p",null,"CLI continues on its migration to a era-based top-level commands. This sprint we moved ",(0,i.kt)("inlineCode",{parentName:"p"},"text-view"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"key"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"query"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"genesis"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"node"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"address")," into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints."),(0,i.kt)("p",null,"We are moving the ",(0,i.kt)("inlineCode",{parentName:"p"},"drep delegation-certificate")," to the stake-address command so delegating to a drep is done via ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-addres vote-delegation-certificate"),". Along the same lines, we are renaming\n",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address delegation-certificate")," (delagating to a stake pool) to ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address stake-delegation-certificate")," to distinguish between stake delegation to a pool and votes delegation to a drep. On top\nof that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address stake-and-vote-delegation-certificate"),". Note that change is not included on 8.3 but will come on 8.4.\nRemoving ",(0,i.kt)("inlineCode",{parentName:"p"},"--conway-era")," flag from all the ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," sub-commands."),(0,i.kt)("p",null,"Update description fields in delegation certificates from ",(0,i.kt)("inlineCode",{parentName:"p"},"Stake Address Delegation Certificate")," to respectively (Conway onwards):"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Stake Delegation Certificate")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Vote Delegation Certificate")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Stake and Vote Delegation Certificate"))),(0,i.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/261"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address vote-delegation-certificate")," command")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/257"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address stake-and-vote-delegation-certificate")," command")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/260"},"Change ",(0,i.kt)("inlineCode",{parentName:"a"},"TreasuryWithdrawalCmd")," to a record")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/256"},"Simplify ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address stake-delegation-certificate")," command across eras")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/254"},"Remove ",(0,i.kt)("inlineCode",{parentName:"a"},"EraBased")," prefix and add ",(0,i.kt)("inlineCode",{parentName:"a"},"Cmd")," suffix")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/250"},"#221 Update description fields on delegation certificates")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/249"},"Update error message for eras mismatch between node and cli")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/248"},"Era based ",(0,i.kt)("inlineCode",{parentName:"a"},"address")," commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/246"},"Consistent naming for ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-pool")," command related types, functions and modules")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/245"},"Disable ",(0,i.kt)("inlineCode",{parentName:"a"},"redundant-constraints")," warning only on ",(0,i.kt)("inlineCode",{parentName:"a"},"ghc-8.10.7"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/244"},"Remove ",(0,i.kt)("inlineCode",{parentName:"a"},"EraBased")," prefix from era-based commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/243"},"Rename ",(0,i.kt)("inlineCode",{parentName:"a"},"delegation-certificate")," to ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-delegation-certificate")," only in era-based command structure")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/242"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"node")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/241"},"Era-based ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address")," command group")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/240"},"Remove duplicate instances and add new ",(0,i.kt)("inlineCode",{parentName:"a"},"FeatureInEra ShelleyBasedEra")," instance")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/239"},"Remove ",(0,i.kt)("inlineCode",{parentName:"a"},"EraBased")," prefix from errors")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/238"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"text-view")," run commands implementation into era-based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/237"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"key")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/236"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"query")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/235"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"genesis")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/234"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"pool")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/233"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/232"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"address")," run command implementation into era-based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/231"},"Delete legacy ",(0,i.kt)("inlineCode",{parentName:"a"},"conway governance")," commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/230"},"Era sensitive transaction run commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/229"},"Move transaction command code into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/228"},"Fix query ",(0,i.kt)("inlineCode",{parentName:"a"},"key-period-info"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/227"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"hprop_golden_shelleyStakeAddressRegistrationCertificateWithBuildRaw")," test")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/225"},"Prefix complex delegation certificate option"))),(0,i.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/233"},"Fix test constraints functions")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/231"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"caseShelleyToBabbageAndConwayEraOnwards")," function")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/230"},"Delete deprecated functions and types")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/228"},"Release 8.19.0.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/226"},(0,i.kt)("inlineCode",{parentName:"a"},"FeatureInEra")," instances for ",(0,i.kt)("inlineCode",{parentName:"a"},"CardanoEra")," and ",(0,i.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/225"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"mapSomeAddressVerification")," key function")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/224"},"Fix type signature of ",(0,i.kt)("inlineCode",{parentName:"a"},"queryGenesisParameters")," so that it can be queried in any era")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/222"},"Release 8.18.0.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/221"},"Fix exception when executing drep queries"))),(0,i.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.3.0-pre"},"Cardano-node 8.3.0-pre")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5460"},"Fix deadlock issue with stdout tracer in tx-generator")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5453"},"nix: workbench tracing configuration"))),(0,i.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,i.kt)("h3",{id:"docs"},"docs"),(0,i.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/34012593.05c2493c.js b/assets/js/34012593.05c2493c.js new file mode 100644 index 00000000000..4d1b2fe230b --- /dev/null +++ b/assets/js/34012593.05c2493c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86809],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(a),u=r,g=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return a?n.createElement(g,l(l({ref:t},s),{},{components:a})):n.createElement(g,l({ref:t},s))}));function g(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:r,l[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-03-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-03-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-goedel.md",source:"@site/blog/2023-03-03-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.815,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-03-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-03-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-03-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint the team has been working on drafts of two papers and one\ntechnical report, improving the deltaQ tutorial, consulting on\nperformance design, and the Djed paper has been accepted for\npublication."),(0,r.kt)("h2",{id:"details"},"Details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing draft of DeltaQSD algebra paper for FORTE 2023")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Extending the technical report on which the above paper is based")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Consulting with an external company on performance engineering of Plutus contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Planning improvements and collecting material for the deltaQ\ntutorial based on experience with systems that manage risk at\nmultiple timescales")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing sections on the communication language and idempontency\nlaws for draft paper about verifying design refinements for\ndistributed system design")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Studying Cardano chain sync protocol")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'"Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin\nProtocol" has been accepted for publication at IEEE ICBC 2023'))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/347c3e4d.648bedec.js b/assets/js/347c3e4d.648bedec.js new file mode 100644 index 00000000000..f367afbe8b4 --- /dev/null +++ b/assets/js/347c3e4d.648bedec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23271],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=l(r),m=a,h=u["".concat(c,".").concat(m)]||u[m]||d[m]||s;return r?n.createElement(h,o(o({ref:t},p),{},{components:r})):n.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:a,o[1]=i;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var n=r(87462),a=(r(67294),r(3905));const s={title:"DB sync Team Update",slug:"2022-12-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2022-12-01-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-db-sync.md",source:"@site/blog/2022-12-01-db-sync.md",title:"DB sync Team Update",description:"High level summary",date:"2022-12-01T00:00:00.000Z",formattedDate:"December 1, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.78,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB sync Team Update",slug:"2022-12-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-02-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-01-mithril"}},c={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DB Sync team prepared a release ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.0-rc2")," which includes many improvements for db-sync,\nit makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces\nmigrations. This release finalises the objectives that were set for db-sync for the previous\n3 months period and part of the syncing speed objective set for the next period\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/blob/3640e5aa00b8bada61e5d4b6eee063749866711b/cardano-db-sync/CHANGELOG.md#13100"},"Changelog")),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Branch ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/compare/release/13.0.x..3640e5aa00b8bada61e5d4b6eee063749866711b"},"release/13.1.0.x"),"\nincludes all the improvements related to the release. The release is passing through the testing\nphase and a number of bugs and issues have been fixed, like\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1312"},"#1312"),"\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1311"},"#1311"),".\nAlso many new unit tests have been added.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Part of the release branch is cherry-picked back into master, in a way that it respects the new\nrelease and development process, so that it takes into account migrations\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1305"},"release process"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"The DB Sync team has also tagged release ",(0,a.kt)("inlineCode",{parentName:"p"},"13.0.6")," which better supports preview and preprod for\ndocker."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/34c17ec8.6d76c4fb.js b/assets/js/34c17ec8.6d76c4fb.js new file mode 100644 index 00000000000..b1a73ac0b83 --- /dev/null +++ b/assets/js/34c17ec8.6d76c4fb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91902],{52219:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly","page":1,"postsPerPage":10,"totalPages":2,"totalCount":15,"nextPage":"/cardano-updates/quarterly/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/35369e36.c570c97c.js b/assets/js/35369e36.c570c97c.js new file mode 100644 index 00000000000..6a2ca3ea23b --- /dev/null +++ b/assets/js/35369e36.c570c97c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[74433],{54137:a=>{a.exports=JSON.parse('{"label":"goedel","permalink":"/cardano-updates/tags/goedel","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/354f96c6.f214d6fc.js b/assets/js/354f96c6.f214d6fc.js new file mode 100644 index 00000000000..79051ec3509 --- /dev/null +++ b/assets/js/354f96c6.f214d6fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78580],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),d=a,m=p["".concat(l,".").concat(d)]||p[d]||h[d]||o;return n?r.createElement(m,s(s({ref:t},c),{},{components:n})):r.createElement(m,s({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-10-04-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-10-04-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-04-consensus.md",source:"@site/blog/2023-10-04-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-10-04T00:00:00.000Z",formattedDate:"October 4, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.135,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-10-04-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-10-06-performance-and-tracing"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-04-mithril"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:3},{value:"Support",id:"support",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],c={toc:u},p="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the ",(0,a.kt)("em",{parentName:"p"},"in-memory")," backend."),(0,a.kt)("p",null,"On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain.\nWe also merged a fix for the Babbage to Conway transition, and released a new version of Consensus."),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/392"},"392"),").")),(0,a.kt)("h3",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/366"},"366"),")."),(0,a.kt)("li",{parentName:"ul"},"We enabled richer tracers in ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node")," that can be useful in future debugging (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/384"},"384"),")."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/amesgen"},"Esgen")," continues with his release engineer activities, and created a new Consensus release.")),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/369"},"369"),").")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/35785fae.0a17f637.js b/assets/js/35785fae.0a17f637.js new file mode 100644 index 00000000000..ba4e937bc69 --- /dev/null +++ b/assets/js/35785fae.0a17f637.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7233],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),c=p(a),u=n,m=c["".concat(s,".").concat(u)]||c[u]||d[u]||o;return a?r.createElement(m,i(i({ref:t},h),{},{components:a})):r.createElement(m,i({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-01-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-01-27-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-27-hydra.md",source:"@site/blog/2023-01-27-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-01-27T00:00:00.000Z",formattedDate:"January 27, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.945,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-01-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-02-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-26-mithril"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},c="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team had a monthly review meeting with their stakeholders,\ncontributors and interested people from the community. The monthly repot for\n",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2023-01"},"January 2023")," is a digest\nof the things presented and also includes a summary of the meeting. The Hydra\nspecification was getting discussed and the team is incorporating suggested\nchanges of reviewers. Last but not least, they compute and publish script\ninformation on every PR and also on the\n",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/benchmarks/transaction-cost/#script-summary"},"website"),"\nnow."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Had the monthly review meeting with a broader audience"),(0,n.kt)("li",{parentName:"ul"},"Published the monthly report for ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-01"},"January 2023")),(0,n.kt)("li",{parentName:"ul"},"Reviewed the spec and discussed individual aborts with researchers"),(0,n.kt)("li",{parentName:"ul"},"Compute and publish script information along benchmarks on every PR and ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/benchmarks/transaction-cost/#script-summary"},"website"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add rollback section to Hydra spec, update pictures and publish it as part of repository"),(0,n.kt)("li",{parentName:"ul"},"Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository."),(0,n.kt)("li",{parentName:"ul"},"Groom & plan actions required for a maintainable Head explorer + break down ","\u201c","align gaps","\u201d"," feature.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/35961293.d0fa4575.js b/assets/js/35961293.d0fa4575.js new file mode 100644 index 00000000000..ad7bc63aeda --- /dev/null +++ b/assets/js/35961293.d0fa4575.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6115],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=n,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-11-22-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-22-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-22-mithril.md",source:"@site/blog/2023-11-22-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-22T00:00:00.000Z",formattedDate:"November 22, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.895,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-22-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-22-ledger"},nextItem:{title:"Initial CIP 1694 Security Analysis and Responses",permalink:"/cardano-updates/2023-11-20-cip1694"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer."),(0,n.kt)("p",null,"Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Prototype a P2P relay with ",(0,n.kt)("inlineCode",{parentName:"strong"},"libp2p"))," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1326"},"#1326")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Manually deploy a test Mithril network")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1356"},"#1356")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Make Cardano node version custom in CI/CD")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1355"},"#1355")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Support P2P relay in infrastructure")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1361"},"#1361")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"mithril-client fails to extract archive")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1352"},"#1352"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/359aa856.a7e87b7a.js b/assets/js/359aa856.a7e87b7a.js new file mode 100644 index 00000000000..2d3a32526c0 --- /dev/null +++ b/assets/js/359aa856.a7e87b7a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97317],{2112:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/embedding-quality","page":1,"postsPerPage":5,"totalPages":1,"totalCount":1,"blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/35c3586e.55caad30.js b/assets/js/35c3586e.55caad30.js new file mode 100644 index 00000000000..477a1896ae0 --- /dev/null +++ b/assets/js/35c3586e.55caad30.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2789],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(u,".").concat(c)]||d[c]||h[c]||i;return a?r.createElement(m,l(l({ref:t},s),{},{components:a})):r.createElement(m,l({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-10-06-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-10-06-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-06-hydra.md",source:"@site/blog/2023-10-06-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-06T00:00:00.000Z",formattedDate:"October 6, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.88,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-06-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-10-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-10-06-performance-and-tracing"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums."),(0,n.kt)("p",null,"The team also delivered the first version of the network resilience layer, significantly increasing head availability."),(0,n.kt)("p",null,"Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra."),(0,n.kt)("p",null,"Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Release ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.13.0"},"0.13.0")),(0,n.kt)("li",{parentName:"ul"},"Published vulnerability reports ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1088"},"#1088")),(0,n.kt)("li",{parentName:"ul"},"Merged network resilience work part I ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1074"},"#1074")),(0,n.kt)("li",{parentName:"ul"},"Planning for Cardano Summit participation "),(0,n.kt)("li",{parentName:"ul"},"Discussions with funded Catalyst projects wanting to build on Hydra for support"),(0,n.kt)("li",{parentName:"ul"},"Merged typos fix PR from @omahs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1095"},"#1095"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete Aiken commit validator script ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1072"},"#1072")),(0,n.kt)("li",{parentName:"ul"},"Complete Kupo integration ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1078"},"#1078")),(0,n.kt)("li",{parentName:"ul"},"Brick upgrade on TUI ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1103"},"#1103")),(0,n.kt)("li",{parentName:"ul"},"Clean backlog"),(0,n.kt)("li",{parentName:"ul"},"Prepare and rehearse demo and talk for Cardano Summit")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/35e2a0c5.c76faf09.js b/assets/js/35e2a0c5.c76faf09.js new file mode 100644 index 00000000000..88a43340f3b --- /dev/null +++ b/assets/js/35e2a0c5.c76faf09.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90999],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var l=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=l.createContext({}),o=function(e){var t=l.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=o(e.components);return l.createElement(u.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},h=l.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,u=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),m=o(a),h=r,c=m["".concat(u,".").concat(h)]||m[h]||d[h]||n;return a?l.createElement(c,i(i({ref:t},s),{},{components:a})):l.createElement(c,i({ref:t},s))}));function c(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,i=new Array(n);i[0]=h;var p={};for(var u in t)hasOwnProperty.call(t,u)&&(p[u]=t[u]);p.originalType=e,p[m]="string"==typeof e?e:r,i[1]=p;for(var o=2;o{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>n,metadata:()=>p,toc:()=>o});var l=a(87462),r=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-09-29-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-09-29-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-ledger.md",source:"@site/blog/2023-09-29-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.465,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-09-29-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-29-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-29-sre"}},u={authorsImageUrls:[void 0]},o=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Performance",id:"performance",level:3},{value:"Releasing",id:"releasing",level:3},{value:"Testing",id:"testing",level:3}],s={toc:o},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,l.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"Few important Conway related features were completed in this two week period:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Constitutional Committee was the last missing Conway related entity that has now been\nfully implemented."),(0,r.kt)("li",{parentName:"ul"},"Treasury withdrawals governance actions have been fixed and now behave as expected."),(0,r.kt)("li",{parentName:"ul"},"Current treasury amount supplied in the transaction is now enforced by the rules."),(0,r.kt)("li",{parentName:"ul"},"DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no\nproposals to vote on."),(0,r.kt)("li",{parentName:"ul"},"Semantics of how CostModels are updated with Protocol Parameters have been changed to\nallow for individual Plutus language version updates, rather than requiring a complete\nreplacement of all CostModels")),(0,r.kt)("p",null,"Besides the new features there were also important performance and testing improvements:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"In particular stake distribution computation and native script handling received some\noptimizations."),(0,r.kt)("li",{parentName:"ul"},"New testing DSL has been implemented that drastically simplifies writing unit tests for\nledger rules."),(0,r.kt)("li",{parentName:"ul"},"Integration tests and benchmarks are now possible for Conway era because of the overhaul\nof functionality for initial funds and staking injection whenever node starts up in\nConway, while bypassing all previous eras.")),(0,r.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,r.kt)("h3",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3729"},"pull-3729")," - DRep expiry update after a contiguous set of epochs with no proposals to vote on"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3739"},"pull-3739")," - Rename some PParams to be consistent with Agda specification"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3743"},"pull-3743")," - Move DRepDistr from VState to ConwayGovState"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3746"},"pull-3746")," - Implement ",(0,r.kt)("inlineCode",{parentName:"li"},"tcTranslationContextL")," for Shelley"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3737"},"pull-3737")," - Implement EraTransition"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3749"},"pull-3749")," - Add predicate failure: current treasury value mismatch in LEDGER"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3748"},"pull-3748")," - Apply enacted treasury withdrawals"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3745"},"pull-3745")," - Constitutional Committee Ratification"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3763"},"pull-3763")," - Plutus interface improvements"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3771"},"pull-3771")," - Changed how costmodel updates are applied"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3766"},"pull-3766")," - Prevent updating protocol version with ",(0,r.kt)("inlineCode",{parentName:"li"},"PParamUpdate"))),(0,r.kt)("h3",{id:"performance"},"Performance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3765"},"pull-3765")," - Improve native script handling"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3747"},"pull-3747")," - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3758"},"pull-3758")," - Cardano-Perf regression: UMap.size regression fix"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3754"},"pull-3754")," - Use Alonzo-style TxOut encoder when possible")),(0,r.kt)("h3",{id:"releasing"},"Releasing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3742"},"pull-3742")," - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3744"},"pull-3744")," - Changelog 8.4"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3752"},"pull-3752")," - Patch release of cardano ledger conway 1.8.1.0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3753"},"pull-3753")," - Minor cleanup and changelog entries"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3760"},"pull-3760")," - Fixup issues for release"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3764"},"pull-3764")," - Bump plutus deps to 1.13")),(0,r.kt)("h3",{id:"testing"},"Testing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3734"},"pull-3734")," - Removed ",(0,r.kt)("inlineCode",{parentName:"li"},"Shaped")," instance for ",(0,r.kt)("inlineCode",{parentName:"li"},"Rep")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3735"},"pull-3735")," - Simplify the implementations of ",(0,r.kt)("inlineCode",{parentName:"li"},"hasOrd")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"hasEq")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3728"},"pull-3728")," - STS tests based on constraints"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3714"},"pull-3714")," - Implement the remaining upgradable families"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3733"},"pull-3733")," - Add some unit tests for Conway features"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3762"},"pull-3762")," - Update CDDL for praos headers.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/35ef34ae.d5d7c472.js b/assets/js/35ef34ae.d5d7c472.js new file mode 100644 index 00000000000..9d11e6d1edd --- /dev/null +++ b/assets/js/35ef34ae.d5d7c472.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[44966],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(r),m=n,f=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return r?a.createElement(f,l(l({ref:t},c),{},{components:r})):a.createElement(f,l({ref:t},c))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"SRE Team Update",slug:"2023-08-04-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-04-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-sre.md",source:"@site/blog/2023-08-04-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.64,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-08-04-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-04-performance-and-tracing"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-01-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-world",id:"cardano-world",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Preprod and preview envionments were updated to 8.1.2."),(0,n.kt)("li",{parentName:"ul"},"Sanchonet and shelley-qa environments were updated to 8.2.0-pre."),(0,n.kt)("li",{parentName:"ul"},"Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Deploy cardano-node 8.1.2, merge p2p modifications, script fixes and cleanup: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/pull/416"},"cardano-ops-pull-416"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf"},"cardano-perf-repo"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Deploy cardano-node 8.1.2, emurgo p2p config, optimize faucet resources: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/104"},"cardano-world-pull-104")),(0,n.kt)("li",{parentName:"ul"},"Resolve nomad segfaults via nix versioning and fixup dbSync metal job for iohkNix env update: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/105"},"cardano-world-pull-105")),(0,n.kt)("li",{parentName:"ul"},"Add nomad dbSync fix for iohkNix env update: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/106"},"cardano-world-pull-106"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/35f1ce0d.c093fa38.js b/assets/js/35f1ce0d.c093fa38.js new file mode 100644 index 00000000000..9a1436849cb --- /dev/null +++ b/assets/js/35f1ce0d.c093fa38.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35400],{80299:a=>{a.exports=JSON.parse('{"label":"crypto","permalink":"/cardano-updates/tags/crypto","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/36a96f5a.9a5af48d.js b/assets/js/36a96f5a.9a5af48d.js new file mode 100644 index 00000000000..5b129f3d6e6 --- /dev/null +++ b/assets/js/36a96f5a.9a5af48d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92160],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),c=p(n),d=a,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return n?r.createElement(h,l(l({ref:t},s),{},{components:n})):r.createElement(h,l({ref:t},s))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:a,l[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-11-09-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-11-09-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-09-db-sync.md",source:"@site/blog/2023-11-09-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-11-09T00:00:00.000Z",formattedDate:"November 9, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.485,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-11-09-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-10-sre"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-08-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],s={toc:p},c="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have created new tag ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-2-2-0"),", which integrates missing Conway feautures and some minor fix\ntags ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-2-1-0"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-2-0-1"),".\nWe have completed the initial implementation for the bootstrap instance objective."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Add a new ",(0,a.kt)("inlineCode",{parentName:"li"},"--disable-gov")," flag which disabled Conway ferautures\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1558"},"#1558")),(0,a.kt)("li",{parentName:"ul"},"Fix of the committee key size\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1544"},"#1544")),(0,a.kt)("li",{parentName:"ul"},"Workaround a ledger issue with unregistered pools\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1542"},"#1542")),(0,a.kt)("li",{parentName:"ul"},"Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1539"},"#1539")),(0,a.kt)("li",{parentName:"ul"},"Rename offline to offchain\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1533"},"#1533")),(0,a.kt)("li",{parentName:"ul"},"Transfer existing tests to Conway era\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1529"},"#1529"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1547"},"#1547"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/370c5287.99fe1c0a.js b/assets/js/370c5287.99fe1c0a.js new file mode 100644 index 00000000000..b9f1597700d --- /dev/null +++ b/assets/js/370c5287.99fe1c0a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32438],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(n),h=r,m=d["".concat(s,".").concat(h)]||d[h]||c[h]||a;return n?o.createElement(m,i(i({ref:t},u),{},{components:n})):o.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2022-10-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-28-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-network.md",source:"@site/blog/2022-10-28-network.md",title:"Network Team Update",description:"High-level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.665,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-10-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-28-hydra"},nextItem:{title:"Performance & Tracing Team Update",permalink:"/cardano-updates/2022-10-28-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"Detailed description",id:"detailed-description",level:2},{value:"P2P Network Stack",id:"p2p-network-stack",level:3},{value:"Consensus",id:"consensus",level:3},{value:"Cardano Node",id:"cardano-node",level:3},{value:"Peer Sharing",id:"peer-sharing",level:3},{value:"Eclipse Evasion",id:"eclipse-evasion",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"Open Source",id:"open-source",level:3},{value:"Mithril Cardano Integration",id:"mithril-cardano-integration",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"The team has focused on debuging & fixing bugs for the ",(0,r.kt)("strong",{parentName:"p"},"P2P single relay release"),", which included"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"diagnosing, fixing and writing tests for a bug in ",(0,r.kt)("inlineCode",{parentName:"li"},"peer-state-actions")," which\nfortunately hasn't been released;"),(0,r.kt)("li",{parentName:"ul"},"diagnosing & preventing misconfiguration of DNS")),(0,r.kt)("p",null,"We also focused on developing ",(0,r.kt)("strong",{parentName:"p"},"peer sharing"),". We also held a session with\nthe scientists on eclipse evasion."),(0,r.kt)("h2",{id:"detailed-description"},"Detailed description"),(0,r.kt)("h3",{id:"p2p-network-stack"},"P2P Network Stack"),(0,r.kt)("p",null,"During the past two weeks the team focused on p2p single relay release and peer\nsharing. We found and fixed an important bug recently introduced in one of the\ncomponents of p2p networking stack (fortunately never released). Together with\na fix, we designed a unit test diffusion simulation as well as quickcheck\nproperty test (both could reproduce it). We also changed the code in a way that\nif such a bug is reintroduced in the future, it will be obvious to diagnose.\nFor more see:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4067"},"ouroboros-network#4067")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4086"},"ouroboros-network#4086"))),(0,r.kt)("p",null,"Initial benchmarking run of the P2P code was executed. The results where\nunlike what we see on the mainnet. We found a possible misconfiguration of the\ncluster (caused by 0 TTL on domain names), which could be the direct cause of\nit. We wrote a PR which rules out such misconfiguration. We are awaiting on\nthe next benchmarking results. See more at:"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4106"},"ouroboros-network#4106")),(0,r.kt)("p",null,"We also started working on P2P single relay release. The PR\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4120"},"ouroboros-network#4120"),"\nincludes ",(0,r.kt)("em",{parentName:"p"},"108")," patches cherry-picked from the ",(0,r.kt)("inlineCode",{parentName:"p"},"master")," branch. We started\nworking toward integration these changes against the release branch of\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". Early next week we ought to be able to have an early version\nof ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," with ",(0,r.kt)("em",{parentName:"p"},"non experimental P2P support"),"!"),(0,r.kt)("p",null,"For more detailed release plan please see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3888"},"P2P - Single\nRelay"),"\nissue."),(0,r.kt)("h3",{id:"consensus"},"Consensus"),(0,r.kt)("p",null,"We identified and fixed missing error reporting in consensus\ninitialisation phase. See more at\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4015"},"ouroboros-network#4015")),(0,r.kt)("h3",{id:"cardano-node"},"Cardano Node"),(0,r.kt)("p",null,"We also made changes in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," in order to give better experience for\nnode operators. This includes updating severities of some of the traces as\nwell as implementing new format of the p2p topology file. For more see:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4563"},"cardano-node#4563"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4561"},"cardano-node#4561"))),(0,r.kt)("h3",{id:"peer-sharing"},"Peer Sharing"),(0,r.kt)("p",null,"We continued working on implementation of peer sharing. We have an early\nimplementation which will be reviewed and analysed in next weeks. We started\nworking on ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," integration. We need\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4392"},"PR #4392")," to be merged\nbefore such integration will be able to land in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),", although this\nis ",(0,r.kt)("em",{parentName:"p"},"not blocking")," us currently. See more at:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"ouroboros-network#4019"))),(0,r.kt)("h3",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,r.kt)("p",null,"We held a session which included Alexander Russel, Sandro Coretti-Drayton and\nNick Frisby from the consensus team. We discussed high lever design of the\neclipse evasion scheme, which is important for the design and implementation of\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-genesis"),". We got a positive feedback from the researchers."),(0,r.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,r.kt)("p",null,"In this period we made little progress towards releasing ",(0,r.kt)("inlineCode",{parentName:"p"},"IO-Sim")," on Hackage.\nA single ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/32"},"PR")," which added\na few missing instances of the ",(0,r.kt)("inlineCode",{parentName:"p"},"STM")," monad."),(0,r.kt)("h3",{id:"open-source"},"Open Source"),(0,r.kt)("p",null,"We made sure the CI runs for PRs which comes from forks (which is important to\naccept contributions from 3rd parties)."),(0,r.kt)("h3",{id:"mithril-cardano-integration"},"Mithril Cardano Integration"),(0,r.kt)("p",null,"We held initial discussions with Arnaud Bailly about possible path to integrate\nmithril to ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," and take advantage of the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"\ndiffusion layer."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/372219b0.103948fa.js b/assets/js/372219b0.103948fa.js new file mode 100644 index 00000000000..1df2edfa4d8 --- /dev/null +++ b/assets/js/372219b0.103948fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24251],{13598:a=>{a.exports=JSON.parse('[{"label":"ledger","permalink":"/cardano-updates/tags/ledger","count":30},{"label":"mithril","permalink":"/cardano-updates/tags/mithril","count":34},{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing","count":25},{"label":"hydra","permalink":"/cardano-updates/tags/hydra","count":55},{"label":"consensus","permalink":"/cardano-updates/tags/consensus","count":32},{"label":"sre","permalink":"/cardano-updates/tags/sre","count":15},{"label":"cip1694","permalink":"/cardano-updates/tags/cip-1694","count":1},{"label":"security","permalink":"/cardano-updates/tags/security","count":1},{"label":"network","permalink":"/cardano-updates/tags/network","count":24},{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api","count":27},{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync","count":14},{"label":"goedel","permalink":"/cardano-updates/tags/goedel","count":18},{"label":"crypto","permalink":"/cardano-updates/tags/crypto","count":18},{"label":"devx","permalink":"/cardano-updates/tags/devx","count":2},{"label":"system-test","permalink":"/cardano-updates/tags/system-test","count":5},{"label":"release","permalink":"/cardano-updates/tags/release","count":5},{"label":"open-source","permalink":"/cardano-updates/tags/open-source","count":1},{"label":"embedding-quality","permalink":"/cardano-updates/tags/embedding-quality","count":1}]')}}]); \ No newline at end of file diff --git a/assets/js/376dd8e8.2261b7dd.js b/assets/js/376dd8e8.2261b7dd.js new file mode 100644 index 00000000000..c86f69ea948 --- /dev/null +++ b/assets/js/376dd8e8.2261b7dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55413],{36140:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/tags/consensus","allTagsPath":"/cardano-updates/tags","count":32}')}}]); \ No newline at end of file diff --git a/assets/js/37b247a8.bcaeb502.js b/assets/js/37b247a8.bcaeb502.js new file mode 100644 index 00000000000..76972730e7b --- /dev/null +++ b/assets/js/37b247a8.bcaeb502.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21080],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),c=n,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-12-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-12-06-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-06-mithril.md",source:"@site/blog/2023-12-06-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-12-06T00:00:00.000Z",formattedDate:"December 6, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.01,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-12-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-12-06-ledger"},nextItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-12-04-performance-and-tracing"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking."),(0,n.kt)("p",null,"Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," WASM library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1336"},"#1336")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P threat modeling and risk analysis")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1350"},"#1350")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Create a test network on ",(0,n.kt)("inlineCode",{parentName:"strong"},"Sanchonet"))," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1173"},"#1173")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Upgrade breaking changes crates")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1357"},"#1357")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Enhance Mithril/Cardano node communication")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1315"},"#1315")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," examples full crates")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1385"},"#1385")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Manual publication to crates.io with GitHub action")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1380"},"#1380")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Remove ",(0,n.kt)("inlineCode",{parentName:"strong"},"sqlite")," dependency from ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1390"},"#1390"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/37b2e4a4.2c8ca832.js b/assets/js/37b2e4a4.2c8ca832.js new file mode 100644 index 00000000000..f14c0b1356a --- /dev/null +++ b/assets/js/37b2e4a4.2c8ca832.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83051],{94819:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/consensus/page/7","page":7,"postsPerPage":5,"totalPages":7,"totalCount":32,"previousPage":"/cardano-updates/tags/consensus/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/38284ae5.6211d81b.js b/assets/js/38284ae5.6211d81b.js new file mode 100644 index 00000000000..3452655da99 --- /dev/null +++ b/assets/js/38284ae5.6211d81b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49105],{3905:(e,n,t)=>{t.d(n,{Zo:()=>m,kt:()=>h});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=a.createContext({}),s=function(e){var n=a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=s(e.components);return a.createElement(c.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(t),u=r,h=d["".concat(c,".").concat(u)]||d[u]||p[u]||i;return t?a.createElement(h,o(o({ref:n},m),{},{components:t})):a.createElement(h,o({ref:n},m))}));function h(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=u;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=t(87462),r=(t(67294),t(3905));const i={title:"Performance & Tracing Update",slug:"2023-11-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-17-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-17-performance-and-tracing.md",source:"@site/blog/2023-11-17-performance-and-tracing.md",title:"Performance & Tracing Update",description:"High level summary",date:"2023-11-17T00:00:00.000Z",formattedDate:"November 17, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.585,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & Tracing Update",slug:"2023-11-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-17-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-11-16-network"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Development",id:"development",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"Workbench",id:"workbench",level:3}],m={toc:s},d="wrapper";function p(e){let{components:n,...t}=e;return(0,r.kt)(d,(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: Release benchmarking for node ",(0,r.kt)("inlineCode",{parentName:"li"},"8.6.0")," as well as benchmarks scrutinizing GHC versions and the new tracing system."),(0,r.kt)("li",{parentName:"ul"},"Development: PlutusV3 capability of our workload generator has been implemented."),(0,r.kt)("li",{parentName:"ul"},"Tracing: First round of optimization of the ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-tracer")," service has completed, awaiting validation."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: A significant PR has landed addressing automation features and debugging capabilites."),(0,r.kt)("li",{parentName:"ul"},"Workbench: Configurable remote environments and improvements to run documentation have been merged to ",(0,r.kt)("inlineCode",{parentName:"li"},"master"),".")),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"We've performed and analyzed a full set of benchmarks for node ",(0,r.kt)("inlineCode",{parentName:"p"},"8.6.0"),", both in comparison to recent release tags\nand mainnet version ",(0,r.kt)("inlineCode",{parentName:"p"},"8.1.2"),". A lot of development work has entered the system since then, so it is crucial\nwe can rule out any potential performance risks for the next mainnet release. "),(0,r.kt)("p",null,"Additionally, we've been benchmarking GHC9.6.3 builds of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform. "),(0,r.kt)("p",null,"A last set of benchmarks was dedicated to the new tracing system with node ",(0,r.kt)("inlineCode",{parentName:"p"},"8.6.0"),". We were able to show that\nthere is no performance risk to enabling the new system, even when forwarding all trace messages to a ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-tracer"),"\nservice on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression."),(0,r.kt)("h3",{id:"development"},"Development"),(0,r.kt)("p",null,"For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes\nto the execution budgets by developing specialized workloads."),(0,r.kt)("h3",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," service has received its first batch of optimizations. Profiling output is promising; to measure\nperformance for a long service run time, we're currently equipping the service binary with the same capability to\nemit regular resource traces as ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". Analysis of those will be the basis for validating this and possible future optimization efforts."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"Many improvements for the nomad backend have been implemented and merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),". This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service,\nmore detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables\nour team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred."),(0,r.kt)("h3",{id:"workbench"},"Workbench"),(0,r.kt)("p",null,"Our performance workbench has seen upgrades in documenting and reporting ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler.\nWhen alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential. "),(0,r.kt)("p",null,"Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/387f3426.93ddf683.js b/assets/js/387f3426.93ddf683.js new file mode 100644 index 00000000000..56a682716a8 --- /dev/null +++ b/assets/js/387f3426.93ddf683.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[34719],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),h=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=h(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=h(a),m=r,c=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(c,i(i({ref:t},u),{},{components:a})):n.createElement(c,i({ref:t},u))}));function c(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var h=2;h{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>h});var n=a(87462),r=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-11-10-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-11-10-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-10-hydra.md",source:"@site/blog/2023-11-10-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-11-10T00:00:00.000Z",formattedDate:"November 10, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-11-10-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-11-14-node-cli-api"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-10-sre"}},p={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],u={toc:h},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,'The last two weeks, the Hydra team achieved several milestones. They published\nthe monthly report for October, providing updates on project developments. The\nteam delivered a presentation and workshop at the Cardano Summit, contributing\nto community engagement. They implemented a \\"dirt road\\" solution for the\n\\"Ignored init tx\\" notification and moved the ',(0,r.kt)("inlineCode",{parentName:"p"},"hydra-poll")," example project to a\ndedicated repository. Additionally, the team built a ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-chain-observer")," tool\nfor Hydra Heads, updated the toolchain to GHC 9.6.3, and made various\nimprovements to tooling and code formatting. They addressed specific issues,\nsuch as fixing the ",(0,r.kt)("inlineCode",{parentName:"p"},"gen-hydra-keys")," command and resolving concerns with the\nrewritten ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-tui"),". The team also enhanced the ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-cluster")," smoke test\nsuite by fetching network configurations dynamically. Lastly, they actively\nreviewed pull requests and architectural decision records from the community,\nincluding contributions from SundaeSwap. An experiment, the Hydra tally, was\ncompleted and successfully deployed to the mainnet by the Cardano Foundation."),(0,r.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Published the monthly ",(0,r.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-10"},"report for\noctober")),(0,r.kt)("li",{parentName:"ul"},"Given a presentation / workshop at the Cardano summit\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1109"},"#1109")),(0,r.kt)("li",{parentName:"ul"},'Dirt road implementation for \\"Ignored init tx\\" notification\n',(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/529"},"#529")," (without\nstateless observation)"),(0,r.kt)("li",{parentName:"ul"},"Completed and moved ",(0,r.kt)("inlineCode",{parentName:"li"},"hydra-poll")," example project into a\ndedicated\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-scaling/hydra-poll"},"repository")),(0,r.kt)("li",{parentName:"ul"},"Built a first version of a chain observation tool for Hydra Heads\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1096"},"#1096")),(0,r.kt)("li",{parentName:"ul"},"Switched toolchain to GHC 9.6.3 and various improvements on tooling\nand code formatting\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1135"},"#1135"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1152"},"#1152"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1151"},"#1151"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1154"},"#1154")),(0,r.kt)("li",{parentName:"ul"},"Fix ",(0,r.kt)("inlineCode",{parentName:"li"},"gen-hydra-keys")," command to not overwrite existing\nkeys ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1136"},"#1136")),(0,r.kt)("li",{parentName:"ul"},"Fixed the rewritten ",(0,r.kt)("inlineCode",{parentName:"li"},"hydra-tui"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1113"},"#1113"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1137"},"#1137")),(0,r.kt)("li",{parentName:"ul"},"Fetch network configurations instead of packaging them into\nhydra-cluster (smoke) test suite\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1156"},"#1156")),(0,r.kt)("li",{parentName:"ul"},"Reviewing PRs and ADRs from the community (SundaeSwap)\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1118"},"#1118"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1157"},"#1157")),(0,r.kt)("li",{parentName:"ul"},"Hydra tally experiment (Cardano Foundation) deployed to mainnet")),(0,r.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Tackle reported bugs"),(0,r.kt)("li",{parentName:"ul"},"Shepherd contributed off-line mode PR to the main codeline"),(0,r.kt)("li",{parentName:"ul"},"Improve chain observation tool to include more data and refactor\nexisting code towards more stateless observation"),(0,r.kt)("li",{parentName:"ul"},"Start work on incremental decommits")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/388f6888.258f2772.js b/assets/js/388f6888.258f2772.js new file mode 100644 index 00000000000..9c29bc20cf3 --- /dev/null +++ b/assets/js/388f6888.258f2772.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96394],{24279:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/54","page":54,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/53","nextPage":"/cardano-updates/page/55","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/391126a1.ec0b455d.js b/assets/js/391126a1.ec0b455d.js new file mode 100644 index 00000000000..298f6f3a40f --- /dev/null +++ b/assets/js/391126a1.ec0b455d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80542],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(r),m=n,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||l;return r?a.createElement(h,o(o({ref:t},d),{},{components:r})):a.createElement(h,o({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:n,o[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-03-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-03-17-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-ledger.md",source:"@site/blog/2023-03-17-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-03-17T00:00:00.000Z",formattedDate:"March 17, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.415,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-03-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-17-hydra"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-16-goedel"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Expanded ledger API",id:"expanded-ledger-api",level:3},{value:"Conway ledger rules",id:"conway-ledger-rules",level:3},{value:"Incremental SPO/DRep stake distribution computation",id:"incremental-spodrep-stake-distribution-computation",level:3},{value:"Technical debt",id:"technical-debt",level:3}],d={toc:u},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We made further progress on the conway ledger era.\nIn particular, we expanded the ledger API significantly, including lots of governance features.\nWe also made progress on the specification and corresponding work in the Haskell implementation."),(0,n.kt)("p",null,"We also continued to integrate the latest ledger packages into cardano node and addressed\ntechnical debt."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"expanded-ledger-api"},"Expanded ledger API"),(0,n.kt)("p",null,"The ledger API was significantly expanded to include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"a lot of protocol parameter support"),(0,n.kt)("li",{parentName:"ul"},"versioning support (type level ledger eras and protocol versions)"),(0,n.kt)("li",{parentName:"ul"},"auxiliary data support"),(0,n.kt)("li",{parentName:"ul"},"many new lenses"),(0,n.kt)("li",{parentName:"ul"},"support for witnesses"),(0,n.kt)("li",{parentName:"ul"},"support for conway governance")),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3328"},"pull-3328"),"."),(0,n.kt)("h3",{id:"conway-ledger-rules"},"Conway ledger rules"),(0,n.kt)("p",null,"We have made progress on the formal ledger specification for the Conway era.\nMoreover, the corresponding Haskell updates were also completed:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3339"},"pull-3339")),(0,n.kt)("li",{parentName:"ul"},"See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3326"},"pull-3326")),(0,n.kt)("li",{parentName:"ul"},"See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3330"},"pull-3330"))),(0,n.kt)("h3",{id:"incremental-spodrep-stake-distribution-computation"},"Incremental SPO/DRep stake distribution computation"),(0,n.kt)("p",null,"We have a working (and correct) proof of concept for how to use the incremental lambda calculus\nto maintain several of the stake distributions incrementally.\nFor the per-SPO distribution, this is a performance improvement.\nFor the (conway) per-DRep distribution, this is will allow those who have delegated their votes\nto a DRep to have time to react to any votes that they disapprove of.\n(Sorry, no code to share just yet, more to come.)"),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improved CBOR testing facilities ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3332"},"pull-3332")),(0,n.kt)("li",{parentName:"ul"},"GitHub actions improvement ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3320"},"pull-3320")),(0,n.kt)("li",{parentName:"ul"},"Move ToJSON orphans from cardano-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3338"},"pull-3323")),(0,n.kt)("li",{parentName:"ul"},"Minor OCert improvements ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3327"},"pull-3327")),(0,n.kt)("li",{parentName:"ul"},"Remove duplication ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3341"},"pull-3341")),(0,n.kt)("li",{parentName:"ul"},"Enforce unique elements in CBOR sets ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3331"},"pull-3331")," ")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/393be207.17ef41bf.js b/assets/js/393be207.17ef41bf.js new file mode 100644 index 00000000000..5d1a82357ac --- /dev/null +++ b/assets/js/393be207.17ef41bf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87414],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):p(p({},t),e)),r},u=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=i(r),d=a,m=s["".concat(l,".").concat(d)]||s[d]||f[d]||o;return r?n.createElement(m,p(p({ref:t},u),{},{components:r})):n.createElement(m,p({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,p=new Array(o);p[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:a,p[1]=c;for(var i=2;i{r.r(t),r.d(t,{contentTitle:()=>p,default:()=>s,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var n=r(87462),a=(r(67294),r(3905));const o={title:"Markdown page example"},p="Markdown page example",c={type:"mdx",permalink:"/cardano-updates/markdown-page",source:"@site/src/pages/markdown-page.md",title:"Markdown page example",description:"You don't need React to write simple standalone pages.",frontMatter:{title:"Markdown page example"}},l=[],i={toc:l},u="wrapper";function s(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},i,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"markdown-page-example"},"Markdown page example"),(0,a.kt)("p",null,"You don't need React to write simple standalone pages."))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/393cd824.593da712.js b/assets/js/393cd824.593da712.js new file mode 100644 index 00000000000..b6620d66d77 --- /dev/null +++ b/assets/js/393cd824.593da712.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65773],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-04-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-04-05-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-node-cli-api.md",source:"@site/blog/2023-04-05-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-04-05T00:00:00.000Z",formattedDate:"April 5, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.315,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-04-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-05-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-05-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-04-05---2023-04-19"},"2023-04-05 - 2023-04-19"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Introduce new governance commands create, answer and verify. This allows us to have onchain polls."),(0,r.kt)("li",{parentName:"ul"},"Begin making changes in cardano-api to accomodate for CIP-1694"),(0,r.kt)("li",{parentName:"ul"},"Rename ",(0,r.kt)("inlineCode",{parentName:"li"},"TestEnableDevelopmentHardForkEras")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"ExperimentalHardForksEnabled")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"TestEnableDevelopmentNetworkProtocols")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"ExperimentalProtocolsEnabled")),(0,r.kt)("li",{parentName:"ul"},"Various bug fixes and improvements ")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5112"},"Add new interim governance commands: {create, answer, verify}-poll")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5061"},"Remove --stake-address option from stake-address build")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5059"},"Frozen callstack for checkTextEnvelopeFormat function")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5053"},"#5052 Remove reading protocol parameters from Shelley genesis file")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5046"},"Move parsers to reusable location")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4910"},"New --socket-path cli option")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5108"},"CIP-1694 make space for DRep certificates")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5105"},"File type to track the content and direction of files")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5087"},"Fix import warning")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5086"},"Expose UsingRawBytes et al types")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5085"},"Expose SerialiseAsRawBytesError in Cardano.Api")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5072"},"Introduce new AnyShelleyBasedEra type and simplify CDDL tests.")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5071"},"New genCardanoKeyWitness function")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5069"},"Replace roundtripCBOR with trippingCbor")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5064"},"Remove non-round-trippable value TxInsReferenceNone for babbage onwards in generator")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5063"},"Improve roundtrip functions to report annotations on callsite")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5057"},"Define Functor instance for FileError")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5049"},"Split serialisation from IO")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5115"},"Master build failure fixes")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5106"},"Allow renamed fields to exist if values the same")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5091"},"workbench: updates")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5084"},"Delete duplicate packages sort packages and imports")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras and TestEnableDevelopmentNetworkProtocols")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5110"},"Additional check for not-leader slots in LeadershipSchedule tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5099"},"Fix epochLength and securityParam to conform to the formula 10 * k / f")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5083"},"Ergonomic directory creation code in tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5036"},"Default Cardano.Testnet to NodeLoggingFormatAsJson")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5013"},"Integrate latest ledger dependencies"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/397686d4.61d37a76.js b/assets/js/397686d4.61d37a76.js new file mode 100644 index 00000000000..c0a85b4c465 --- /dev/null +++ b/assets/js/397686d4.61d37a76.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89756],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),m=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=m(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=m(n),p=r,g=d["".concat(c,".").concat(p)]||d[p]||u[p]||i;return n?a.createElement(g,o(o({ref:t},s),{},{components:n})):a.createElement(g,o({ref:t},s))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var m=2;m{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>m});var a=n(87462),r=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-08-11-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-08-11-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-11-performance-and-tracing.md",source:"@site/blog/2023-08-11-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-08-11T00:00:00.000Z",formattedDate:"August 11, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.335,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-08-11-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-11-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-10-mithril"}},c={authorsImageUrls:[void 0]},m=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],s={toc:m},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: We've concluded benchmarking node version ",(0,r.kt)("inlineCode",{parentName:"li"},"8.2.0"),"."),(0,r.kt)("li",{parentName:"ul"},"Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.")),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"As part of our release benchmarking cycle, we've completed and analysed the runs for the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.0")," version of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version."),(0,r.kt)("h3",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"A significant amount of optimizations for the new tracing system has finally been merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),". At the moment,\nwe're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding\ninsight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward. "),(0,r.kt)("p",null,"Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent\nand reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were\nable to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks. "),(0,r.kt)("p",null,"A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3a3a2602.b09aebb4.js b/assets/js/3a3a2602.b09aebb4.js new file mode 100644 index 00000000000..26717723bc7 --- /dev/null +++ b/assets/js/3a3a2602.b09aebb4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20974],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=u(a),d=n,m=c["".concat(p,".").concat(d)]||c[d]||h[d]||i;return a?r.createElement(m,o(o({ref:t},s),{},{components:a})):r.createElement(m,o({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-07-14-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-07-14-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-14-hydra.md",source:"@site/blog/2023-07-14-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-14T00:00:00.000Z",formattedDate:"July 14, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.79,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-14-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-18-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-13-mithril"}},p={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:u},c="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week the team focused on exploring the event sourced persistence in order\nto improve ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," performance. Because of this work the team noticed we\nneed to refactor the emit snapshot emission logic and update the spec in the\nlight of new changes. They also took the time to revisit their goals and product\nplans for the next quarter as well as doing some security fixes related to\nmultisignatures."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finished spike about performance improvements of event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/963"},"#963"),"."),(0,n.kt)("li",{parentName:"ul"},"Refactor snapshot emission in protocol logic."),(0,n.kt)("li",{parentName:"ul"},"Revisited our roadmap and goals."),(0,n.kt)("li",{parentName:"ul"},"Prepared and conducated a learning session on lean-waste."),(0,n.kt)("li",{parentName:"ul"},"Improve security of multi-signature checks, see ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-c8qp-cv4h-vcc4"},"this Github security advisory"),"."),(0,n.kt)("li",{parentName:"ul"},"Implemented a cache friendly way to version our binaries ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/962"},"#962"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement Event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/913"},"#913"),"."),(0,n.kt)("li",{parentName:"ul"},"Remove deprecated internal commit ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/954"},"#954")," and close ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/728"},"#728"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3a40f46b.b5ec8c54.js b/assets/js/3a40f46b.b5ec8c54.js new file mode 100644 index 00000000000..ce22dfe46ca --- /dev/null +++ b/assets/js/3a40f46b.b5ec8c54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36337],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=u(a),c=l,h=d["".concat(p,".").concat(c)]||d[c]||m[c]||n;return a?r.createElement(h,o(o({ref:t},s),{},{components:a})):r.createElement(h,o({ref:t},s))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,o=new Array(n);o[0]=c;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:l,o[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>i,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-11-22-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-11-22-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-22-ledger.md",source:"@site/blog/2023-11-22-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-11-22T00:00:00.000Z",formattedDate:"November 22, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.705,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-11-22-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-24-sre"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-22-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway",id:"conway",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],s={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of\nCDDL specification. Important bugfixes include:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Fix deserialization of ",(0,l.kt)("inlineCode",{parentName:"li"},"ValueNotConservedUTxO")," predicate failure that could not\npreviously report zero ADA."),(0,l.kt)("li",{parentName:"ul"},"Fix deserialization of ",(0,l.kt)("inlineCode",{parentName:"li"},"CostModels")," in the ",(0,l.kt)("inlineCode",{parentName:"li"},"PParamsUpdate"),". Invalid ",(0,l.kt)("inlineCode",{parentName:"li"},"CostModels")," are no\nlonger allowed, only ",(0,l.kt)("inlineCode",{parentName:"li"},"CostModels")," for unrecognized Plutus versions are allowed starting\nwith Conway"),(0,l.kt)("li",{parentName:"ul"},"Fix returning of Deposits for ProposalProcedures")),(0,l.kt)("p",null,"Testing tooling has been improved and new tests have been implemented for Conway era."),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway"},"Conway"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3858"},"pull-3858")," - Restructure computing Refunds and Deposits in a TxBody across all eras"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3860"},"pull-3860")," - Removed ",(0,l.kt)("inlineCode",{parentName:"li"},"mock/crypto.cddl"),", added optional tag to sets"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3864"},"pull-3864")," - Fix Proposal deposits and add deposit tests to imp tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3859"},"pull-3859")," - Rename ProposalsSnapshot to Proposals"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3867"},"pull-3867")," - ",(0,l.kt)("inlineCode",{parentName:"li"},"MaryValue")," fixes"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3869"},"pull-3869")," - Indicate that tag 258 is optional for OSet. Fix rational CDDL"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3863"},"pull-3863")," - Improve deposits refunds re-usability"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3861"},"pull-3861")," - Fail PParamsUpdate deserialization for invalid costmodels in Conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3875"},"pull-3875")," - Fix cddl spec for CostModels in Conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3876"},"pull-3876")," - Change 4 PParam fields from EpochNo to EpochInterval"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3884"},"pull-3884")," - Relax requirement on the Set tag 258 to be enforced in the next era")),(0,l.kt)("h3",{id:"testing"},"Testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3868"},"pull-3868")," - Improvements to support property tests on Traces with simple Tx with DRep related Certs"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3792"},"pull-3792")," - RATIFY and GOV constraint tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3885"},"pull-3885")," - Added a test for genTxAndNewEpoch"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3886"},"pull-3886")," - QuickCheck Imp integration")),(0,l.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3854"},"pull-3854")," - Integration work for node 8.7.0"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3872"},"pull-3872")," - Fixup ReadTheDocs build"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3871"},"pull-3871")," - Bump plutus dep to 1.16"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3874"},"pull-3874")," - Post release changes"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3880"},"pull-3880")," - Remove generic-monoid dependency"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3887"},"pull-3887")," - Add changelog for features that landed in cardano-node-8.7")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3a493dd8.735658ae.js b/assets/js/3a493dd8.735658ae.js new file mode 100644 index 00000000000..c2754df9a86 --- /dev/null +++ b/assets/js/3a493dd8.735658ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39071],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(a),d=n,c=u["".concat(p,".").concat(d)]||u[d]||m[d]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-05-26-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-05-26-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-hydra.md",source:"@site/blog/2023-05-26-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.11,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-05-26-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-26-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-26-ledger"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:s},u="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team accomplished several important tasks. They held their\nmonthly review meeting and drafted the report for May. They made progress on\nimplementing the first end-to-end journey for external commits using "Option A"\nfor normal UTxOs, while still considering "Option B". The team also integrated a\nSpanish translation contributed by the community, created micro-benchmarks for\ntransaction validation and deserialization, and made improvements to\nhydra-node\'s version reporting. Last but not least, they implemented the ability\nto commit multiple UTxOs to a head at once.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Held the monthly review meeting (",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/1_N6b4RDe579TgLawiJzbE0NLofD3ljE6/view"},"recording")," + ",(0,n.kt)("a",{parentName:"li",href:"https://docs.google.com/presentation/d/1anUC3Z1idloyR6uwiSHLZtV6-LQvUcByHPMUgCBOVIA"},"slides"),") & drafted the report for May."),(0,n.kt)("li",{parentName:"ul"},"Have a first end-to-end journey for external commits implementing ","\u201c","Option A","\u201d","\nfor normal UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/887"},"#887")," (still considering ","\u201c","Option B","\u201d",")."),(0,n.kt)("li",{parentName:"ul"},"Integrated the spanish translation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/866"},"#866"),"."),(0,n.kt)("li",{parentName:"ul"},"Created micro-benchmarks for transaction validation and deserialization ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/884"},"#884"),"."),(0,n.kt)("li",{parentName:"ul"},"Improve hydra-node ","\u2013","version reporting on non-released builds ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/849"},"#849")),(0,n.kt)("li",{parentName:"ul"},"Some minor CI improvements following up last weeks changes."),(0,n.kt)("li",{parentName:"ul"},"Allow commit transactions with multiple UTxO ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/774"},"#774"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Investigate and re-open our team-internal head on mainnet."),(0,n.kt)("li",{parentName:"ul"},"Improve and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete external commits with script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),"."),(0,n.kt)("li",{parentName:"ul"},"Authenticate network messages ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"#727"),"."),(0,n.kt)("li",{parentName:"ul"},"Add hydra as tool to developr platform ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/872"},"#872"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3ab5f4e0.04ccd5a8.js b/assets/js/3ab5f4e0.04ccd5a8.js new file mode 100644 index 00000000000..f6a634287b7 --- /dev/null +++ b/assets/js/3ab5f4e0.04ccd5a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4376],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,h=p["".concat(s,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,l(l({ref:t},u),{},{components:n})):r.createElement(h,l({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-03-23-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-23-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-23-db-sync.md",source:"@site/blog/2023-03-23-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-03-23T00:00:00.000Z",formattedDate:"March 23, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.755,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-03-23-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-24-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-23-mithril"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DBSync team worked in performance enhancements issues, on providing new db-sync options and on\ntechnical debt and bug fixing. The DBSync team also on boarded a new member."),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on an issue which causes ",(0,a.kt)("inlineCode",{parentName:"li"},"ada_pots")," tables to include the values related not only to an\nepoch, but also the first epoch of the last epoch.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1367"},"#1367")),(0,a.kt)("li",{parentName:"ul"},"Fixed an issue where the ",(0,a.kt)("inlineCode",{parentName:"li"},"epoch")," table didn't rollback and caused wrong values\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1370"},"#1370")),(0,a.kt)("li",{parentName:"ul"},"Fixed an issue were users with ",(0,a.kt)("inlineCode",{parentName:"li"},"disable-ledger")," option had to provide the state dir option, even\nthough it was never used. Also refactored the no ledger part of the codebase.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1378"},"#1378")),(0,a.kt)("li",{parentName:"ul"},"Improved the perforance by using the cache more. Also provided many new options which enables or\ndisables parts of db-sync. In addition a new ",(0,a.kt)("inlineCode",{parentName:"li"},"--turbo")," mode is enables which allows db-sync to sync\nmainnet in hours.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1379"},"#1379"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3ac14561.1cd1f4d0.js b/assets/js/3ac14561.1cd1f4d0.js new file mode 100644 index 00000000000..aead14d0397 --- /dev/null +++ b/assets/js/3ac14561.1cd1f4d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79765],{30455:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/12","page":12,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/11","nextPage":"/cardano-updates/page/13","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/3ac610ff.316c8e11.js b/assets/js/3ac610ff.316c8e11.js new file mode 100644 index 00000000000..681a08c19ac --- /dev/null +++ b/assets/js/3ac610ff.316c8e11.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15091],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=c(r),u=n,f=d["".concat(p,".").concat(u)]||d[u]||m[u]||o;return r?a.createElement(f,l(l({ref:t},s),{},{components:r})):a.createElement(f,l({ref:t},s))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-03-16-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-16-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-16-goedel.md",source:"@site/blog/2023-03-16-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-03-16T00:00:00.000Z",formattedDate:"March 16, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.55,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-03-16-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-17-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-10-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},d="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team has been working on drafts of two papers\nimproving the deltaQ tutorial, consulting on performance design, and\nthe final version of the Djed paper."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Preparing draft of DeltaQSD algebra paper for ICE 2023")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Successful outcome of Marlowe consultancy leading to substantial\nimprovement in performance")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Preparing sections on the communication language and bisimulation\nproofs for draft paper about verifying design refinements for\ndistributed system design")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Camera ready version of Djed paper under preparation"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3bb06773.29b34cb1.js b/assets/js/3bb06773.29b34cb1.js new file mode 100644 index 00000000000..5d93617b151 --- /dev/null +++ b/assets/js/3bb06773.29b34cb1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65029],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=u(a),s=r,h=m["".concat(p,".").concat(s)]||m[s]||d[s]||i;return a?n.createElement(h,o(o({ref:t},c),{},{components:a})):n.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-08-29-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-08-29-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-29-node-cli-api.md",source:"@site/blog/2023-08-29-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-08-29T00:00:00.000Z",formattedDate:"August 29, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.55,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-08-29-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-01-sre"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-28-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-08-16---2023-08-29"},"2023-08-16 - 2023-08-29"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CLI is making progress towards phases 3 and 4 of SanchoNet."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Ability to create info, no-confidence and new committee governance actions.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Voting as DREP is possible now on the CLI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"API is now using Ledger's PParams and VotingProcedures")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Expose following queries from consensus:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"- GetGovState\n- GetDRepState\n- GetDRepStakeDistr\n- GetCommitteeState\n- GetConstitution\n")))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/179"},"Add goverance info action creation to era based cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/176"},"Add create-no-confidence command to era based cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/175"},"Add create-new-committee command to era based cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/204"},"Enable ",(0,r.kt)("inlineCode",{parentName:"a"},"--drep-script-hash")," option")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/211"},"Remove ",(0,r.kt)("inlineCode",{parentName:"a"},"experimental")," subcommand")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/210"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.17.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/194"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"governance drep id")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/189"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"governance query")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/187"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--verification-key")," option to ",(0,r.kt)("inlineCode",{parentName:"a"},"committee key-hash")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/203"},"Read and write ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingProcedures")," files instead of ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingEntry")," files")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/201"},"Release 8.6.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/195"},"Merge ",(0,r.kt)("inlineCode",{parentName:"a"},"LegacyClientCmdError")," into ",(0,r.kt)("inlineCode",{parentName:"a"},"CmdError")," ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/193"},"Add test for conway governance action create-constitution")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/192"},"Move legacy errors out of legacy command structure modules")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/191"},"Governance ",(0,r.kt)("inlineCode",{parentName:"a"},"drep")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"vote")," command groups")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/188"},"Move command errors from era-based to ",(0,r.kt)("inlineCode",{parentName:"a"},"CmdError")," module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/186"},"Move some error types")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/185"},"Delete unused module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/183"},"Refactor: Use ",(0,r.kt)("inlineCode",{parentName:"a"},"maybeFeatureInEra")," instead of ",(0,r.kt)("inlineCode",{parentName:"a"},"featureInEra")," where possible")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/182"},"Remove all uses of ",(0,r.kt)("inlineCode",{parentName:"a"},"toS"),", ",(0,r.kt)("inlineCode",{parentName:"a"},"purer"),", ",(0,r.kt)("inlineCode",{parentName:"a"},"cborError")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"intercalate")," from ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Prelude"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/180"},"Remove example era-based parsers we don't need anymore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/174"},"Bump CHaP index in preparation for 8.3.0 pre"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/216"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.17.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/214"},"Replace ProtocolParameters usage with ledger's PParams")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/210"},"Use injective type families to improve type inference")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/209"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"TxVotes")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingEntry")," and use ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingProcedures")," instead")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/208"},"New functions ",(0,r.kt)("inlineCode",{parentName:"a"},"emptyVotingProcedures"),", ",(0,r.kt)("inlineCode",{parentName:"a"},"singletonVotingProcedures")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"mergeVotingProcedures"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/207"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"makeStakeAddressAndDRepDelegationCertificate")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/206"},"Expose ledger lenses for governance types")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/205"},"New version cardano-api-8.16.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/204"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingProcedures")," type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/202"},"Release 8.16.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/200"},"Update createAnchor to use hashAnchorData")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/197"},"Release 8.15.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/196"},"Add consensus governance queries"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3bb415e3.ede0fcad.js b/assets/js/3bb415e3.ede0fcad.js new file mode 100644 index 00000000000..867a115ec1f --- /dev/null +++ b/assets/js/3bb415e3.ede0fcad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94900],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),u=n,h=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-06-23-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-06-23-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-goedel.md",source:"@site/blog/2023-06-23-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.335,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-06-23-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-28-performance-and-tracing"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-23-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the teams presented two papers at ICE 2023."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Presented two papers at ICE 2023: ",(0,n.kt)("a",{parentName:"p",href:"https://www.discotec.org/2023/ice"},"https://www.discotec.org/2023/ice"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Analysing and implementing chain synchronization mini protocol")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3bc8fe23.54d3883d.js b/assets/js/3bc8fe23.54d3883d.js new file mode 100644 index 00000000000..25bffb32e40 --- /dev/null +++ b/assets/js/3bc8fe23.54d3883d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[12029],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(r),h=n,d=c["".concat(s,".").concat(h)]||c[h]||m[h]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-10-11-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-11-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-11-mithril.md",source:"@site/blog/2023-10-11-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-11T00:00:00.000Z",formattedDate:"October 11, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.77,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-11-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-13-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-10-node-cli-api"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on ",(0,n.kt)("a",{parentName:"p",href:"https://crates.io/"},"crates.io"),", the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures."),(0,n.kt)("p",null,"Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate a library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1141"},"#1141")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano transactions history PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"ProtocolKeyRegistration")," creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1187"},"#1187")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Update ",(0,n.kt)("inlineCode",{parentName:"strong"},"Rust")," compiler in ",(0,n.kt)("inlineCode",{parentName:"strong"},"nix")," CI")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1282"},"#1282")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Mithril networks infrastructure maintenance")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1218"},"#1218")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Activate Cloudflare protection of infrastructure")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1230"},"#1230"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3be95f92.45db99c1.js b/assets/js/3be95f92.45db99c1.js new file mode 100644 index 00000000000..691d546dbb3 --- /dev/null +++ b/assets/js/3be95f92.45db99c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[9140],{72016:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/performance-tracing/page/5","page":5,"postsPerPage":5,"totalPages":5,"totalCount":25,"previousPage":"/cardano-updates/tags/performance-tracing/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/3c2e75b4.1fb064d3.js b/assets/js/3c2e75b4.1fb064d3.js new file mode 100644 index 00000000000..caa1e61d16c --- /dev/null +++ b/assets/js/3c2e75b4.1fb064d3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30843],{7697:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/ledger/page/6","page":6,"postsPerPage":5,"totalPages":6,"totalCount":30,"previousPage":"/cardano-updates/tags/ledger/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/3c3d2bff.6a9b8a9e.js b/assets/js/3c3d2bff.6a9b8a9e.js new file mode 100644 index 00000000000..6bd1732db20 --- /dev/null +++ b/assets/js/3c3d2bff.6a9b8a9e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49706],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>y});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),u=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=u(n),h=a,y=d["".concat(l,".").concat(h)]||d[h]||p[h]||r;return n?i.createElement(y,o(o({ref:t},c),{},{components:n})):i.createElement(y,o({ref:t},c))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var i=n(87462),a=(n(67294),n(3905));const r={title:"SECP bindings Security Issue Report",slug:"2023-08-17-secp-issue",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2023-08-17-secp-issue",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-secp-security-issue-report.md",source:"@site/blog/2023-08-17-secp-security-issue-report.md",title:"SECP bindings Security Issue Report",description:"Security Issue Report: SECP256k1 bug",date:"2023-08-17T00:00:00.000Z",formattedDate:"August 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:3.3,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"SECP bindings Security Issue Report",slug:"2023-08-17-secp-issue",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-08-17-db-sync"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-15-node-cli-api"}},l={authorsImageUrls:[void 0]},u=[{value:"Security Issue Report: SECP256k1 bug",id:"security-issue-report-secp256k1-bug",level:2},{value:"Summary of Issue",id:"summary-of-issue",level:3},{value:"Criticality Level",id:"criticality-level",level:4},{value:"What Action was Taken",id:"what-action-was-taken",level:4},{value:"Potential Effect",id:"potential-effect",level:4},{value:"Actual Effect",id:"actual-effect",level:4},{value:"Ongoing Mitigations Needed, if any",id:"ongoing-mitigations-needed-if-any",level:4},{value:"Responsibility for Mitigations",id:"responsibility-for-mitigations",level:4},{value:"Detailed description of Incident",id:"detailed-description-of-incident",level:3},{value:"Recommendations",id:"recommendations",level:3}],c={toc:u},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,i.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"security-issue-report-secp256k1-bug"},"Security Issue Report: SECP256k1 bug"),(0,a.kt)("p",null,"Date Occurred: July 15, 2022\nSeverity: Potentially Very High if exploited on Mainnet\nAuthors: I\xf1igo Querejeta Azurmendi"),(0,a.kt)("p",null,"Date of Report: August 17, 2023"),(0,a.kt)("h3",{id:"summary-of-issue"},"Summary of Issue"),(0,a.kt)("h4",{id:"criticality-level"},"Criticality Level"),(0,a.kt)("p",null,"Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet\nContext"),(0,a.kt)("p",null,"New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains.\nHow was the Issue Detected"),(0,a.kt)("p",null,"The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there."),(0,a.kt)("h4",{id:"what-action-was-taken"},"What Action was Taken"),(0,a.kt)("p",null,"The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod).\nFixes were applied to prevent the use of the primitives.\nA full security audit was carried out on the bindings.\nThe rollout of the primitives was postponed to a new hard fork (Valentine)"),(0,a.kt)("h4",{id:"potential-effect"},"Potential Effect"),(0,a.kt)("p",null,"The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction."),(0,a.kt)("h4",{id:"actual-effect"},"Actual Effect"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Delay to the Vasil hard-fork"),(0,a.kt)("li",{parentName:"ul"},"Temporary removal of SECP256k1 primitives"),(0,a.kt)("li",{parentName:"ul"},"Additional hard-fork to introduce SECP256k1 primitives")),(0,a.kt)("h4",{id:"ongoing-mitigations-needed-if-any"},"Ongoing Mitigations Needed, if any"),(0,a.kt)("p",null,"None"),(0,a.kt)("h4",{id:"responsibility-for-mitigations"},"Responsibility for Mitigations"),(0,a.kt)("p",null,"Core team"),(0,a.kt)("h3",{id:"detailed-description-of-incident"},"Detailed description of Incident"),(0,a.kt)("p",null,"New Plutus ",(0,a.kt)("strong",{parentName:"p"},"secp256k1")," cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet."),(0,a.kt)("p",null,"The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L518"},"This")," is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L61"},"expected")," structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely."),(0,a.kt)("li",{parentName:"ul"},"The same happened with the Schnorr ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1_schnorrsig.h#L170"},"verification function"),". It takes as input a SECP256k1_xonly_pubkey, which is again an ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1_extrakeys.h#L10"},"opaque structure")," that holds a parsed and valid public key.")),(0,a.kt)("p",null,"The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated."),(0,a.kt)("p",null,"The fix was addressed in ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/289"},"this")," PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts."),(0,a.kt)("h3",{id:"recommendations"},"Recommendations"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Check all new Plutus bindings for correct use."),(0,a.kt)("li",{parentName:"ul"},"Audit all new Plutus built-in bindings."),(0,a.kt)("li",{parentName:"ul"},"Continue to develop specific End-to-End tests for all new Plutus features."),(0,a.kt)("li",{parentName:"ul"},'Do not assume that any existing library functions are "safe". Treat all external calls circumspectly.')))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3c8518bb.e3668a02.js b/assets/js/3c8518bb.e3668a02.js new file mode 100644 index 00000000000..268dd4eced6 --- /dev/null +++ b/assets/js/3c8518bb.e3668a02.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86983],{45088:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/25","page":25,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/24","nextPage":"/cardano-updates/page/26","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/3cb4be67.1f1b2aaa.js b/assets/js/3cb4be67.1f1b2aaa.js new file mode 100644 index 00000000000..2fddfc15fb9 --- /dev/null +++ b/assets/js/3cb4be67.1f1b2aaa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96774],{40264:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/28","page":28,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/27","nextPage":"/cardano-updates/page/29","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/3cb9fdac.eb9b02da.js b/assets/js/3cb9fdac.eb9b02da.js new file mode 100644 index 00000000000..766aa15edde --- /dev/null +++ b/assets/js/3cb9fdac.eb9b02da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55638],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},u),{},{components:a})):n.createElement(h,i({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-04-20-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-04-20-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-20-node-cli-api.md",source:"@site/blog/2023-04-20-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-04-20T00:00:00.000Z",formattedDate:"April 20, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.4,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-04-20-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-20-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-19-consensus"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],u={toc:c},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-04-20---2023-05-04"},"2023-04-20 - 2023-05-04"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Various fixes and improvements")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5136"},"Modify golden test functions to automatically create parent directories")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5132"},"SPO on-chain poll commands adjustments")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5119"},"New environment variable CARDANO_NODE_NETWORK_ID")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5172"},(0,r.kt)("inlineCode",{parentName:"a"},"--out-file")," option for governance commands")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5130"},"UTC Time to slots conversion function")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5157"},"Update CHaP to get latest ledger with performance fix")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4854"},"Integration with Peer Sharing")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3ce290cc.49694d77.js b/assets/js/3ce290cc.49694d77.js new file mode 100644 index 00000000000..e9632a5397f --- /dev/null +++ b/assets/js/3ce290cc.49694d77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18654],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=s(r),u=a,g=d["".concat(p,".").concat(u)]||d[u]||m[u]||o;return r?n.createElement(g,i(i({ref:t},c),{},{components:r})):n.createElement(g,i({ref:t},c))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=u;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-02-17-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-17-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-goedel.md",source:"@site/blog/2023-02-17-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.53,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-02-17-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-17-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-17-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},d="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This sprint the team has been working on drafts of two papers and one\ntechnical report, distributivity properties of deltaQ, and consulting\non performance design with the Marlowe team."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Processing reviews on performance engineering paper and planning\npaper revisions accordingly")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Investigating distributivity properties of DeltaQ")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Preparing sections on the thorn calculus and idempotency laws for\ndraft paper about verifying design refinements for distributed\nsystem design")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Consulting on performance design with Marlowe team"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3dbbac8a.56fe0fb3.js b/assets/js/3dbbac8a.56fe0fb3.js new file mode 100644 index 00000000000..ae41672c833 --- /dev/null +++ b/assets/js/3dbbac8a.56fe0fb3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16855],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function l(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),u=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),h=u(i),d=r,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return i?a.createElement(c,l(l({ref:t},s),{},{components:i})):a.createElement(c,l({ref:t},s))}));function c(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,l=new Array(n);l[0]=d;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[h]="string"==typeof e?e:r,l[1]=o;for(var u=2;u{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>n,metadata:()=>o,toc:()=>u});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-07-13-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-07-13-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-13-mithril.md",source:"@site/blog/2023-07-13-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-07-13T00:00:00.000Z",formattedDate:"July 13, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.92,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-07-13-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-14-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-12-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team created a new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2327.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2327.0"))," distribution. They focused on preparing the beta launch on the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet"),": they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet")," infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library. "),(0,r.kt)("p",null,"Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2327.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2327.0"))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add infrastructure monitoring")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/987"},"#987")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Deploy 'mainnet' infrastructure")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/988"},"#988")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Handle Secrets management")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/989"},"#989")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,r.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,r.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Remove certificate hash from Artifact")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/932"},"#932")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Check vulnerabilities in CI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1037"},"#1037")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add 'created_at' in Mithril Stake Distribution messages")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1030"},"#1030")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add a 'run-only' option in end to end test")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1048"},"#1048")))),(0,r.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Factorize protocol crypto operations")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/669"},"#669")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Refactor aggregator dependency injection and services")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1058"},"#1058")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Build static binaries in CI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/874"},"#874")))),(0,r.kt)("li",{parentName:"ul"},"Worked on documentation:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Prepare SPO on-boarding guide")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1049"},"#1049")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add instructions to set firewall using iptables")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1040"},"#1040")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Update ufw command to set firewall on Mithril Signer installation instructions")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1041"},"#1041")))),(0,r.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Aggregator does not detect certificate chain epoch gap")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/952"},"#952")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"'testing-preview' network does not create certificates")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1015"},"#1015")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"SQLite compatibility in aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/837"},"#837")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Q&A followup fixes")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1035"},"#1035")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"E2E tests are flaky in CI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1023"},"#1023"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3e93a65d.c81741e5.js b/assets/js/3e93a65d.c81741e5.js new file mode 100644 index 00000000000..a77cea41c07 --- /dev/null +++ b/assets/js/3e93a65d.c81741e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51164],{35089:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/20","page":20,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/19","nextPage":"/cardano-updates/page/21","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/3eae7101.1c3bfdde.js b/assets/js/3eae7101.1c3bfdde.js new file mode 100644 index 00000000000..d151070c052 --- /dev/null +++ b/assets/js/3eae7101.1c3bfdde.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[69399],{44659:a=>{a.exports=JSON.parse('{"label":"network","permalink":"/cardano-updates/quarterly/tags/network","allTagsPath":"/cardano-updates/quarterly/tags","count":4}')}}]); \ No newline at end of file diff --git a/assets/js/3ede3d79.3f739406.js b/assets/js/3ede3d79.3f739406.js new file mode 100644 index 00000000000..ef5eaa4c010 --- /dev/null +++ b/assets/js/3ede3d79.3f739406.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2221],{4562:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"2023-12-06-ledger","metadata":{"permalink":"/cardano-updates/2023-12-06-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-06-ledger.md","source":"@site/blog/2023-12-06-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-12-06T00:00:00.000Z","formattedDate":"December 6, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.53,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-12-06-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-12-06-mithril"}},"content":"## High level summary\\n\\nThis period we reached a major milestone, namely we now have an initial version of Conway\\nconformance testing working. We are now able to generate random valid data with the help\\nof constraint based testing framework, apply that data to Conway Ledger rules and verify\\nthat the output matches to the one produced by the executable version of the Formal Ledger\\nSpecification, when it is applied to the same random data.\\n\\nWe also had a couple of Conway bugs fixed and a few new predicate check implemented. Get\\nConstitutional Committee query is complete and tested. Various improvements to the\\ntesting tools. Addition of more test cases.\\n\\n## Low level summary\\n\\n### Conway\\n\\n* [pull-3888] - Add checks for valid ProtVer when a proposal is a HardFork\\n* [pull-3902] - Fix pvCanFollow usage in Conway and improve clarity in Shelley\\n* [pull-3855] - Remove unreachable proposals\\n* [pull-3903] - Add lenient decoder for `Addr`\\n* [pull-3878] - Committee query - implement next epoch change\\n\\n### Testing\\n\\n* [pull-3893] - Move `tree-diff` dependency to tests together with all instances\\n* [pull-3896] - Fix Brute force failure\\n* [pull-3904] - New ListWhere Pred added to the Constrained Solver.\\n* [pull-3907] - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file\\n* [pull-3883] - Committee QuerySpec Imp Test\\n* [pull-3909] - Make `impAnn` a bit more useful, by making the logs scoped by `impAnn`\\n* [pull-3908] - Use upstream testing instances for very basic types\\n* [pull-3912] - Removed call to tail, and the 'watchPulser' test\\n* [pull-3852] - Added constrained generators to conformance tests - Part 1\\n\\n### Improvements and releasing\\n\\n* [pull-3891] - Bump plutus to 1.17\\n\\n[pull-3891]: https://github.com/input-output-hk/cardano-ledger/pull/3891\\n[pull-3888]: https://github.com/input-output-hk/cardano-ledger/pull/3888\\n[pull-3893]: https://github.com/input-output-hk/cardano-ledger/pull/3893\\n[pull-3896]: https://github.com/input-output-hk/cardano-ledger/pull/3896\\n[pull-3855]: https://github.com/input-output-hk/cardano-ledger/pull/3855\\n[pull-3904]: https://github.com/input-output-hk/cardano-ledger/pull/3904\\n[pull-3907]: https://github.com/input-output-hk/cardano-ledger/pull/3907\\n[pull-3903]: https://github.com/input-output-hk/cardano-ledger/pull/3903\\n[pull-3902]: https://github.com/input-output-hk/cardano-ledger/pull/3902\\n[pull-3883]: https://github.com/input-output-hk/cardano-ledger/pull/3883\\n[pull-3878]: https://github.com/input-output-hk/cardano-ledger/pull/3878\\n[pull-3909]: https://github.com/input-output-hk/cardano-ledger/pull/3909\\n[pull-3908]: https://github.com/input-output-hk/cardano-ledger/pull/3908\\n[pull-3852]: https://github.com/input-output-hk/cardano-ledger/pull/3852\\n[pull-3912]: https://github.com/input-output-hk/cardano-ledger/pull/3912"},{"id":"2023-12-06-mithril","metadata":{"permalink":"/cardano-updates/2023-12-06-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-06-mithril.md","source":"@site/blog/2023-12-06-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-12-06T00:00:00.000Z","formattedDate":"December 6, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.01,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-12-06-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-12-06-ledger"},"nextItem":{"title":"Performance & Tracing Update","permalink":"/cardano-updates/2023-12-04-performance-and-tracing"}},"content":"## High level overview\\n\\nThis week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator\'s performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking.\\n\\nFinally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io.\\n\\n## Low level overview\\n- Worked on the issue **Light Wallet: Release `mithril-client` WASM library** [#1336](https://github.com/input-output-hk/mithril/issues/1336)\\n- Worked on the issue **P2P threat modeling and risk analysis** [#1350](https://github.com/input-output-hk/mithril/issues/1350)\\n- Worked on the issue **Create a test network on `Sanchonet`** [#1173](https://github.com/input-output-hk/mithril/issues/1173)\\n- Worked on the issue **Upgrade breaking changes crates** [#1357](https://github.com/input-output-hk/mithril/issues/1357)\\n- Worked on the issue **Enhance Mithril/Cardano node communication** [#1315](https://github.com/input-output-hk/mithril/issues/1315)\\n- Completed the issue **Enhance aggregator REST API performances** [#1327](https://github.com/input-output-hk/mithril/issues/1327)\\n- Completed the issue **Signer runtime is stuck for some SPO** [#1312](https://github.com/input-output-hk/mithril/issues/1312)\\n- Completed the issue **Make `mithril-client` examples full crates** [#1385](https://github.com/input-output-hk/mithril/issues/1385)\\n- Completed the issue **Manual publication to crates.io with GitHub action** [#1380](https://github.com/input-output-hk/mithril/issues/1380)\\n- Completed the issue **Remove `sqlite` dependency from `mithril-client` crate** [#1390](https://github.com/input-output-hk/mithril/issues/1390)"},{"id":"2023-12-04-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-12-04-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-04-performance-and-tracing.md","source":"@site/blog/2023-12-04-performance-and-tracing.md","title":"Performance & Tracing Update","description":"High level summary","date":"2023-12-04T00:00:00.000Z","formattedDate":"December 4, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.085,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & Tracing Update","slug":"2023-12-04-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-12-06-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-12-01-hydra"}},"content":"## High level summary\\n\\n* Benchmarking: Release benchmarking for node `8.7.0`. Also, we performed the first-ever Conway benchmarks.\\n* Development: Conway capability of our workload generator has been implemented and merged to `master`.\\n* Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data.\\n* Tracing: Quality-of-life improvements to tracing output and addition of a test suite.\\n* Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nA full set of benchmarks for node `8.7.0` has been performed, with the focus of enabling the next mainnet release. We\'ve measured slight performance improvements of `8.7.0` over `8.6.0`, and can confirm no regressions have been introduced.\\n\\nFurthermore, we\'ve run system integration level benchmarks in the Conway era for the first time, on the same node version.\\nOnly Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty.\\n\\n### Development\\n\\nOur transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era.\\nCurrently, we\'re looking into adding Conway-exclusive features, such as `DRep` registration. Those would be submitted at the very beginning of a run, as we\'re interested in seeing potential performance implications of maintaining `DRep` sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying.\\n\\n### Infrastructure\\n\\nAs our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we\'ve\\nimproved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data.\\n\\n### Tracing\\n\\nThe new tracing system is currently receiving usability improvements as we\'re reworking the output of several trace messages.\\nAdditionally, we\'re setting up a rigorous test suite to provide safety for future development of and component integration inte the system.\\n\\n### Nomad backend\\n\\nWe\'ve been working on adapting various benchmarking workloads, which are defined by our workbench\'s profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we\'re implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases."},{"id":"2023-12-01-hydra","metadata":{"permalink":"/cardano-updates/2023-12-01-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-01-hydra.md","source":"@site/blog/2023-12-01-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-12-01T00:00:00.000Z","formattedDate":"December 1, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.865,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-12-01-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & Tracing Update","permalink":"/cardano-updates/2023-12-04-performance-and-tracing"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-11-29-consensus"}},"content":"### High-level summary\\n\\nThis week, the Hydra team conducted a packed Monthly Review meeting,\\nfeaturing demonstrations and the preparation of the monthly report. They\\naddressed flakiness in tests and enhanced the logs json schema,\\nimproving overall test reliability. Additionally, the team successfully\\nbuilt MacOS ARM64 (`aarch64-darwin`) binaries in CI, expanding platform\\nsupport. They further improved the network configuration by detecting\\nincompatible persisted states, contributing to overall system\\nrobustness. Finally, the team released version 0.14.0, highlighting\\ntheir commitment to delivering regular updates and improvements.\\n\\n### What did the team achieve this week\\n\\n- Monthly Review\\n [meeting](https://drive.google.com/file/d/1-iv8IveUzA2KrJV_Kqrgx4ts05Ow0zjM)\\n packed with demonstrations and prepared monthly report\\n [\\\\#1189](https://github.com/input-output-hk/hydra/pull/1189)\\n- Fixed several flaky tests and improved the logs json schema\\n [\\\\#1188](https://github.com/input-output-hk/hydra/pull/1188)\\n [\\\\#1190](https://github.com/input-output-hk/hydra/issues/1190)\\n [\\\\#1192](https://github.com/input-output-hk/hydra/pull/1192)\\n- Built MacOS ARM64 (`aarch64-darwin`) binaries in CI\\n [\\\\#1182](https://github.com/input-output-hk/hydra/pull/1182)\\n- Improved network configuration by detecting incompatible persisted\\n states [\\\\#1174](https://github.com/input-output-hk/hydra/issues/1174)\\n- Released version 0.14.0\\n\\n### What are the goals of next week\\n\\n- Start work on incremental decommit\\n- Continue shepherding contributed PRs to completion\\n- Finish stateless-observation work\\n- Open a head on a Conway network"},{"id":"2023-11-29-consensus","metadata":{"permalink":"/cardano-updates/2023-11-29-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-29-consensus.md","source":"@site/blog/2023-11-29-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-11-29T00:00:00.000Z","formattedDate":"November 29, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.51,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-11-29-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-12-01-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-29-mithril"}},"content":"## High level summary\\n\\nThe Consensus team implemented and tested a [patch](https://github.com/input-output-hk/ouroboros-consensus/pull/525) that does not propagate future headers.\\nIt is under review, and we expect it can be released in the next Cardano node version.\\nOn the UTxO-HD front, we [finished](https://github.com/input-output-hk/ouroboros-consensus/issues/510) prototyping the `LedgerDB` and `BackingStore` redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend.\\nWith this prototype finished we can start integrating the rest of the code.\\nWe [investigated](https://github.com/input-output-hk/ouroboros-consensus/pull/513) the unexpected performance degradation observed when acquiring the block context.\\nWe also [released Cardano node 8.7.0](https://github.com/input-output-hk/cardano-node/releases/tag/8.7.0-pre) and [moved](https://github.com/input-output-hk/cardano-ledger/pull/3893) `tree-diff` outside `cardano-ledger` libraries."},{"id":"2023-11-29-mithril","metadata":{"permalink":"/cardano-updates/2023-11-29-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-29-mithril.md","source":"@site/blog/2023-11-29-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-11-29T00:00:00.000Z","formattedDate":"November 29, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.415,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-11-29-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-11-29-consensus"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-11-24-hydra"}},"content":"## High level overview\\n\\nThis week, the Mithril team released the initial version of the [Mithril client library](https://crates.io/crates/mithril-client), enabling developers to integrate core Mithril features into their applications. They also released a new distribution, [`2347.0`](https://github.com/input-output-hk/mithril/releases/tag/2347.0), which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements.\\n\\nThe team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance. \\n\\nFinally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users.\\n\\n## Low level overview\\n- Release of the [`mithril-client`](https://crates.io/crates/mithril-client) library crate\\n- Publication of a [dev blog post](https://mithril.network/doc/dev-blog/2023/11/27/mithril-client-library-released) about the released Mithril library\\n- Released the new distribution [`2347.0`](https://github.com/input-output-hk/mithril/releases/tag/2347.0)\\n- Worked on the issue **Light Wallet: Release `mithril-client` WASM library** [#1336](https://github.com/input-output-hk/mithril/issues/1336)\\n- Worked on the issue **Enhance Mithril/Cardano node communication** [#1315](https://github.com/input-output-hk/mithril/issues/1315)\\n- Worked on the issue **P2P threat modeling and risk analysis** [#1350](https://github.com/input-output-hk/mithril/issues/1350)\\n- Worked on the issue **Enhance aggregator REST API performances** [#1327](https://github.com/input-output-hk/mithril/issues/1327)\\n- Worked on the issue **Signer runtime is stuck for some SPO** [#1312](https://github.com/input-output-hk/mithril/issues/1312)\\n- Completed the issue **Support P2P relay in infrastructure** [#1361](https://github.com/input-output-hk/mithril/issues/1361)\\n- Completed the issue **Make Cardano node version custom in CI/CD** [#1355](https://github.com/input-output-hk/mithril/issues/1355)\\n- Completed the issue **Manually deploy a test Mithril network** [#1356](https://github.com/input-output-hk/mithril/issues/1356)\\n- Completed the issue **mithril-client verbosity not following usage menu** [#1325](https://github.com/input-output-hk/mithril/issues/1325)\\n- Completed the issue **Error message for mithril-client snapshot download** [#1375](https://github.com/input-output-hk/mithril/issues/1375)"},{"id":"2023-11-24-hydra","metadata":{"permalink":"/cardano-updates/2023-11-24-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-24-hydra.md","source":"@site/blog/2023-11-24-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-11-24T00:00:00.000Z","formattedDate":"November 24, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.12,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-11-24-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-29-mithril"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-11-24-sre"}},"content":"### High-level summary\\n\\nThis week, the Hydra team spent significant time opening a head among\\nthemselves on `mainnet` using the release candidate, revealing and\\naddressing lurking bugs such as\\n[\\\\#1174](https://github.com/input-output-hk/hydra/issues/1174). Also\\nrequired was this change to dynamically calculate the min utxo value\\n[\\\\#1176](https://github.com/input-output-hk/hydra/pull/1176), a\\nnecessary adjustment following the switch to inline datums. The team\\nengaged with `cardano-cli` / `cardano-api` maintainers to discuss recent\\nchanges and collaborated on drafting feature ideas, including providing\\n[Conway support](https://github.com/input-output-hk/hydra/issues/1177)\\nfor the Hydra roadmap. As part of ongoing improvements, they\\nexperimented with writing the specification in markdown instead of\\nLaTex.\\n\\n### What did the team achieve this week\\n\\n- Opened head among us on mainnet and uncovered a few lurking bugs like\\n [\\\\#1174](https://github.com/input-output-hk/hydra/issues/1174) in the\\n release candidate\\n- Calculate the min utxo value instead of hard-coding it\\n [\\\\#1176](https://github.com/input-output-hk/hydra/pull/1176), which is\\n needed since we switched to inline datums.\\n- Met with the `cardano-cli` / `cardano-api` maintainers to discuss\\n recent changes and way forward\\n- Drafted features ideas to provide [Conway\\n support](https://github.com/input-output-hk/hydra/issues/1177) on the\\n Hydra roadmap\\n- Experimented in writing the specification in markdown instead of LaTex\\n\\n### What are the goals of next week\\n\\n- Have the Monthly review meeting with several demos\\n- Release version 0.14.0 with [this\\n scope](https://github.com/input-output-hk/hydra/milestone/14?closed=1)\\n- Complete tidying up chain layer via stateless observation changes in\\n hydra-node\\n [\\\\#1096](https://github.com/input-output-hk/hydra/issues/1096)\\n- Update dependencies to prepare for Conway\\n [\\\\#1114](https://github.com/input-output-hk/hydra/issues/1114)"},{"id":"2023-11-24-sre","metadata":{"permalink":"/cardano-updates/2023-11-24-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-24-sre.md","source":"@site/blog/2023-11-24-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-11-24T00:00:00.000Z","formattedDate":"November 24, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":3.115,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-11-24-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-11-24-hydra"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-11-22-ledger"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent changes, updates or improvements include:\\n* The cardano-node nixos service now supports SIGHUP p2p topology reloading when the `useSystemdReload` option is enabled\\n\\n## Lower level summary\\n\\n### Capkgs\\n* Update cardano-db-sync and offchain-metadata-tools package paths and/or references: [capkgs-compare](https://github.com/input-output-hk/capkgs/compare/994696f...3ce364f)\\n\\n### Cardano-node\\n* Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: [cardano-node-pull-5537](https://github.com/input-output-hk/cardano-node/pull/5537)\\n * Creates a useSystemdReload bool option for the cardano-node nixos service\\n * This will move the topology file(s) to `/etc/cardano-node/topology-$i.yaml` and inject systemd reload hooks for p2p configured cardano-node instances\\n * Moving topology files to `/etc` also allows for manual topology updates when a quick test is needed and full service re-deployment isn\'t desired\\n\\n### Cardano-parts\\n* Adds a metadata server profile and a number of other features and improvements: [cardano-parts-pull-20](https://github.com/input-output-hk/cardano-parts/pull/20)\\n * Adds a new metadata-service profile\\n * Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile\\n * Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster\'s static needs, with each cached behind varnish\\n * Adds extra node list producers and public producers for cardano-node-topology profile\\n * Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch\\n * Adds select systemd metrics reporting to grafana-agent profile\\n * Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS\\n * Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it\\n * Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo\\n * Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation\\n * Adds support for grafana recording rules in the template files\\n * Improves cardano-group profile handling of producers with respect to multiple instance nodes\\n * Improves grafana-agent profile metrics handling for multi-instance cardano-node servers\\n * Improves smash service preStart handling while waiting for a node socket\\n * Updates Justfile for ERA_CMD demo support\\n * Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates\\n * Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile\\n * Defaults cardano-postgres profile psqlrc use to false\\n\\n### Cardano-playground\\n* Adds a new testnet metadata server, cluster webserver, and other improvements: [cardano-playground-pull-6](https://github.com/input-output-hk/cardano-playground/pull/6)\\n * Adds a new metadata server\\n * Adds a new webserver for the cluster\'s static virtualhost needs\\n * Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo\\n * Adds systemd metrics monitoring to the cluster\\n * Resizes sanchonet machines to support the growing chain\\n * Completes migration of preprod from world\\n * Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes\\n * Updates Justfile for ERA_CMD demo support\\n * Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile\\n * Migrates book static code to playground from world, with refactor, cleanup and updates\\n * Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules\\n\\n### Offchain-metadata-tools\\n* Adds db password option with obfuscation plus misc improvements: [offchain-metadata-tools-pull-61](https://github.com/input-output-hk/offchain-metadata-tools/pull/61)\\n * Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services\\n * Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile\\n * Moves from std use in the nix flake to standard flake schema\\n * Fixes hydra CI failures\\n * Builds update-docs in hydra to avoid long local build times\\n * Removes deprecated tullia\\n * Removes deprecated check-hydra from pkgs\\n * Removes deprecated bors files and references"},{"id":"2023-11-22-ledger","metadata":{"permalink":"/cardano-updates/2023-11-22-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-22-ledger.md","source":"@site/blog/2023-11-22-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-11-22T00:00:00.000Z","formattedDate":"November 22, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.705,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-11-22-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-11-24-sre"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-22-mithril"}},"content":"## High level summary\\n\\nLast two weeks progress was mainly on testing, bug fixes and improvements to clarity of\\nCDDL specification. Important bugfixes include:\\n\\n* Fix deserialization of `ValueNotConservedUTxO` predicate failure that could not\\n previously report zero ADA.\\n* Fix deserialization of `CostModels` in the `PParamsUpdate`. Invalid `CostModels` are no\\n longer allowed, only `CostModels` for unrecognized Plutus versions are allowed starting\\n with Conway\\n* Fix returning of Deposits for ProposalProcedures\\n\\nTesting tooling has been improved and new tests have been implemented for Conway era.\\n\\n## Low level summary\\n\\n### Conway\\n\\n* [pull-3858] - Restructure computing Refunds and Deposits in a TxBody across all eras\\n* [pull-3860] - Removed `mock/crypto.cddl`, added optional tag to sets\\n* [pull-3864] - Fix Proposal deposits and add deposit tests to imp tests\\n* [pull-3859] - Rename ProposalsSnapshot to Proposals\\n* [pull-3867] - `MaryValue` fixes\\n* [pull-3869] - Indicate that tag 258 is optional for OSet. Fix rational CDDL\\n* [pull-3863] - Improve deposits refunds re-usability\\n* [pull-3861] - Fail PParamsUpdate deserialization for invalid costmodels in Conway\\n* [pull-3875] - Fix cddl spec for CostModels in Conway\\n* [pull-3876] - Change 4 PParam fields from EpochNo to EpochInterval\\n* [pull-3884] - Relax requirement on the Set tag 258 to be enforced in the next era\\n\\n### Testing\\n\\n* [pull-3868] - Improvements to support property tests on Traces with simple Tx with DRep related Certs\\n* [pull-3792] - RATIFY and GOV constraint tests\\n* [pull-3885] - Added a test for genTxAndNewEpoch\\n* [pull-3886] - QuickCheck Imp integration\\n\\n### Improvements and releasing\\n\\n* [pull-3854] - Integration work for node 8.7.0\\n* [pull-3872] - Fixup ReadTheDocs build\\n* [pull-3871] - Bump plutus dep to 1.16\\n* [pull-3874] - Post release changes\\n* [pull-3880] - Remove generic-monoid dependency\\n* [pull-3887] - Add changelog for features that landed in cardano-node-8.7\\n\\n[pull-3858]: https://github.com/input-output-hk/cardano-ledger/pull/3858\\n[pull-3860]: https://github.com/input-output-hk/cardano-ledger/pull/3860\\n[pull-3864]: https://github.com/input-output-hk/cardano-ledger/pull/3864\\n[pull-3859]: https://github.com/input-output-hk/cardano-ledger/pull/3859\\n[pull-3867]: https://github.com/input-output-hk/cardano-ledger/pull/3867\\n[pull-3869]: https://github.com/input-output-hk/cardano-ledger/pull/3869\\n[pull-3863]: https://github.com/input-output-hk/cardano-ledger/pull/3863\\n[pull-3854]: https://github.com/input-output-hk/cardano-ledger/pull/3854\\n[pull-3861]: https://github.com/input-output-hk/cardano-ledger/pull/3861\\n[pull-3872]: https://github.com/input-output-hk/cardano-ledger/pull/3872\\n[pull-3871]: https://github.com/input-output-hk/cardano-ledger/pull/3871\\n[pull-3875]: https://github.com/input-output-hk/cardano-ledger/pull/3875\\n[pull-3874]: https://github.com/input-output-hk/cardano-ledger/pull/3874\\n[pull-3868]: https://github.com/input-output-hk/cardano-ledger/pull/3868\\n[pull-3880]: https://github.com/input-output-hk/cardano-ledger/pull/3880\\n[pull-3792]: https://github.com/input-output-hk/cardano-ledger/pull/3792\\n[pull-3876]: https://github.com/input-output-hk/cardano-ledger/pull/3876\\n[pull-3885]: https://github.com/input-output-hk/cardano-ledger/pull/3885\\n[pull-3884]: https://github.com/input-output-hk/cardano-ledger/pull/3884\\n[pull-3887]: https://github.com/input-output-hk/cardano-ledger/pull/3887\\n[pull-3886]: https://github.com/input-output-hk/cardano-ledger/pull/3886"},{"id":"2023-11-22-mithril","metadata":{"permalink":"/cardano-updates/2023-11-22-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-22-mithril.md","source":"@site/blog/2023-11-22-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-11-22T00:00:00.000Z","formattedDate":"November 22, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":0.895,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-11-22-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-11-22-ledger"},"nextItem":{"title":"Initial CIP 1694 Security Analysis and Responses","permalink":"/cardano-updates/2023-11-20-cip1694"}},"content":"## High level overview\\n\\n\\nThis week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer.\\n\\nFinally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release.\\n\\n## Low level overview\\n- Completed the issue **Prototype a P2P relay with `libp2p`** [#1326](https://github.com/input-output-hk/mithril/issues/1326)\\n- Worked on the issue **Enhance aggregator REST API performances** [#1327](https://github.com/input-output-hk/mithril/issues/1327)\\n- Worked on the issue **Signer runtime is stuck for some SPO** [#1312](https://github.com/input-output-hk/mithril/issues/1312)\\n- Completed the issue **Manually deploy a test Mithril network** [#1356](https://github.com/input-output-hk/mithril/issues/1356)\\n- Completed the issue **Make Cardano node version custom in CI/CD** [#1355](https://github.com/input-output-hk/mithril/issues/1355)\\n- Worked on the issue **Support P2P relay in infrastructure** [#1361](https://github.com/input-output-hk/mithril/issues/1361)\\n- Completed the issue **mithril-client fails to extract archive** [#1352](https://github.com/input-output-hk/mithril/issues/1352)"},{"id":"2023-11-20-cip1694","metadata":{"permalink":"/cardano-updates/2023-11-20-cip1694","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-20-cip1694.md","source":"@site/blog/2023-11-20-cip1694.md","title":"Initial CIP 1694 Security Analysis and Responses","description":"High level summary","date":"2023-11-20T00:00:00.000Z","formattedDate":"November 20, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"},{"label":"cip1694","permalink":"/cardano-updates/tags/cip-1694"},{"label":"security","permalink":"/cardano-updates/tags/security"}],"readingTime":5.345,"hasTruncateMarker":false,"authors":[{"name":"Kevin Hammond","title":"Head of Software Engineering, Cardano Core","url":"https://github.com/kevinhammond","imageURL":"https://github.com/kevinhammond.png","key":"kevinhammond"}],"frontMatter":{"title":"Initial CIP 1694 Security Analysis and Responses","slug":"2023-11-20-cip1694","authors":"kevinhammond","tags":["ledger","cip1694","security"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-22-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-11-17-hydra"}},"content":"## High level summary\\n\\nWe have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.\\n\\n## Initial CIP-1694 Security Analysis and Responses\\n\\n### Section: The constitutional committee\\n\\n---\\n\\n- \u201cFor example, if we consider the hypothetical Constitution rule \\"The Cardano network must always be able to produce new blocks\\" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.\\n\\nThere is a \'guardrails document\' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.\\n\\n---\\n\\n### Section: Size of the constitutional committee\\n\\n---\\n\\n- A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.\\n\\nThanks. Yes, we\u2019ve been thinking about this issue for a long time, see for example the section \u2018Final safety measure, post bootstrapping\u2019. We don\u2019t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps\\n\\n---\\n\\n### Section: Terms\\n\\n---\\n\\n- The following sentence is a bit awkward to read: \u201cFor example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.\u201d \u2014> Suggestion: \u201cFor example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.\u201d \\n\\nThanks. Yes, that suggestion is a bit easier to read.\\n\\n---\\n\\n### Section: Registered DReps\\n\\n---\\n\\n- \u201cAdditionally, registered DReps will need to vote regularly to still be considered active.\u201d - There is a minor issue with requiring \u201cvoting regularly\u201d. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).\\n\\nThanks. We\u2019ve added a mechanism to prevent that issue in the spec/code where if there\u2019s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.\\n\\n---\\n\\n### Section: Ratification\\n\\n---\\n\\n- It is a bit unclear why protocol changes: network group and technical group are two separate groups.\\n \\nThese correspond exactly to the groups that are administered by the Parameter Committee.\\n\\n---\\n\\n- I didn\u2019t understand the rationale for requiring 100% \u201cYes\u201d votes to pass \u201cInfo\u201d type governance actions? It seems they have the least potential to harm the system.\\n\\nYes, it\u2019s not about harming the system, since `Info` \\nactions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action. \\n\\nOnce an action is enacted it\u2019s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.\\n\\n---\\n\\n### Section: Content\\n\\n---\\n\\n- For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.\\n\\nProtocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.\\n\\n---\\n\\n### Section: Protocol Parameter groups\\n\\n---\\n\\n- It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.\\n\\nThese are existing protocol parameters, described in e.g. [https://cips.cardano.org/cips/cip9/](https://docs.cardano.org/explore-cardano/parameter-guide/#:~:text=Protocol%20parameters%20on%20Cardano%20are,to%20changing%20conditions%20over%20time.)9 or [The Cardano Protocol Parameters Guide](https://docs.cardano.org/explore-cardano/parameter-guide/#:~:text=Protocol%20parameters%20on%20Cardano%20are,to%20changing%20conditions%20over%20time.).\\n\\n\\n---\\n\\n- With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories. \\n\\nAll of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.\\n\\n---\\n\\n### Section: Votes\\n\\n---\\n\\n- Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?\\n\\nThey may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don\u2019t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.\\n\\n---\\n\\n\\n### Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes\\n\\n---\\n\\n- It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.\\n\\nThere is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.\\n\\n---\\n\\n### Section: Changes post Edinburgh workshop (July 2023)\\n\\n---\\n\\n- \u201cAll governance actions are enacted one epoch after they are ratified.\u201d - I\u2019m not sure if this line is currently in the main body of the CIP?\\n\\nIt is, but it is phrased differently: \u2018All governance actions are enacted on the epoch boundary after their ratification.\u2019\\n\\n---\\n\\n### Section: Reduced deposits for some government actions\\n\\n---\\n\\n- Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.\\n\\nIndeed. We have no plans for this at the moment."},{"id":"2023-11-17-hydra","metadata":{"permalink":"/cardano-updates/2023-11-17-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-17-hydra.md","source":"@site/blog/2023-11-17-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-11-17T00:00:00.000Z","formattedDate":"November 17, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.135,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-11-17-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Initial CIP 1694 Security Analysis and Responses","permalink":"/cardano-updates/2023-11-20-cip1694"},"nextItem":{"title":"Performance & Tracing Update","permalink":"/cardano-updates/2023-11-17-performance-and-tracing"}},"content":"## High-level summary\\n\\nThis week, the Hydra team made several impactful updates. They addressed\\nmisleading errors regarding collect com transactions, resolved a security\\nadvisory (CVE-2023-42806), and simplified the Hydra Head protocol by using\\ninline datums. The team also tackled minor inconsistencies in specifications and\\nimplementation, documented reasons for potentially dropped close transactions by\\nthe cardano-node, and collaborated with SundaeLabs on an offline mode for\\n`hydra-node`. Additionally, they engaged in discussions with researchers about\\nincremental de-/commits.\\n\\n## What did the team achieve this week\\n\\n- Removed misleading errors about collect com transactions [#839](https://github.com/input-output-hk/hydra/issues/839)\\n- Addressed security advisory [CVE-2023-42806](https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq) in PR [#1161](https://github.com/input-output-hk/hydra/pull/1161)\\n- Changed the head protocol to use inline datums, simplifying things in the hydra-node [#1162](https://github.com/input-output-hk/hydra/pull/1162)\\n- Addressed minor inconsistencies in spec and implementation [#1104](https://github.com/input-output-hk/hydra/issues/1104)\\n- Documented why close transacations might be dropped by the cardano-node (can’t fix) [#1039](https://github.com/input-output-hk/hydra/issues/1039)\\n- Tidy up a few things here and there\\n- Worked with SundaeLabs on the offline mode for `hydra-node`\\n- Discussed incremental de-/commits with researchers\\n\\n## What are the goals of next week\\n\\n- Start work on incremental decommits protocol specification [#1057](https://github.com/input-output-hk/hydra/issues/1057)\\n- Provide support to Hypix\\n- Address all [open bugs](https://github.com/input-output-hk/hydra/labels/bug%20%3Abug%3A)\\n- Release version 0.14.0 with [this scope](https://github.com/input-output-hk/hydra/milestone/14?closed=1)\\n- Update dependencies to prepare for Conway [#1114](https://github.com/input-output-hk/hydra/issues/1114)\\n- Shepherd off-line mode PR over the finish line\\n- Complete tidying up chain layer via stateless observation changes in hydra-node [#1096](https://github.com/input-output-hk/hydra/issues/1096)"},{"id":"2023-11-17-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-11-17-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-17-performance-and-tracing.md","source":"@site/blog/2023-11-17-performance-and-tracing.md","title":"Performance & Tracing Update","description":"High level summary","date":"2023-11-17T00:00:00.000Z","formattedDate":"November 17, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.585,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & Tracing Update","slug":"2023-11-17-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-11-17-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-11-16-network"}},"content":"## High level summary\\n\\n* Benchmarking: Release benchmarking for node `8.6.0` as well as benchmarks scrutinizing GHC versions and the new tracing system.\\n* Development: PlutusV3 capability of our workload generator has been implemented.\\n* Tracing: First round of optimization of the `cardano-tracer` service has completed, awaiting validation.\\n* Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.\\n* Workbench: Configurable remote environments and improvements to run documentation have been merged to `master`.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nWe\'ve performed and analyzed a full set of benchmarks for node `8.6.0`, both in comparison to recent release tags\\nand mainnet version `8.1.2`. A lot of development work has entered the system since then, so it is crucial\\nwe can rule out any potential performance risks for the next mainnet release. \\n\\nAdditionally, we\'ve been benchmarking GHC9.6.3 builds of `cardano-node`. Overall, we\'ve observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we\'ve seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform. \\n\\nA last set of benchmarks was dedicated to the new tracing system with node `8.6.0`. We were able to show that\\nthere is no performance risk to enabling the new system, even when forwarding all trace messages to a `cardano-tracer`\\nservice on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.\\n\\n### Development\\n\\nFor future benchmarks to be built around PlutusV3, we\'ve equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes\\nto the execution budgets by developing specialized workloads.\\n\\n### Tracing\\n\\nThe `cardano-tracer` service has received its first batch of optimizations. Profiling output is promising; to measure\\nperformance for a long service run time, we\'re currently equipping the service binary with the same capability to\\nemit regular resource traces as `cardano-node`. Analysis of those will be the basis for validating this and possible future optimization efforts.\\n\\n### Nomad backend\\n\\nMany improvements for the nomad backend have been implemented and merged to `master`. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service,\\nmore detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables\\nour team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.\\n\\n### Workbench\\n\\nOur performance workbench has seen upgrades in documenting and reporting `cardano-node` builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler.\\nWhen alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential. \\n\\nFurthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance."},{"id":"2023-11-16-network","metadata":{"permalink":"/cardano-updates/2023-11-16-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-16-network.md","source":"@site/blog/2023-11-16-network.md","title":"Network Team Update","description":"High-level overview of sprint 48","date":"2023-11-16T00:00:00.000Z","formattedDate":"November 16, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":0.545,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-11-16-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & Tracing Update","permalink":"/cardano-updates/2023-11-17-performance-and-tracing"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-11-15-consensus"}},"content":"## High-level overview of [sprint 48][sprint-48]\\n\\n### Bootstrap Peers\\n\\nWe continued reviewing bootstrap peers, [ouroboros-network#4555].\\n\\n### IOClasses / IOSim\\n\\nWe prepared slides for a Haskell meetup were we presented a talk on `IOSimPOR`.\\nThe recording will be availble on `YouTube`.\\n\\nWe also used the opportunity to do some refactoring of the `IOSim` code base: [io-sim#117].\\nWe released `io-sim-1.3.0.0` on `Hackage`: [io-sim#119].\\n\\nWe also added `forkFinally` to `MonadFork` (not included in `1.3.0.0` release): [io-sim#123].\\n\\n### Tech debt\\n\\nWe refactored `Resource` used by the DNS subsystem: [ouroboros-network#4707].\\nWe continued reviewing the [ouroboros-network#4625] PR, which refactors\\n`RootPeersDNS` module.\\n\\n[io-sim#117]: https://github.com/input-output-hk/io-sim/pull/117\\n[io-sim#119]: https://github.com/input-output-hk/io-sim/pull/119\\n[io-sim#123]: https://github.com/input-output-hk/io-sim/pull/123\\n[ouroboros-network#4555]: https://github.com/input-output-hk/ouroboros-network/pull/4555\\n[ouroboros-network#4625]: https://github.com/input-output-hk/ouroboros-network/pull/4625\\n[ouroboros-network#4707]: https://github.com/input-output-hk/ouroboros-network/pull/4707\\n[sprint-48]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+48%22"},{"id":"2023-11-15-consensus","metadata":{"permalink":"/cardano-updates/2023-11-15-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-15-consensus.md","source":"@site/blog/2023-11-15-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-11-15T00:00:00.000Z","formattedDate":"November 15, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.34,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-11-15-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-11-16-network"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-15-mithril"}},"content":"## High level summary\\n\\nOver the last two weeks, we managed to run a UTxO-HD capable node in _legacy mode_, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does).\\nThis _legacy mode_ could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not.\\nHowever, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter.\\nOn the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node.\\nTherefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.\\n\\nOn the Genesis front, we reviewed the [peer simulator](https://github.com/input-output-hk/ouroboros-consensus/pull/434) for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.\\n\\nWe also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.\\n\\n[Javier Sagredo](https://github.com/jasagredo) continues his cycle as release engineer, and he is working on version 8.7 of Cardano node."},{"id":"2023-11-15-mithril","metadata":{"permalink":"/cardano-updates/2023-11-15-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-15-mithril.md","source":"@site/blog/2023-11-15-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-11-15T00:00:00.000Z","formattedDate":"November 15, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":0.92,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-11-15-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-11-15-consensus"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-11-14-node-cli-api"}},"content":"## High level overview\\n\\nThis week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.\\n\\nFinally, they continued addressing some performance issue associated with the \'release-mainnet\' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.\\n\\n## Low level overview\\n- Worked on the issue **Prototype a P2P relay with `libp2p`** [#1300](https://github.com/input-output-hk/mithril/issues/1300)\\n- Completed the issue **Light Wallet: Release `mithril-client` library** [#1311](https://github.com/input-output-hk/mithril/issues/1311)\\n- Completed the issue **Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC** [#1283](https://github.com/input-output-hk/mithril/issues/1283)\\n- Completed the issue **`release-mainnet` aggregator is unreachable** [#1310](https://github.com/input-output-hk/mithril/issues/1310)\\n- Completed the issue **Fix certificate hashes re-computation in aggregator** [#1343](https://github.com/input-output-hk/mithril/issues/1343)\\n- Completed the issue **Remove `unstable` tag in `unstable` release** [#1235](https://github.com/input-output-hk/mithril/issues/1235)\\n- Worked on the issue **Enhance aggregator REST API performances** [#1327](https://github.com/input-output-hk/mithril/issues/1327)\\n- Worked on the issue **Signer runtime is stuck for some SPO** [#1312](https://github.com/input-output-hk/mithril/issues/1312)"},{"id":"2023-11-14-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-11-14-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-14-node-cli-api.md","source":"@site/blog/2023-11-14-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-11-14T00:00:00.000Z","formattedDate":"November 14, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.155,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-11-14-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-15-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-11-10-hydra"}},"content":"# 2023-11-01 - 2023-11-14\\n\\n## High level summary\\n\\nCARDANO-NODE\\n- [Pre-release of Cardano Node 8.6.0-pre](https://github.com/input-output-hk/cardano-node/releases/tag/8.6.0-pre)\\n\\nCARDANO-CLI\\n- Improve golden tests\\n- Clean-up of conway era commands\\n\\n### cardano-cli\\n- [Replace usages of assertFileOccurences (6/6)](https://github.com/input-output-hk/cardano-cli/pull/451)\\n- [Replace usages of assertFileOccurences (5/6)](https://github.com/input-output-hk/cardano-cli/pull/448)\\n- [Replace usages of assertFileOccurences by usage of new functions \u2728 (4/n)](https://github.com/input-output-hk/cardano-cli/pull/444)\\n- [put n shelley/byron key witnesses arguments in correct order](https://github.com/input-output-hk/cardano-cli/pull/443)\\n- [Replace usages of assertFileOccurences by comparisons with golden files (3/n)](https://github.com/input-output-hk/cardano-cli/pull/441)\\n- [Replace usages of assertFileOccurences by comparisons with golden files (2/n)](https://github.com/input-output-hk/cardano-cli/pull/436)\\n- [Update to `cardano-8.31.0.0`](https://github.com/input-output-hk/cardano-cli/pull/435)\\n- [Remove remaining uses of `IsCardanoEra`](https://github.com/input-output-hk/cardano-cli/pull/434)\\n- [Release 8.14.0.0](https://github.com/input-output-hk/cardano-cli/pull/432)\\n- [Upgrade cardano-api to 8.30](https://github.com/input-output-hk/cardano-cli/pull/430)\\n- [Command types for `node` commands](https://github.com/input-output-hk/cardano-cli/pull/428)\\n- [Split governance `MIRTransferConstructor`](https://github.com/input-output-hk/cardano-cli/pull/427)\\n- [Replace usages of assertFileOccurences by comparisons with golden files (1/n)](https://github.com/input-output-hk/cardano-cli/pull/426)\\n- [Command argument types for `drep` commands](https://github.com/input-output-hk/cardano-cli/pull/425)\\n- [Add golden test for `governance action create-no-confidence`](https://github.com/input-output-hk/cardano-cli/pull/421)\\n- [Command arguments types for stake-pool commands](https://github.com/input-output-hk/cardano-cli/pull/419)\\n\\n\\n### cardano-api\\n- [New version `cardano-api-8.31.0.0`](https://github.com/input-output-hk/cardano-api/pull/364)\\n- [Use ledger presentation of multi-asset values directly. Lens to make this uniform over `ShelleyBasedEra`](https://github.com/input-output-hk/cardano-api/pull/360)\\n- [Protocol version change is not common to all versions anymore](https://github.com/input-output-hk/cardano-api/pull/358)\\n- [Delete `ByronAndAllegraEraOnwards`](https://github.com/input-output-hk/cardano-api/pull/355)\\n- [Replace `IsCardanoEra` and `IsShelleyBasedEra` contraints in GADT constructors with `Typeable`](https://github.com/input-output-hk/cardano-api/pull/354)\\n- [Modify foldBlocks to recurse on ledger events ](https://github.com/input-output-hk/cardano-api/pull/353)\\n- [Add generators for `EraBasedProtocolParametersUpdate`](https://github.com/input-output-hk/cardano-api/pull/352)\\n- [New version `cardano-api-8.30.0.0`](https://github.com/input-output-hk/cardano-api/pull/351)\\n\\n### cardano-node\\n- [Pre-release of Cardano Node 8.6.0-pre](https://github.com/input-output-hk/cardano-node/releases/tag/8.6.0-pre)\\n- - [cardano-node: use ouroboros-network-protocols-0.5.2](https://github.com/input-output-hk/cardano-node/pull/5525)\\n\\n\\n### cardano-testnet\\n\\n### docs\\n\\n### CI & project maintenance"},{"id":"2023-11-10-hydra","metadata":{"permalink":"/cardano-updates/2023-11-10-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-10-hydra.md","source":"@site/blog/2023-11-10-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-11-10T00:00:00.000Z","formattedDate":"November 10, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.65,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-11-10-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-11-14-node-cli-api"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-11-10-sre"}},"content":"### High-level summary\\n\\nThe last two weeks, the Hydra team achieved several milestones. They published\\nthe monthly report for October, providing updates on project developments. The\\nteam delivered a presentation and workshop at the Cardano Summit, contributing\\nto community engagement. They implemented a \\\\\\"dirt road\\\\\\" solution for the\\n\\\\\\"Ignored init tx\\\\\\" notification and moved the `hydra-poll` example project to a\\ndedicated repository. Additionally, the team built a `hydra-chain-observer` tool\\nfor Hydra Heads, updated the toolchain to GHC 9.6.3, and made various\\nimprovements to tooling and code formatting. They addressed specific issues,\\nsuch as fixing the `gen-hydra-keys` command and resolving concerns with the\\nrewritten `hydra-tui`. The team also enhanced the `hydra-cluster` smoke test\\nsuite by fetching network configurations dynamically. Lastly, they actively\\nreviewed pull requests and architectural decision records from the community,\\nincluding contributions from SundaeSwap. An experiment, the Hydra tally, was\\ncompleted and successfully deployed to the mainnet by the Cardano Foundation.\\n\\n### What did the team achieve this week\\n\\n- Published the monthly [report for\\n october](https://hydra.family/head-protocol/monthly/2023-10)\\n- Given a presentation / workshop at the Cardano summit\\n [#1109](https://github.com/input-output-hk/hydra/issues/1109)\\n- Dirt road implementation for \\\\\\"Ignored init tx\\\\\\" notification\\n [#529](https://github.com/input-output-hk/hydra/issues/529) (without\\n stateless observation)\\n- Completed and moved `hydra-poll` example project into a\\n dedicated\\n [repository](https://github.com/cardano-scaling/hydra-poll)\\n- Built a first version of a chain observation tool for Hydra Heads\\n [#1096](https://github.com/input-output-hk/hydra/issues/1096)\\n- Switched toolchain to GHC 9.6.3 and various improvements on tooling\\n and code formatting\\n [#1135](https://github.com/input-output-hk/hydra/pull/1135)\\n [#1152](https://github.com/input-output-hk/hydra/pull/1152)\\n [#1151](https://github.com/input-output-hk/hydra/pull/1151)\\n [#1154](https://github.com/input-output-hk/hydra/pull/1154)\\n- Fix `gen-hydra-keys` command to not overwrite existing\\n keys [#1136](https://github.com/input-output-hk/hydra/issues/1136)\\n- Fixed the rewritten `hydra-tui`\\n [#1113](https://github.com/input-output-hk/hydra/issues/1113)\\n [#1137](https://github.com/input-output-hk/hydra/issues/1137)\\n- Fetch network configurations instead of packaging them into\\n hydra-cluster (smoke) test suite\\n [#1156](https://github.com/input-output-hk/hydra/pull/1156)\\n- Reviewing PRs and ADRs from the community (SundaeSwap)\\n [#1118](https://github.com/input-output-hk/hydra/pull/1118)\\n [#1157](https://github.com/input-output-hk/hydra/pull/1157)\\n- Hydra tally experiment (Cardano Foundation) deployed to mainnet\\n\\n### What are the goals of next week\\n\\n- Tackle reported bugs\\n- Shepherd contributed off-line mode PR to the main codeline\\n- Improve chain observation tool to include more data and refactor\\n existing code towards more stateless observation\\n- Start work on incremental decommits"},{"id":"2023-11-10-sre","metadata":{"permalink":"/cardano-updates/2023-11-10-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-10-sre.md","source":"@site/blog/2023-11-10-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-11-10T00:00:00.000Z","formattedDate":"November 10, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":2.225,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-11-10-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-11-10-hydra"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-11-09-db-sync"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent changes, updates or improvements include:\\n* Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the [cardano-playground](https://github.com/input-output-hk/cardano-playground) stack\\n\\n## Lower level summary\\n\\n### Capkgs\\n* Minor bug fix and db-sync sanchonet package update: [capkgs-compare](https://github.com/input-output-hk/capkgs/compare/b1f1cbd...994696f)\\n\\n### Cardano-parts\\n* General migration support PR for cardano-world to cardano-playground [cardano-parts-pull-18](https://github.com/input-output-hk/cardano-parts/pull/18)\\n * Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground\\n * Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes\\n * Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains\\n * The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state\\n * The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable\\n * Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0\\n * For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true\\n * Template updates include:\\n * Adds optional TF AZ declaration on ec2 resources\\n * Adds a cardano node p2p dashboard to the grafana cloud stack\\n * Adds a dbsync pool performance analysis query\\n * Updates python distribute and delegation scripts from world for playground compatibility\\n * Starts a python script lib to reduce shared code among the python scripts\\n * Several justfile improvements and new recipes\\n * More detail is available in the PR description\\n* Update submit action script for 8.6 [cardano-parts-pull-19](https://github.com/input-output-hk/cardano-parts/pull/19)\\n* Update scripts for 8.6.0-pre [cardano-parts-pull-21](https://github.com/input-output-hk/cardano-parts/pull/21)\\n * Fixes subcommand names based on ERA_CMD\\n * Adds deposits to some commands\\n * Separates CC cold/hot key generation as host authorization has to occur after action is approved\\n * CC voting enabled in vote job\\n\\n### Cardano-playground\\n* Migration PR to largely complete the network migration from cardano-world to cardano-playground: [cardano-playground-pull-5](https://github.com/input-output-hk/cardano-playground/pull/5)\\n * Adds re-spun private chain network\\n * Migrates shelley-qa chain network from world\\n * Justfile improvements and new recipes\\n * Improve concurrent environment chain support\\n * More detail is available in the PR description\\n\\n### Iohk-nix\\n* Migration to play: [iohk-nix-pull-561](https://github.com/input-output-hk/iohk-nix/pull/561)\\n * Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org\\n * Remove deprecated cardano-lib p2p network environment\\n * Update sanchonet chain with respin changes\\n * Update private chain with respin changes\\n * Bump private and shelley-qa chains to sanchonet equivalent conway genesis\\n * Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing\\n\\n### Sanchonet-demo\\n* Update for cardano-node 8.6.0-pre demo: [sanchonet-demo-commit](https://github.com/input-output-hk/sanchonet-demo/commit/b54da94057ac0949421918208fd04795d029447d)"},{"id":"2023-11-09-db-sync","metadata":{"permalink":"/cardano-updates/2023-11-09-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-09-db-sync.md","source":"@site/blog/2023-11-09-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-11-09T00:00:00.000Z","formattedDate":"November 9, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.485,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-11-09-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-11-10-sre"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-11-08-ledger"}},"content":"## High level summary\\nWe have created new tag `sancho-2-2-0`, which integrates missing Conway feautures and some minor fix\\ntags `sancho-2-1-0`, `sancho-2-0-1`.\\nWe have completed the initial implementation for the bootstrap instance objective.\\n\\n## Lower level summary\\n- Add a new `--disable-gov` flag which disabled Conway ferautures\\n[#1558](https://github.com/input-output-hk/cardano-db-sync/pull/1558)\\n- Fix of the committee key size\\n[#1544](https://github.com/input-output-hk/cardano-db-sync/pull/1544)\\n- Workaround a ledger issue with unregistered pools\\n[#1542](https://github.com/input-output-hk/cardano-db-sync/pull/1542)\\n- Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs\\n[#1539](https://github.com/input-output-hk/cardano-db-sync/pull/1539)\\n- Rename offline to offchain\\n[#1533](https://github.com/input-output-hk/cardano-db-sync/pull/1533)\\n- Transfer existing tests to Conway era\\n[#1529](https://github.com/input-output-hk/cardano-db-sync/pull/1529)\\n[#1547](https://github.com/input-output-hk/cardano-db-sync/pull/1547)"},{"id":"2023-11-08-ledger","metadata":{"permalink":"/cardano-updates/2023-11-08-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-08-ledger.md","source":"@site/blog/2023-11-08-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-11-08T00:00:00.000Z","formattedDate":"November 8, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.685,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-11-08-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-11-09-db-sync"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-08-mithril"}},"content":"## High level summary\\n\\nThis update contains mostly improvements to quality of Conway era implementation and\\ntooling that we use for testing Ledger. Major Conway bugs that were discovered and\\nsquashed are:\\n\\n* PParamsUpdate proposals will now correctly use DRep thresholds for ratification\\n* Treasury withdrawals are now properly enacted.\\n* Corrected snapshotting and DRep Stake Distribution Pulser initialization\\n* Delegation to non-existent Stake pool is no longer possible\\n\\nOther important quality of life improvements are addition of reusable interfaces for an\\nordered set `OSet` and ordered map `OMap`. Which allowed us to disable duplicate\\ncertificates and proposals in a transaction. As a precursor to `PlutusV3` integration, a\\nserious reorganization of Plutus related functionality was performed.\\n\\nConway related additions that are noteworthy: Conway Ledger events, disallowing voting on\\nexpired proposals, addition of Anchor to Constitutional Committee resignation proposals.\\n\\nSignificant improvements have been made to a specialized \\"Imp\\" test library that allows us\\nwriting concise stateful unit tests for verifying the Ledger logic. Serious progress has\\nbeen made on the conformance testing, where we can now interface with Haskell generated\\ncode from the Agda specification. Serialization testing has been extended to increase\\nbinary conformance coverage.\\n\\n\\n## Low level summary\\n\\n### Conway\\n\\n* [pull-3808] - Enhance `CommitteeMembersState` query to return quorum and NoConfidence\\n* [pull-3801] - Fix epoch rule and tests\\n* [pull-3803] - Fix delegation validation\\n* [pull-3759] - Reshuffle things to the DRepPulser incorporates some snap shot things\\n* [pull-3779] - Prevent duplicate certs and proposals\\n* [pull-3794] - Added anchor to resign certs\\n* [pull-3797] - Cleanup JSON instances for Conway governance\\n* [pull-3848] - Plutus modules restructure\\n* [pull-3840] - Fix anomalies in Deposits in the Conway Era\\n* [pull-3856] - Add governance related ledger events\\n* [pull-3825] - Prevent voting on expired GovActions\\n* [pull-3831] - Treasury withdrawal fix\\n* [pull-3791] - Use a Data.OMap.Strict to replace ProposalsSnapshot\\n* [pull-3836] - PParamsUpdate enactment fix\\n* [pull-3846] - Revert argument order swap.\\n\\n### Testing\\n\\n* [pull-3782] - Move `ImpTest` to Shelley testlib\\n* [pull-3842] - Imp improvements\\n* [pull-3844] - Add mappings to Agda types\\n* [pull-3853] - Fix strange assertion failure, which hides real Block too big problem.\\n* [pull-3809] - CDDL roundtrip testing\\n* [pull-3832] - Treasury withdrawals tests\\n* [pull-3839] - Added `cardano-ledger-conformance`\\n* [pull-3841] - Add `sha256` to `cardano-ledger-executable-spec`\\n\\n### Improvements and releasing\\n\\n* [pull-3843] - Add ...WithLogs versions of evalScripts and friends\\n* [pull-3795] - Bump plutus to 1.15\\n* [pull-3798] - Bump urllib3 from 1.26.17 to 1.26.18 in /doc\\n* [pull-3799] - Changes needed for 8.6 release\\n* [pull-3807] - Add invalidBeforeL and invalidHereAfterL functions\\n* [pull-3819] - Fixups needed for a release\\n* [pull-3829] - Post release CHANGELOG version bumps\\n* [pull-3830] - Bump aeson to 2.2\\n* [pull-3833] - Backport release cardano-ledger-conway-1.10.1.0\\n* [pull-3828] - Add changelog for node release 8.6\\n\\n[pull-3759]: https://github.com/input-output-hk/cardano-ledger/pull/3759\\n[pull-3795]: https://github.com/input-output-hk/cardano-ledger/pull/3795\\n[pull-3794]: https://github.com/input-output-hk/cardano-ledger/pull/3794\\n[pull-3798]: https://github.com/input-output-hk/cardano-ledger/pull/3798\\n[pull-3797]: https://github.com/input-output-hk/cardano-ledger/pull/3797\\n[pull-3782]: https://github.com/input-output-hk/cardano-ledger/pull/3782\\n[pull-3779]: https://github.com/input-output-hk/cardano-ledger/pull/3779\\n[pull-3801]: https://github.com/input-output-hk/cardano-ledger/pull/3801\\n[pull-3803]: https://github.com/input-output-hk/cardano-ledger/pull/3803\\n[pull-3799]: https://github.com/input-output-hk/cardano-ledger/pull/3799\\n[pull-3808]: https://github.com/input-output-hk/cardano-ledger/pull/3808\\n[pull-3807]: https://github.com/input-output-hk/cardano-ledger/pull/3807\\n[pull-3819]: https://github.com/input-output-hk/cardano-ledger/pull/3819\\n[pull-3809]: https://github.com/input-output-hk/cardano-ledger/pull/3809\\n[pull-3825]: https://github.com/input-output-hk/cardano-ledger/pull/3825\\n[pull-3829]: https://github.com/input-output-hk/cardano-ledger/pull/3829\\n[pull-3830]: https://github.com/input-output-hk/cardano-ledger/pull/3830\\n[pull-3833]: https://github.com/input-output-hk/cardano-ledger/pull/3833\\n[pull-3831]: https://github.com/input-output-hk/cardano-ledger/pull/3831\\n[pull-3832]: https://github.com/input-output-hk/cardano-ledger/pull/3832\\n[pull-3839]: https://github.com/input-output-hk/cardano-ledger/pull/3839\\n[pull-3791]: https://github.com/input-output-hk/cardano-ledger/pull/3791\\n[pull-3841]: https://github.com/input-output-hk/cardano-ledger/pull/3841\\n[pull-3828]: https://github.com/input-output-hk/cardano-ledger/pull/3828\\n[pull-3836]: https://github.com/input-output-hk/cardano-ledger/pull/3836\\n[pull-3846]: https://github.com/input-output-hk/cardano-ledger/pull/3846\\n[pull-3842]: https://github.com/input-output-hk/cardano-ledger/pull/3842\\n[pull-3843]: https://github.com/input-output-hk/cardano-ledger/pull/3843\\n[pull-3844]: https://github.com/input-output-hk/cardano-ledger/pull/3844\\n[pull-3853]: https://github.com/input-output-hk/cardano-ledger/pull/3853\\n[pull-3848]: https://github.com/input-output-hk/cardano-ledger/pull/3848\\n[pull-3840]: https://github.com/input-output-hk/cardano-ledger/pull/3840\\n[pull-3856]: https://github.com/input-output-hk/cardano-ledger/pull/3856"},{"id":"2023-11-08-mithril","metadata":{"permalink":"/cardano-updates/2023-11-08-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-08-mithril.md","source":"@site/blog/2023-11-08-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-11-08T00:00:00.000Z","formattedDate":"November 8, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":0.805,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-11-08-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-11-08-ledger"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-11-01-consensus"}},"content":"## High level overview\\n\\nThis week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files.\\n\\nFinally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the \'release-mainnet\' aggregator.\\n\\n## Low level overview\\n- Worked on the issue **Prototype a P2P relay with `libp2p`** [#1300](https://github.com/input-output-hk/mithril/issues/1300)\\n- Worked on the issue **Light Wallet: Release `mithril-client` library** [#1311](https://github.com/input-output-hk/mithril/issues/1311)\\n- Worked on the issue **Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC** [#1283](https://github.com/input-output-hk/mithril/issues/1283)\\n- Worked on the issue **`release-mainnet` aggregator is unreachable** [#1310](https://github.com/input-output-hk/mithril/issues/1310)\\n- Completed the issue **Client Docker package is incorrect** [#1322](https://github.com/input-output-hk/mithril/issues/1322)"},{"id":"2023-11-01-consensus","metadata":{"permalink":"/cardano-updates/2023-11-01-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-01-consensus.md","source":"@site/blog/2023-11-01-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-11-01T00:00:00.000Z","formattedDate":"November 1, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.44,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-11-01-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-08-mithril"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-01-mithril"}},"content":"## High level summary\\n\\n\\nThis week the Consensus team made progress on two fronts: the question of [survivable eclipse duration](https://github.com/input-output-hk/ouroboros-consensus/pull/422), which is part of our work [supporting Genesis delivery](https://github.com/input-output-hk/ouroboros-consensus/issues/427), and how to [improve the handling of blocks from the future](https://github.com/input-output-hk/ouroboros-network/issues/4251).\\nRegarding the UTxO-HD branch, we managed to run a node with [legacy blocks](https://github.com/input-output-hk/ouroboros-consensus/issues/344), which is syncing with mainnet, up to including Alonzo.\\nWe also [investigated](https://github.com/input-output-hk/ouroboros-consensus/issues/465#issuecomment-1788685122) a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release."},{"id":"2023-11-01-mithril","metadata":{"permalink":"/cardano-updates/2023-11-01-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-01-mithril.md","source":"@site/blog/2023-11-01-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-11-01T00:00:00.000Z","formattedDate":"November 1, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":0.895,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-11-01-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-11-01-consensus"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-27-hydra"}},"content":"## High level overview\\n\\nThis week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the `release-mainnet` aggregator.\\n\\nFinally, they implemented new Docker images that build the Mithril nodes on the \'devnet\' faster and fixed some regressions in the Mithril client CLI.\\n\\n## Low level overview\\n- Worked on the issue **P2P Networking - Proof of Concept** [#1300](https://github.com/input-output-hk/mithril/issues/1300)\\n- Completed the issue **Build `mithril-common` and `mithril-client` in WASM PoC** [#1284](https://github.com/input-output-hk/mithril/issues/1284)\\n- Completed the issue **Fix `devnet` Mithril Docker images** [#1272](https://github.com/input-output-hk/mithril/issues/1272\\n- Worked on the issue **Light Wallet: Release `mithril-client` library** [#1311](https://github.com/input-output-hk/mithril/issues/1311)\\n- Worked on the issue **Compute deterministic Cardano UTxO set PoC** [#1283](https://github.com/input-output-hk/mithril/issues/1283)\\n- Worked on the issue **`release-mainnet` aggregator is unreachable** [#1310](https://github.com/input-output-hk/mithril/issues/1310)\\n- Completed the issue **Client regressions in snapshot list and download** [#1321](https://github.com/input-output-hk/mithril/issues/1321)"},{"id":"2023-10-27-hydra","metadata":{"permalink":"/cardano-updates/2023-10-27-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-hydra.md","source":"@site/blog/2023-10-27-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-10-27T00:00:00.000Z","formattedDate":"October 27, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.895,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-10-27-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-01-mithril"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-10-27-network"}},"content":"### High-level summary\\n\\nThis week, the Hydra team fixed the `gen-hydra-keys` command to avoid\\noverwriting existing keys, and resolved issues related to the rewritten\\n`hydra-tui`. They also worked on a \\\\\\"dirt road\\\\\\" implementation for the\\n\\\\\\"Ignored init tx\\\\\\" notification, improving the robustness of the system.\\n\\nThe team finalized preparations for the Cardano Summit presentation, including\\nimplementation of the `hydra-poll` example DApp.\\n\\nIf you happen to read this and attend the Summit in Dubai, make sure to check\\nout our Masterclass about \\\\\\"Developing Hydra + Mithril for Scaling Cardano\\\\\\" on\\nFriday, November 3 at 14:00-15:30 local time in the \\\\\\"Al Dar\\\\\\" room!\\n\\n### What did the team achieve this week\\n\\n- Fix `gen-hydra-keys` command to not overwrite existing keys\\n [#1136](https://github.com/input-output-hk/hydra/issues/1136)\\n- Fixed the rewritten `hydra-tui`\\n [#1113](https://github.com/input-output-hk/hydra/issues/1113)\\n [#1137](https://github.com/input-output-hk/hydra/issues/1137)\\n- Finalized cardano summit preparation\\n [#1109](https://github.com/input-output-hk/hydra/issues/1109)\\n- Implemented the `hydra-poll` example DApp [link to\\n repository](https://github.com/cardano-scaling/hydra-poll)\\n- Dirt road implementation for \\\\\\"Ignored init tx\\\\\\" notification\\n [#529](https://github.com/input-output-hk/hydra/issues/529)\\n\\n### What are the goals of next week\\n\\n- Attend cardano summit and deliver presentation\\n- Clarify / close user created issues\\n- Build `aarch64-darwin` binaries in CI"},{"id":"2023-10-27-network","metadata":{"permalink":"/cardano-updates/2023-10-27-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-network.md","source":"@site/blog/2023-10-27-network.md","title":"Network Team Update","description":"High-level overview of sprint 47","date":"2023-10-27T00:00:00.000Z","formattedDate":"October 27, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.765,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-10-27-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-27-hydra"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-10-27-sre"}},"content":"## High-level overview of [sprint 47][sprint-47]\\n\\n### Bootstrap Peers\\n\\nWe continued to review the process of bootstrap peers, see [ouroboros-network#4555]\\n\\n### CI / Tests\\n\\nWe investigated our CI issues. We found a memory leak in `typed-protocols`\\nfunction used for testing codecs which triggered out of memory manager (OOM) on\\nsome platforms ([typed-protocols#43]); we also found a bug in the connection manager which resulted in CI\\n`timeouts` (see [connection-manager-fix]). \\n\\n### KeepAlive client\\n\\nWe found two small issues with the keep-alive client, which were addressed\\nby Karl Knutsson ([Cardano Foundation][CF]), [ouroboros-network#4689].\\n\\n### Galois\\n\\nWe merged two large PRs prepared by [Galois]:\\n* [inspect `error` call sites][ouroboros-network#4660]\\n* [implement micro benchmarks for `PeerMetrics`][ouroboros-network#4663]\\n\\n### Cardano Network Service Assurance (CNSA)\\n\\nGalois made the following progress on CNSA:\\n* a simple [InfuxDB] database backend has been added;\\n* the documentation has been updated;\\n* internal improvements to the code;\\n* progress on a new \\"CSNA analysis\\" that provides, for each sampler node, the\\n block download throughput in bytes over time.\\n\\n### New CHaP Release\\n\\nWe cut a new release of `ouroboros-netowrk` packages to `CHaP`: [chap#547]\\n\\n## More details\\n\\n### CI / Tests\\n\\nWe improved the memory footprint of some of our tests by analysing a stream of\\n`IOSim` traces without retaining them, see [ouroboros-network#4696]\\n\\nAs a safety measure, we introduced an upper bound for heap memory used by test\\nartefacts in our `nix` tests. We use `200MB` limit for all tests except for\\n`network-mux` tests which use `350MB` limit, see [ouroboros-network#4702].\\n\\nWe refactored one of our tests to use ephemeral ports thus allowing it to\\nrun concurrently, see [ouroboros-network#4702].\\n\\nWe merged [ouroboros-network#4623] which fixes a bunch of test failures.\\n* [inbound-governor: connection leak][ouroboros-network#4694]\\n* [connection-manager: assertion failure][ouroboros-network#4607]\\n* [not released connection][ouroboros-network#4605]\\n\\nAll of them were due to a bug in test logic rather than a bug in production\\ncode.\\n\\n### Release Process\\n\\nWe updated our release process & associated scripts, see\\n[ouroboros-network#4705].\\n\\n[CF]: https://cardanofoundation.org/\\n[Galois]: https://galois.com/\\n[chap#547]: https://github.com/input-output-hk/cardano-haskell-packages/pull/547\\n[connection-manager-fix]: https://github.com/input-output-hk/ouroboros-network/pull/4696/commits/010d9b2bd76356373d8c139eaedd8aea7ad90680\\n[ouroboros-network#4555]: https://github.com/input-output-hk/ouroboros-network/pull/4555\\n[ouroboros-network#4605]: https://github.com/input-output-hk/ouroboros-network/issues/4605\\n[ouroboros-network#4607]: https://github.com/input-output-hk/ouroboros-network/issues/4607\\n[ouroboros-network#4623]: https://github.com/input-output-hk/ouroboros-network/pull/4623\\n[ouroboros-network#4660]: https://github.com/input-output-hk/ouroboros-network/issues/4660\\n[ouroboros-network#4663]: https://github.com/input-output-hk/ouroboros-network/issues/4663\\n[ouroboros-network#4689]: https://github.com/input-output-hk/ouroboros-network/issues/4689\\n[ouroboros-network#4694]: https://github.com/input-output-hk/ouroboros-network/issues/4694\\n[ouroboros-network#4696]: https://github.com/input-output-hk/ouroboros-network/pull/4696\\n[ouroboros-network#4702]: https://github.com/input-output-hk/ouroboros-network/pull/4702\\n[ouroboros-network#4705]: https://github.com/input-output-hk/ouroboros-network/pull/4705\\n[sprint-47]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+47%22\\n[typed-protocols#43]: https://github.com/input-output-hk/typed-protocols/pull/43\\n[InfluxDB]: https://www.influxdata.com/"},{"id":"2023-10-27-sre","metadata":{"permalink":"/cardano-updates/2023-10-27-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-sre.md","source":"@site/blog/2023-10-27-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-10-27T00:00:00.000Z","formattedDate":"October 27, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":1.405,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-10-27-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-10-27-network"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-25-mithril"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent changes, updates or improvements include:\\n* Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the [cardano-playground](https://github.com/input-output-hk/cardano-playground) stack\\n\\n## Lower level summary\\n\\n### Capkgs\\n* Adds offchain-metadata-tools, dbsync sanchonet updates: [capkgs-compare](https://github.com/input-output-hk/capkgs/compare/b197e22...b1f1cbd)\\n\\n### Cardano-parts\\n* General package updates, modules improvements and template recipes to support network migration from world to playground [cardano-parts-pull-17](https://github.com/input-output-hk/cardano-parts/pull/17)\\n * Bumps cardano-db-sync-ng to sancho-2-0-0 tag\\n * Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play\\n * Adds more machine system bins and devShell bins for scripting and debug purposes\\n * Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module\\n * Adds profile-cardano-node-topology module for a simplified interface to most common topology needs\\n * Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs\\n * Adds a topology function to filter self from group machines with an allowList for matching infixes\\n * Adds metadata-server and related offchain-metadata-tools bins from capkgs\\n * Updates justfile template with:\\n * a new query-all recipe for getting status of multiple concurrent running environments\\n * a new set-default-cardano-env recipe for fast switching between environments\\n * a new start-demo recipe for forking a custom env into conway\\n * a new start-node recipe for generic environment start\\n * a new stop-node recipe for generic environment stop\\n * updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions\\n * updated query-tip recipe to a generic query tip compatible with each environment\\n\\n### Cardano-playground\\n* Migrates sanchonet from world, prepares further migration and support automation: [cardano-playground-pull-4](https://github.com/input-output-hk/cardano-playground/pull/4)"},{"id":"2023-10-25-mithril","metadata":{"permalink":"/cardano-updates/2023-10-25-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-25-mithril.md","source":"@site/blog/2023-10-25-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-10-25T00:00:00.000Z","formattedDate":"October 25, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.125,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-10-25-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-10-27-sre"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-10-24-node-cli-api"}},"content":"## High level overview\\n\\nThis week, the Mithril team released a new distribution [`2342.0`](https://github.com/input-output-hk/mithril/releases/tag/2342.0). This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes.\\n\\nThey also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files. \\n\\nFinally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the `release-mainnet` aggregator, and enhanced the Mithril explorer UI.\\n\\n## Low level overview\\n- Worked on the issue **P2P Networking - Proof of Concept** [#1300](https://github.com/input-output-hk/mithril/issues/1300)\\n- Completed the issue **Make `mithril-client` crate a library** [#1141](https://github.com/input-output-hk/mithril/issues/1141)\\n- Worked on the issue **Compute deterministic Cardano UTxO set PoC** [#1283](https://github.com/input-output-hk/mithril/issues/1283)\\n- Completed the issue **`ProtocolKeyRegistration` creates performance bottleneck in aggregator** [#1187](https://github.com/input-output-hk/mithril/issues/1187)\\n- Worked on the issue **Fix `devnet` Mithril Docker images** [#1272](https://github.com/input-output-hk/mithril/issues/1272)\\n- Worked on the issue **`release-mainnet` aggregator is unreachable** [#1310](https://github.com/input-output-hk/mithril/issues/1310)\\n- Worked on the issue **Build `mithril-common` and `mithril-client` in WASM PoC** [#1284](https://github.com/input-output-hk/mithril/issues/1284)\\n- Completed the issue **Display a summary of signers before the full list in explorer** [#1133](https://github.com/input-output-hk/mithril/issues/1133)\\n- Completed the issue **Add certificates list in explorer** [#1184](https://github.com/input-output-hk/mithril/issues/1184)\\n- Completed the issue **`CoreVerifier` setup does not compute `total_stake` correctly** [#1306](https://github.com/input-output-hk/mithril/issues/1306)"},{"id":"2023-10-24-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-10-24-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-24-node-cli-api.md","source":"@site/blog/2023-10-24-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-10-24T00:00:00.000Z","formattedDate":"October 24, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.68,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-10-24-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-25-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-20-hydra"}},"content":"# 2023-10-11 - 2023-10-24\\n\\n## High level summary\\n\\nCARDANO-CLI\\n- Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified.\\n- `stake-address-info` now shows deposits balance.\\n- Added `conway governance action view` to allow to inspect governance action files before submitting them on a transaction.\\n- `build-raw` support for `--vote-file` and `--proposal-file`\\n\\n\\nCARDANO-API\\n- Support DRep extended keys\\n- Support Plutus V1 in Conway\\n\\n### cardano-cli\\n- [Upgrade to `cardano-api-8.28.0.0`](https://github.com/input-output-hk/cardano-cli/pull/394)\\n- [Simplify `toTxOutInAnyEra`](https://github.com/input-output-hk/cardano-cli/pull/393)\\n- [Upgrade to `cardano-api-8.27.0.0`](https://github.com/input-output-hk/cardano-cli/pull/390)\\n- [Upgrade to `cardano-api-8.26.0.0`](https://github.com/input-output-hk/cardano-cli/pull/389)\\n- [Check that poll answer index is not negative, to avoid a Prelude.!! error](https://github.com/input-output-hk/cardano-cli/pull/380)\\n- [drep registration-certificate: add a golden test](https://github.com/input-output-hk/cardano-cli/pull/379)\\n- [Disambiguate treasury withdrawal flags](https://github.com/input-output-hk/cardano-cli/pull/378)\\n- [Make `stake-address-info` query also return deposit](https://github.com/input-output-hk/cardano-cli/pull/375)\\n- [Add `conway governance action view`](https://github.com/input-output-hk/cardano-cli/pull/374)\\n- [Ch/clearer anchor flags](https://github.com/input-output-hk/cardano-cli/pull/372)\\n- [Command argument types for `transaction` commands](https://github.com/input-output-hk/cardano-cli/pull/371)\\n- [Remove eras\' constitution-hash](https://github.com/input-output-hk/cardano-cli/pull/370)\\n- [Shelley to Alonzo: add create-genesis-key-delegation-certificate to governance](https://github.com/input-output-hk/cardano-cli/pull/368)\\n- [Enable reading of Conway `TxWitness`es](https://github.com/input-output-hk/cardano-cli/pull/367)\\n- [Make `governance action create-protocol-parameters-update` Conway onwards only](https://github.com/input-output-hk/cardano-cli/pull/366)\\n- [`transaction build-raw` support for `--vote-file` and `--proposal-file`](https://github.com/input-output-hk/cardano-cli/pull/365)\\n- [Command argument types for governance key commands](https://github.com/input-output-hk/cardano-cli/pull/364)\\n- [Add test of voting using a cc hot key](https://github.com/input-output-hk/cardano-cli/pull/363)\\n\\n### cardano-api\\n- [Add Show instance for FoldBlocksError](https://github.com/input-output-hk/cardano-api/pull/338)\\n- [Upgrade typed-protocols to 1.1.1](https://github.com/input-output-hk/cardano-api/pull/336)\\n- [Improved validity range handling](https://github.com/input-output-hk/cardano-api/pull/332)\\n- [New version `cardano-api-8.28.0.0`](https://github.com/input-output-hk/cardano-api/pull/331)\\n- [Delete `AlonzoEraOnly`](https://github.com/input-output-hk/cardano-api/pull/330)\\n- [New `shelleyToAlonzoEraToShelleyToBabbageEra` function](https://github.com/input-output-hk/cardano-api/pull/329)\\n- [DRep extended key: add CastVerificationKeyRole](https://github.com/input-output-hk/cardano-api/pull/327)\\n- [New version `cardadno-api-8.27.0.0`](https://github.com/input-output-hk/cardano-api/pull/326)\\n- [Delete unnecessary calls to `shelleyBasedEraConstraints`](https://github.com/input-output-hk/cardano-api/pull/325)\\n- [New version `cardadno-api-8.27.0.0`](https://github.com/input-output-hk/cardano-api/pull/324)\\n- [Support Plutus V1 in Conway](https://github.com/input-output-hk/cardano-api/pull/323)\\n- [Parameterize GovernanceAction on era ](https://github.com/input-output-hk/cardano-api/pull/322)\\n- [Support DRep extended keys](https://github.com/input-output-hk/cardano-api/pull/320)\\n- [New version `cardano-api-8.26.0.0`](https://github.com/input-output-hk/cardano-api/pull/317)\\n- [Haddock document the case functions, so that their behavior is easier to understand when calling them](https://github.com/input-output-hk/cardano-api/pull/314)\\n- [Avoid `IsShelleyBasedEra` and `IsCardanoEra` where possible](https://github.com/input-output-hk/cardano-api/pull/313)\\n- [New `MaryEraOnly` eon. Disjoint functions](https://github.com/input-output-hk/cardano-api/pull/312)\\n\\n### cardano-node\\n\\n### cardano-testnet\\n- [Factor out file creation for SPO](https://github.com/input-output-hk/cardano-node/pull/5515)\\n\\n### docs\\n- [Tracer documentation generation enhacements ](https://github.com/input-output-hk/cardano-node/pull/5504)\\n\\n### CI & project maintenance"},{"id":"2023-10-20-hydra","metadata":{"permalink":"/cardano-updates/2023-10-20-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-20-hydra.md","source":"@site/blog/2023-10-20-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-10-20T00:00:00.000Z","formattedDate":"October 20, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.84,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-10-20-hydra","authors":["ffakenz"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-10-24-node-cli-api"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-10-18-consensus"}},"content":"## High-level summary\\n\\nThis week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023.\\n\\nIn addition, they improved the Hydra node API\'s submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON.\\nThis improvement offers users greater flexibility and ease of interaction with the API.\\n\\nFinally, the team has followed up on the TUI brick upgrade to version 1.10.\\nThis effort has resulted in addressing minor details and enhancing the overall user experience with the TUI.\\n\\n\\n## What did the team achieve this week\\n\\n- Prepare presentation and workshop for Cardano Summit.\\n- More TUI fixes and improvements.\\n + [#1127](https://github.com/input-output-hk/hydra/pull/1127)\\n + [#1120](https://github.com/input-output-hk/hydra/issues/1120)\\n- Upgrade GHC from 9.2.8 -> 9.6.2 [#1105](https://github.com/input-output-hk/hydra/pull/1105)\\n- Solved user issue related to submitting transactions in cbor format [#1111](https://github.com/input-output-hk/hydra/issues/1111).\\n- Fix hydraw connection issue making it more stable [#1121](https://github.com/input-output-hk/hydra/pull/1121).\\n\\n\\n## What are the goals of next week\\n\\n- Work on hydra-poll dApp for Cardano summit.\\n- Start the work on packaging hydra-node and related services."},{"id":"2023-10-18-consensus","metadata":{"permalink":"/cardano-updates/2023-10-18-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-18-consensus.md","source":"@site/blog/2023-10-18-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-10-18T00:00:00.000Z","formattedDate":"October 18, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.65,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-10-18-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-20-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-18-mithril"}},"content":"## High level summary\\n\\nDuring the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node.\\n\\n### UTxO-HD\\n\\n- The Plutus workload benchmark for the in-memory backend [showed no regressions](https://github.com/input-output-hk/ouroboros-consensus/issues/203#issuecomment-1768560330) for the metrics of interest, but it does show an increase in resource usage.\\n- We got additional ad-hoc [measurements](https://github.com/input-output-hk/cardano-node/issues/5495#issuecomment-1768593069) on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB.\\n- We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.\\n\\n### Genesis\\n\\n- We produced the first draft for a Survivable Eclipse Duration Model ([422](https://github.com/input-output-hk/ouroboros-consensus/pull/422)).\\n\\n### Support\\n\\n- [Esgen](https://github.com/amesgen) finished his cycle as release engineer. Node [8.5.0](https://github.com/input-output-hk/cardano-node/releases/tag/8.5.0-pre) has been released.\\n- We resumed work on the subpar handling of block from the future ([4251](https://github.com/input-output-hk/ouroboros-network/issues/4251)).\\n- We prepared the integration of [new tracing events](https://github.com/input-output-hk/cardano-node/pull/5502) for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned [issue](https://github.com/input-output-hk/ouroboros-network/issues/4251))."},{"id":"2023-10-18-mithril","metadata":{"permalink":"/cardano-updates/2023-10-18-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-18-mithril.md","source":"@site/blog/2023-10-18-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-10-18T00:00:00.000Z","formattedDate":"October 18, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.07,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-10-18-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-10-18-consensus"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-10-15-network"}},"content":"## High level overview\\n\\nThis week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay.\\n\\nFinally, they enhanced the CI/CD to publish multiple packages to [crates.io](https://crates.io/) and started improving the developer experience with the Mithril devnet.\\n\\n## Low level overview\\n\\n- Published the security advisory **Mithril relay could expose Cardano block producer internal IP when updated** [#GHSA-9m3h-72xj-x2gq](https://github.com/input-output-hk/mithril/security/advisories/GHSA-9m3h-72xj-x2gq)\\n- Worked on the issue **P2P Networking - Proof of Concept** [#1300](https://github.com/input-output-hk/mithril/issues/1300)\\n- Worked on the issue **Make `mithril-client` crate a library** [#1141](https://github.com/input-output-hk/mithril/issues/1141)\\n- Worked on the issue **Compute deterministic Cardano transactions history PoC** [#1283](https://github.com/input-output-hk/mithril/issues/1283)\\n- Worked on the issue **`ProtocolKeyRegistration` creates performance bottleneck in aggregator** [#1187](https://github.com/input-output-hk/mithril/issues/1187)\\n- Completed the issue **Publish multiple packages to `crates.io`** [#1298](https://github.com/input-output-hk/mithril/issues/1298)\\n- Completed the issue **Rename public key published in releases** [#1292](https://github.com/input-output-hk/mithril/issues/1292)\\n- Completed the issue **Mithril networks infrastructure maintenance** [#1218](https://github.com/input-output-hk/mithril/issues/1218)\\n- Worked on the issue **Fix `devnet` Mithril Docker images** [#1272](https://github.com/input-output-hk/mithril/issues/1272)"},{"id":"2023-10-15-network","metadata":{"permalink":"/cardano-updates/2023-10-15-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-15-network.md","source":"@site/blog/2023-10-15-network.md","title":"Network Team Update","description":"High-level overview of sprint 46","date":"2023-10-15T00:00:00.000Z","formattedDate":"October 15, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":0.59,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-10-15-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-18-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-13-hydra"}},"content":"## High-level overview of [sprint 46][sprint-46]\\n\\n### Bootstrap Peers\\n\\nWe continued reviewing of bootstrap peers, see [ouroboros-network#4555].\\n\\n### Towards Typed Protocols 0.2.0.0\\n\\nWe diagnosed the performance regression of the new design. The work on\\n`typed-protocols` will be postponed. For more details see the\\n[typed-protocols#3]. As an outcome of the performance debugging we prepared\\n[PR][ouroboros-network#4691] which updates the `demo-ping-pong` and\\n`demo-chain-sync` applications.\\n\\n### Peer Sharing\\n\\nWe made progress in review of [ouroboros-network#4644], which simplifies the\\npeer sharing and fixes the [ouroboros-network#4642] issue.\\n\\n### Tech Debt\\n\\nWe reviewed the [ouroboros-network#3836] PR which inspects all the uses of\\n`error` in `ouroboros-network`. The PR was prepared by Galois.\\n\\n\\n[sprint-46]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+46%22\\n[typed-protocols#3]: https://github.com/input-output-hk/typed-protocols/pull/3\\n[ouroboros-network#3836]: https://github.com/input-output-hk/ouroboros-network/pull/3836\\n[ouroboros-network#4555]: https://github.com/input-output-hk/ouroboros-network/pull/4555\\n[ouroboros-network#4642]: https://github.com/input-output-hk/ouroboros-network/pull/4642\\n[ouroboros-network#4644]: https://github.com/input-output-hk/ouroboros-network/pull/4644\\n[ouroboros-network#4691]: https://github.com/input-output-hk/ouroboros-network/pull/4691"},{"id":"2023-10-13-hydra","metadata":{"permalink":"/cardano-updates/2023-10-13-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-hydra.md","source":"@site/blog/2023-10-13-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-10-13T00:00:00.000Z","formattedDate":"October 13, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.745,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-10-13-hydra","authors":["ffakenz"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-10-15-network"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-10-13-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team\'s primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity.\\n\\nThey also completed the exploration of potentially moving the Plutus validator scripts to Aiken.\\n\\nAdditionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project\'s structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project.\\n\\n\\n## What did the team achieve this week\\n\\n- Network Resilience Persistence (#1101)[https://github.com/input-output-hk/hydra/pull/1101].\\n- Upgrade brick on TUI (#1103)[https://github.com/input-output-hk/hydra/pull/1103].\\n- Aiken commit validator translation (#1072)[https://github.com/input-output-hk/hydra/pull/1072].\\n- Fixed some bugs in our TUI client.\\n\\n\\n## What are the goals of next week\\n\\n- Prepare presentation and workshop for Cardano Summit.\\n- Work on hydra-poll dApp for Cardano summit.\\n- Start the work on packaging hydra-node and related services."},{"id":"2023-10-13-ledger","metadata":{"permalink":"/cardano-updates/2023-10-13-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-ledger.md","source":"@site/blog/2023-10-13-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-10-13T00:00:00.000Z","formattedDate":"October 13, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":0.965,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-10-13-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-13-hydra"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-10-13-sre"}},"content":"## High level summary\\n\\nThe Ledger team has been shifting focus from implementing Conway related features to\\ntesting. For this reason there is a very little amount features that are reported this\\ntime aorund. Notable Conway related changes are a specialized ledger query for getting\\nConstitutional Committee state and prevention of submitting proposal procedures that have\\nno valid path to enactment.\\n\\nTesting related work was mainly on a constraint base system as well as on roundtrip\\nserialization. As a result of this extra testing a bug in Conway Genesis serialization\\nwas eliminated.\\n\\n## Low level summary\\n\\n### Conway era\\n\\n* [pull-3768] - Fail proposal on invalid prevGovActionId\\n* [pull-3781] - CommitteeState query\\n\\n### Integration and releasing\\n\\n* [pull-3774] - Bump urllib3 from 1.26.10 to 1.26.17 in /doc\\n* [pull-3770] - cabal.project: Bump index states\\n* [pull-3778] - Bump plutus to 1.14\\n\\n### Testing\\n\\n* [pull-3769] - Add roundtrip testing by validating FlatTerm\\n* [pull-3783] - Update TranslationInstance.hs\\n* [pull-3775] - Refactor and improve constraint based STS tests\\n* [pull-3793] - Fix sums with negative RHS.\\n\\n[pull-3774]: https://github.com/input-output-hk/cardano-ledger/pull/3774\\n[pull-3770]: https://github.com/input-output-hk/cardano-ledger/pull/3770\\n[pull-3778]: https://github.com/input-output-hk/cardano-ledger/pull/3778\\n[pull-3769]: https://github.com/input-output-hk/cardano-ledger/pull/3769\\n[pull-3768]: https://github.com/input-output-hk/cardano-ledger/pull/3768\\n[pull-3781]: https://github.com/input-output-hk/cardano-ledger/pull/3781\\n[pull-3783]: https://github.com/input-output-hk/cardano-ledger/pull/3783\\n[pull-3775]: https://github.com/input-output-hk/cardano-ledger/pull/3775\\n[pull-3793]: https://github.com/input-output-hk/cardano-ledger/pull/3793"},{"id":"2023-10-13-sre","metadata":{"permalink":"/cardano-updates/2023-10-13-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-sre.md","source":"@site/blog/2023-10-13-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-10-13T00:00:00.000Z","formattedDate":"October 13, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":2.595,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-10-13-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-10-13-ledger"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-11-mithril"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent changes, updates or improvements include:\\n* Sanchonet environment was updated to 8.5.0-pre.\\n* Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring\\n\\n## Lower level summary\\n\\n### Capkgs\\n* Various improvements and fixes including:\\n * Add GHA cron schedule\\n * Add nix auto-gc to avoid running out of storage during large package set builds\\n * Add new packages to capkgs\\n * Reduce runner storage requirement leaving more room for builds\\n * Restructure capkgs attribute names to avoid package name collisions\\n * Return to non-musl builds for cardano packages to retain journald compatability\\n * Update cache usage to from file level to folder level to reduce network and latency overhead\\n * Commit diff: [capkgs-compare](https://github.com/input-output-hk/capkgs/compare/a274b72...b197e22)\\n\\n### Cardano-parts\\n* Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: [cardano-parts-pull-16](https://github.com/input-output-hk/cardano-parts/pull/16)\\n* Dbsync, smash, faucet and more: [cardano-parts-pull-15](https://github.com/input-output-hk/cardano-parts/pull/15)\\n * Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes\\n * Adds nginx vhost metrics exporter profile\\n * Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down\\n * Adds bash *-ng autocompletion compatible wrappers\\n * Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview\\n * Adds downstream grafana cloud dashboard as templates\\n * Adds downstream grafana cloud alerts as templates\\n * Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish\\n * Updates the basic profile with IOG cache and commonly used bins\\n * Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning\\n * Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks\\n * Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets\\n * Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration\\n * Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion\\n * Updates the colmena template with dbsync, smash, faucet machines profiles and roles\\n * Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns\\n * Bumps capkgs node-ng to 8.5.0-pre\\n\\n### Cardano-playground\\n* Dbsync, smash, faucet and more: [cardano-playground-pull-3](https://github.com/input-output-hk/cardano-playground/pull/3)\\n * Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview\\n * Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts\\n * Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change\\n * Optimizes machine sizes\\n * Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets\\n * Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion\\n * Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning\\n * Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration\\n\\n### Cardano-world\\n* Update sanchonet network to cardano-node 8.5.0: [cardano-world-commit](https://github.com/input-output-hk/cardano-world/commit/c8a480fa7cdb6eff4f8b4565450c57361ddfdec4)\\n\\n### Sanchonet-demo\\n* Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: [sanchonet-demo-commit](https://github.com/input-output-hk/sanchonet-demo/commit/4124465c0c663d11c8cf4ef80af18a5246f89b31)"},{"id":"2023-10-11-mithril","metadata":{"permalink":"/cardano-updates/2023-10-11-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-11-mithril.md","source":"@site/blog/2023-10-11-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-10-11T00:00:00.000Z","formattedDate":"October 11, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":0.77,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-10-11-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-10-13-sre"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-10-10-node-cli-api"}},"content":"## High level overview\\n\\nThis week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on [crates.io](https://crates.io/), the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures.\\n\\nFinally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI.\\n\\n## Low level overview\\n\\n- Worked on the issue **Make `mithril-client` crate a library** [#1141](https://github.com/input-output-hk/mithril/issues/1141)\\n- Worked on the issue **Compute deterministic Cardano transactions history PoC** [#1283](https://github.com/input-output-hk/mithril/issues/1283)\\n- Worked on the issue **`ProtocolKeyRegistration` creates performance bottleneck in aggregator** [#1187](https://github.com/input-output-hk/mithril/issues/1187)\\n- Completed the issue **Update `Rust` compiler in `nix` CI** [#1282](https://github.com/input-output-hk/mithril/issues/1282)\\n- Worked on the issue **Mithril networks infrastructure maintenance** [#1218](https://github.com/input-output-hk/mithril/issues/1218)\\n- Worked on the issue **Activate Cloudflare protection of infrastructure** [#1230](https://github.com/input-output-hk/mithril/issues/1230)"},{"id":"2023-10-10-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-10-10-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-10-node-cli-api.md","source":"@site/blog/2023-10-10-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-10-10T00:00:00.000Z","formattedDate":"October 10, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.985,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-10-10-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-11-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-06-hydra"}},"content":"# 2023-09-27 - 2023-10-10\\n\\n## High level summary\\n\\nCARDANO-NODE\\n- [Pre-release of cardano-node 8.5.0-pre](https://github.com/input-output-hk/cardano-node/releases/tag/8.5.0-pre)\\n\\nCARDANO-CLI\\n- Depracated governance query commands and moved all governance related queries to `cardano-cli query`\\n- Drep registration certificates now allow to include an anchor\\n- Integrated Drep retirement ceriticates\\n- clean up of Drep registration certificates.\\n\\nCARDANO-API\\n- Add support for committee hot key witnesses\\n- Require conway onwards for voting\\n- Conway drep registration: expose ledger anchor parameter\\n- Add certs to txbody of Conway transactions\\n\\n### cardano-cli\\n\\n- [Move `governance query` commands to `query` command group](https://github.com/input-output-hk/cardano-cli/pull/347)\\n- [Rename create-new-committee into update-committee](https://github.com/input-output-hk/cardano-cli/pull/344)\\n- [New version cardano-cli-8.12.0.0](https://github.com/input-output-hk/cardano-cli/pull/341)\\n- [Add support for committee hot key witnesses](https://github.com/input-output-hk/cardano-cli/pull/338)\\n- [conway governance vote create: make it possible to use cc hot keys](https://github.com/input-output-hk/cardano-cli/pull/337)\\n- [New version `cardano-cli-8.11.0.0`](https://github.com/input-output-hk/cardano-cli/pull/331)\\n- [Drep certification registration: add parameters for anchor](https://github.com/input-output-hk/cardano-cli/pull/330)\\n- [Upgrade to `cardano-api-8.25.0.1`](https://github.com/input-output-hk/cardano-cli/pull/329)\\n- [Move files that are not golden files into `input` directory](https://github.com/input-output-hk/cardano-cli/pull/327)\\n- [Update to cardano-api-8.24](https://github.com/input-output-hk/cardano-cli/pull/324)\\n- [Fix #311 - Add Cold Committee Key text envelope](https://github.com/input-output-hk/cardano-cli/pull/323)\\n- [create-poll, answer-poll, verify-poll: move to \'babbage governance\' block](https://github.com/input-output-hk/cardano-cli/pull/322)\\n- [Update to `cardano-api-8.23.1.0`](https://github.com/input-output-hk/cardano-cli/pull/320)\\n- [Make `transaction view` emit JSON](https://github.com/input-output-hk/cardano-cli/pull/319)\\n- [Tidy up query command structure](https://github.com/input-output-hk/cardano-cli/pull/318)\\n- [Use `caseShelleyToBabbageOrConwayEraOnwards` from `cardano-api`](https://github.com/input-output-hk/cardano-cli/pull/317)\\n- [Add DRep Retirement Certificate command](https://github.com/input-output-hk/cardano-cli/pull/316)\\n- [Update to cardano api 8.22.0.0](https://github.com/input-output-hk/cardano-cli/pull/310)\\n- [drep registration-certificate: remove mix with SPO registration](https://github.com/input-output-hk/cardano-cli/pull/309)\\n\\n### cardano-api\\n\\n- [Delete `EraCast` instance for `Certificate`](https://github.com/input-output-hk/cardano-api/pull/307)\\n- [Add certs to txbody of Conway transactions](https://github.com/input-output-hk/cardano-api/pull/306)\\n- [Move DRep reg certificate anchor types from cardano-cli to cardano-api](https://github.com/input-output-hk/cardano-api/pull/305)\\n- [Add BabbageEraOnly](https://github.com/input-output-hk/cardano-api/pull/304)\\n- [New version cardano-api-8.25.2.0](https://github.com/input-output-hk/cardano-api/pull/303)\\n- [Add support for committee hot key witnesses](https://github.com/input-output-hk/cardano-api/pull/300)\\n- [Reduce constraint usage with eons](https://github.com/input-output-hk/cardano-api/pull/299)\\n- [Delete `withShelleyBasedEraConstraintsForLedger`](https://github.com/input-output-hk/cardano-api/pull/297)\\n- [Simplify `DebugLedgerState` with eons](https://github.com/input-output-hk/cardano-api/pull/296)\\n- [New version cardano-api-8.25.0.0](https://github.com/input-output-hk/cardano-api/pull/294)\\n- [Require conway onwards for voting](https://github.com/input-output-hk/cardano-api/pull/293)\\n- [Add witness committee cold key](https://github.com/input-output-hk/cardano-api/pull/292)\\n- [Fix CHaP failure due to haddock issue](https://github.com/input-output-hk/cardano-api/pull/291)\\n- [Amend cardano-api/pull/284 to use ReexposeLedger](https://github.com/input-output-hk/cardano-api/pull/290)\\n- [Rename `AnyEraInEon` to `EraInEon`](https://github.com/input-output-hk/cardano-api/pull/289)\\n- [Release 8.24.0.0](https://github.com/input-output-hk/cardano-api/pull/288)\\n- [Parameterize `AnyEraInEon`. Add `AnyEon`](https://github.com/input-output-hk/cardano-api/pull/287)\\n- [New version `cardano-api-8.23.0.0`](https://github.com/input-output-hk/cardano-api/pull/286)\\n- [conway drep registration: expose ledger anchor parameter](https://github.com/input-output-hk/cardano-api/pull/284)\\n- [New `caseAlonzoOnlyOrBabbageEraOnwards` and `alonzoEraOnlyToAlonzoEraOnwards` functions](https://github.com/input-output-hk/cardano-api/pull/282)\\n- [Rename eon functions](https://github.com/input-output-hk/cardano-api/pull/281)\\n- [New `AnyEraInEon`](https://github.com/input-output-hk/cardano-api/pull/280)\\n- [Replace `ValidityLowerBoundSupportedInEra`](https://github.com/input-output-hk/cardano-api/pull/279)\\n- [Replace `TxExtraKeyWitnessesSupportedInEra`](https://github.com/input-output-hk/cardano-api/pull/278)\\n- [Explicit pattern match on all ledger certificates constructors. Remove redundant module](https://github.com/input-output-hk/cardano-api/pull/277)\\n- [Release 8.22.0.0](https://github.com/input-output-hk/cardano-api/pull/276)\\n- [Replace `TxTotalAndReturnCollateralSupportedInEra`](https://github.com/input-output-hk/cardano-api/pull/275)\\n\\n### cardano-node\\n\\n- [Integrate upstream libraries for 8.5](https://github.com/input-output-hk/cardano-node/pull/5490)\\n\\n### cardano-testnet\\n\\n- [bump cardano-api to 8.25.2](https://github.com/input-output-hk/cardano-node/pull/5497)\\n- [Remove unused code in cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/5491)\\n- [Integrate upstream libraries for 8.5](https://github.com/input-output-hk/cardano-node/pull/5490)\\n\\n### docs\\n\\n### CI & project maintenance"},{"id":"2023-10-06-hydra","metadata":{"permalink":"/cardano-updates/2023-10-06-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-06-hydra.md","source":"@site/blog/2023-10-06-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-10-06T00:00:00.000Z","formattedDate":"October 6, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.88,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-10-06-hydra","authors":["ffakenz"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-10-10-node-cli-api"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-10-06-performance-and-tracing"}},"content":"## High-level summary\\n\\nThis week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums.\\n\\nThe team also delivered the first version of the network resilience layer, significantly increasing head availability.\\n\\nAdditionally, they have been providing support to several funded Catalyst projects that want to build on Hydra.\\n\\nLast but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra.\\n\\n\\n## What did the team achieve this week\\n- Release [0.13.0](https://github.com/input-output-hk/hydra/releases/tag/0.13.0)\\n- Published vulnerability reports [#1088](https://github.com/input-output-hk/hydra/pull/1088)\\n- Merged network resilience work part I [#1074](https://github.com/input-output-hk/hydra/pull/1074)\\n- Planning for Cardano Summit participation \\n- Discussions with funded Catalyst projects wanting to build on Hydra for support\\n- Merged typos fix PR from @omahs [#1095](https://github.com/input-output-hk/hydra/pull/1095)\\n\\n\\n## What are the goals of next week\\n\\n- Complete Aiken commit validator script [#1072](https://github.com/input-output-hk/hydra/pull/1072)\\n- Complete Kupo integration [#1078](https://github.com/input-output-hk/hydra/issues/1078)\\n- Brick upgrade on TUI [#1103](https://github.com/input-output-hk/hydra/pull/1103)\\n- Clean backlog\\n- Prepare and rehearse demo and talk for Cardano Summit"},{"id":"2023-10-06-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-10-06-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-06-performance-and-tracing.md","source":"@site/blog/2023-10-06-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-10-06T00:00:00.000Z","formattedDate":"October 6, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.625,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-10-06-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-10-06-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-10-04-consensus"}},"content":"## High level summary\\n\\n* Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system.\\n* Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7.\\n* Development: We\'ve developed strategies for future benchmarks of PlutusV3 and UTxO-HD\'s on-disk backing store.\\n* Tracing: The machine-readable tracer configuration has been merged. Optimization of `cardano-tracer` started.\\n* Nomad backend: Ongoing variance analysis and refined cluster topology.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nPerforming and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the\\nperformance of the in-memory backing store and evaluate possible optimizations (or regressions) for it. \\n\\nFurthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results\\nshow all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the `cardano-tracer` service.\\n\\n### Consensus QTAs\\n\\nThe Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The\\nfeedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype.\\n\\n### Development\\n\\nBenchmarking UTxO-HD\'s on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort. \\n\\nPlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time,\\nwe\'d like to validate the many improvements that have gone into the Plutus evaluator.\\n\\n### Tracing\\n\\nThe focus for further optimization of the new tracing system has shifted to `cardano-tracer` - the service\\nreceiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in `cardano-node` is\\nmore performance critical, the receiving service must still minimize its resource footprint. Moreover, it can\\ngenerate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations.\\n\\n### Nomad backend\\n\\nVariance analysis of new nomad backend has revealed a necessary adjustment of the cluster\'s topology. We repeated\\nthe same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery."},{"id":"2023-10-04-consensus","metadata":{"permalink":"/cardano-updates/2023-10-04-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-04-consensus.md","source":"@site/blog/2023-10-04-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-10-04T00:00:00.000Z","formattedDate":"October 4, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.135,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-10-04-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-10-06-performance-and-tracing"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-04-mithril"}},"content":"## High level summary\\n\\nThe value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the *in-memory* backend.\\n\\nOn the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain.\\nWe also merged a fix for the Babbage to Conway transition, and released a new version of Consensus.\\n\\n\\n### Genesis\\n\\n- We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain ([392](https://github.com/input-output-hk/ouroboros-consensus/issues/392)).\\n\\n\\n### Support\\n\\n- We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition ([366](https://github.com/input-output-hk/ouroboros-consensus/pull/366)).\\n- We enabled richer tracers in `cardano-node` that can be useful in future debugging ([384](https://github.com/input-output-hk/ouroboros-consensus/pull/384)).\\n- [Esgen](https://github.com/amesgen) continues with his release engineer activities, and created a new Consensus release.\\n\\n### Fostering collaboration\\n\\n- We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface ([369](https://github.com/input-output-hk/ouroboros-consensus/pull/369))."},{"id":"2023-10-04-mithril","metadata":{"permalink":"/cardano-updates/2023-10-04-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-04-mithril.md","source":"@site/blog/2023-10-04-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-10-04T00:00:00.000Z","formattedDate":"October 4, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.15,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-10-04-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-10-04-consensus"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-10-02-network"}},"content":"## High level overview\\nThis week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion [on implementing Mithril in a light wallet](https://github.com/input-output-hk/mithril/discussions/1273) to receive feedback and contributions from the community.\\n\\nThey also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks.\\n\\nFinally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs.\\n\\n## Low level overview\\n- Created the discussion **Implement Mithril in a light wallet** [#1273](https://github.com/input-output-hk/mithril/discussions/1273)\\n- Completed the issue **Run client in browser WASM PoC** [#1254](https://github.com/input-output-hk/mithril/issues/1254)\\n- Completed the issue **Benchmark aggregator performances** [#1220](https://github.com/input-output-hk/mithril/issues/1220)\\n- Worked on the issue **Add SPO tickers in explorer** [#1185](https://github.com/input-output-hk/mithril/issues/1185)\\n- Completed the issue **Add a non `404` status code on the aggregator endpoint** [#1103](https://github.com/input-output-hk/mithril/issues/1103)\\n- Completed the issue **Use source attribute in errors** [#1265](https://github.com/input-output-hk/mithril/issues/1265)\\n- Completed the issue **Create a SPO checklist for KES keys update** [#1267](https://github.com/input-output-hk/mithril/issues/1267)\\n- Completed the issue **Configure status page and alerting** [#1277](https://github.com/input-output-hk/mithril/issues/1277)\\n- Completed the issue **Upgrade dependencies** [#1274](https://github.com/input-output-hk/mithril/issues/1274)"},{"id":"2023-10-02-network","metadata":{"permalink":"/cardano-updates/2023-10-02-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-02-network.md","source":"@site/blog/2023-10-02-network.md","title":"Network Team Update","description":"High-level overview of sprint 45","date":"2023-10-02T00:00:00.000Z","formattedDate":"October 2, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":2.485,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-10-02-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-10-04-mithril"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-09-29-goedel"}},"content":"## High-level overview of [sprint 45][sprint-45]\\n\\n[sprint-45]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+45%22\\n\\n### Bootstrap Peers\\n\\nWe started reviewing the bootstrap peers PR, [ouroboros-network#4615].\\n\\n### Towards Typed Protocols 0.2.0.0\\n\\nWe discovered a performance regression when using `typed-protocols-0.2.0.0`, and we\\nstarted investigating where it comes from. Currently, we see that\\n`typed-protocols-0.2.0.0` can outperform `typed-protocols-0.1.0.0` when running\\nin isolation with a simple `ping-pong` protocol, so the regression might be in\\nthe new block fetch implementation which comes with `typed-protocols-0.2.0.0`\\nSee [typed-protocols#3].\\n\\n### Tech Debt\\n\\nWe merged two PRs written by Galois engineers:\\n\\n* a pull request which refactors the main entry function for P2P, see [ouroboros-network#3834]; \\n* a pull request which reviews usage of `unsafe` function in the network code based.\\n\\nGalois also made progress with the following two issues:\\n * add microbenchmarks to some of our tests: [ouroboros-network#3832]\\n * inspect use of `error` in `ouroboros-network` repository:\\n [ouroboros-network#3836]\\n\\n### IO-Sim\\n\\n#### IOSimPOR\\nWe found and fixed a bug in `IOSimPOR`. We\'d like to thank Prof. John Hughes\\n(Quviq AB) for helping us with debugging the issue.\\n\\nWe also provided a more uniform API for `IOSimPOR`, and added ways to make the\\ndebugging similar problems in the future easier.\\n\\n
\\nTechnical Details on IOSim refactoring\\nWe removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means\\nremoving parallel evaluation of discovered races. We found out that it gives\\nonly 25% better performance. In the future QuickCheck will offer running\\ndifferent cases in parallel which should provide better performance as there\\nare no dependencies between the evaluation of different test cases, while schedules\\nare discovered while running which limits the possible gains from running them\\nconcurrently. The performance was not the only factor though. When using\\nparallelism in the lazy `ST` monad we\'d need to rely on memory guarantees of\\n`STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it\\nmight not be the case in the future.\\n
\\n\\n#### IOSim\\n\\nTo prepare for the next release, we consolidate packages taking advantage of\\nthe public sublibraries supported now both by `cabal` and `Hackage`. This is\\na work in progress, [io-sim#114].\\n\\n### Cardano Newtork Service Assurance\\n\\nGalois made the following progress:\\n\\n* A test run of spinning up a CNSA instance was done, as a result documentation\\n was updated.\\n* Based on the IOG code review of the CNSA code, updates to the CNSA code were\\n made.\\n* Galois has started the design for adding a CNSA analysis for \\"fetched bytes\\n over time while node is syncing\\".\\n\\n### P2P adoption\\n\\nIn the last two weeks, we\'ve seen increase in P2P adoption.\\n![P2P relays](/images/network/2023-10-04-p2p-relays.png)\\n\\n\\nThe following graphs show several different versions of relays running on the mainnet. The\\ngreen line `NodeToNodeVersionV10.True` denotes P2P relays.\\n![node versions](/images/network/2023-10-04-relay-versions.png)\\n\\n### Open Source\\n\\nWe upstreamed our FFI bindings to Windows named pipes to `Win32` package, the\\nPR was accepted and merged.\\n\\nWe also received an external contribution which enhanced our documentation, see\\n[ouroboros-network#4676].\\n\\n[ouroboros-network#3832]: https://github.com/input-output-hk/ouroboros-network/issues/3832\\n[ouroboros-network#3834]: https://github.com/input-output-hk/ouroboros-network/issues/3834\\n[ouroboros-network#3835]: https://github.com/input-output-hk/ouroboros-network/issues/3835\\n[ouroboros-network#3836]: https://github.com/input-output-hk/ouroboros-network/issues/3836\\n[ouroboros-network#4615]: https://github.com/input-output-hk/ouroboros-network/issues/4615\\n[ouroboros-network#4676]: https://github.com/input-output-hk/ouroboros-network/pull/4676\\n[io-sim#113]: https://github.com/input-output-hk/io-sim/issues/113\\n[io-sim#114]: https://github.com/input-output-hk/io-sim/issues/114\\n[typed-protocols#3]: https://github.com/input-output-hk/typed-protocols/pull/3"},{"id":"2023-09-29-goedel","metadata":{"permalink":"/cardano-updates/2023-09-29-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-goedel.md","source":"@site/blog/2023-09-29-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-09-29T00:00:00.000Z","formattedDate":"September 29, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.42,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-09-29-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-10-02-network"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-29-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThe team is currently formalising mini protocols and testing the\\nperformance analysis tool\\n\\n## Details\\n\\n* drafting processs calculus semantics of mini protocol programs\\n\\n* testing the new performance modelling tool\\n\\n* further work on specification of mini protocols\\n\\n* extension of mini protocol framework to support communication of\\n programs with local environments via synchronous channels"},{"id":"2023-09-29-hydra","metadata":{"permalink":"/cardano-updates/2023-09-29-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-hydra.md","source":"@site/blog/2023-09-29-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-09-29T00:00:00.000Z","formattedDate":"September 29, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.49,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-09-29-hydra","authors":["ffakenz"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-09-29-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-09-29-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team mainly focused on having a working new reliability\\nnetwork layer; and specified its expected behavior in a new ADR.\\n\\nThey also revisited the security policy and vulnerability disclosure policy on\\nhow to handle security vulnerability within Hydra, and in particular how to\\nhandle so-called \\"Silent fixes\\".\\n\\n\\n## What did the team achieve this week\\n\\n- Updated security policy and vulnerability disclosure policy [#1088](https://github.com/input-output-hk/hydra/pull/1088)\\n- Adr/network reliability [#1082](https://github.com/input-output-hk/hydra/pull/1082)\\n\\n\\n## What are the goals of next week\\n\\n- Introduce reliability network layer [#1074] (https://github.com/input-output-hk/hydra/pull/1074)\\n- Refactor the vCommit validator in Aiken [#1072](https://github.com/input-output-hk/hydra/pull/1072)"},{"id":"2023-09-29-ledger","metadata":{"permalink":"/cardano-updates/2023-09-29-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-ledger.md","source":"@site/blog/2023-09-29-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-09-29T00:00:00.000Z","formattedDate":"September 29, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.465,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-09-29-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-29-hydra"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-09-29-sre"}},"content":"## High level summary\\n\\nFew important Conway related features were completed in this two week period:\\n\\n* Constitutional Committee was the last missing Conway related entity that has now been\\n fully implemented.\\n* Treasury withdrawals governance actions have been fixed and now behave as expected.\\n* Current treasury amount supplied in the transaction is now enforced by the rules.\\n* DRep\'s expiry is prevented by delaying the expiry for all DReps whenever there are no\\nproposals to vote on.\\n* Semantics of how CostModels are updated with Protocol Parameters have been changed to\\nallow for individual Plutus language version updates, rather than requiring a complete\\nreplacement of all CostModels\\n\\nBesides the new features there were also important performance and testing improvements:\\n\\n* In particular stake distribution computation and native script handling received some\\noptimizations.\\n* New testing DSL has been implemented that drastically simplifies writing unit tests for\\nledger rules.\\n* Integration tests and benchmarks are now possible for Conway era because of the overhaul\\nof functionality for initial funds and staking injection whenever node starts up in\\nConway, while bypassing all previous eras.\\n\\n## Low level summary\\n\\n### Conway era\\n\\n* [pull-3729] - DRep expiry update after a contiguous set of epochs with no proposals to vote on\\n* [pull-3739] - Rename some PParams to be consistent with Agda specification\\n* [pull-3743] - Move DRepDistr from VState to ConwayGovState\\n* [pull-3746] - Implement `tcTranslationContextL` for Shelley\\n* [pull-3737] - Implement EraTransition\\n* [pull-3749] - Add predicate failure: current treasury value mismatch in LEDGER\\n* [pull-3748] - Apply enacted treasury withdrawals\\n* [pull-3745] - Constitutional Committee Ratification\\n* [pull-3763] - Plutus interface improvements\\n* [pull-3771] - Changed how costmodel updates are applied\\n* [pull-3766] - Prevent updating protocol version with `PParamUpdate`\\n\\n### Performance\\n\\n* [pull-3765] - Improve native script handling\\n* [pull-3747] - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin\\n* [pull-3758] - Cardano-Perf regression: UMap.size regression fix\\n* [pull-3754] - Use Alonzo-style TxOut encoder when possible\\n\\n### Releasing\\n\\n* [pull-3742] - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes\\n* [pull-3744] - Changelog 8.4\\n* [pull-3752] - Patch release of cardano ledger conway 1.8.1.0\\n* [pull-3753] - Minor cleanup and changelog entries\\n* [pull-3760] - Fixup issues for release\\n* [pull-3764] - Bump plutus deps to 1.13\\n\\n### Testing\\n\\n* [pull-3734] - Removed `Shaped` instance for `Rep`\\n* [pull-3735] - Simplify the implementations of `hasOrd` and `hasEq`\\n* [pull-3728] - STS tests based on constraints\\n* [pull-3714] - Implement the remaining upgradable families\\n* [pull-3733] - Add some unit tests for Conway features\\n* [pull-3762] - Update CDDL for praos headers.\\n\\n\\n[pull-3729]: https://github.com/input-output-hk/cardano-ledger/pull/3729\\n[pull-3739]: https://github.com/input-output-hk/cardano-ledger/pull/3739\\n[pull-3742]: https://github.com/input-output-hk/cardano-ledger/pull/3742\\n[pull-3744]: https://github.com/input-output-hk/cardano-ledger/pull/3744\\n[pull-3743]: https://github.com/input-output-hk/cardano-ledger/pull/3743\\n[pull-3746]: https://github.com/input-output-hk/cardano-ledger/pull/3746\\n[pull-3728]: https://github.com/input-output-hk/cardano-ledger/pull/3728\\n[pull-3737]: https://github.com/input-output-hk/cardano-ledger/pull/3737\\n[pull-3735]: https://github.com/input-output-hk/cardano-ledger/pull/3735\\n[pull-3747]: https://github.com/input-output-hk/cardano-ledger/pull/3747\\n[pull-3749]: https://github.com/input-output-hk/cardano-ledger/pull/3749\\n[pull-3748]: https://github.com/input-output-hk/cardano-ledger/pull/3748\\n[pull-3745]: https://github.com/input-output-hk/cardano-ledger/pull/3745\\n[pull-3734]: https://github.com/input-output-hk/cardano-ledger/pull/3734\\n[pull-3714]: https://github.com/input-output-hk/cardano-ledger/pull/3714\\n[pull-3752]: https://github.com/input-output-hk/cardano-ledger/pull/3752\\n[pull-3754]: https://github.com/input-output-hk/cardano-ledger/pull/3754\\n[pull-3753]: https://github.com/input-output-hk/cardano-ledger/pull/3753\\n[pull-3760]: https://github.com/input-output-hk/cardano-ledger/pull/3760\\n[pull-3758]: https://github.com/input-output-hk/cardano-ledger/pull/3758\\n[pull-3764]: https://github.com/input-output-hk/cardano-ledger/pull/3764\\n[pull-3762]: https://github.com/input-output-hk/cardano-ledger/pull/3762\\n[pull-3763]: https://github.com/input-output-hk/cardano-ledger/pull/3763\\n[pull-3733]: https://github.com/input-output-hk/cardano-ledger/pull/3733\\n[pull-3771]: https://github.com/input-output-hk/cardano-ledger/pull/3771\\n[pull-3765]: https://github.com/input-output-hk/cardano-ledger/pull/3765\\n[pull-3766]: https://github.com/input-output-hk/cardano-ledger/pull/3766"},{"id":"2023-09-29-sre","metadata":{"permalink":"/cardano-updates/2023-09-29-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-sre.md","source":"@site/blog/2023-09-29-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-09-29T00:00:00.000Z","formattedDate":"September 29, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":0.68,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-09-29-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-09-29-ledger"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-09-27-mithril"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent changes, updates or improvements include:\\n* Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node [8.4.0-pre](https://github.com/input-output-hk/cardano-node/releases/tag/8.4.0-pre).\\n* The use of cardano-node [docker hub](https://hub.docker.com/r/inputoutput/cardano-node) will be deprecated in preference of [GHCR](https://github.com/input-output-hk/cardano-node/pkgs/container/cardano-node)\\n\\n## Lower level summary\\n\\n### Capkgs\\n* Refactor parsing scripts, add github action automation, various bugfixes and cleanup: [capkgs-compare](https://github.com/input-output-hk/capkgs/compare/c2c7680...a274b72)\\n\\n### Cardano-parts\\n* Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: [cardano-parts-pull-8](https://github.com/input-output-hk/cardano-parts/pull/14)\\n\\n### Cardano-playground\\n* Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: [cardano-playground](https://github.com/input-output-hk/cardano-playground/pull/2)\\n\\n### Cardano-world\\n* Update sanchonet network to cardano-node 8.4.0: [cardano-world-compare](https://github.com/input-output-hk/cardano-world/compare/8cb559a...3edafb9)\\n* Rotate KES on shelley-qa: [cardano-world-commit](https://github.com/input-output-hk/cardano-world/commit/8301b044ad106ff8ca71dcbbdb5b17fe9ec6fc6d)"},{"id":"2023-09-27-mithril","metadata":{"permalink":"/cardano-updates/2023-09-27-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-27-mithril.md","source":"@site/blog/2023-09-27-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-09-27T00:00:00.000Z","formattedDate":"September 27, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":0.975,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-09-27-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-09-29-sre"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-09-26-node-cli-api"}},"content":"## High level overview\\nThe Mithril team has released a new distribution [`2337.0`](https://github.com/input-output-hk/mithril/releases/tag/2337.0), which includes the following enhancements: support for `zstandard` compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator.\\n\\nThey also completed the refactoring and standardization of the errors in the Mithril nodes and published an [Architectural decision record](https://mithril.network/doc/adr/6) on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure.\\n\\nFinally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs.\\n\\n## Low level overview\\n- Completed the issue **Release new `2337` distribution** [#1219](https://github.com/input-output-hk/mithril/issues/1219)\\n- Completed the issue **Errors refactoring** [#798](https://github.com/input-output-hk/mithril/issues/798)\\n- Completed the issue **Client traffic creates performance bottleneck in aggregator** [#1207](https://github.com/input-output-hk/mithril/issues/1207)\\n- Completed the issue **Record statistics about the downloaded snapshot in the aggregator** [#1127](https://github.com/input-output-hk/mithril/issues/1127)\\n- Completed the issue **Create a SPO checklist for KES keys update** [#1267](https://github.com/input-output-hk/mithril/issues/1267)\\n- Worked on the issue **Spike: Run client in browser WASM PoC** [#1254](https://github.com/input-output-hk/mithril/issues/1254)\\n- Worked on the issue **Benchmark aggregator performances** [#1220](https://github.com/input-output-hk/mithril/issues/1220)\\n- Worked on the issue **Activate Cloudflare protection of infrastructure** [#1230](https://github.com/input-output-hk/mithril/issues/1230)"},{"id":"2023-09-26-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-09-26-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-26-node-cli-api.md","source":"@site/blog/2023-09-26-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-09-26T00:00:00.000Z","formattedDate":"September 26, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.68,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-09-26-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-09-27-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-22-hydra"}},"content":"# 2023-09-13 - 2023-09-26\\n\\n## High level summary\\n* [cardano-node 8.4.0-pre](https://github.com/input-output-hk/cardano-node/releases/tag/8.4.0-pre) release suitable for SanchoNet.\\n* CLI continues making progress integrating governance features. During this sprint we integrated the **info** and **new-committee** governance actions.\\n* The team continued moving to the ERA top-level commands structure. Removed `--conway-era` flag from the legacy commands making conway era commands only accessible via `cardano-cli conway`.\\n* `stake-pool` command is now under the ERA top level structure.\\n* API continues integration with governance features, it is worth to higlight that now _ProposeNewCommitee_ uses the right key type (cc-cold)\\n\\n### cardano-cli\\n\\n- [Disambiguate 2-n flags in governance new-committee action](https://github.com/input-output-hk/cardano-cli/pull/302)\\n- [New version `cardano-cli-8.10.0.0`](https://github.com/input-output-hk/cardano-cli/pull/298)\\n- [Upgrade to `cardano-api-8.20.2`](https://github.com/input-output-hk/cardano-cli/pull/295)\\n- [cardano-cli: add governance create-info command](https://github.com/input-output-hk/cardano-cli/pull/292)\\n- [Release 8.9.0.0](https://github.com/input-output-hk/cardano-cli/pull/287)\\n- [Export `Cardano.CLI.Legacy.Options.pLegacyCardanoEra` for cardano-testnet](https://github.com/input-output-hk/cardano-cli/pull/286)\\n- [Rename `SomeWitness` to `SomeSigningWitness`. Rename constructors to avoid name conflicts.](https://github.com/input-output-hk/cardano-cli/pull/284)\\n- [Update cardano-api to 8.20.1.0](https://github.com/input-output-hk/cardano-cli/pull/283)\\n- [Remove unused governance-related code](https://github.com/input-output-hk/cardano-cli/pull/282)\\n- [Fix typo in stake-pool help text and clarify drep queries arguments](https://github.com/input-output-hk/cardano-cli/pull/281)\\n- [Remove redundant conversions in JSON friendly instances ](https://github.com/input-output-hk/cardano-cli/pull/280)\\n- [Regularise era based command structure](https://github.com/input-output-hk/cardano-cli/pull/279)\\n- [Simplify era handling](https://github.com/input-output-hk/cardano-cli/pull/277)\\n- [Remove `--conway-era` flag](https://github.com/input-output-hk/cardano-cli/pull/276)\\n- [Era-based `stake-pool` command](https://github.com/input-output-hk/cardano-cli/pull/275)\\n- [Fix git revision in `version` command](https://github.com/input-output-hk/cardano-cli/pull/274)\\n- [cardano-cli-8.8.0.0](https://github.com/input-output-hk/cardano-cli/pull/273)\\n\\n### cardano-api\\n\\n- [Organise eon re-exports. Export `MaryEraOnwards`](https://github.com/input-output-hk/cardano-api/pull/265)\\n- [cardano-api-internal: ProposeNewCommittee: StakeKey -> CommitteeColdKey](https://github.com/input-output-hk/cardano-api/pull/264)\\n- [New version `cardano-api-8.21.0.0`](https://github.com/input-output-hk/cardano-api/pull/262)\\n- [Delete unused eon constraints](https://github.com/input-output-hk/cardano-api/pull/256)\\n- [Export ByronEraOnly](https://github.com/input-output-hk/cardano-api/pull/255)\\n- [Replace only `AdaSupportedInEra` and `MultiAssetSupportedInEra` with eons](https://github.com/input-output-hk/cardano-api/pull/254)\\n- [New version `cardano-api-8.20.2.0`](https://github.com/input-output-hk/cardano-api/pull/250)\\n- [Add JSON instance for Hash GenesisKey ](https://github.com/input-output-hk/cardano-api/pull/249)\\n- [Support more ledger constraints](https://github.com/input-output-hk/cardano-api/pull/248)\\n- [Rename `FeatureInEra` to `Eon`](https://github.com/input-output-hk/cardano-api/pull/247)\\n- [Release 8.20.1.0](https://github.com/input-output-hk/cardano-api/pull/246)\\n- [Fix DRep Stake and DRep Stake queries for empty lists](https://github.com/input-output-hk/cardano-api/pull/245)\\n- [Delete `TxFeesExplicitInEra` and `TxFeesImplicitInEra`](https://github.com/input-output-hk/cardano-api/pull/244)\\n- [Fix typos in some deserialization error messages](https://github.com/input-output-hk/cardano-api/pull/243)\\n- [Fix querying for dreps in `transaction build` in eras before conway](https://github.com/input-output-hk/cardano-api/pull/240)\\n\\n### cardano-node\\n\\n- [Trace Configuration Trace Message Enhancement](https://github.com/input-output-hk/cardano-node/pull/5480)\\n- [Bump versions for cardano-node-8.4.0-pre](https://github.com/input-output-hk/cardano-node/pull/5474)\\n- [Updated dependencies for cardano-node-8.4.0-pre](https://github.com/input-output-hk/cardano-node/pull/5467)\\n- [cardano-node: reduce orphan instances](https://github.com/input-output-hk/cardano-node/pull/5466)\\n\\n### cardano-testnet\\n\\n- [Bump versions for cardano-node-8.4.0-pre](https://github.com/input-output-hk/cardano-node/pull/5474)\\n- [Update to cardano-cli 8.9.0.0](https://github.com/input-output-hk/cardano-node/pull/5471)\\n- [Updated dependencies for cardano-node-8.4.0-pre](https://github.com/input-output-hk/cardano-node/pull/5467)\\n\\n### docs\\n\\n### CI & project maintenance"},{"id":"2023-09-22-hydra","metadata":{"permalink":"/cardano-updates/2023-09-22-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-22-hydra.md","source":"@site/blog/2023-09-22-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-09-22T00:00:00.000Z","formattedDate":"September 22, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.035,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-09-22-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-09-26-node-cli-api"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-09-22-performance-and-tracing"}},"content":"## High-level summary\\n\\nThis week, the Hydra team conducted the monthly review meeting in\\ncollaboration with Mithril, enhancing project coordination.\\n\\nThe team improved the gen-hydra-key node command for smoother usability\\nand identified concrete steps to enhance network resiliency in feature\\nitems [#188](https://github.com/input-output-hk/hydra/issues/188),\\n[#1080](https://github.com/input-output-hk/hydra/issues/1080), and\\n[#1079](https://github.com/input-output-hk/hydra/issues/1079).\\nAdditionally, they contributed the aiken-mode editor integration to the\\naiken-lang organization, updated dependencies to utilize cardano-api\\n8.20, and published the Hydra security advisory CVE-2023-42806 with a\\nworkaround available for users.\\n\\nThese efforts demonstrate the team\\\\\'s commitment to project improvement,\\nsecurity, and open-source community collaboration.\\n\\n## What did the team achieve this week\\n\\n- Conducted the monthly review meeting together with Mithril\\n- Improved gen-hydra-key node command\\n [#1077](https://github.com/input-output-hk/hydra/pull/1077)\\n- Established a clear plan to improve resiliency of network and manifested\\n feature items [#188](https://github.com/input-output-hk/hydra/issues/188),\\n [#1080](https://github.com/input-output-hk/hydra/issues/1080) and\\n [#1079](https://github.com/input-output-hk/hydra/issues/1079)\\n- Moved [aiken-mode](https://github.com/aiken-lang/aiken-mode) (created by SN)\\n to aiken-lang organization\\n- Updated dependencies to using cardano-api 8.20\\n [#1075](https://github.com/input-output-hk/hydra/pull/1075)\\n- Published security advisory\\n [CVE-2023-42806](https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq)\\n (workaround available)\\n\\n## What are the goals of next week\\n\\n- Write-up the monthly report for September\\n- Finish \\"network resilience to disconnects\\"\\n [#188](https://github.com/input-output-hk/hydra/issues/188)\\n- Finish kupo integration with hydra\\n [#1078](https://github.com/input-output-hk/hydra/issues/1078)\\n- Discuss and decide on using aiken or not\\n- Address the published security advisory\\n [CVE-2023-42806](https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq)\\n (to not require workaround)\\n- Ideally, release 0.13.0"},{"id":"2023-09-22-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-09-22-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-22-performance-and-tracing.md","source":"@site/blog/2023-09-22-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-09-22T00:00:00.000Z","formattedDate":"September 22, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.445,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-09-22-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-22-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-09-20-consensus"}},"content":"## High level summary\\n\\n* Benchmarking: We\'ve performed both low-level network and high-level variance analysis of our benchmarking clusters.\\n* Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time.\\n* Tracing: Work on machine-readable tracing of tracer configuration is ongoing.\\n* Nomad backend: We\'ve been able to eliminate several possible confounders on the nomad cluster.\\n* Team: We\'re currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Bl\xf6ndal!\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nAs part of the effort to bring the Nomad backend into production use, we\'ve been equipping both that and the existing benchmarking\\nbackend with means to measure and document network latency for each run. Furthermore we\'ve implemented means to\\ncapture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences\\nin the behaviour of the underlying networking stack at OS level. \\n\\nAdditionally, we\'re running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We\'ve concluded that baseline profile runs aren\'t directly comparable between the two, so we decided\\nto compare standard deviations instead to validate the measurements from nomad.\\n\\n### Infrastructure\\n\\nReporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline\\nhave been merged to `master`. They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis. \\n\\nBeyond that, we\'ve looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for `trace-dispatcher` and `tx-generator` we were able to address those issues.\\n\\n### Tracing\\n\\nAfter various steps in constructing a configuration upon node startup, it is vital to document\\nwhich runtime configuration the node arrived eventually. We\'re working on providing a machine-readable JSON/YAML\\ntrace message for that purpose. \\n\\nThis will facilitate hot-reloading a node\'s tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node. \\n\\n### Nomad backend\\n\\nAs with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it\\nproduces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an\\nimpact on our measurements, as we\'d be basically using two different instruments to take them. \\n\\nAlong the way we\'ve already been successful in eliminating some possible confounders that had been introduced by the nomad service\\nor the slightly different system architecture of the new cluster.\\n\\n### New team member\\n\\nBaldur Bl\xf6ndal is an extremely capable and experienced Haskell developer. Also, he\'s an excellent fit for our existing team.\\nSo I\'m very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on `cardano-tracer`, the component receiving, processing and making available node traces and metrics."},{"id":"2023-09-20-consensus","metadata":{"permalink":"/cardano-updates/2023-09-20-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-20-consensus.md","source":"@site/blog/2023-09-20-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-09-20T00:00:00.000Z","formattedDate":"September 20, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.82,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-09-20-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-09-22-performance-and-tracing"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-09-20-mithril"}},"content":"## High level summary\\n\\nWe have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks.\\nWe are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough.\\nOn the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain.\\nWe also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway.\\n\\n### UTxO-HD\\n\\n- We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version ([349](https://github.com/input-output-hk/ouroboros-consensus/pull/349)). System level benchmark results are pending.\\n- Regarding the workaround to keep the node\'s baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders ([344](https://github.com/input-output-hk/ouroboros-consensus/issues/344)), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run.\\n- We also brought the `UTxO-HD` branch up to date with node version `8.4.0`.\\n\\n### Genesis\\n\\n- We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain.\\n We are now drafting the final self-contained argument. ([4157](https://github.com/input-output-hk/ouroboros-network/issues/4157))\\n\\n### Support\\n\\n- We debugged a bad parameter update on the `Babbage` to `Conway` transition in the SanchoNet testnet ([339](https://github.com/input-output-hk/ouroboros-consensus/issues/339)).\\n A superficial patch is within reach and we are in the process of reviewing the PRs related to this fix ([340](https://github.com/input-output-hk/ouroboros-consensus/pull/340), [354](https://github.com/input-output-hk/ouroboros-consensus/pull/354), and [355](https://github.com/input-output-hk/ouroboros-consensus/pull/355))\\n However we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the `ConsensusProtocol` type class and the `HardForkBlock` combinator ([345](https://github.com/input-output-hk/ouroboros-consensus/issues/345) and [346](https://github.com/input-output-hk/ouroboros-consensus/pull/346)). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later."},{"id":"2023-09-20-mithril","metadata":{"permalink":"/cardano-updates/2023-09-20-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-20-mithril.md","source":"@site/blog/2023-09-20-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-09-20T00:00:00.000Z","formattedDate":"September 20, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":0.935,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-09-20-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-09-20-consensus"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-09-15-goedel"}},"content":"## High level overview\\nThis week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports. \\n\\nFinally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution.\\n\\n## Low level overview\\n- Completed the issue **Add snapshot compression parameters in infrastructure deployments** [#1200](https://github.com/input-output-hk/mithril/issues/1200)\\n- Completed the issue **Add Cloudflare protection of infrastructure** [#986](https://github.com/input-output-hk/mithril/issues/986)\\n- Worked on the issue **Record statistics about the downloaded snapshot in the aggregator** [#1127](https://github.com/input-output-hk/mithril/issues/1127)\\n- Worked on the issue **Error refactoring** [#798](https://github.com/input-output-hk/mithril/issues/798)\\n- Worked on the issue **Activate Cloudflare protection of infrastructure** [#1230](https://github.com/input-output-hk/mithril/issues/1230)\\n- Worked on the issue **Release new `2337` distribution** [#1219](https://github.com/input-output-hk/mithril/issues/1219)\\n- Completed the issue **Upgrade dependencies** [#1238](https://github.com/input-output-hk/mithril/issues/1238)"},{"id":"2023-09-15-goedel","metadata":{"permalink":"/cardano-updates/2023-09-15-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-goedel.md","source":"@site/blog/2023-09-15-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-09-15T00:00:00.000Z","formattedDate":"September 15, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.44,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-09-15-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-09-20-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-15-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThe team is currently formalising mini protocols and also further\\ndeveloping the performance modelling prototype.\\n\\n## Details\\n\\n* working on collating and open sourcing performance analysis prototype\\n\\n* improvements to Ouroboros Praos specification in Isabelle\\n\\n* working on formalising chain sync mini-protocol\\n\\n* reviewing an alternatice semantics for DeltaQ\\n\\n* Seminar talk at U. Bergen on algebraic properties of timeliness"},{"id":"2023-09-15-hydra","metadata":{"permalink":"/cardano-updates/2023-09-15-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-hydra.md","source":"@site/blog/2023-09-15-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-09-15T00:00:00.000Z","formattedDate":"September 15, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.94,"hasTruncateMarker":false,"authors":[{"name":"Sasha Bogicevic","title":"Hydra Software Engineer","url":"https://github.com/v0d1ch","imageURL":"https://github.com/v0d1ch.png","key":"v0d1ch"},{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-09-15-hydra","authors":["v0d1ch","ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-09-15-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-09-15-ledger"}},"content":"## High-level summary\\n\\nThis week, most of the Hydra team was attending a cardano scaling workshop in\\nNantes, France. They used this oportunity to meet fellow mithril team and spend\\nsome time together to hack on some code and, as always, reflect on the past work\\nand find optimal path forward for both projects. They also fixed a bug that\\ncaused hydra-node to crash when querying L1, worked on a new network resillience\\nproof-of-concept and accepted a new ADR related to stateless transaction\\nobservation.\\n\\n## What did the team achieve this week\\n\\n- Cardano scaling workshop with members of hydra and mithril teams \\n- Accepted user contribution for possible new use-case [#1048](https://github.com/input-output-hk/hydra/pull/1048)\\n- Fix for the hydra-node crash related to internal wallet query [#1053](https://github.com/input-output-hk/hydra/pull/1053)\\n- Collected experimental CI findings [#1070](https://github.com/input-output-hk/hydra/pull/1070)\\n- Propose first POC for the network resilience [#1074](https://github.com/input-output-hk/hydra/pull/1074)\\n\\n## What are the goals of next week\\n\\n- Monthly review meeting & report including updates from Mithril\\n- Review POC and discuss our options for the network resilience\\n- Update cardano-api to version 8.20\\n- Address TODOs on aiken commit validator [#1072](https://github.com/input-output-hk/hydra/pull/1072)\\n- Complete hydra-support in kupo [kupo#117](https://github.com/CardanoSolutions/kupo/pull/117)"},{"id":"2023-09-15-ledger","metadata":{"permalink":"/cardano-updates/2023-09-15-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-ledger.md","source":"@site/blog/2023-09-15-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-09-15T00:00:00.000Z","formattedDate":"September 15, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.645,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-09-15-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-15-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-09-15-network"}},"content":"## High level summary\\n\\nThe Ledger team\'s focus is still mainly on the Conway era implementation.\\n\\nWe were able to add ability to specify initial Constitutional Comittee and the initial\\nversion of Constitution. Priority in which Governance Action are now enacted matches the\\nspecification. DRep\'s deposits are now properly accounted for. Governance actions that are\\nnot allowed to be voted on by Stake Pool operators and Constitutional Committee members\\nare prevented by transaction submission failure, rather than simply being ignored. There\\nwas a few important CDDL fixes as well as a lot of new round trip serialization\\ntests. Constraint based testing framework has also received a lot of improvements.\\n\\n## Low level summary\\n\\n### Conway era\\n\\n* [pull-3681] - Conway Genesis additions\\n* [pull-3690] - Preserve the order of ProposalProcedures\\n* [pull-3705] - Removed ProtVer from EnactState\\n* [pull-3700] - Add conway-specific certs to deposit/refunds\\n* [pull-3704] - Add comments on deprecating certs to Conway CDDL\\n* [pull-3698] - Reordering of governance actions\\n* [pull-3712] - Disallow empty fields in ConwayTxBodyRaw\\n* [pull-3716] - Abstract threshold calculation\\n* [pull-3725] - Fix mistaken use of dollar sign in cddl files\\n* [pull-3718] - Predicate failure for mismatched Voter GovAction\\n* [pull-3721] - Committee expiration, validation and modification\\n\\n### Improvements and releasing\\n\\n* [pull-3629] - Add rule-transition diagrams in dot syntax\\n* [pull-3680] - Bump Plutus deps to 1.11\\n* [pull-3708] - Post release changes\\n\\n### Testing\\n\\n* [pull-3730] - Implement `Show` instance for `Rep` using `IsTypeable`\\n* [pull-3697] - Rewrite testEql using Typeable to make it impossible to forget cases\\n* [pull-3709] - Add many new features to the Constrained modues in cardano-ledger-test\\n* [pull-3726] - Conway and other eras serialization roundtrip tests\\n* [pull-3713] - Improve CI resiliency against GitHub issues\\n\\n[pull-3681]: https://github.com/input-output-hk/cardano-ledger/pull/3681\\n[pull-3690]: https://github.com/input-output-hk/cardano-ledger/pull/3690\\n[pull-3705]: https://github.com/input-output-hk/cardano-ledger/pull/3705\\n[pull-3680]: https://github.com/input-output-hk/cardano-ledger/pull/3680\\n[pull-3708]: https://github.com/input-output-hk/cardano-ledger/pull/3708\\n[pull-3700]: https://github.com/input-output-hk/cardano-ledger/pull/3700\\n[pull-3704]: https://github.com/input-output-hk/cardano-ledger/pull/3704\\n[pull-3698]: https://github.com/input-output-hk/cardano-ledger/pull/3698\\n[pull-3713]: https://github.com/input-output-hk/cardano-ledger/pull/3713\\n[pull-3712]: https://github.com/input-output-hk/cardano-ledger/pull/3712\\n[pull-3697]: https://github.com/input-output-hk/cardano-ledger/pull/3697\\n[pull-3629]: https://github.com/input-output-hk/cardano-ledger/pull/3629\\n[pull-3716]: https://github.com/input-output-hk/cardano-ledger/pull/3716\\n[pull-3725]: https://github.com/input-output-hk/cardano-ledger/pull/3725\\n[pull-3718]: https://github.com/input-output-hk/cardano-ledger/pull/3718\\n[pull-3709]: https://github.com/input-output-hk/cardano-ledger/pull/3709\\n[pull-3726]: https://github.com/input-output-hk/cardano-ledger/pull/3726\\n[pull-3721]: https://github.com/input-output-hk/cardano-ledger/pull/3721\\n[pull-3730]: https://github.com/input-output-hk/cardano-ledger/pull/3730"},{"id":"2023-09-15-network","metadata":{"permalink":"/cardano-updates/2023-09-15-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-network.md","source":"@site/blog/2023-09-15-network.md","title":"Network Team Update","description":"High-level overview of sprint 44","date":"2023-09-15T00:00:00.000Z","formattedDate":"September 15, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.41,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-09-15-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-09-15-ledger"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-09-15-sre"}},"content":"## High-level overview of [sprint 44][sprint-44]\\n\\n### Bootstrap Peers\\n\\nIn this sprint, we focused on developing bootstrap peers.\\n\\nThanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we\\nidentified a possible improvement to bootstrap peers. A more detailed\\ndescription is available [here][ouroboros-network-#4675].\\n\\n### Cardano-Node-8.4.0 Release\\n\\nWe also were responsible for the `cardano-node-8.4.0-pre` release. A final\\nintegration [PR][cardano-node-#5467] is currently being merged. We published\\nnew versions of `ouroboros-consensus`, `cardano-api` and `cardano-cli`.\\n\\n### Towards Typed Protocols 0.2.0.0\\n\\nWe also updated the future `typed-protocols-0.2.0.0` and its integration with\\n`cardano-node`. This is towards our goal which we planned for the next\\nquarter. The identified tasks are to fix breaking tests, and then measure and\\naddress possible performance regressions.\\n\\n### Tech Debt\\n\\nMark Tullsen (Galois) submitted two more PRs: [ouroboros-network-#4663],\\n[ouroboros-network-#4664]. We provided feedback on their other pull requests: [ouroboros-network-#4661] and \\n[ouroboros-network-#4660].\\n\\n### P2P adoption\\n\\nIn the last two weeks, there was a regression in P2P adoption concerning\\nthe number of SPOs or stakes, although the number of overall P2P relays has\\nincreased. Karl Knutsson ([Cardano Foundation][CF]) is investigating \\nthis issue.\\n![P2P relays](/images/network/2023-09-14-p2p-relays.png)\\n\\n\\nThe following graphs show several different versions of relays running on the mainnet. The\\ngreen line `NodeToNodeVersionV10.True` denotes P2P relays, which slowly\\nincrease over time. The `V9` and earlier versions of the `node-to-node`\\nthe protocol indicates nodes version `1.35.x` or earlier.\\n![node versions](/images/network/2023-09-14-relay-versions.png)\\n\\nData has been kindly provided by [Cardano Foundation][CF] and their mainnet\\nmonitoring infrastructure.\\n\\n### Open Source\\n\\nWe are in the process of upstreaming our ffi to Windows Named Pipes API to the `Win32` package, see [win32-220].\\n\\n[CF]: https://cardanofoundation.org/\\n[Galois]: https://galois.com/\\n[cardano-node-#5467]: https://github.com/input-output-hk/cardano-node/pull/5467\\n[ouroboros-network-#3836]: https://github.com/input-output-hk/ouroboros-network/issues/3836\\n[ouroboros-network-#4660]: https://github.com/input-output-hk/ouroboros-network/pull/4660\\n[ouroboros-network-#4661]: https://github.com/input-output-hk/ouroboros-network/pull/4661\\n[ouroboros-network-#4663]: https://github.com/input-output-hk/ouroboros-network/pull/4663\\n[ouroboros-network-#4664]: https://github.com/input-output-hk/ouroboros-network/pull/4664\\n[ouroboros-network-#4675]: https://github.com/input-output-hk/ouroboros-network/issues/4675\\n[sprint-44]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+44%22\\n[win32-#220]: https://github.com/haskell/win32/pull/220"},{"id":"2023-09-15-sre","metadata":{"permalink":"/cardano-updates/2023-09-15-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-sre.md","source":"@site/blog/2023-09-15-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-09-15T00:00:00.000Z","formattedDate":"September 15, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":1.055,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-09-15-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-09-15-network"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-09-14-db-sync"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent updates or improvements include:\\n* Sanchonet environment was updated to 8.3.0-pre.\\n* [Cardano-parts](https://github.com/input-output-hk/cardano-parts) now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is [here](https://github.com/input-output-hk/cardano-playground/blob/main/flake/colmena.nix#L89-L108).\\n\\n## Lower level summary\\n\\n### Capkgs\\n* Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: [capkgs-compare](https://github.com/input-output-hk/capkgs/compare/f3dcffb...c2c7680)\\n\\n### Cardano-ops\\n* Adjust mainnet p2p relays to ~100%, with a legacy canary: [cardano-ops-commit](https://github.com/input-output-hk/cardano-ops/commit/d3cce2585fae6a52ff5833373137af3cddbc6710)\\n\\n### Cardano-parts\\n* Utilize content addressed binaries to significantly improve eval, build and devShell performance: [cardano-parts-pull-8](https://github.com/input-output-hk/cardano-parts/pull/8)\\n* Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: [cardano-parts-pull-10](https://github.com/input-output-hk/cardano-parts/pull/10)\\n* Fix warns thrown during some builds and devShell usage: [cardano-parts-pull-11](https://github.com/input-output-hk/cardano-parts/pull/11)\\n* Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: [cardano-parts-pull-12](https://github.com/input-output-hk/cardano-parts/pull/12)\\n* Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: [cardano-parts-pull-13](https://github.com/input-output-hk/cardano-parts/pull/13)\\n\\n### Cardano-perf\\n* Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: [cardano-perf-compare](https://github.com/input-output-hk/cardano-perf/compare/9f9917c...7fc1b4c)\\n\\n### Cardano-playground\\n* Define preliminary cardano-world networks on cardano-playground: [cardano-playground](https://github.com/input-output-hk/cardano-playground/pull/1)\\n\\n### Cardano-world\\n* Rotate KES on preview and preprod, purge unused subnets, adjust explorer rate limits: [cardano-world-compare](https://github.com/input-output-hk/cardano-world/compare/306ef6c...e9b2ed2)\\n* Update sanchonet network to 8.3.0: [cardano-world-compare](https://github.com/input-output-hk/cardano-world/compare/master...sanchonet-updated)"},{"id":"2023-09-14-db-sync","metadata":{"permalink":"/cardano-updates/2023-09-14-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-14-db-sync.md","source":"@site/blog/2023-09-14-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-09-14T00:00:00.000Z","formattedDate":"September 14, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.47,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-09-14-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-09-15-sre"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-09-12-node-cli-api"}},"content":"## High level summary\\nWe have created a DBSync tag `sancho-1-1-0` which can follow sanchonet. Also\\nthe team has ran a number of benchmarks and tests for the new options/flavours of DBSync\\nand prepared a blogpost which summorises them, for downstream components.\\n\\n## Lower level summary\\n- Integration of node-8.3.x and support for Sanchonet on Conway\\n[#1498](https://github.com/input-output-hk/cardano-db-sync/pull/1498)\\n- Simplifications of new feautures\\n[#1496](https://github.com/input-output-hk/cardano-db-sync/pull/1496)\\n- Makes it impossible to restart DBSync with different schema options and adds\\ntests for them\\n[#1466](https://github.com/input-output-hk/cardano-db-sync/pull/1466)\\n- CI fixes\\n[#1494](https://github.com/input-output-hk/cardano-db-sync/pull/1494)\\n[#1491](https://github.com/input-output-hk/cardano-db-sync/pull/1491)\\n- Prepared a blogpost about different DBSync options\\n[blog](https://github.com/input-output-hk/cardano-db-sync/blob/blog/blog/blog.pdf)"},{"id":"2023-09-12-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-09-12-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-12-node-cli-api.md","source":"@site/blog/2023-09-12-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-09-12T00:00:00.000Z","formattedDate":"September 12, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":2.605,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-09-12-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-09-14-db-sync"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-08-hydra"}},"content":"# 2023-08-30 - 2023-09-12\\n\\n## High level summary\\n\\nRelease of [Cardano-node 8.3.0-pre](https://github.com/input-output-hk/cardano-node/releases/tag/8.3.0-pre) for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs.\\nThis release completes [phase 2 of SanchoNet feature roll out plan](https://sancho.network/get-started#sanchonet-feature-rollout)\\n\\nCLI continues on its migration to a era-based top-level commands. This sprint we moved `text-view`, `key`, `query`, `genesis`, `node`, `stake-address`, `transaction` and `address` into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints.\\n\\nWe are moving the `drep delegation-certificate` to the stake-address command so delegating to a drep is done via `stake-addres vote-delegation-certificate`. Along the same lines, we are renaming\\n`stake-address delegation-certificate` (delagating to a stake pool) to `stake-address stake-delegation-certificate` to distinguish between stake delegation to a pool and votes delegation to a drep. On top\\nof that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly `stake-address stake-and-vote-delegation-certificate`. Note that change is not included on 8.3 but will come on 8.4.\\nRemoving `--conway-era` flag from all the `transaction` sub-commands.\\n\\nUpdate description fields in delegation certificates from `Stake Address Delegation Certificate` to respectively (Conway onwards):\\n - `Stake Delegation Certificate`\\n - `Vote Delegation Certificate`\\n - `Stake and Vote Delegation Certificate`\\n\\n### cardano-cli\\n\\n- [New `stake-address vote-delegation-certificate` command](https://github.com/input-output-hk/cardano-cli/pull/261)\\n- [New `stake-address stake-and-vote-delegation-certificate` command](https://github.com/input-output-hk/cardano-cli/pull/257)\\n- [Change `TreasuryWithdrawalCmd` to a record](https://github.com/input-output-hk/cardano-cli/pull/260)\\n- [Simplify `stake-address stake-delegation-certificate` command across eras](https://github.com/input-output-hk/cardano-cli/pull/256)\\n- [Remove `EraBased` prefix and add `Cmd` suffix](https://github.com/input-output-hk/cardano-cli/pull/254)\\n- [#221 Update description fields on delegation certificates](https://github.com/input-output-hk/cardano-cli/pull/250)\\n- [Update error message for eras mismatch between node and cli](https://github.com/input-output-hk/cardano-cli/pull/249)\\n- [Era based `address` commands](https://github.com/input-output-hk/cardano-cli/pull/248)\\n- [Consistent naming for `stake-pool` command related types, functions and modules](https://github.com/input-output-hk/cardano-cli/pull/246)\\n- [Disable `redundant-constraints` warning only on `ghc-8.10.7`](https://github.com/input-output-hk/cardano-cli/pull/245)\\n- [Remove `EraBased` prefix from era-based commands](https://github.com/input-output-hk/cardano-cli/pull/244)\\n- [Rename `delegation-certificate` to `stake-delegation-certificate` only in era-based command structure](https://github.com/input-output-hk/cardano-cli/pull/243)\\n- [Move `node` run commands implementation into era based](https://github.com/input-output-hk/cardano-cli/pull/242)\\n- [Era-based `stake-address` command group](https://github.com/input-output-hk/cardano-cli/pull/241)\\n- [Remove duplicate instances and add new `FeatureInEra ShelleyBasedEra` instance](https://github.com/input-output-hk/cardano-cli/pull/240)\\n- [Remove `EraBased` prefix from errors](https://github.com/input-output-hk/cardano-cli/pull/239)\\n- [Move `text-view` run commands implementation into era-based](https://github.com/input-output-hk/cardano-cli/pull/238)\\n- [Move `key` run commands implementation into era based](https://github.com/input-output-hk/cardano-cli/pull/237)\\n- [Move `query` run commands implementation into era based](https://github.com/input-output-hk/cardano-cli/pull/236)\\n- [Move `genesis` run commands implementation into era based](https://github.com/input-output-hk/cardano-cli/pull/235)\\n- [Move `pool` run commands implementation into era based](https://github.com/input-output-hk/cardano-cli/pull/234)\\n- [Move `stake-address` run commands implementation into era based](https://github.com/input-output-hk/cardano-cli/pull/233)\\n- [Move `address` run command implementation into era-based](https://github.com/input-output-hk/cardano-cli/pull/232)\\n- [Delete legacy `conway governance` commands](https://github.com/input-output-hk/cardano-cli/pull/231)\\n- [Era sensitive transaction run commands](https://github.com/input-output-hk/cardano-cli/pull/230)\\n- [Move transaction command code into era based](https://github.com/input-output-hk/cardano-cli/pull/229)\\n- [Fix query `key-period-info`](https://github.com/input-output-hk/cardano-cli/pull/228)\\n- [New `hprop_golden_shelleyStakeAddressRegistrationCertificateWithBuildRaw` test](https://github.com/input-output-hk/cardano-cli/pull/227)\\n- [Prefix complex delegation certificate option](https://github.com/input-output-hk/cardano-cli/pull/225)\\n\\n### cardano-api\\n\\n- [Fix test constraints functions](https://github.com/input-output-hk/cardano-api/pull/233)\\n- [New `caseShelleyToBabbageAndConwayEraOnwards` function](https://github.com/input-output-hk/cardano-api/pull/231)\\n- [Delete deprecated functions and types](https://github.com/input-output-hk/cardano-api/pull/230)\\n- [Release 8.19.0.0](https://github.com/input-output-hk/cardano-api/pull/228)\\n- [`FeatureInEra` instances for `CardanoEra` and `ShelleyBasedEra`](https://github.com/input-output-hk/cardano-api/pull/226)\\n- [New `mapSomeAddressVerification` key function](https://github.com/input-output-hk/cardano-api/pull/225)\\n- [Fix type signature of `queryGenesisParameters` so that it can be queried in any era](https://github.com/input-output-hk/cardano-api/pull/224)\\n- [Release 8.18.0.0](https://github.com/input-output-hk/cardano-api/pull/222)\\n- [Fix exception when executing drep queries](https://github.com/input-output-hk/cardano-api/pull/221)\\n\\n### cardano-node\\n\\n- [Cardano-node 8.3.0-pre](https://github.com/input-output-hk/cardano-node/releases/tag/8.3.0-pre)\\n- [Fix deadlock issue with stdout tracer in tx-generator](https://github.com/input-output-hk/cardano-node/pull/5460)\\n- [nix: workbench tracing configuration](https://github.com/input-output-hk/cardano-node/pull/5453)\\n\\n### cardano-testnet\\n\\n### docs\\n\\n### CI & project maintenance"},{"id":"2023-09-08-hydra","metadata":{"permalink":"/cardano-updates/2023-09-08-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-08-hydra.md","source":"@site/blog/2023-09-08-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-09-08T00:00:00.000Z","formattedDate":"September 8, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.06,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-09-08-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-09-12-node-cli-api"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-09-07-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team improved the commit process with support for inline\\ndatums. They simplified the chain layer by refactoring how the chain state is\\npersisted. Updates to the Hydra tutorial were completed, including CI workflows\\nto keep it up-to-date. The team engaged in discussions with researchers about\\nincremental commits & decommits, and drafted an architectural decision record\\nfor a resource-based API. They also explored simpler solutions for the upcoming\\nnetwork resilience feature.\\n\\n## What did the team achieve this week\\n\\n- Support InlineScriptDatum in commit\\n [#1043](https://github.com/input-output-hk/hydra/issues/1043)\\n- Refactored chain state persistency\\n [#1049](https://github.com/input-output-hk/hydra/pull/1049)\\n- Completed tutorial updates (by adding CI and some cleanup)\\n [#997](https://github.com/input-output-hk/hydra/issues/997)\\n- Intersect Open Source committee meeting\\n- Experimented with various models to better express the \\\\\\"Network\\n resilience problem\\\\\\" to find a KISS solution for\\n [#188](https://github.com/input-output-hk/hydra/issues/188)\\n- Drafted and discussed incremental de-/commit features within team\\n and with researchers\\n [#199](https://github.com/input-output-hk/hydra/issues/199) and\\n [#1057](https://github.com/input-output-hk/hydra/issues/1057)\\n- Created ADR for a resource based overhaul of the API\\n [#1028](https://github.com/input-output-hk/hydra/pull/1028)\\n\\n## What are the goals of next week\\n\\n- Meetup of Hydra & Mithril contributors in Nantes, France\\n- Integrated cardano-api 8.15 to have GHC 9.6 support\\n- A clear design for incremental commits (decommits are already\\n understood)\\n- An ADR for improving tx construction & observation to not need chain\\n state"},{"id":"2023-09-07-mithril","metadata":{"permalink":"/cardano-updates/2023-09-07-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-07-mithril.md","source":"@site/blog/2023-09-07-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-09-07T00:00:00.000Z","formattedDate":"September 7, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.53,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-09-07-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-08-hydra"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-09-07-performance-and-tracing"}},"content":"## High level overview\\nThe Mithril team has released a new distribution [`2335.0`](https://github.com/input-output-hk/mithril/releases/tag/2335.0) which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information.\\n\\nThey have also worked on snapshots enhancements: implementation of the `zstandard` compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes.\\n\\nFinally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client.\\n\\n## Low level overview\\n- Completed the issue `Use \'zstandard\' compression for snapshot archives` [#876](https://github.com/input-output-hk/mithril/issues/876)\\n- Completed the issue `Design & implement stress test tool for aggregator - phase 2` [#1155](https://github.com/input-output-hk/mithril/issues/1155)\\n- Completed the issue `Provide progress information with \'--json\' option in Client` [#1095](https://github.com/input-output-hk/mithril/issues/1095)\\n- Completed the issue `Make client download and extract the archive simultaneously` [#1115](https://github.com/input-output-hk/mithril/issues/1115)\\n- Completed the issue `Add aggregator Cardano node version in snapshot artifact` [#948](https://github.com/input-output-hk/mithril/issues/948)\\n- Completed the issue `Make Cardano node version part of the Mithril network configuration` [#947](https://github.com/input-output-hk/mithril/issues/947)\\n- Completed the issue `Post deployment \'mainnet\' infrastructure` [#1091](https://github.com/input-output-hk/mithril/issues/1091)\\n- Worked on the issue `Errors refactoring` [#798](https://github.com/input-output-hk/mithril/issues/798)\\n- Worked on the issue `Add Cloudflare protection of infrastructure` [#986](https://github.com/input-output-hk/mithril/issues/986)\\n- Completed the issue `Failed to restore recent snapshot with strange error` [#1160](https://github.com/input-output-hk/mithril/issues/1160)\\n- Completed the issue `Update \'ed25519-dalek\' to \'2.0.0\'` [#1188](https://github.com/input-output-hk/mithril/issues/1188)\\n- Completed the issue `Add target networks blocks in release notes` [#1151](https://github.com/input-output-hk/mithril/issues/1151)\\n- Completed the issue `Fix end to end \'wait_for_the_expected_time\' test` [#1191](https://github.com/input-output-hk/mithril/issues/1191)\\n- Completed the issue `Fix docs \'git checkout\' command` [#1174](https://github.com/input-output-hk/mithril/issues/1174)"},{"id":"2023-09-07-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-09-07-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-07-performance-and-tracing.md","source":"@site/blog/2023-09-07-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-09-07T00:00:00.000Z","formattedDate":"September 7, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.3,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-09-07-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-09-07-mithril"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-09-06-consensus"}},"content":"## High level summary\\n\\n* Benchmarking: We\'ve performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack.\\n* Infrastructure: Various improvements of our analysis pipeline have been merged to `master`, supporting safe log truncation.\\n* Tracing: Namespace consistency checks have been merged to `master` along with a curated configuration for benchmarking.\\n* Nomad backend: We\'re productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nWe\'ve completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer. \\n\\nWith our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance. \\n\\nThe Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack.\\n\\n### Infrastructure\\n\\nAs a result of optimizing in-memory representation of log objects, which are constructed from a node\'s traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation\\noperation that keeps the interdependencies of block events intact. \\n\\nTruncation might happen at a slightly different point\\nin time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time.\\n\\n### Tracing\\n\\nConsistency checking of namespace implementation and configuration when using the new system has been completed.\\nThis feature enables feedback on when tracer implementation details in some component might have changed. It\'s also able to detect when a configuration used for operating a `cardano-node` shows inconsistencies with the namespaces the system provides - and hence needs attention. \\n \\nFurthermore, we\'ve created a fine-grained configuration of the new system that caters to benchmarking\'s need of very many\\ndetailed trace messages. It\'s aimed at mirroring the same amount of trace messages, and information, we\'re seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable.\\n\\n### Nomad backend\\n\\nThe new backend is currently being used for further validation with regard to the existing cluster. Additionally, we\'re using it in production mode to comparatively benchmark both tracing systems after merging past month\'s optimizations - which is the\\nfirst real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend."},{"id":"2023-09-06-consensus","metadata":{"permalink":"/cardano-updates/2023-09-06-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-06-consensus.md","source":"@site/blog/2023-09-06-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-09-06T00:00:00.000Z","formattedDate":"September 6, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":2.22,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-09-06-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-09-07-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-09-01-goedel"}},"content":"## High level summary\\n\\nWe were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation.\\nOn the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers.\\nThe Consensus release engineer finished his rotation: version `8.3.0-pre` of `cardano-node` is releasing 2023 September 5.\\n\\n## UTxO-HD\\n\\n- We ran the first successful system-level benchmarks for UTxO-HD (see [#203](https://github.com/input-output-hk/ouroboros-consensus/issues/203)) using the *in-memory* backend.\\n - We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot.\\n - After the mempool regression is fixed the benchmarks need to be ran again.\\n - System-level UTxO-HD benchmarks with the LMDB are still pending.\\n- UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see [#344](https://github.com/input-output-hk/ouroboros-consensus/issues/344)).\\n- We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in `GetUTxOByAddress` (see [this comment](https://github.com/input-output-hk/ouroboros-consensus/issues/205#issuecomment-1706878418)). Preliminary results are promising.\\n- Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory ([#344](https://github.com/input-output-hk/ouroboros-consensus/issues/344)), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.\\n\\n## Tech debt\\n\\n- We added tests that Consensus emits valid CBOR ([#3099](https://github.com/input-output-hk/ouroboros-network/issues/3099)). This helped us detect a couple of serialization bugs. The tests still need to be merged into the `main` branch ([#323](https://github.com/input-output-hk/ouroboros-consensus/pull/323)).\\n\\n## Support\\n\\n- [Nick Frisby](https://github.com/nfrisby) finished his release engineer rotation; `cardano-node 8.3.0-pre` is releasing 2023 September 5.\\n- We helped to investigate a protocol version bug in Sanchonet (see [#3491](https://github.com/input-output-hk/cardano-ledger/issues/3491)).\\n- We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see [#91](https://github.com/input-output-hk/ouroboros-consensus/issues/91)."},{"id":"2023-09-01-goedel","metadata":{"permalink":"/cardano-updates/2023-09-01-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-goedel.md","source":"@site/blog/2023-09-01-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-09-01T00:00:00.000Z","formattedDate":"September 1, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.43,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-09-01-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-09-06-consensus"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-01-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThe team is currently formalising mini protocols and also further\\ndeveloping the performance modelling prototype.\\n\\n## Details\\n\\n* finalising a presenting performance analysis internship work to the\\n formal methods team\\n\\n* developed a new Isabelle mini-protocol framework and examples\\n\\n* planning an extended version of the ICE DeltaQ paper\\n\\n* working on algebraic rules for properisation of any-to-finish"},{"id":"2023-09-01-hydra","metadata":{"permalink":"/cardano-updates/2023-09-01-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-hydra.md","source":"@site/blog/2023-09-01-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-09-01T00:00:00.000Z","formattedDate":"September 1, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.93,"hasTruncateMarker":false,"authors":[{"name":"Sasha Bogicevic","title":"Hydra Software Engineer","url":"https://github.com/v0d1ch","imageURL":"https://github.com/v0d1ch.png","key":"v0d1ch"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-09-01-hydra","authors":["v0d1ch"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-09-01-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-09-01-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team focused primarily on changes needed in the network\\nlayer and have the first draft document related to needed design. They also\\nimproved the user experience by allowing a commit using inline datums.\\nDiscussed the off-chain governance with researchers and improved internal model\\ntests. \\n\\n## What did the team achieve this week\\n\\n- Monthly report published\\n- Small changes to hydraw and tutorial in light of the Masterclass\\n- Investigated a bug and saw it was solved by recent developments\\n- Improved the model tests by fully validating L1 transactions\\n- Enhanced the /commit API to also allow commit from scripts with inline datums (user request)\\n- Discussed off-chain governance with IOG and CF researchers\\n- Drafted a first network specification document in the context of Network resilience\\n\\n## What are the goals of next week\\n\\n- Have a clear understanding of the changes we need for the \\"Improve network resiliency\\" feature\\n- Groomed and agreed plan on incremental commits/decommits\\n- Updated tutorials including CI workflows to check consistency\\n- Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)"},{"id":"2023-09-01-ledger","metadata":{"permalink":"/cardano-updates/2023-09-01-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-ledger.md","source":"@site/blog/2023-09-01-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-09-01T00:00:00.000Z","formattedDate":"September 1, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.355,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-09-01-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-09-01-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-09-01-network"}},"content":"## High level summary\\n\\nBroadly speaking the Ledger team focused on a few main areas of Conway era:\\n\\n* Creation of voting state snapshots in order to correctly delay ratification for one epoch\\n* Validation of the Governance Actions sequencing and ordering\\n* Proper expiry of DReps and Proposal Procedures\\n* Expanding Conway Genesis functionality\\n* Utilization of some of the new Protocol Parameters in ledger validation rules\\n\\n## Low level summary\\n\\n### Conway era\\n\\n* [pull-3659] - Validate Network for ProposalProcedure and TreasuryWithdrawal\\n* [pull-3637] - Avoid using sequence of tuples, by adding GovActionId to GovActionState\\n* [pull-3651] - Inactive DReps\\n* [pull-3664] - Track proposal expiry\\n* [pull-3668] - Add min committee size predicate to NewCommittee\\n* [pull-3669] - Add Proposal deposit check against PParam\\n* [pull-3676] - Fix inactive PoolStake not counting as Drep Stake\\n* [pull-3635] - Make snapshots of GovActionsState\\n* [pull-3670] - Validate previously enacted govAction\\n* [pull-3694] - Improve error reporting on the positive coin decoder\\n* [pull-3674] - Added RATIFY thresholds\\n* [pull-3684] - Add proposal delaying, remove predicate failure from ENACT\\n* [pull-3688] - DRep Refunds and update evalTransactionBalance\\n\\n### Improvements and releasing\\n\\n* [pull-3677] - Minor patch that fixes the DRep distribution computation\\n* [pull-3686] - Post patch release fixup\\n* [pull-3695] - Changelog for cardano-node-8.3 release\\n* [pull-3683] - Add two new bench mark programs\\n\\n### Testing\\n\\n* [pull-3662] - Equality on raw types\\n\\n[pull-3659]: https://github.com/input-output-hk/cardano-ledger/pull/3659\\n[pull-3637]: https://github.com/input-output-hk/cardano-ledger/pull/3637\\n[pull-3651]: https://github.com/input-output-hk/cardano-ledger/pull/3651\\n[pull-3664]: https://github.com/input-output-hk/cardano-ledger/pull/3664\\n[pull-3668]: https://github.com/input-output-hk/cardano-ledger/pull/3668\\n[pull-3669]: https://github.com/input-output-hk/cardano-ledger/pull/3669\\n[pull-3662]: https://github.com/input-output-hk/cardano-ledger/pull/3662\\n[pull-3676]: https://github.com/input-output-hk/cardano-ledger/pull/3676\\n[pull-3677]: https://github.com/input-output-hk/cardano-ledger/pull/3677\\n[pull-3635]: https://github.com/input-output-hk/cardano-ledger/pull/3635\\n[pull-3683]: https://github.com/input-output-hk/cardano-ledger/pull/3683\\n[pull-3686]: https://github.com/input-output-hk/cardano-ledger/pull/3686\\n[pull-3670]: https://github.com/input-output-hk/cardano-ledger/pull/3670\\n[pull-3694]: https://github.com/input-output-hk/cardano-ledger/pull/3694\\n[pull-3674]: https://github.com/input-output-hk/cardano-ledger/pull/3674\\n[pull-3684]: https://github.com/input-output-hk/cardano-ledger/pull/3684\\n[pull-3695]: https://github.com/input-output-hk/cardano-ledger/pull/3695\\n[pull-3688]: https://github.com/input-output-hk/cardano-ledger/pull/3688"},{"id":"2023-09-01-network","metadata":{"permalink":"/cardano-updates/2023-09-01-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-network.md","source":"@site/blog/2023-09-01-network.md","title":"Network Team Update","description":"High-level overview of sprint 43","date":"2023-09-01T00:00:00.000Z","formattedDate":"September 1, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":2.765,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-09-01-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-09-01-ledger"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-09-01-sre"}},"content":"## High-level overview of [sprint 43][sprint-43]\\n\\nIn this sprint, we received contributions from [CF] & [Galois]. Karl Knutsson\\n([CF]) has addressed various issues regarding peer churning in P2P, timeouts\\nand our `WireShark` dissector. While the [Galois] developers focused on\\naddressing issues from their review last year. See below for more details.\\n\\nWe continued working on bootstrap peers [ouroboros-network-#4661].\\n\\nWe refactored our test suites: they are split into `io-tests` which require to\\nbe run natively on all platforms (these tests mostly contain tests that\\nrequire `IO` system calls) and `sim-tests` which are platform independent. We\\nrun `io-tests` on all supported platforms (e.g. `x86_64-linux`,\\n`x86-64-darwin`, `aarch64-darwin` and `x86_64-w64-mingw32` (Windows)) natively.\\nThe `sim-tests` are not executed on `Windows` due to memory limitations on\\nGitHub Actions runners. [ouroboros-network-#4653]\\n\\nWe also started rebasing `typed-protocols` refactoring branches.\\n\\nMarcin was appointed as the `cardano-node` release engineer for the `8.4.0-pre`\\nversion. So far he integrated `cardano-ledger-conway-1.8` and\\n`ouroboros-network-0.9.1.0` to `ouroboros-consensus`, `cardano-cli` and\\n`cardano-api`. Once we will have an integration branch for `cardano-node`,\\n`cardano-ledger-conway-1.8` and `ouroboros-consensus` packages can be released\\nto `CHaP` and PRs can be merged once they go through review & CI.\\n\\nWe also fixed some smaller issues regarding peer sharing (both were discovered\\nby Karl from [CF]). More details are included below.\\n\\n### Progress on P2P addoption\\n\\n#### SPO relays\\n\\nThere are currently ~2000 relays running P2P\\nenabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On\\n16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil\\nAda.\\n\\n![P2P relays](/images/network/2023-08-31-p2p-relays.png)\\n\\nThe following graphs show several different versions of relays running on the mainnet. The\\ngreen line `NodeToNodeVersionV10.True` denotes P2P relays, which slowly\\nincrease over time. The `V9` and earlier versions of the `node-to-node`\\nthe protocol indicates nodes version `1.35.x` or earlier.\\n![node versions](/images/network/2023-08-31-relay-versions.png)\\n\\nData has been kindly provided by [CF] and their mainnet monitoring\\ninfrastructure.\\n\\n#### IOG relays\\n\\nAs of this week, 90% of IOG relays are running a P2P setup. In the next sprint all\\nIOG relays will be running P2P.\\n\\n## Detailed description\\n\\nIn this sprint, we got a few contributions from [CF]:\\n* Karl made peer churning mechanism less aggressive [ouroboros-network-#4656]; and\\n* he added timeouts for idle states in `ChainSync` & `KeepAlive`\\n miniprotocols. These timeouts help a node remove idle connections from the\\n responder (server) side [ouroboros-network-#4648].\\n* he improved the `WireShark` dissector by adding support for the `peer-sharing` mini-protocol [ouroboros-network-#4656].\\n\\n[Galois] has been making progress in addressing some of the issues they raised in their review (last year):\\n* Mark Tullsen ([Galois]) has been working on refactoring the main entry function of P2P [ouroboros-network-#4661] (in review);\\n* Sam Cowger ([Galois]) has been reviewing all use cases of `error` and `unsafe` calls\\n [ouroboros-network-#4661] (in review).\\n\\n## Peer Sharing\\n\\n* Light peer sharing is only enabled when peer sharing is turned on [ouroboros-network-#4652];\\n* Handshake incorrectly reports peer sharing value. It\'s supposed to relay the\\n remote value, but instead, it returns the local value. [ouroboros-network-#4642] (in review).\\n\\n## Async Demotion Test Fix\\n\\n* We fixed an async demotion test failure which turned out to be a weakness of\\n the test itself rather than a bug in the connection manager. [ouroboros-network-#4655]\\n\\n[CF]: https://cardanofoundation.org/\\n[Galois]: https://galois.com/\\n[sprint-43]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+43%22\\n[ouroboros-network-#4615]: https://github.com/input-output-hk/ouroboros-network/issues/4615\\n[ouroboros-network-#4648]: https://github.com/input-output-hk/ouroboros-network/pull/4648\\n[ouroboros-network-#4653]: https://github.com/input-output-hk/ouroboros-network/issues/4653\\n[ouroboros-network-#4656]: https://github.com/input-output-hk/ouroboros-network/pull/4656\\n[ouroboros-network-#4657]: https://github.com/input-output-hk/ouroboros-network/pull/4657\\n[ouroboros-network-#4660]: https://github.com/input-output-hk/ouroboros-network/pull/4660\\n[ouroboros-network-#4661]: https://github.com/input-output-hk/ouroboros-network/pull/4661\\n[ouroboros-network-#4652]: https://github.com/input-output-hk/ouroboros-network/pull/4652\\n[ouroboros-network-#4642]: https://github.com/input-output-hk/ouroboros-network/issues/4642\\n[ouroboros-network-#4655]: https://github.com/input-output-hk/ouroboros-network/issues/4655"},{"id":"2023-09-01-sre","metadata":{"permalink":"/cardano-updates/2023-09-01-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-sre.md","source":"@site/blog/2023-09-01-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-09-01T00:00:00.000Z","formattedDate":"September 1, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":1.075,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-09-01-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-09-01-network"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-08-29-node-cli-api"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent updates or improvements include:\\n* Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes\\n* Work on a new [capkgs](https://github.com/input-output-hk/capkgs) repository started -- \\"Content Addressed Packages\\"\\n * This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output\\n * These packages don\'t have the associated IFD, long eval times and large source dependencies that the originating source repositories often do\\n * Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers\\n\\n## Lower level summary\\n\\n### Capkgs\\n* Content addressed packages -- new repo: [capkgs](https://github.com/input-output-hk/capkgs)\\n\\n### Cardano-ops\\n* Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: [cardano-ops-compare](https://github.com/input-output-hk/cardano-ops/compare/5a0eabe...03e8e42)\\n\\n### Cardano-parts\\n* Flake devShell module improvements: [cardano-parts-pull-4](https://github.com/input-output-hk/cardano-parts/pull/4)\\n* Cardano-world entrypoints migrated to flake parts module: [cardano-parts-pull-5](https://github.com/input-output-hk/cardano-parts/pull/5)\\n* Cardano-world jobs migrated to flake parts module: [cardano-parts-pull-6](https://github.com/input-output-hk/cardano-parts/pull/6)\\n* Drep delegation fixups: [cardano-parts-pull-7](https://github.com/input-output-hk/cardano-parts/pull/7)\\n* Utilize content addressed binaries, WIP: [cardano-parts-pull-8](https://github.com/input-output-hk/cardano-parts/pull/8)\\n* Cardano-node module preparation branch, WIP: [cardano-parts-compare](https://github.com/input-output-hk/cardano-parts/compare/capkgs...node-module)\\n\\n### Cardano-perf\\n* Availability zone pinning and explorer mods: [cardano-perf-compare](https://github.com/input-output-hk/cardano-perf/compare/d3a8644...9f9917c)\\n\\n### Cardano-world\\n* Remove performance nodes for migration to cardano-perf: [cardano-world-commit](https://github.com/input-output-hk/cardano-world/commit/306ef6c6dd6c09d9b90b9768f2b84a1d05cded26)\\n\\n### Sanchonet-demo\\n* Sanchonet demonstration repository: [sanchonet-demo](https://github.com/input-output-hk/sanchonet-demo)"},{"id":"2023-08-29-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-08-29-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-29-node-cli-api.md","source":"@site/blog/2023-08-29-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-08-29T00:00:00.000Z","formattedDate":"August 29, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.55,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-08-29-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-09-01-sre"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-08-28-mithril"}},"content":"# 2023-08-16 - 2023-08-29\\n\\n## High level summary\\n\\nCLI is making progress towards phases 3 and 4 of SanchoNet.\\n- Ability to create info, no-confidence and new committee governance actions.\\n- Voting as DREP is possible now on the CLI\\n\\n- API is now using Ledger\'s PParams and VotingProcedures\\n- Expose following queries from consensus:\\n - GetGovState\\n - GetDRepState\\n - GetDRepStakeDistr\\n - GetCommitteeState\\n - GetConstitution\\n\\n### cardano-cli\\n\\n- [Add goverance info action creation to era based cli](https://github.com/input-output-hk/cardano-cli/pull/179)\\n- [Add create-no-confidence command to era based cardano-cli](https://github.com/input-output-hk/cardano-cli/pull/176)\\n- [Add create-new-committee command to era based cli](https://github.com/input-output-hk/cardano-cli/pull/175)\\n- [Enable `--drep-script-hash` option](https://github.com/input-output-hk/cardano-cli/pull/204)\\n- [Remove `experimental` subcommand](https://github.com/input-output-hk/cardano-cli/pull/211)\\n- [Upgrade to `cardano-api-8.17.0.0`](https://github.com/input-output-hk/cardano-cli/pull/210)\\n- [New `governance drep id` command](https://github.com/input-output-hk/cardano-cli/pull/194)\\n- [Add `governance query` commands](https://github.com/input-output-hk/cardano-cli/pull/189)\\n- [Add `--verification-key` option to `committee key-hash` command](https://github.com/input-output-hk/cardano-cli/pull/187)\\n- [Read and write `VotingProcedures` files instead of `VotingEntry` files](https://github.com/input-output-hk/cardano-cli/pull/203)\\n- [Release 8.6.0.0](https://github.com/input-output-hk/cardano-cli/pull/201)\\n- [Merge `LegacyClientCmdError` into `CmdError` ](https://github.com/input-output-hk/cardano-cli/pull/195)\\n- [Add test for conway governance action create-constitution](https://github.com/input-output-hk/cardano-cli/pull/193)\\n- [Move legacy errors out of legacy command structure modules](https://github.com/input-output-hk/cardano-cli/pull/192)\\n- [Governance `drep` and `vote` command groups](https://github.com/input-output-hk/cardano-cli/pull/191)\\n- [Move command errors from era-based to `CmdError` module](https://github.com/input-output-hk/cardano-cli/pull/188)\\n- [Move some error types](https://github.com/input-output-hk/cardano-cli/pull/186)\\n- [Delete unused module](https://github.com/input-output-hk/cardano-cli/pull/185)\\n- [Refactor: Use `maybeFeatureInEra` instead of `featureInEra` where possible](https://github.com/input-output-hk/cardano-cli/pull/183)\\n- [Remove all uses of `toS`, `purer`, `cborError` and `intercalate` from `Cardano.Prelude`](https://github.com/input-output-hk/cardano-cli/pull/182)\\n- [Remove example era-based parsers we don\'t need anymore](https://github.com/input-output-hk/cardano-cli/pull/180)\\n- [Bump CHaP index in preparation for 8.3.0 pre](https://github.com/input-output-hk/cardano-cli/pull/174)\\n\\n\\n### cardano-api\\n\\n- [New version `cardano-api-8.17.0.0`](https://github.com/input-output-hk/cardano-api/pull/216)\\n- [Replace ProtocolParameters usage with ledger\'s PParams](https://github.com/input-output-hk/cardano-api/pull/214)\\n- [Use injective type families to improve type inference](https://github.com/input-output-hk/cardano-api/pull/210)\\n- [Delete `TxVotes` and `VotingEntry` and use `VotingProcedures` instead](https://github.com/input-output-hk/cardano-api/pull/209)\\n- [New functions `emptyVotingProcedures`, `singletonVotingProcedures` and `mergeVotingProcedures`](https://github.com/input-output-hk/cardano-api/pull/208)\\n- [New `makeStakeAddressAndDRepDelegationCertificate` function](https://github.com/input-output-hk/cardano-api/pull/207)\\n- [Expose ledger lenses for governance types](https://github.com/input-output-hk/cardano-api/pull/206)\\n- [New version cardano-api-8.16.1.0](https://github.com/input-output-hk/cardano-api/pull/205)\\n- [Add `VotingProcedures` type](https://github.com/input-output-hk/cardano-api/pull/204)\\n- [Release 8.16.0.0](https://github.com/input-output-hk/cardano-api/pull/202)\\n- [Update createAnchor to use hashAnchorData](https://github.com/input-output-hk/cardano-api/pull/200)\\n- [Release 8.15.0.0](https://github.com/input-output-hk/cardano-api/pull/197)\\n- [Add consensus governance queries](https://github.com/input-output-hk/cardano-api/pull/196)\\n\\n### cardano-node\\n\\n### cardano-testnet\\n\\n### docs\\n\\n### CI & project maintenance"},{"id":"2023-08-28-mithril","metadata":{"permalink":"/cardano-updates/2023-08-28-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-28-mithril.md","source":"@site/blog/2023-08-28-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-08-28T00:00:00.000Z","formattedDate":"August 28, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-08-28-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-08-29-node-cli-api"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-25-hydra"}},"content":"## High level overview\\nThe Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of `zstandard` compression of the snapshot archive, and streaming its download and decompression in the client.\\n\\nFinally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer. \\n\\n## Low level overview\\n- Completed the issue `Create explorer page with registered signers` [#1097](https://github.com/input-output-hk/mithril/issues/1097)\\n- Completed the issue `Simplify logs on the Signer/Aggregator` [#1106](https://github.com/input-output-hk/mithril/issues/1106)\\n- Completed the issue `Refactor (de)serialization of crypto entities` [#668](https://github.com/input-output-hk/mithril/issues/668)\\n- Completed the issue `Mithril client last snapshot download` [#1078](https://github.com/input-output-hk/mithril/issues/1078)\\n- Completed the issue `Use the \'/signers/registered\' route to verify if a signer is registered` [#1152](https://github.com/input-output-hk/mithril/issues/1152)\\n- Worked on the issue `Provide progress information with \'--json\' option in Client` [#1095](https://github.com/input-output-hk/mithril/issues/1095)\\n- Worked on the issue `Use \'zstandard\' compression for snapshot archives` [#876](https://github.com/input-output-hk/mithril/issues/876)\\n- Worked on the issue `Make client download and extract the archive simultaneously` [#1115](https://github.com/input-output-hk/mithril/issues/1115)"},{"id":"2023-08-25-hydra","metadata":{"permalink":"/cardano-updates/2023-08-25-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-25-hydra.md","source":"@site/blog/2023-08-25-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-08-25T00:00:00.000Z","formattedDate":"August 25, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.875,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-08-25-hydra","authors":["ffakenz"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-08-28-mithril"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-08-24-performance-and-tracing"}},"content":"## High-level summary\\n\\nThis week, the Hydra team conducted the monthly review meeting for Agust,which\\ncontinously ensures transparent communication and project evaluation.\\n\\nIn terms of community engagement, the Hydra team gave a Hydra master-class at\\nRareEvo workshop as an educational initiative for the community.\\nAdditionally, the team updated the Hydra demo and tutorial to include Mithril\\nand latest release changes.\\n\\nThey also focused on exploring the Hydra network resiliance in order to improve\\n`hydra-node` availability, as it becomes stuck very easily and that leads to a\\nbad user experience.\\n\\n## What did the team achieve this week\\n\\n- Hydra master-class at RareEvo workshop!\\n- Monthly report & review meeting\\n- Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff\\n- Groomed network resilience and explorer features [#188](https://github.com/input-output-hk/hydra/issues/188)\\n- New ADR for \u201cResourced based API\u201d [#1028](https://github.com/input-output-hk/hydra/pull/1028)\\n\\n## What are the goals of next week\\n\\n- Have a poc on network resilience working [#188](https://github.com/input-output-hk/hydra/issues/188)\\n- Fix issue [#931](https://github.com/input-output-hk/hydra/issues/931): \u201cChain state in head state not updated on replayed observation\u201d\\n- Fix issue [#1039](https://github.com/input-output-hk/hydra/issues/1039): \\"Close transaction dropped from cardano-node\\""},{"id":"2023-08-24-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-08-24-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-24-performance-and-tracing.md","source":"@site/blog/2023-08-24-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-08-24T00:00:00.000Z","formattedDate":"August 24, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.7,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-08-24-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-25-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-08-23-consensus"}},"content":"## High level summary\\n\\n* Benchmarking: Benchmarking node version `8.2.1` has concluded. Additionally we\'re developing benchmarking setups for GHC9.6 and UTxO-HD.\\n* Infrastructure: Our analysis pipeline has received improvements reducing memory footprint.\\n* Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing.\\n* Nomad backend: We\'re performing and analysing various runs for validation purposes on the new hardware cluster.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nWe\'ve performed and analysed the benchmarks for the `8.2.1` version of `cardano-node` as part of our release benchmarking cycle. \\n\\nSetting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we\'re working on respective integrations on both those paths.\\n\\n### Infrastructure\\n\\nAs cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held\\nin memory, which wouldn\'t fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline.\\n\\n### Tracing\\n\\nThe next portion of optimizations has been completed and merged to `master`, getting rid of Haskell\'s native `String` representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by `cardano-node`. \\n\\nThe implementation for validation of consistent naming and configuration is ongoing. We\'re splitting out everything that\'s verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup.\\n\\n### Nomad backend\\n\\nThe verification phase of the nomad cloud backend is ongoing. We\'re able to perform full runs on the new hardware cluster\\nand porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend."},{"id":"2023-08-23-consensus","metadata":{"permalink":"/cardano-updates/2023-08-23-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-23-consensus.md","source":"@site/blog/2023-08-23-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-08-23T00:00:00.000Z","formattedDate":"August 23, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.42,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-08-23-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-08-24-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-08-18-goedel"}},"content":"## High level summary\\n\\nOn the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests.\\nOn the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base.\\n\\n## UTxO-HD\\n\\n- We addressed the issues that came from the benchmarking and testing phase (see [#314](https://github.com/input-output-hk/ouroboros-consensus/issues/314)).\\n - We fixed the operational-certificate update exception ([#305](https://github.com/input-output-hk/ouroboros-consensus/pull/305)).\\n\\n## Tech debt \\n\\n- We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see [this branch](https://github.com/input-output-hk/cardano-api/tree/jasagredo/consensus-api)).\\n- We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see [this branch](https://github.com/input-output-hk/ouroboros-consensus/tree/jasagredo/test-sop)).\\n- We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see [#275](https://github.com/input-output-hk/ouroboros-consensus/issues/275)).\\n- We decreased the flakiness for our test suite ([#284](https://github.com/input-output-hk/ouroboros-consensus/pull/284)).\\n- We incorporated and merged the pull-request on query versioning ([#273](https://github.com/input-output-hk/ouroboros-consensus/pull/273)).\\n- We started working on new performance-based regression tests for mempool operations.\\n\\n## Support \\n\\n- [Nick Frisby](https://github.com/nfrisby) continues with his engineer responsibilities. Notably getting the Consensus release out for node `pre-release 8.3`. Nick also began integrating it into downstream branches (`cardano{-api,-cli,-node}`). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:\\n - [#283](https://github.com/input-output-hk/ouroboros-consensus/pull/283)\\n - [#301](https://github.com/input-output-hk/ouroboros-consensus/pull/301)\\n - [#304](https://github.com/input-output-hk/ouroboros-consensus/pull/304)\\n\\t- [#308](https://github.com/input-output-hk/ouroboros-consensus/pull/308)"},{"id":"2023-08-18-goedel","metadata":{"permalink":"/cardano-updates/2023-08-18-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-goedel.md","source":"@site/blog/2023-08-18-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-08-18T00:00:00.000Z","formattedDate":"August 18, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.72,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-08-18-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-08-23-consensus"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-18-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThe team is currently formalising mini protocols and also further\\ndeveloping the performance modelling prototype.\\n\\n## Details\\n\\n\\n* Development of an automated prover for showing conformance of\\n programs to state machines (as part of the mini-protocol framework)\\n\\n* Completion of the documentation of the (current state of the)\\n mini-protocol framework\\n\\n* Discussion about two DeltaQ lectures with two practical sessions as part\\n of 4th year masters course on distributed systemsby colleagues at UC\\n Louvain in the Autumn\\n\\n* Discussion about four DeltaQ lectures by colleagues at U. Bergen as part\\n of a 5th year Masters course in the Autumn\\n\\n* Adapted original DeltaQ implementation to the new typeclasses and\\n wrote property tests for its algebraic laws"},{"id":"2023-08-18-hydra","metadata":{"permalink":"/cardano-updates/2023-08-18-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-hydra.md","source":"@site/blog/2023-08-18-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-08-18T00:00:00.000Z","formattedDate":"August 18, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.13,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-08-18-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-08-18-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-08-18-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team released version 0.12.0, a significant update that\\nbrings support for cardano-node 8.1.2, along with performance enhancements and\\nvarious API improvements. Additionally, the team successfully onboarded a new\\ncontributor who is now actively participating in operating a Hydra Head. They\\ntook part in a meeting of the Intersect open source committee and prepared the\\nHydra master-class for RareEvo, an educational initiative for the community.\\n\\nIf you happen to be at RareEvo, register for the Hydra master-class [using this\\nform](https://docs.google.com/forms/d/1Q9KIxwKeyZeNrKDBiYWceYjnbxIxaEwC8Eo5LWxSa2g/viewform?edit_requested=true).\\nWe hope to make it possible to follow along on-line as well and will announce\\ndetails on the Hydra announcements channel on the [IOG discord\\nserver](https://discord.gg/Qq5vNTg9PT).\\n\\n## What did the team achieve this week\\n\\n- Released version 0.12.0 which adds support for cardano-node 8.1.2, performance\\n and several API improvements. [Release notes](https://github.com/input-output-hk/hydra/releases/tag/0.12.0)\\n- Replaced commit via websocket with external draft + submit. [#954](https://github.com/input-output-hk/hydra/issues/954)\\n- Onboarded new contributor to the point where he actively participates in operating a Head now.\\n- Joined a first meeting of the Intersect open source committee\\n- Prepared the Hydra master-class for RareEvo.\\n\\n## What are the goals of next week\\n\\n- Monthly review meeting\\n- Run the Hydra master-class at RareEvo!\\n- Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff\\n- Clear out red bin items (technical debt)\\n- Groom network resilience and explorer features"},{"id":"2023-08-18-ledger","metadata":{"permalink":"/cardano-updates/2023-08-18-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-ledger.md","source":"@site/blog/2023-08-18-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-08-18T00:00:00.000Z","formattedDate":"August 18, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.7,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-08-18-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-18-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-08-18-network"}},"content":"## High level summary\\n\\nThe ledger team made great progress in advancing Conway era forward. In particular, voting\\nfor DRep and Stake Pool Operators is now at the state that can be used by downstream\\ncomponents. Addition of new ledger state queries makes it possible to verify changes to\\nthe governance state, such as placement of votes, submission of governance proposals,\\ninspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the\\nability to enact all of the governance actions, except for the hard fork initiation.\\n\\n\\n## Low level summary\\n\\n### Conway progress\\n\\n* [pull-3577] - Move `PParams` to `GovState`\\n* [pull-3609] - Adjust thresholds for sanchonet\\n* [pull-3604] - README: update CIP-1694 link\\n* [pull-3616] - Switch `TreasuryWithdrawals` to use `RewardAcnt`\\n* [pull-3599] - Add governance action well-formedness check\\n* [pull-3607] - Rename governance to gov\\n* [pull-3601] - Added `DRep` anchors\\n* [pull-3615] - Add optional previous `GovActionId` in some `ProposalProcedures`\\n* [pull-3596] - Upgradeable families\\n* [pull-3625] - Change constitution to use `Anchor`\\n* [pull-3592] - Added pulsing incremental computation of the DRep distribution\\n* [pull-3523] - Treasury donations\\n* [pull-3633] - Prevent state changes on phase2 failure\\n* [pull-3634] - Disable serialization of protocolVersion param update\\n* [pull-3630] - Implemented DRep refreshing\\n* [pull-3640] - Remove crypto parameterization from `AnchorData`\\n* [pull-3636] - Implement DRep ratification with an \\"always passing\\"; threshold\\n* [pull-3648] - Governance queries\\n* [pull-3650] - Change environment for `ShelleyPOOLREAP` rule\\n* [pull-3658] - Set `DRep` ratify threshold to 51%\\n* [pull-3628] - `DELEG`, `POOL`, `GOVCERT` conformance with Spec v0.8\\n\\n### Testing\\n\\n* [pull-3619] - Disabled a broken test\\n\\n### Improvements and releasing\\n\\n* [pull-3660] - Fix bounds and versions\\n* [pull-3661] - Adjust versions, bounds and CHANGELOGs to account for the latest release\\n\\n[pull-3577]: https://github.com/input-output-hk/cardano-ledger/pull/3577\\n[pull-3609]: https://github.com/input-output-hk/cardano-ledger/pull/3609\\n[pull-3604]: https://github.com/input-output-hk/cardano-ledger/pull/3604\\n[pull-3616]: https://github.com/input-output-hk/cardano-ledger/pull/3616\\n[pull-3599]: https://github.com/input-output-hk/cardano-ledger/pull/3599\\n[pull-3619]: https://github.com/input-output-hk/cardano-ledger/pull/3619\\n[pull-3607]: https://github.com/input-output-hk/cardano-ledger/pull/3607\\n[pull-3601]: https://github.com/input-output-hk/cardano-ledger/pull/3601\\n[pull-3615]: https://github.com/input-output-hk/cardano-ledger/pull/3615\\n[pull-3596]: https://github.com/input-output-hk/cardano-ledger/pull/3596\\n[pull-3625]: https://github.com/input-output-hk/cardano-ledger/pull/3625\\n[pull-3592]: https://github.com/input-output-hk/cardano-ledger/pull/3592\\n[pull-3523]: https://github.com/input-output-hk/cardano-ledger/pull/3523\\n[pull-3633]: https://github.com/input-output-hk/cardano-ledger/pull/3633\\n[pull-3634]: https://github.com/input-output-hk/cardano-ledger/pull/3634\\n[pull-3630]: https://github.com/input-output-hk/cardano-ledger/pull/3630\\n[pull-3640]: https://github.com/input-output-hk/cardano-ledger/pull/3640\\n[pull-3636]: https://github.com/input-output-hk/cardano-ledger/pull/3636\\n[pull-3648]: https://github.com/input-output-hk/cardano-ledger/pull/3648\\n[pull-3650]: https://github.com/input-output-hk/cardano-ledger/pull/3650\\n[pull-3658]: https://github.com/input-output-hk/cardano-ledger/pull/3658\\n[pull-3628]: https://github.com/input-output-hk/cardano-ledger/pull/3628\\n[pull-3660]: https://github.com/input-output-hk/cardano-ledger/pull/3660\\n[pull-3661]: https://github.com/input-output-hk/cardano-ledger/pull/3661"},{"id":"2023-08-18-network","metadata":{"permalink":"/cardano-updates/2023-08-18-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-network.md","source":"@site/blog/2023-08-18-network.md","title":"Network Team Update","description":"High-level overview of sprint 42","date":"2023-08-18T00:00:00.000Z","formattedDate":"August 18, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":2.09,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-08-18-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-08-18-ledger"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-08-18-sre"}},"content":"## High-level overview of [sprint 42][sprint-42]\\n\\n### Eclipse Evasion\\n\\nWe merged and released a new version of the `ouroboros-network` package (version\\n`0.9.0.0`) which includes [big ledger peers feature][ouroboros-network#3886].\\nThis is the primary peer selection mechanism to defend against eclipses. We\\nalso prepared a PR to updated [`ouroboros-cosnensus`][ouroboros-consensus#165]\\nand [`ekg-forward`][ekg-forward#30] packages.\\n\\n### CDDL specs for protocol codecs\\n\\nWe made the `cddl` spec for network codec more inline with the implementation\\nwhich is highly polymorphic. `cddl` doesn\'t have the notion of polymorphism,\\nbut has `any` which can generate any valid cbor term. We matched it with an\\n`Any` type on the Haskell side and made all remaining tests & specs use it.\\nThis simplified the specifications and made it easier to understand which parts\\nare defined in the spec, and which parts are left unspecified. See\\n[ouroboros-network#4595].\\n\\n### Ouroboros-Network-Framework API changes\\n\\nWe also released `ouroboros-network-framework` and other network components.\\nThe `ouroboros-network-framework` package contains a redesign of API exposed to\\n`ouroboros-consensus`. We consolidated, cleaned it and made it easier to\\nextend in the future if there will be new arguments that need to be passed to\\nmini-protocol initiator and responders which comes from the low-level network\\nlayer.\\n\\n### Nix setup (CI)\\n\\nWe also made a major review of our `nix` setup. With help from our DevX team\\nwe ended up with a clean `flake.nix` file which can:\\n\\n* compile & test the code on `x86_64-linux`, `x86_64-darwin` and `aarch64-darwin`\\n* cross-compile to `Windows` on `x86_64-linux` \\n\\nAnd provides a shell which contains all the build tools, including `ghc-9.6`,\\n`hls`, `cddl`, and more. See [ouroboros-network#4640],\\n[ouroboros-network#4643].\\n\\n\\n## Other contributions\\n\\n### Cardano Network Service Assurance\\n\\n* The work and writeup in finishing up the CNSA, first stage (first\\n contract).\\n* Getting Sam Cowger (Galois Inc) up to speed.\\n* The IOG Networking team carried a reivew of CNSA project progress: a limitted\\n code & design review.\\n\\n### Galois Review\\n\\nSam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues\\n\\n* [ouroboros-network#3832],\\n* [ouroboros-network#3834],\\n* [ouroboros-network#3835],\\n* [ouroboros-network#3836];\\n\\nscoping, requirements, and getting started.\\n\\n### CI\\n\\nWe added a nightly run for GitHub actions and made the GitHub actions test be\\nexecuted with extra concurrency [ouroboros-network#4637], [ouroboros-network#4649].\\n\\nWe also added GitHub\'s dependabot [ouroboros-network#4650].\\n\\n### Bootstrap Peers\\n\\nWe settled on implementation design of bootstrap peers which is being\\nimplemented, [ouroboros-network#4615].\\n\\n\\n[sprint-42]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+42%22\\n\\n[ekg-forward#30]: https://github.com/input-output-hk/ekg-forward/pull/30\\n\\n[ouroboros-consensus#165]: https://github.com/input-output-hk/ouroboros-consensus/pull/165\\n\\n[ouroboros-network#3832]: https://github.com/input-output-hk/ouroboros-network/issues/3832\\n[ouroboros-network#3834]: https://github.com/input-output-hk/ouroboros-network/issues/3834\\n[ouroboros-network#3835]: https://github.com/input-output-hk/ouroboros-network/issues/3835\\n[ouroboros-network#3836]: https://github.com/input-output-hk/ouroboros-network/issues/3836\\n[ouroboros-network#3886]: https://github.com/input-output-hk/ouroboros-network/issues/3886\\n[ouroboros-network#4595]: https://github.com/input-output-hk/ouroboros-network/issues/4595\\n[ouroboros-network#4615]: https://github.com/input-output-hk/ouroboros-network/issues/4615\\n[ouroboros-network#4637]: https://github.com/input-output-hk/ouroboros-network/pull/4637\\n[ouroboros-network#4640]: https://github.com/input-output-hk/ouroboros-network/pull/4640\\n[ouroboros-network#4643]: https://github.com/input-output-hk/ouroboros-network/pull/4643\\n[ouroboros-network#4649]: https://github.com/input-output-hk/ouroboros-network/pull/4649\\n[ouroboros-network#4650]: https://github.com/input-output-hk/ouroboros-network/pull/4650"},{"id":"2023-08-18-sre","metadata":{"permalink":"/cardano-updates/2023-08-18-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-sre.md","source":"@site/blog/2023-08-18-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-08-18T00:00:00.000Z","formattedDate":"August 18, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":0.66,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-08-18-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-08-18-network"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-08-17-crypto"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent updates or improvements include:\\n* Sanchonet and shelley-qa environments were updated to 8.2.1-pre.\\n* Work on two new repos utilizing [flake parts](https://flake.parts) for cardano cluster generation, automation and operation.\\n * [cardano-parts](https://github.com/input-output-hk/cardano-parts) -- Nix flake parts for cardano clusters\\n * [cardano-playground](https://github.com/input-output-hk/cardano-playground) -- Cardano testnet clusters\\n\\n## Lower level summary\\n\\n### Cardano-ops\\n* Cardano p2p relay and alert threshold adjustments: [cardano-ops-compare](https://github.com/input-output-hk/cardano-ops/compare/c4a04cc...5a0eabe)\\n\\n### Cardano-parts\\n* New repo: [cardano-parts](https://github.com/input-output-hk/cardano-parts)\\n\\n### Cardano-perf\\n* Misc improvements to perf cluster functionality: [cardano-perf-compare](https://github.com/input-output-hk/cardano-perf/compare/0944c40...d3a8644)\\n\\n### Cardano-playground\\n* New repo: [cardano-playground](https://github.com/input-output-hk/cardano-playground)\\n\\n### Cardano-world\\n* Improve explorer topology generation alerting: [cardano-world-pull-109](https://github.com/input-output-hk/cardano-world/pull/109)\\n* Update p2p configs: [cardano-world-pull-110](https://github.com/input-output-hk/cardano-world/pull/110)\\n\\n### Inputs-check\\n* A flake parts module to check input closure sizes recursively for optimization considerations: [inputs-check](https://github.com/input-output-hk/inputs-check)"},{"id":"2023-08-17-crypto","metadata":{"permalink":"/cardano-updates/2023-08-17-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-crypto.md","source":"@site/blog/2023-08-17-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-08-17T00:00:00.000Z","formattedDate":"August 17, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":0.65,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-08-17-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-08-18-sre"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-08-17-db-sync"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation\\n* mithril: Full node verifier\\n* musig2: Include MuSig2 description in cryptography handbook\\n* kes_agent: Finilising test and CI. Working on KES binary\\n\\n## Low level summary\\n### Mithril\\n* Full Node Verifier merged [#939](https://github.com/input-output-hk/mithril/pull/939).\\n### MuSig2\\n* Started describing MuSig2 to include it as part of the cryptography handbook \\n### Sidechains\\n* Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in [this](https://github.com/alexandroszacharakis8/halo2/tree/iquerejeta) fork.\\n### KES agent\\n* KES agent is ready:\\n * CI ready [#19](https://github.com/input-output-hk/kes-agent/issues/19)\\n * Receipt confirmation message [#20](https://github.com/input-output-hk/kes-agent/issues/20)\\n * KES agent binary ready [#21](https://github.com/input-output-hk/kes-agent/issues/21)\\n * Control client implemented [#11](https://github.com/input-output-hk/kes-agent/issues/11)"},{"id":"2023-08-17-db-sync","metadata":{"permalink":"/cardano-updates/2023-08-17-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-db-sync.md","source":"@site/blog/2023-08-17-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-08-17T00:00:00.000Z","formattedDate":"August 17, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.41,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-08-17-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-08-17-crypto"},"nextItem":{"title":"SECP bindings Security Issue Report","permalink":"/cardano-updates/2023-08-17-secp-issue"}},"content":"## High level summary\\nWe have integrated many new Conway feutures and allow db-sync to sync sanchonet.\\nWe also continued testing and improving the new db-sync options.\\n\\n## Lower level summary\\n- Conway integration\\n[#1484](https://github.com/input-output-hk/cardano-db-sync/pull/1484)\\n- Support for Sanchonet\\n[#1476](https://github.com/input-output-hk/cardano-db-sync/pull/1476)\\n- Stake distribution is computed earlier\\n[#1484](https://github.com/input-output-hk/cardano-db-sync/pull/1484)\\n- Deposit ledger events are now used. This reduces the db queries and makes syncing faster\\n[#1484](https://github.com/input-output-hk/cardano-db-sync/pull/1484)\\n- Testing new db-sync options\\n[#1466](https://github.com/input-output-hk/cardano-db-sync/pull/1466)\\n- Added support for ghc-9.6\\n[#1479](https://github.com/input-output-hk/cardano-db-sync/pull/1479)\\n- Tech debt: improve exceptions\\n[#1471](https://github.com/input-output-hk/cardano-db-sync/pull/1471)"},{"id":"2023-08-17-secp-issue","metadata":{"permalink":"/cardano-updates/2023-08-17-secp-issue","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-secp-security-issue-report.md","source":"@site/blog/2023-08-17-secp-security-issue-report.md","title":"SECP bindings Security Issue Report","description":"Security Issue Report: SECP256k1 bug","date":"2023-08-17T00:00:00.000Z","formattedDate":"August 17, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":3.3,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"SECP bindings Security Issue Report","slug":"2023-08-17-secp-issue","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-08-17-db-sync"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-08-15-node-cli-api"}},"content":"## Security Issue Report: SECP256k1 bug\\n\\nDate Occurred: July 15, 2022\\nSeverity: Potentially Very High if exploited on Mainnet\\nAuthors: I\xf1igo Querejeta Azurmendi\\n\\nDate of Report: August 17, 2023\\n### Summary of Issue\\n#### Criticality Level\\nActually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet\\nContext\\n\\nNew SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains.\\nHow was the Issue Detected\\n\\nThe issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there.\\n\\n#### What Action was Taken\\nThe Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod).\\nFixes were applied to prevent the use of the primitives.\\nA full security audit was carried out on the bindings.\\nThe rollout of the primitives was postponed to a new hard fork (Valentine)\\n\\n#### Potential Effect\\nThe potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction.\\n\\n#### Actual Effect\\n* Delay to the Vasil hard-fork\\n* Temporary removal of SECP256k1 primitives\\n* Additional hard-fork to introduce SECP256k1 primitives\\n\\n#### Ongoing Mitigations Needed, if any\\nNone\\n\\n#### Responsibility for Mitigations\\nCore team\\n\\n### Detailed description of Incident\\nNew Plutus **secp256k1** cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet.\\n\\nThe problem was not in the deserialization functions of the underlying library (Bitcoin\'s library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing.\\n\\n* [This](https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L518) is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an [expected](https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L61) structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely.\\n* The same happened with the Schnorr [verification function](https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1_schnorrsig.h#L170). It takes as input a SECP256k1_xonly_pubkey, which is again an [opaque structure](https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1_extrakeys.h#L10) that holds a parsed and valid public key.\\n\\nThe FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated.\\n\\nThe fix was addressed in [this](https://github.com/input-output-hk/cardano-base/pull/289) PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts.\\n\\n### Recommendations\\n* Check all new Plutus bindings for correct use.\\n* Audit all new Plutus built-in bindings.\\n* Continue to develop specific End-to-End tests for all new Plutus features.\\n* Do not assume that any existing library functions are \\"safe\\". Treat all external calls circumspectly."},{"id":"2023-08-15-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-08-15-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-15-node-cli-api.md","source":"@site/blog/2023-08-15-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-08-15T00:00:00.000Z","formattedDate":"August 15, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.29,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-08-15-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"SECP bindings Security Issue Report","permalink":"/cardano-updates/2023-08-17-secp-issue"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-11-hydra"}},"content":"# 2023-08-02 - 2023-08-15\\n\\n## High level summary\\n\\n- cardano-node 8.2.1 (pre-release) to SanchoNet\\n- Continue moving CLI into era-based top level command structure\\n- Wire-up DREP key generation,\\n- Fix DREP deregistration certificates\\n- Implement Constitutional Committee Key generation on the CLI\\n- Introducing era-based protocol parameters on the API\\n- Removing depracated functions and types on the API\\n\\n\\n### cardano-cli\\n\\n- [Update to `cardano-api-8.13.0.0`](https://github.com/input-output-hk/cardano-cli/pull/169)\\n- [Reenable golden tests](https://github.com/input-output-hk/cardano-cli/pull/164)\\n- [#128 DRep key generation](https://github.com/input-output-hk/cardano-cli/pull/163)\\n- [Bump index states](https://github.com/input-output-hk/cardano-cli/pull/160)\\n- [Fix deregistration-certificate: generate deregistration instead of registration certs](https://github.com/input-output-hk/cardano-cli/pull/159)\\n- [Structuring legacy code so that era-based code does not depend on it](https://github.com/input-output-hk/cardano-cli/pull/158)\\n- [Plural for command groups](https://github.com/input-output-hk/cardano-cli/pull/151)\\n- [Implement `conway governance committee key-hash` command](https://github.com/input-output-hk/cardano-cli/pull/144)\\n- [Wire up constitution creation in the new era based cli commands](https://github.com/input-output-hk/cardano-cli/pull/142)\\n- [cardano-cli 8.5.0.0](https://github.com/input-output-hk/cardano-cli/pull/140)\\n- [Wire up remaining DReps](https://github.com/input-output-hk/cardano-cli/pull/137)\\n- [Implement `conway governance committee hot-key-gen` command](https://github.com/input-output-hk/cardano-cli/pull/136)\\n- [Convert to use `tasty-discover`](https://github.com/input-output-hk/cardano-cli/pull/127)\\n\\n### cardano-api\\n\\n- [Release cardano-api 8.13.1.0](https://github.com/input-output-hk/cardano-api/pull/189)\\n- [Fix build](https://github.com/input-output-hk/cardano-api/pull/187)\\n- [cardano-api 8.13.0.0](https://github.com/input-output-hk/cardano-api/pull/185)\\n- [Modify `queryGenesisParameters` so that its type advertises it only returns genesis parameters for the Shelley era](https://github.com/input-output-hk/cardano-api/pull/181)\\n- [Introduce EraBasedProtocolParametersUpdate](https://github.com/input-output-hk/cardano-api/pull/180)\\n- [Delete deprecated functions and types](https://github.com/input-output-hk/cardano-api/pull/173)\\n- [Simplify code with new constraints functions](https://github.com/input-output-hk/cardano-api/pull/171)\\n- [Fix `EraCast Certificate`](https://github.com/input-output-hk/cardano-api/pull/170)\\n- [New version `cardano-api-8.12.0.0`](https://github.com/input-output-hk/cardano-api/pull/168)\\n- [Fix committee hot keys](https://github.com/input-output-hk/cardano-api/pull/167)\\n- [New version `cardano-api-8.11.1.0`](https://github.com/input-output-hk/cardano-api/pull/164)\\n- [Fix typo Constitional -> Constitutional](https://github.com/input-output-hk/cardano-api/pull/163)\\n\\n\\n### cardano-node\\n\\n- [cardano-git-rev: New version for CHaP](https://github.com/input-output-hk/cardano-node/pull/5430)\\n- [Fix broken links in docs](https://github.com/input-output-hk/cardano-node/pull/5427)\\n- [cardano-node 8.2.1](https://github.com/input-output-hk/cardano-node/pull/5423)\\n\\n\\n### cardano-testnet\\n\\n- [Fix broken links in docs](https://github.com/input-output-hk/cardano-node/pull/5427)\\n- [cardano-node 8.2.1](https://github.com/input-output-hk/cardano-node/pull/5423)\\n\\n\\n### docs\\n\\n[Fix broken links in docs](https://github.com/input-output-hk/cardano-node/pull/5427)\\n\\n### CI & project maintenance\\n\\n- [Convert to use `tasty-discover`](https://github.com/input-output-hk/cardano-cli/pull/127)"},{"id":"2023-08-11-hydra","metadata":{"permalink":"/cardano-updates/2023-08-11-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-11-hydra.md","source":"@site/blog/2023-08-11-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-08-11T00:00:00.000Z","formattedDate":"August 11, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.8,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"},{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-08-11-hydra","authors":["ffakenz","ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-08-15-node-cli-api"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-08-11-performance-and-tracing"}},"content":"## High-level summary\\n\\nThis week, the Hydra team updated `hydra-node` to support `cardano-node` version\\n8.1.2, ensuring compatibility with the latest mainnet release. The team also\\nparticipated in discussions about a \\"cardanonical\\" JSON schema and added it as a\\nsubmodule to the project, contributing to improved data modeling and\\ninteroperability.\\n\\nIn terms of community engagement, the team successfully onboarded a new\\ncontributor, also participated in a RareEvo Twitter space, and continued\\npreparations for the Hydra master-class.\\n\\n## What did the team achieve this week\\n\\n- Updated dependencies to support cardano-node 8.1.2 [#1007](https://github.com/input-output-hk/hydra/issues/1007)\\n- Engaged in discussions about a “cardanonical” json schema and\\n add it as submodule to the project\\n [#1013](https://github.com/input-output-hk/hydra/pull/1013)\\n- Onboarded a new contributor to the hydra project (@locallycompact)\\n- Joined RareEvo twitter space and continued preparation of hydra master-class\\n\\n## What are the goals of next week\\n\\n- Update & streamline tutorial to work with latest version of hydra-node\\n- Remove the internal commit functionality [#954](https://github.com/input-output-hk/hydra/issues/954)\\n- Release 0.12.0"},{"id":"2023-08-11-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-08-11-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-11-performance-and-tracing.md","source":"@site/blog/2023-08-11-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-08-11T00:00:00.000Z","formattedDate":"August 11, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.335,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-08-11-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-11-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-08-10-mithril"}},"content":"## High level summary\\n\\n* Benchmarking: We\'ve concluded benchmarking node version `8.2.0`.\\n* Tracing: Optimization of the new tracing system has been merged; we\'re currently working on self-documenting tracing configuration.\\n* Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nAs part of our release benchmarking cycle, we\'ve completed and analysed the runs for the `8.2.0` version of `cardano-node`. In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version.\\n\\n### Tracing\\n\\nA significant amount of optimizations for the new tracing system has finally been merged to `master`. At the moment,\\nwe\'re working on having a trace message self-document the final tracing configuration of a running node. Apart from adding\\ninsight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward. \\n\\nFurthermore, we\'re setting up a final round of system integration level benchmarks comparing new against legacy tracing.\\n\\n### Nomad backend\\n\\nThe new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent\\nand reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were\\nable to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks. \\n\\nA PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to `master`."},{"id":"2023-08-10-mithril","metadata":{"permalink":"/cardano-updates/2023-08-10-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-10-mithril.md","source":"@site/blog/2023-08-10-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-08-10T00:00:00.000Z","formattedDate":"August 10, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.7,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-08-10-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-08-11-performance-and-tracing"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-08-09-consensus"}},"content":"## High level overview\\nThe Mithril team completed the **Mithril protocol\u2019s mainnet beta** launch: the `release-mainnet` network is now consistently producing new certificates and snapshots! The team has released a new distribution [`2331.1`](https://github.com/input-output-hk/mithril/releases/tag/2331.1) which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the `mainnet` infrastructure.\\n\\nFinally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network.\\n\\n## Low level overview\\n- Released the new distribution [`2331.1`](https://github.com/input-output-hk/mithril/releases/tag/2331.1)\\n- Completed the epic `Release \'mainnet\' Mithril network` [#918](https://github.com/input-output-hk/mithril/issues/918)\\n- Worked on the epic `Benchmark performances of Mithril Aggregator` [#904](https://github.com/input-output-hk/mithril/issues/904):\\n - Completed the issue `Design & implement basic stress test tool for aggregator - phase 1` [#991](https://github.com/input-output-hk/mithril/issues/991)\\n- Worked on the epic `Post deployment \'mainnet\' infrastructure` [#1091](https://github.com/input-output-hk/mithril/issues/1091):\\n - Completed the issue `Create Production Infrastructure Runbook` [#1085](https://github.com/input-output-hk/mithril/issues/1085)\\n - Completed the issue `Ingest \'mainnet\' metrics/logs in Grafana` [#1122](https://github.com/input-output-hk/mithril/issues/1122)\\n- Worked on optimizations:\\n - Completed the issue `Add a \'clean\' file to extracted database in client` [#1131](https://github.com/input-output-hk/mithril/issues/1131)\\n - Worked on the issue `Create explorer page with registered signers` [#1097](https://github.com/input-output-hk/mithril/issues/1097)\\n- Worked on refactoring:\\n - Worked on the issue `Refactor (de)serialization of crypto entities` [#668](https://github.com/input-output-hk/mithril/issues/668)\\n- Worked on bugs:\\n - Completed the issue `Client fails to unpack some snapshot archive` [#1137](https://github.com/input-output-hk/mithril/issues/1137)\\n - Completed the issue `The \'release-preprod\' network stopped producing certificates` [#1114](https://github.com/input-output-hk/mithril/issues/1114)\\n - Completed the issue `The \'release-mainnet\' network does not show up in the explorer` [#1111](https://github.com/input-output-hk/mithril/issues/1111)\\n- Worked on dependencies:\\n - Completed the issue `Upgrade Cardano node to \'8.1.2\'` [#1090](https://github.com/input-output-hk/mithril/issues/1090)\\n- Worked on troubleshooting:\\n - Completed the issue `Signer can\'t sign with \'Invalid signature for party\' error` [#1125](https://github.com/input-output-hk/mithril/issues/1125)"},{"id":"2023-08-09-consensus","metadata":{"permalink":"/cardano-updates/2023-08-09-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-09-consensus.md","source":"@site/blog/2023-08-09-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-08-09T00:00:00.000Z","formattedDate":"August 9, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.46,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-08-09-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-08-10-mithril"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-08-04-crypto"}},"content":"## High level summary\\n\\nThis week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of `fs-sim` and `fs-api`, and released `strict-checked-vars`.\\n\\n## UTxO-HD\\n\\n- Rebased UTxO-HD on top of node 8.2 ([issue](https://github.com/input-output-hk/ouroboros-consensus/issues/256))\\n- Address new `Maybe` translations for UTxOs in Conway 1.6. ([PR](https://github.com/input-output-hk/ouroboros-consensus/pull/261)).\\n- Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory.\\n- [Fixed](https://github.com/input-output-hk/cardano-node/compare/96e92351ad35cfce1b0c2c47c4ed05792bf81fad..90d4c93af0846c9b027d530c042180c51aeee4fd) an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully.\\n- Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running `QueryUTxOByAddress` ([PR](https://github.com/input-output-hk/ouroboros-consensus/pull/273)).\\n- Measured the speed of `QueryUTxOByAddress` under different `queryBatchSize` values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution.\\n- Refactored and implemented ledgertable-related classes for the general `HardforkBlock`.\\n\\n## Genesis\\n\\n- [Frisby](https://github.com/nfrisby) and [Esgen](https://github.com/amesgen) continue to engage with the Researchers on grinding against the Genesis design.\\n\\n## Fostering collaboration\\n\\n- Drafted a document explaining versioning of local state queries [#273](https://github.com/input-output-hk/ouroboros-consensus/pull/273).\\n\\n## Support\\n\\n- [Frisby](https://github.com/nfrisby) is the release engineer this cycle.\\n- Successfully created work-in-progress `ouroboros-consensus` and `cardano-api` commits that integrate the 2023 Aug 7 tip of `cardano-ledger`. This will require a release of `ouroboros-consensus`, which hasn\'t happened yet."},{"id":"2023-08-04-crypto","metadata":{"permalink":"/cardano-updates/2023-08-04-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-crypto.md","source":"@site/blog/2023-08-04-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-08-04T00:00:00.000Z","formattedDate":"August 4, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":0.495,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-08-04-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-08-09-consensus"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-08-04-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation\\n* mithril: Full node verifier\\n* musig2: Finalised the missing fuzz tests\\n* kes_agent: engineer on PTO. Work halted \\n\\n## Low level summary\\n### Mithril\\n* Work on a mithril flaky test [#1105](https://github.com/input-output-hk/mithril/pull/1105)\\n* Keep working on Full Node Verifier [#939](https://github.com/input-output-hk/mithril/pull/939).\\n Should be merged in the coming week.\\n### MuSig2\\n* Finalised the fuzz tests [#43](https://github.com/input-output-hk/musig2/pull/43)\\n### Sidechains\\n* Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier."},{"id":"2023-08-04-goedel","metadata":{"permalink":"/cardano-updates/2023-08-04-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-goedel.md","source":"@site/blog/2023-08-04-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-08-04T00:00:00.000Z","formattedDate":"August 4, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.43,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-08-04-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-08-04-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-04-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThe team is formalising mini protocols and also further developing the\\nperformance modelling prototype.\\n\\n## Details\\n\\n* Developing new framework for specification and verification of\\n mini-protocols which is closer to the Haskell implementation.\\n\\n* Developed a new internal representation for the DeltaQ algebra that\\n allows for more modularity in backend implementations\\n\\n* Discussions regarding the Cardano networking specification"},{"id":"2023-08-04-hydra","metadata":{"permalink":"/cardano-updates/2023-08-04-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-hydra.md","source":"@site/blog/2023-08-04-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-08-04T00:00:00.000Z","formattedDate":"August 4, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.06,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-08-04-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-08-04-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-08-04-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team achieved notable progress in various aspects of the\\nproject. The team updated the use case section for auctions on the [/unstable](https://hydra.family/head-protocol/unstable/use-cases/)\\nbranch of the website, improving the understanding of Hydra’s applicability.\\n\\nFrom the development side, the team successfully completed event-sourced\\npersistence, a key enhancement in the project’s architecture which improves\\noff-chain transaction processing performance. They also added a\\n“submit-transaction” endpoint to the API.\\n\\nIn addition to project-related progress, the team actively engaged in community\\nreviews for several catalyst proposals related to Hydra and Mithril,\\ncontributing to the wider Cardano ecosystem.\\n\\nFinally, the full report for the month of July was also published [here](https://hydra.family/head-protocol/monthly/2023-07).\\n\\n## What did the team achieve this week\\n\\n- Published the [monthly report for July](https://hydra.family/head-protocol/monthly/2023-07)\\n- Updated the use case section for auctions (published on [/unstable](https://hydra.family/head-protocol/unstable/use-cases/) branch)\\n- Completed event sourced persistence [#913](https://github.com/input-output-hk/hydra/issues/913)\\n- Added a “submit-transaction” endpoint to the API [#966](https://github.com/input-output-hk/hydra/issues/966)\\n- Community reviews for several catalyst proposals related to Hydra and Mithril\\n- Created a network testing tool (hydra-net) [#1006](https://github.com/input-output-hk/hydra/pull/1006)\\n\\n## What are the goals of next week\\n\\n- Update hydra-node to work with cardano-node version 8.x\\n- Remove the internal commit functionality\\n- Release version 0.12.0\\n- Update & streamline tutorial to work with latest version of hydra-node"},{"id":"2023-08-04-ledger","metadata":{"permalink":"/cardano-updates/2023-08-04-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-ledger.md","source":"@site/blog/2023-08-04-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-08-04T00:00:00.000Z","formattedDate":"August 4, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.915,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-08-04-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-08-04-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-08-04-network"}},"content":"## High level summary\\n\\nThe ledger team was working almost exclusively on the Conway era implementation. In\\nparticular, the main focus was directed towards solidifying transaction related types and\\ntheir binary representation. We also directed some effort into unblocking Plutus team with\\nrespect to PlutusV3 integration.\\n\\n## Low level summary\\n\\n### Conway progress\\n\\n* [pull-3552] - Allow Constitutional Committee Hot Key to be ScriptHash\\n* [pull-3581] - Make Constitutional Committee Cold Key to be ScriptHash\\n* [pull-3571] - Implement a portion of the TICKF rule.\\n* [pull-3556] - Add Script to Constitution\\n* [pull-3576] - Add optional Anchor to ConwayRegDRep certificate\\n* [pull-3495] - Implement refund logic for Proposal deposits\\n* [pull-3579] - Change voting procedure in the transaction to a nested Map\\n* [pull-3585] - Rename `CommitteeCert` into a `GovCert`\\n* [pull-3587] - Remove `DelegStakeTxCert` from the `COMPLETE` pragma for `TxCert`\\n* [pull-3586] - Add `CurrentTreasuryValue` to `TxBody`\\n* [pull-3588] - Rename key roles\\n* [pull-3557] - Update `NewCommittee` action to use `RewardAcnt` and add more info\\n* [pull-3595] - Add `ConwayUpdateDRep` constructor to ConwayTxCertGov type\\n* [pull-3600] - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway\\n* [pull-3597] - Update `ProposalProcedure` return address to be a `RewardAcnt`\\n\\n### Testing\\n\\n* [pull-3374] - New features for generation subject to constraints\\n* [pull-3519] - Basic Conway features test\\n\\n### Bugfixes\\n\\n* [pull-3566] - Mint field translation bugfix.\\n\\n### Plutus integration\\n\\n* [issue-3538] - A fairly complete specification was created for the PlutusV3 context\\n* [pull-3593] - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality\\n\\n### Improvements and releasing\\n\\n* [pull-3574] - Improve clarity and performance of collateral Non-ADA validation:\\n* [pull-3573] - Update top-level `CHANGELOG.md` with cardano-node relevant changes\\n* [pull-3555] - Bump pygments from 2.12.0 to 2.15.0 in /doc\\n* [pull-3575] - Bump certifi from 2022.12.7 to 2023.7.22 in /doc\\n* [pull-3567] - Backport mint field translation bugfix\\n* [pull-3568] - Fixed typo in byron ledger spec\\n* [pull-3572] - Release/backport tickf bugfix\\n\\n\\n\\n[issue-3538]: https://github.com/input-output-hk/cardano-ledger/issues/3538\\n[pull-3555]: https://github.com/input-output-hk/cardano-ledger/pull/3555\\n[pull-3566]: https://github.com/input-output-hk/cardano-ledger/pull/3566\\n[pull-3567]: https://github.com/input-output-hk/cardano-ledger/pull/3567\\n[pull-3568]: https://github.com/input-output-hk/cardano-ledger/pull/3568\\n[pull-3572]: https://github.com/input-output-hk/cardano-ledger/pull/3572\\n[pull-3552]: https://github.com/input-output-hk/cardano-ledger/pull/3552\\n[pull-3571]: https://github.com/input-output-hk/cardano-ledger/pull/3571\\n[pull-3575]: https://github.com/input-output-hk/cardano-ledger/pull/3575\\n[pull-3573]: https://github.com/input-output-hk/cardano-ledger/pull/3573\\n[pull-3556]: https://github.com/input-output-hk/cardano-ledger/pull/3556\\n[pull-3574]: https://github.com/input-output-hk/cardano-ledger/pull/3574\\n[pull-3576]: https://github.com/input-output-hk/cardano-ledger/pull/3576\\n[pull-3581]: https://github.com/input-output-hk/cardano-ledger/pull/3581\\n[pull-3495]: https://github.com/input-output-hk/cardano-ledger/pull/3495\\n[pull-3579]: https://github.com/input-output-hk/cardano-ledger/pull/3579\\n[pull-3585]: https://github.com/input-output-hk/cardano-ledger/pull/3585\\n[pull-3587]: https://github.com/input-output-hk/cardano-ledger/pull/3587\\n[pull-3586]: https://github.com/input-output-hk/cardano-ledger/pull/3586\\n[pull-3588]: https://github.com/input-output-hk/cardano-ledger/pull/3588\\n[pull-3557]: https://github.com/input-output-hk/cardano-ledger/pull/3557\\n[pull-3593]: https://github.com/input-output-hk/cardano-ledger/pull/3593\\n[pull-3595]: https://github.com/input-output-hk/cardano-ledger/pull/3595\\n[pull-3374]: https://github.com/input-output-hk/cardano-ledger/pull/3374\\n[pull-3600]: https://github.com/input-output-hk/cardano-ledger/pull/3600\\n[pull-3597]: https://github.com/input-output-hk/cardano-ledger/pull/3597\\n[pull-3519]: https://github.com/input-output-hk/cardano-ledger/pull/3519"},{"id":"2023-08-04-network","metadata":{"permalink":"/cardano-updates/2023-08-04-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-network.md","source":"@site/blog/2023-08-04-network.md","title":"Network Team Update","description":"High-level overview of sprint 41","date":"2023-08-04T00:00:00.000Z","formattedDate":"August 4, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.515,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-08-04-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-08-04-ledger"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-08-04-performance-and-tracing"}},"content":"## High-level overview of [sprint 41][sprint-41]\\n_24th July - 6th August 2023_\\n\\nWe started the implementation of __bootstrap peers__. Bootstrap peers are designed\\nto provide a safety guarantee for nodes joining the network while still taking\\nadvantage of the distributed network for nodes that are synced. This will be\\nan intermediate step before Genesis which will allow for further distribute the\\nsystem. The bootstrap peers will be run by some trusted partners like CF,\\nEmurgo or IOG. They are primarily designed for leaf nodes (e.g. full node\\nwallets), which often end up syncing and require access to the honest chain. See\\n[ouroboros-network#4615] for a more detailed implementation plan.\\n\\n## Other contributions\\n\\nWe started to use `nothunks` library to discover if we have any unevaluated\\nthunks which can lead to memory leaks [ouroboros-network#4633]. We found\\na small one in the peer metric component of the P2P networking stack. Fixing\\nit put us on a small detour of fixing the API of the [`strict-checked-vars`]\\npackage: [cardano-base#431], [cardano-base#432], as well as adding `NFData`\\ninstance to [`io-classes`][io-classes#110]. We also improved `nothunks`\\nlibrary to make debugging easier and we provided a `NoThunks` instance for\\n`ThreadId` which we will need in the future (see [nothunks#33]).\\n\\nWe released a new version of `io-classes` (version `1.2.0.0`) and related\\npackages to [Hackage][io-classes-1.2.0.0].\\n\\nWe addressed all review comments on the eclipse evasion PR which introduces big\\nledger peers, [ouroboros-network#3886].\\n\\nWe fixed how `SIGHUP` signal handlers are registered, so it\'s not possible to\\nshutdown a node which was starting while trying to update network topology,\\nsee [cardano-node#5421].\\n\\nI didn\'t mention that in the previous update, so here it goes: in the previous\\nsprint we released [`ouroboros-network-0.8.2.0`] and\\n[`ouroboros-network-framework-0.7.0.0`].\\n\\n[sprint-41]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+41%22\\n\\n[`strict-checked-vars`]: https://github.com/input-output-hk/cardano-base/tree/master/strict-checked-vars\\n[cardano-base#431]: https://github.com/input-output-hk/cardano-base/pulls/431\\n[cardano-base#432]: https://github.com/input-output-hk/cardano-base/pulls/432\\n[cardano-node#5421]: https://github.com/input-output-hk/cardano-node/pull/5421\\n[ouroboros-network#3886]: https://github.com/input-output-hk/ouroboros-network/issues/3886\\n[ouroboros-network#4615]: https://github.com/input-output-hk/ouroboros-network/issues/4615\\n[ouroboros-network#4633]: https://github.com/input-output-hk/ouroboros-network/issues/4633\\n[`ouroboros-network-0.8.2.0`]: https://github.com/input-output-hk/ouroboros-network/blob/f84fcddce472d6cfc2b838b20a2ad085fe0896ed/ouroboros-network/CHANGELOG.md\\n[`ouroboros-network-framework-0.7.0.0`]: https://github.com/input-output-hk/ouroboros-network/blob/ouroboros-network-framework-0.7.0.0/ouroboros-network-framework/CHANGELOG.md\\n[io-classes#110]: https://github.com/input-output-hk/io-sim/pull/110\\n[io-classes-1.2.0.0]: https://hackage.haskell.org/package/io-classes-1.2.0.0io-classes-1.2.0.0\\n[nothunks#33]: https://github.com/input-output-hk/nothunks/pull/33"},{"id":"2023-08-04-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-08-04-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-performance-and-tracing.md","source":"@site/blog/2023-08-04-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-08-04T00:00:00.000Z","formattedDate":"August 4, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.76,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-08-04-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-08-04-network"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-08-04-sre"}},"content":"## High level summary\\n\\n* Benchmarking: We\'re adjusting the benchmarking cluster to handle runs for node version `8.2.0`.\\n* Tracing: We\'ve finished optimization of the new tracing system and added extra robustness with regard to namespacing.\\n* Infrastructure: We\'ve been working on making all benchmarking code compliant with the latest GHC9.6.\\n* Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we\'ve successfully performed various benchmarking runs on it.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nThe `8.2.0` version of `cardano-node` required adjustment of some of the sanity checks that are part of our benchmarking\\ncluster automation. We\'ve pinpointed the necessary changes and are currently setting up the cluster for the new node version.\\n\\n### Tracing\\n\\nThe optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint\\nwhen using it as default for a running node. \\n\\nA linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any\\ninconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node.\\nThis feature adds another layer of robustness to the whole system.\\n\\n### Infrastructure\\n\\nA potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler\\nversions. We\'ve future-proofed our benchmarking code.\\n\\n### Nomad backend\\n\\nThe hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend\\naccordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant. \\n\\nThe validation phase is ongoing. We were able to perform successful runs and analyses for various `8.x` node versions, including `8.2.0-pre`. With parallel runs on the current cluster, we hope to measure the same effects we\'ve observed with the\\nnomad backend - which will be a big step towards production use."},{"id":"2023-08-04-sre","metadata":{"permalink":"/cardano-updates/2023-08-04-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-sre.md","source":"@site/blog/2023-08-04-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-08-04T00:00:00.000Z","formattedDate":"August 4, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":0.64,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-08-04-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-08-04-performance-and-tracing"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-08-01-node-cli-api"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent updates or improvements include:\\n* Preprod and preview envionments were updated to 8.1.2.\\n* Sanchonet and shelley-qa environments were updated to 8.2.0-pre.\\n* Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.\\n\\n## Lower level summary\\n\\n### Cardano-ops\\n* Deploy cardano-node 8.1.2, merge p2p modifications, script fixes and cleanup: [cardano-ops-pull-416](https://github.com/input-output-hk/cardano-ops/pull/416)\\n\\n### Cardano-perf\\n* New repo: [cardano-perf-repo](https://github.com/input-output-hk/cardano-perf)\\n\\n### Cardano-world\\n* Deploy cardano-node 8.1.2, emurgo p2p config, optimize faucet resources: [cardano-world-pull-104](https://github.com/input-output-hk/cardano-world/pull/104)\\n* Resolve nomad segfaults via nix versioning and fixup dbSync metal job for iohkNix env update: [cardano-world-pull-105](https://github.com/input-output-hk/cardano-world/pull/105)\\n* Add nomad dbSync fix for iohkNix env update: [cardano-world-pull-106](https://github.com/input-output-hk/cardano-world/pull/106)"},{"id":"2023-08-01-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-08-01-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-01-node-cli-api.md","source":"@site/blog/2023-08-01-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-08-01T00:00:00.000Z","formattedDate":"August 1, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.76,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-08-01-node-cli-api","tags":["cli-api"],"authors":"carlos","hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-08-04-sre"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-07-31-network"}},"content":"# 2023-07-19 - 2023-08-01\\n\\n## High level summary\\n\\n- Release of Node 8.2.0\\n - Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694.\\n - This release is phase 1 of the SanchoNet roll out\\n - Allows SPOs to vote on changes to the on-chain constitution.\\n - Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag.\\n - Updates to the networking packages prepare the road for peer sharing.\\n- cardano-cli and cardano-api continue to integrate Conway era features\\n- Continue refactoring of cardano-testnet\\n\\n### cardano-cli\\n\\n- [Use AnyShelleyToBabbageEra from cardano-api instead](https://github.com/input-output-hk/cardano-cli/pull/116)\\n- [Update to `cardano-api-8.10.2.0`](https://github.com/input-output-hk/cardano-cli/pull/115)\\n- [Add rendering for `ConwayCertificate` in `Cardano.Cli.Json.Friendly`](https://github.com/input-output-hk/cardano-cli/pull/113)\\n- [Update to `cardano-api-8.10.1.0`](https://github.com/input-output-hk/cardano-cli/pull/111)\\n- [Add DRep registration certificate command](https://github.com/input-output-hk/cardano-cli/pull/110)\\n- [Add options to delegate voting stake ](https://github.com/input-output-hk/cardano-cli/pull/109)\\n- [Share MIR certificates code between era-based and legacy CLI parsers](https://github.com/input-output-hk/cardano-cli/pull/107)\\n- [Release cardano-cli 8.4.0.0](https://github.com/input-output-hk/cardano-cli/pull/106)\\n- [Update to`cardano-api-8.10.0.0`](https://github.com/input-output-hk/cardano-cli/pull/103)\\n- [Change directory structure from Options/.. to EraBased/..](https://github.com/input-output-hk/cardano-cli/pull/100)\\n- [Era-sensitive command structure](https://github.com/input-output-hk/cardano-cli/pull/98)\\n- [#86 Set default era to Babbage in stake-address, stake-pool and governance commmands](https://github.com/input-output-hk/cardano-cli/pull/90)\\n\\n\\n### cardano-api\\n\\n\\n- [Deprecate `shelleyCertificateConstraints` and `conwayCertificateConstraints`](https://github.com/input-output-hk/cardano-api/pull/155)\\n- [Deprecate `TxVotesSupportedInEra`](https://github.com/input-output-hk/cardano-api/pull/154)\\n- [Add SerialiseAsBech32 instances for committee cold and hot keys](https://github.com/input-output-hk/cardano-api/pull/152)\\n- [Deprecate some constraint functions](https://github.com/input-output-hk/cardano-api/pull/151)\\n- [Deprecate `TxGovernanceActionSupportedInEra`](https://github.com/input-output-hk/cardano-api/pull/150)\\n- [More `shelleyBasedEraConstraint` constraints](https://github.com/input-output-hk/cardano-api/pull/149)\\n- [New version `cardano-api-8.10.2.0`](https://github.com/input-output-hk/cardano-api/pull/148)\\n- [Expose shelleyCertificateConstraints and conwayCertificateConstraints](https://github.com/input-output-hk/cardano-api/pull/147)\\n- [Remove unnecessary function `getShelleyEraTxBodyConstraint`](https://github.com/input-output-hk/cardano-api/pull/146)\\n- [Provide additional constraints in `shelleyBasedEraConstraints`](https://github.com/input-output-hk/cardano-api/pull/143)\\n- [Update changelogs for `cardano-api-8.10.1.0`](https://github.com/input-output-hk/cardano-api/pull/142)\\n- [handleFileForWritingWithOwnerPermissionImpl: Fix permisions](https://github.com/input-output-hk/cardano-api/pull/141)\\n- [Update DRepKey with correct `Voting` keyrole](https://github.com/input-output-hk/cardano-api/pull/138)\\n- [Support more constraints for Conway witnesses](https://github.com/input-output-hk/cardano-api/pull/137)\\n- [New version `cardano-api-8.10.0.0`](https://github.com/input-output-hk/cardano-api/pull/135)\\n- [Expose toShelleyPoolParams for conway integration](https://github.com/input-output-hk/cardano-api/pull/134)\\n- [`FeatureInEra` instance for `ShelleyBasedEra`](https://github.com/input-output-hk/cardano-api/pull/131)\\n- [Expose more functionality from cardano-api](https://github.com/input-output-hk/cardano-api/pull/130)\\n- [Improved feature ergonomics](https://github.com/input-output-hk/cardano-api/pull/128)\\n- [Rename `AtMostBabbageEra` to `ShelleyToBabbageEra`](https://github.com/input-output-hk/cardano-api/pull/127)\\n\\n\\n### cardano-node\\n\\n- [Fix stubbed LogFormatting instances](https://github.com/input-output-hk/cardano-node/pull/5412)\\n- [8.2.0 version bumps](https://github.com/input-output-hk/cardano-node/pull/5411)\\n- [Bump network packages version](https://github.com/input-output-hk/cardano-node/pull/5409)\\n- [Fix missing `ToObject` tracing instances.](https://github.com/input-output-hk/cardano-node/pull/5404)\\n- [input-output-hk/cardano-cli#85 Fix node crashing in babbage](https://github.com/input-output-hk/cardano-node/pull/5401)\\n\\n\\n### cardano-testnet\\n\\n- [8.2.0 version bumps](https://github.com/input-output-hk/cardano-node/pull/5411)\\n- [Bump network packages version](https://github.com/input-output-hk/cardano-node/pull/5409)\\n- [Fix missing `ToObject` tracing instances.](https://github.com/input-output-hk/cardano-node/pull/5404)\\n- [Fix plutus script costing in cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/5400)\\n\\n### docs\\n\\n- [Bump network packages version](https://github.com/input-output-hk/cardano-node/pull/5409)\\n - [WarmValency](https://github.com/input-output-hk/cardano-node/blob/05c0392b4722d7fe2f82db1854b28de4f28a917b/doc/getting-started/understanding-config-files.md?plain=1#L84C1-L97C42)\\n\\n### CI & project maintenance"},{"id":"2023-07-31-network","metadata":{"permalink":"/cardano-updates/2023-07-31-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-31-network.md","source":"@site/blog/2023-07-31-network.md","title":"Network Team Update","description":"Network Update (Sprints 39 & 40)","date":"2023-07-31T00:00:00.000Z","formattedDate":"July 31, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":2.18,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-07-31-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-08-01-node-cli-api"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-28-hydra"}},"content":"## Network Update (Sprints 39 & 40)\\n\\nThe network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away.\\nIt was great to see and talk to so many of the community members.\\n\\n### Sprint 39 (Jun 26 - Jul 09)\\n\\n#### Major changes\\n\\nNow the following __list of traces will be turned on by default__:\\n\\n##### `node-to-client` protocol\\n\\n- `LocalConnectionManagerTracer` \\n- `LocalInboundGovernor`\\n- `LocalHandshake`\\n- `LocalServer`\\n\\n##### `node-to-node` protocol\\n\\n- `Server`\\n\\nSee [cardano-node#5353]. This will be released in `node-8.2.0`.\\n\\n\\nWe made sure that `cardano-client-0.1.0.x` library (which is `db-sync`) is not using the experimental `node-to-client` protocol.\\nThe `cardano-client-0.2.0.0` was not affected.\\nSee [ouroboros-network#4612].\\n\\nWe merged the __dynamic block production feature__ to `ouroboros-consensus` (also available in the `cardano-node-8.2.0` release).\\nDynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes.\\nSee [ouroboros-network#3159], [ouroboros-consensu#140].\\n\\nWe continued to review the implementation of big ledger peers for eclipse evasion, see [ouroboros-network#4462].\\n\\n#### Minor changes\\n\\n- We refactored the top level `cardano-node` error handler: [cardano-node#5356]\\n\\n\\n### Sprint 40 (Jul 09 - Jul 23)\\n\\n#### Major changes\\n\\nWe integrated `ouroboros-network-0.8.2.0` with the `master` branch of `cardano-node` for the `8.2.0` release (the version match between `ouroboros-network` and `cardano-node` is purely accidental).\\nThis includes:\\n\\n* integration with __dynamic block production__ feature.\\n This feature is documented in the [following PR][cardano-node#5399].\\n* __Warm valency__ for local root peers (see below).\\n\\nFor the full list of features included in the `8.2.0` release from the network side, please take a look at the [pre-release nodes][cardano-node-8.2.0-pre].\\n\\n\\nWe __improved the memory footprint__ of peer metrics measured by the P2P stack.\\nPeer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation).\\nSee [ouroboros-network#4620].\\nThe improvement will be available in `cardano-node-8.2.0`.\\n\\nWe added an __optional explicit warm valency__ to local root peers of the __P2P topology file__.\\nPreviously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to.\\nThe hot valency (previously known simply as valency) hasn\'t changed, but it must be smaller than the warm valency as hot peers are selected from warm ones.\\nWarm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses.\\nSee [ouroboros-network#4575], [cardano-node#5409].\\n\\n[cardano-node#5353]: https://github.com/input-output-hk/cardano-node/pull/5353\\n[cardano-node#5356]: https://github.com/input-output-hk/cardano-node/pull/5356\\n[cardano-node#5399]: https://github.com/input-output-hk/cardano-node/pull/5399\\n[cardano-node#5409]: https://github.com/input-output-hk/cardano-node/pull/5409\\n[cardano-node-8.2.0-pre]: https://github.com/input-output-hk/cardano-node/releases/tag/8.2.0-pre\\n[ouroboros-network#4575]: https://github.com/input-output-hk/ouroboros-network/pull/4575\\n[ouroboros-network#4612]: https://github.com/input-output-hk/ouroboros-network/pull/4612\\n[ouroboros-network#4620]: https://github.com/input-output-hk/ouroboros-network/pull/4620\\n[ouroboros-network#3159]: https://github.com/input-output-hk/ouroboros-network/issues/3159\\n[ouroboros-network#4462]: https://github.com/input-output-hk/ouroboros-network/pull/4462\\n[ouroboros-consensus#140]: https://github.com/input-output-hk/ouroboros-consensus/pull/140\\n\\n[sprint-39]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22Sprint+39%22\\n[sprint-40]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22Sprint+40%22"},{"id":"2023-07-28-hydra","metadata":{"permalink":"/cardano-updates/2023-07-28-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-28-hydra.md","source":"@site/blog/2023-07-28-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-07-28T00:00:00.000Z","formattedDate":"July 28, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.005,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-07-28-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-07-31-network"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-07-27-mithril"}},"content":"## High-level summary\\n\\nDuring this week, the Hydra team achieved significant progress in various areas.\\nThey conducted the monthly review meeting for July, which continously ensures\\ntransparent communication and project evaluation. The team migrated the core\\nlogic of the node to an event-sourced architecture and incremental writes of\\nevents to persistence, enhancing the project’s performance and maintainability.\\nFurthermore, the team added the ability to read protocol parameters via the API\\nand fixed the CI workflows to support pull requests from forks of external\\ncontributors, streamlining the development process for community involvement.\\n\\n## What did the team achieve this week\\n\\n- Held the monthly review meeting for July ([recording](https://drive.google.com/file/d/14ANZ3efuxgXpYK94EBWxZLR9TtN7voru/))\\n- Migrate the core logic of the node to an event-sourced architecture [#999](https://github.com/input-output-hk/hydra/pull/999)\\n- Updated persistence to faster incremental writes of events [#1000](https://github.com/input-output-hk/hydra/pull/1000)\\n- Added ability to read protocol parameters via API [#735](https://github.com/input-output-hk/hydra/issues/735)\\n- Fix CI workflows to support pull requests from forks of external contributors [#993](https://github.com/input-output-hk/hydra/pull/993)\\n- Updated to GHC 9.2.8 [#1005](https://github.com/input-output-hk/hydra/pull/1005)\\n- Prepared an updated use cases section on (published with next release)\\n\\n## What are the goals of next week\\n\\n- Publish monthly report\\n- Complete user transaction submission work [#966](https://github.com/input-output-hk/hydra/issues/966)\\n- Remove commit from internal wallet (deprecated) [#954](https://github.com/input-output-hk/hydra/issues/954)"},{"id":"2023-07-27-mithril","metadata":{"permalink":"/cardano-updates/2023-07-27-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-27-mithril.md","source":"@site/blog/2023-07-27-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-07-27T00:00:00.000Z","formattedDate":"July 27, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.715,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-07-27-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-28-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-07-26-consensus"}},"content":"## High level overview\\nThe Mithril team launched **Mithril protocol\u2019s mainnet beta**: the `release-mainnet` network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch. \\n\\nThey have released a new distribution [`2329.0`](https://github.com/input-output-hk/mithril/releases/tag/2329.0), which is running on the `release-mainnet` network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator.\\n\\nFinally, they have worked on enhancing the documentation for [onboarding SPOs](https://mithril.network/doc/manual/getting-started/SPO-on-boarding-guide) and setting up a [Mithril signer](https://mithril.network/doc/manual/getting-started/run-signer-node), and fixing installation bugs of the binary artifacts produced in the CI.\\n\\n\\n## Low level overview\\n- Created the dev blog post [Mithril Protocol\u2019s Mainnet Beta Launch](https://mithril.network/doc/dev-blog/2023/07/21/mainnet-beta-launch)\\n- Released the new distribution [`2329.0`](https://github.com/input-output-hk/mithril/releases/tag/2329.0)\\n- Closed the epic that prepares the Mithril infrastructure for `mainnet` [#767](https://github.com/input-output-hk/mithril/issues/767):\\n - Completed the issue `Deploy \'mainnet\' infrastructure` [#988](https://github.com/input-output-hk/mithril/issues/988)\\n - Completed the issue `Handle Secrets management` [#989](https://github.com/input-output-hk/mithril/issues/989)\\n- Worked on the epic `Release \'mainnet\' Mithril network` [#918](https://github.com/input-output-hk/mithril/issues/918)\\n - Completed the issue `Prepare SPO on-boarding guide` [#1049](https://github.com/input-output-hk/mithril/issues/1049)\\n- Worked on the epic `Benchmark performances of Mithril Aggregator` [#904](https://github.com/input-output-hk/mithril/issues/904):\\n - Worked on the issue `Design & implement basic stress test tool for aggregator` [#991](https://github.com/input-output-hk/mithril/issues/991)\\n- Worked on optimizations:\\n - Completed the issue `Enhance the configuration of Mithril relay` [#1080](https://github.com/input-output-hk/mithril/issues/1080)\\n - Completed the issue `Remove legacy store adapters from aggregator` [#1053](https://github.com/input-output-hk/mithril/issues/1053)\\n - Completed the issue `Add a \'sign\' sub-command to \'genesis\' command in aggregator` [#1081](https://github.com/input-output-hk/mithril/issues/1081)\\n- Worked on refactoring:\\n - Worked on the issue `Refactor (de)serialization of crypto entities` [#668](https://github.com/input-output-hk/mithril/issues/668)\\n- Worked on documentation:\\n - Completed the issue `Enhance \'Run a Mithril Signer node (SPO)\' guide` [#1055](https://github.com/input-output-hk/mithril/issues/1055)\\n- Worked on bugs:\\n - Completed the issue `Shared library error in CI binaries` [#1073](https://github.com/input-output-hk/mithril/issues/1073)\\n - Completed the issue `Debian package does not install cleanly on older ubuntu versions` [#834](https://github.com/input-output-hk/mithril/issues/834)\\n - Completed the issue `Aggregator panics with new (de)serialization of \'ProtocolVerificationKey\'` [#1083](https://github.com/input-output-hk/mithril/issues/1083)"},{"id":"2023-07-26-consensus","metadata":{"permalink":"/cardano-updates/2023-07-26-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-26-consensus.md","source":"@site/blog/2023-07-26-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-07-26T00:00:00.000Z","formattedDate":"July 26, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.85,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-07-26-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-07-27-mithril"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-21-hydra"}},"content":"## High level summary\\n\\nThe `db-sync` team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now.\\nWe also focused on completing tracing support for UTxO-HD in `cardano-node`.\\nCurrently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further. \\n\\nThe team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the `ChainSync` client as part of the onboarding efforts for the team that will implement Genesis.\\n\\nThe Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team.\\n\\n### Genesis liaising\\n\\nImprovements to the `ChainSync` client:\\n\\n- [#222](https://github.com/input-output-hk/ouroboros-consensus/pull/222).\\n- [#233](https://github.com/input-output-hk/ouroboros-consensus/pull/233)."},{"id":"2023-07-21-hydra","metadata":{"permalink":"/cardano-updates/2023-07-21-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-hydra.md","source":"@site/blog/2023-07-21-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-07-21T00:00:00.000Z","formattedDate":"July 21, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.7,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-07-21-hydra","authors":["ch1bo"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-07-26-consensus"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-07-21-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team updated the specification to align with recent\\noff-chain protocol changes, completed refactoring the snapshot emission\\nin preparation for event-sourced protocol logic, and updated to GHC\\n9.2.7, resulting in improved compile times and slightly smaller Plutus\\nscripts.\\n\\n## What did the team achieve this week\\n\\n- Updated the specification to match the recent off-chain protocol\\n changes to complete\\n [#728](https://github.com/input-output-hk/hydra/pull/728)\\n- Refactored the snapshot emission logic in preparation for event\\n sourced protocol logic.\\n- Updated to GHC 9.2.7, which led to improved compile times and\\n slightly smaller plutus scripts.\\n\\n## What are the goals of next week\\n\\n- Monthly review meeting next wednesday and July report\\n- Reflect latest information onto our roadmap.\\n- Actual implemention of event-sourced persistence\\n [#913](https://github.com/input-output-hk/hydra/pull/913).\\n- Update the use cases section on \\n- Remove deprecated internal commit\\n [#954](https://github.com/input-output-hk/hydra/pull/954)."},{"id":"2023-07-21-ledger","metadata":{"permalink":"/cardano-updates/2023-07-21-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-ledger.md","source":"@site/blog/2023-07-21-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-07-21T00:00:00.000Z","formattedDate":"July 21, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.715,"hasTruncateMarker":false,"authors":[{"name":"Alexey Kuleshevich","title":"Ledger Team Software Engineer","url":"https://github.com/lehins","imageURL":"https://github.com/lehins.png","key":"lehins"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-07-21-ledger","authors":"lehins","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-21-hydra"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-07-21-sre"}},"content":"## High level summary\\n\\nOur focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet. \\nAll members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era.\\nWe also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release).\\nAdditionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available.\\nWe also made progress on the constraint-based generators, which can now generate valid transactions and ledger states. \\n\\n## What we achieved \\n\\n* [[pull-3521]] [[pull-3554]] Improved Governance model (GovernanceProcedures, ProposalProcedure)\\n* [[pull-3520]] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert ) \\n* [[pull-3531]] Refactored and simplified code interacting with Plutus\\n* [[pull-3558]] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix. \\n* [[pull-3550]] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed.\\n* [[pull-3551]] [[pull-3546]] [[pull-3472]] Updated tools and added some small improvements \\n* [[issue-3146]] [[pull-3498]] Introduced Conway protocol parameters \\n* [[issue-2948]] [[pull-3499]] Implemented ConwayGenesis with the new protocol parameters\\n\\n## What is currently in progress\\n\\n* [[issue-3494]] [[pull-3495]] Implement returning of proposal deposits\\n* [[issue-3436]] [[pull-3523]] Implement transferring lovelace from UTxO to treasury\\n* [[issue-3509]] [[pull-3552]] Add script-support for the committee hot key\\n* [[issue-3532]] [[pull-3556]] Add script-support for the constitution\\n* [[issue-3543]] [[pull-3557]] Improve the \'new committee\' governance action by specifying the members to be replaced, expiration epoch of new members and adding script-support\\n\\n\\n[pull-3521]: https://github.com/input-output-hk/cardano-ledger/pull/3521\\n[pull-3554]: https://github.com/input-output-hk/cardano-ledger/pull/3554\\n[pull-3520]: https://github.com/input-output-hk/cardano-ledger/pull/3520\\n[pull-3531]: https://github.com/input-output-hk/cardano-ledger/pull/3531\\n[pull-3558]: https://github.com/input-output-hk/cardano-ledger/pull/3558\\n[pull-3550]: https://github.com/input-output-hk/cardano-ledger/pull/3550\\n[pull-3551]: https://github.com/input-output-hk/cardano-ledger/pull/3551\\n[pull-3546]: https://github.com/input-output-hk/cardano-ledger/pull/3546\\n[pull-3472]: https://github.com/input-output-hk/cardano-ledger/pull/3472\\n[pull-3498]: https://github.com/input-output-hk/cardano-ledger/pull/3498\\n[pull-3499]: https://github.com/input-output-hk/cardano-ledger/pull/3499\\n[pull-3495]: https://github.com/input-output-hk/cardano-ledger/pull/3495 \\n[pull-3523]: https://github.com/input-output-hk/cardano-ledger/pull/3523\\n[pull-3552]: https://github.com/input-output-hk/cardano-ledger/pull/3552\\n[pull-3556]: https://github.com/input-output-hk/cardano-ledger/pull/3556\\n[pull-3557]: https://github.com/input-output-hk/cardano-ledger/pull/3557 \\n[issue-3494]: https://github.com/input-output-hk/cardano-ledger/issues/3494\\n[issue-2948]: https://github.com/input-output-hk/cardano-ledger/issues/2948\\n[issue-3436]: https://github.com/input-output-hk/cardano-ledger/issues/3436\\n[issue-3532]: https://github.com/input-output-hk/cardano-ledger/issues/3532\\n[issue-3509]: https://github.com/input-output-hk/cardano-ledger/issues/3509\\n[issue-3146]: https://github.com/input-output-hk/cardano-ledger/issues/3146\\n[issue-3543]: https://github.com/input-output-hk/cardano-ledger/issues/3543"},{"id":"2023-07-21-sre","metadata":{"permalink":"/cardano-updates/2023-07-21-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-sre.md","source":"@site/blog/2023-07-21-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-07-21T00:00:00.000Z","formattedDate":"July 21, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":0.685,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-07-21-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-07-21-ledger"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-07-20-goedel"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements and general environment maintenance.\\n\\nSome notable recent improvements include:\\n* Re-spin sanchonet for testing a new node version followed by fork to Conway\\n* Deploying a sanchonet compatible faucet to sanchonet\\n* Migrate shelley qa legacy environment to cardano-world\\n\\n## Lower level summary\\n\\n### Cardano-node\\n* Bump iohk-nix for sanchonet and shelley qa environment updates: [cardano-node-pull-5406](https://github.com/input-output-hk/cardano-node/pull/5406)\\n\\n### Cardano-ops\\n* Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: [cardano-ops-compare](https://github.com/input-output-hk/cardano-ops/compare/31cce1a...496f085)\\n\\n### Cardano-world\\n* Cardano-node p2p all local roots entrypoint option was added: [cardano-world-pull-102](https://github.com/input-output-hk/cardano-world/pull/102)\\n* Migrate shelley qa legacy environment to cardano-world: [cardano-world-pull-103](https://github.com/input-output-hk/cardano-world/pull/103)\\n* Create a sanchonet compatible faucet: [cardano-world-pull-91](https://github.com/input-output-hk/cardano-world/pull/91)\\n\\n### Iohk-nix\\n\\n* Migrate shelley qa legacy environment to cardano-world: [iohk-nix-pull-549](https://github.com/input-output-hk/iohk-nix/pull/549)\\n* Drop legacy byron environment parameters: [iohk-nix-pull-550](https://github.com/input-output-hk/iohk-nix/pull/550)"},{"id":"2023-07-20-goedel","metadata":{"permalink":"/cardano-updates/2023-07-20-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-20-goedel.md","source":"@site/blog/2023-07-20-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-07-20T00:00:00.000Z","formattedDate":"July 20, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.47,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-07-20-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-07-21-sre"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-07-18-node-cli-api"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThe team is working on formalising mini protocols, the performance\\nmodelling prototype and also finishing off their ICE papers.\\n\\n## Details\\n\\n* Formalization of the chain synchronization mini-protocol in the\\n thorn calculus\\n\\n* Final pre-publication steps for ICE 2023 papers\\n\\n* Developing approach for specification and verification of\\n mini-protocols\\n\\n* Started work on porting the DeltaQ framework to a new, more concrete\\n backend based on piecewise-polynomials"},{"id":"2023-07-18-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-07-18-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-18-node-cli-api.md","source":"@site/blog/2023-07-18-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-07-18T00:00:00.000Z","formattedDate":"July 18, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.065,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-07-18-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-07-20-goedel"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-14-hydra"}},"content":"# 2023-07-05 - 2023-07-18\\n\\n## High level summary\\n\\n- Integrate Conway certificates in cardano-api\\n- Prepare cardano-cli and cardano-api for cardano-node 8.1.2\\n- Tagged cardano-cli 8.3.0.0\\n - Query for the hash of the constitution (Conway)\\n - Ability to create votes and governance actions\\n- Tagged cardano-cli 8.3.1.0\\n - Make it build with ghc-9.6\\n- Upgrade to optparse-applicative-fork-0.18.1.0 for parsing command line options\\n\\n\\n### cardano-cli\\n\\n- [Upgrade to `optparse-applicative-fork-0.18.1.0`](https://github.com/input-output-hk/cardano-cli/pull/74)\\n- [Integrate cardano-api changes for fixed Show and Eq instances for Proposal type](https://github.com/input-output-hk/cardano-cli/pull/72)\\n- [New version `cardano-cli-8.3.1.0`](https://github.com/input-output-hk/cardano-cli/pull/68)\\n- [Add alonzo era to `Parser AnyShelleyBasedEra`](https://github.com/input-output-hk/cardano-cli/pull/67)\\n- [Use `sbe` variable name for the type is `ShelleyBasedEra`](https://github.com/input-output-hk/cardano-cli/pull/66)\\n- [New version `cardano-cli-8.3.0.0`](https://github.com/input-output-hk/cardano-cli/pull/65)\\n\\n### cardano-api\\n\\n- [Fix ghc version CPP](https://github.com/input-output-hk/cardano-api/pull/123)\\n- [Add a HasTypeProxy constraint to getVerificationKey](https://github.com/input-output-hk/cardano-api/pull/122)\\n- [Incorporate remaining ledger certificates](https://github.com/input-output-hk/cardano-api/pull/119)\\n- [Release cardano-api 8.8.1.0, cardano-api-gen 8.1.1.0](https://github.com/input-output-hk/cardano-api/pull/117)\\n- [Fix Eq, Show for Proposal type](https://github.com/input-output-hk/cardano-api/pull/115)\\n- [Wire up remaining governance actions](https://github.com/input-output-hk/cardano-api/pull/112)\\n- [Export `withShelleyBasedEraConstraintsForLedger`](https://github.com/input-output-hk/cardano-api/pull/108)\\n- [Remove unnecessary constraint](https://github.com/input-output-hk/cardano-api/pull/106)\\n- [Make it build with ghc-9.6](https://github.com/input-output-hk/cardano-api/pull/104)\\n- [New `shelleyBasedEraConstraints` function](https://github.com/input-output-hk/cardano-api/pull/103)\\n- [New version `cardano-api-8.8.0.0`](https://github.com/input-output-hk/cardano-api/pull/102)\\n- [Add CastVerificationKeyRole StakePoolKey StakeKey instance](https://github.com/input-output-hk/cardano-api/pull/101)\\n- [Update ledger and consensus](https://github.com/input-output-hk/cardano-api/pull/99)\\n- [Rename `era` to `sbe` when type is `ShelleyBasedEra`](https://github.com/input-output-hk/cardano-api/pull/98)\\n\\n### cardano-node\\n\\n### cardano-testnet\\n\\n- [Fix Shutdown test for new exit codes](https://github.com/input-output-hk/cardano-node/pull/5391)\\n\\n### docs\\n\\n- [Fix markdown links](https://github.com/input-output-hk/cardano-node/pull/5387)\\n\\n### CI & project maintenance\\n\\n- [Apply `stylish-haskell` to project](https://github.com/input-output-hk/cardano-cli/pull/69)"},{"id":"2023-07-14-hydra","metadata":{"permalink":"/cardano-updates/2023-07-14-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-14-hydra.md","source":"@site/blog/2023-07-14-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-07-14T00:00:00.000Z","formattedDate":"July 14, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.79,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"},{"name":"Sasha Bogicevic","title":"Hydra Software Engineer","url":"https://github.com/v0d1ch","imageURL":"https://github.com/v0d1ch.png","key":"v0d1ch"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-07-14-hydra","authors":["ffakenz","v0d1ch"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-07-18-node-cli-api"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-07-13-mithril"}},"content":"## High-level summary\\n\\nThis week the team focused on exploring the event sourced persistence in order\\nto improve `hydra-node` performance. Because of this work the team noticed we\\nneed to refactor the emit snapshot emission logic and update the spec in the\\nlight of new changes. They also took the time to revisit their goals and product\\nplans for the next quarter as well as doing some security fixes related to\\nmultisignatures.\\n\\n## What did the team achieve this week\\n\\n- Finished spike about performance improvements of event sourced persistence [#963](https://github.com/input-output-hk/hydra/pull/963).\\n- Refactor snapshot emission in protocol logic.\\n- Revisited our roadmap and goals.\\n- Prepared and conducated a learning session on lean-waste.\\n- Improve security of multi-signature checks, see [this Github security advisory](https://github.com/input-output-hk/hydra/security/advisories/GHSA-c8qp-cv4h-vcc4).\\n- Implemented a cache friendly way to version our binaries [#962](https://github.com/input-output-hk/hydra/pull/962).\\n\\n## What are the goals of next week\\n\\n- Implement Event sourced persistence [#913](https://github.com/input-output-hk/hydra/pull/913).\\n- Remove deprecated internal commit [#954](https://github.com/input-output-hk/hydra/pull/954) and close [#728](https://github.com/input-output-hk/hydra/pull/728)."},{"id":"2023-07-13-mithril","metadata":{"permalink":"/cardano-updates/2023-07-13-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-13-mithril.md","source":"@site/blog/2023-07-13-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-07-13T00:00:00.000Z","formattedDate":"July 13, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.92,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-07-13-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-14-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-07-12-consensus"}},"content":"## High level overview\\nThe Mithril team created a new [`2327.0`](https://github.com/input-output-hk/mithril/releases/tag/2327.0) distribution. They focused on preparing the beta launch on the `mainnet`: they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the `mainnet` infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library. \\n\\nFinally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs.\\n\\n## Low level overview\\n- Released the new distribution [`2327.0`](https://github.com/input-output-hk/mithril/releases/tag/2327.0)\\n- Worked on the epic that prepares the Mithril infrastructure for `mainnet` [#767](https://github.com/input-output-hk/mithril/issues/767):\\n - Completed the issue `Add infrastructure monitoring` [#987](https://github.com/input-output-hk/mithril/issues/987)\\n - Worked on the issue `Deploy \'mainnet\' infrastructure` [#988](https://github.com/input-output-hk/mithril/issues/988)\\n - Worked on the issue `Handle Secrets management` [#989](https://github.com/input-output-hk/mithril/issues/989)\\n- Worked on the epic `Benchmark performances of Mithril Aggregator` [#904](https://github.com/input-output-hk/mithril/issues/904):\\n - Worked on the issue `Design & implement basic stress test tool for aggregator` [#991](https://github.com/input-output-hk/mithril/issues/991)\\n- Worked on optimizations:\\n - Completed the issue `Remove certificate hash from Artifact` [#932](https://github.com/input-output-hk/mithril/issues/932)\\n - Completed the issue `Check vulnerabilities in CI` [#1037](https://github.com/input-output-hk/mithril/issues/1037)\\n - Completed the issue `Add \'created_at\' in Mithril Stake Distribution messages` [#1030](https://github.com/input-output-hk/mithril/issues/1030)\\n - Completed the issue `Add a \'run-only\' option in end to end test` [#1048](https://github.com/input-output-hk/mithril/issues/1048)\\n- Worked on refactoring:\\n - Completed the issue `Factorize protocol crypto operations` [#669](https://github.com/input-output-hk/mithril/issues/669)\\n - Completed the issue `Refactor aggregator dependency injection and services` [#1058](https://github.com/input-output-hk/mithril/issues/1058)\\n - Completed the issue `Build static binaries in CI` [#874](https://github.com/input-output-hk/mithril/issues/874)\\n- Worked on documentation:\\n - Completed the issue `Prepare SPO on-boarding guide` [#1049](https://github.com/input-output-hk/mithril/issues/1049)\\n - Completed the issue `Add instructions to set firewall using iptables` [#1040](https://github.com/input-output-hk/mithril/issues/1040)\\n - Completed the issue `Update ufw command to set firewall on Mithril Signer installation instructions` [#1041](https://github.com/input-output-hk/mithril/issues/1041)\\n- Worked on bugs:\\n - Completed the issue `Aggregator does not detect certificate chain epoch gap` [#952](https://github.com/input-output-hk/mithril/issues/952)\\n - Completed the issue `\'testing-preview\' network does not create certificates` [#1015](https://github.com/input-output-hk/mithril/issues/1015)\\n - Completed the issue `SQLite compatibility in aggregator` [#837](https://github.com/input-output-hk/mithril/issues/837)\\n - Completed the issue `Q&A followup fixes` [#1035](https://github.com/input-output-hk/mithril/issues/1035)\\n - Completed the issue `E2E tests are flaky in CI` [#1023](https://github.com/input-output-hk/mithril/issues/1023)"},{"id":"2023-07-12-consensus","metadata":{"permalink":"/cardano-updates/2023-07-12-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-12-consensus.md","source":"@site/blog/2023-07-12-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-07-12T00:00:00.000Z","formattedDate":"July 12, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.59,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-07-12-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-07-13-mithril"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-07-12-performance-and-tracing"}},"content":"## High level summary\\n\\nThis week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a [proposed fix](https://github.com/input-output-hk/ouroboros-network/pull/4620). The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine.\\n\\nThe team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility.\\n\\nOn the support front, the team [drafted](https://github.com/input-output-hk/ouroboros-consensus/pull/200) an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load."},{"id":"2023-07-12-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-07-12-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-12-performance-and-tracing.md","source":"@site/blog/2023-07-12-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-07-12T00:00:00.000Z","formattedDate":"July 12, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.29,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-07-12-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-07-12-consensus"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-07-07-crypto"}},"content":"## High level summary\\n\\n* Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed.\\n* Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends.\\n* Tracing: Optimization of the new tracing system is ongoing and yielding good performance results.\\n* Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nOur analysis of the GHC9 build of `cardano-node` has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation. \\n \\nIn an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into `cardano-node`. This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle.\\n\\n### Infrastructure\\n\\nWe have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in `master`.\\n\\n### Tracing\\n\\nMuch effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance.\\n\\n### Nomad backend\\n\\nFor reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run. \\n\\nFurthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to `master`."},{"id":"2023-07-07-crypto","metadata":{"permalink":"/cardano-updates/2023-07-07-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-crypto.md","source":"@site/blog/2023-07-07-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-07-07T00:00:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":0.795,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-07-07-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-07-12-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-07-07-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Sidechains: First version of snark-based ATMS\\n* mithril: Full node verifier\\n* kes_agent: Keep progress, and prepare CIP and CPS\\n* CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP\\n\\n## Low level summary\\n### kes_agent\\n* KES Agent CIP/CSP. Preparing documents. Will become public in the future.\\n* KES Agent testsuite (https://github.com/input-output-hk/kes-agent/issues/14)\\n* RawBearer abstraction in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395)\\n* Maintaining required changes to cardano-base for KES Agent (https://github.com/input-output-hk/cardano-base/pull/317)\\n### Mithril\\n* Final review of the implementation of Full Node Verifier [#939](https://github.com/input-output-hk/mithril/pull/939).\\n Included benchmarks and further tests.\\n### Sidechains\\n* Schnorr signature implemented\\n* ATMS signature implemented\\n* First benchmarks show that for the committe size we expect, we need 2^21 constraints. \\n### CIPs and community\\n* Addressed some review comments in [#PR506](https://github.com/cardano-foundation/CIPs/pull/506)\\n* Worked with the communityt on [#PR524](https://github.com/cardano-foundation/CIPs/pull/524) to include Keccak as part of the next Plutus release."},{"id":"2023-07-07-goedel","metadata":{"permalink":"/cardano-updates/2023-07-07-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-goedel.md","source":"@site/blog/2023-07-07-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-07-07T00:00:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.42,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-07-07-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-07-07-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-07-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the teams have been working on finalising their ICE papers\\nfor publication in EPTCS, formalising concensus, and investigating chain\\nsync.\\n\\n## Details\\n\\n* Preparing final versions of ICE papers\\n\\n* Reviewing the chain sync design and documentation\\n\\n* Refactoring the thorn calculus\\n\\n* First draft of Praos specification\\n\\n* Developing bounding factors on timeouts"},{"id":"2023-07-07-hydra","metadata":{"permalink":"/cardano-updates/2023-07-07-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-hydra.md","source":"@site/blog/2023-07-07-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-07-07T00:00:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.865,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"},{"name":"Sasha Bogicevic","title":"Hydra Software Engineer","url":"https://github.com/v0d1ch","imageURL":"https://github.com/v0d1ch.png","key":"v0d1ch"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-07-07-hydra","authors":["ffakenz","v0d1ch"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-07-07-goedel"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-07-07-sre"}},"content":"## High-level summary\\n\\nThis week the Hydra team accomplished some nice progress. They secured the\\nnetwork layer further by implementing authentication of the messages between the\\npeers in the Head protocol. In the process they also managed to separate\\nHeartBeat messages from the protocol ones which somewhat improved the quality of\\ncode in Hydra. The team also finished work related to sending only transaction\\nids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark\\npublishing on the website.\\n\\n## What did the team achieve this week\\n\\n- [Implemented](https://github.com/input-output-hk/hydra/issues/727) authenticated messages\\n- [Implemented](https://github.com/input-output-hk/hydra/issues/728) send only transaction ids in ReqSn messages\\n- Separate [HeartBeat](https://github.com/input-output-hk/hydra/pull/969) messages from the core network protocol messages\\n- Publish multiple pre-defined [benchmarks](https://github.com/input-output-hk/hydra/pull/947)\\n- [Fixed](https://github.com/input-output-hk/hydra/pull/967) a smoke-test issue where funds would not be returned to the faucet\\n- Found a bug in the [off-chain signature\\n verification](https://github.com/input-output-hk/hydra-ghsa-c8qp-cv4h-vcc4/pull/1)\\n\\n## What are the goals of next week\\n\\n- Spike on performance improvements of event sourced persistence [#913](https://github.com/input-output-hk/hydra/issues/913)\\n- Add new endpoint for submitting client transactions\\n- Remove commit from internal wallet"},{"id":"2023-07-07-sre","metadata":{"permalink":"/cardano-updates/2023-07-07-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-sre.md","source":"@site/blog/2023-07-07-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-07-07T00:00:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":0.815,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-07-07-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-07-07-hydra"},"nextItem":{"title":"Developer Experience Update","permalink":"/cardano-updates/2023-07-06-developer-experience"}},"content":"## High level summary\\n\\nThe SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance.\\n\\nSome notable recent improvements include:\\n* Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment\\n* Explorer component updates\\n* Spongix caching server rewrite for R2 Cloudflare support and various performance improvements\\n\\n## Lower level summary\\n\\n### Cardano-node\\n* Nixos service update to enable non-systemd socket activation multi-node relays: [cardano-node-pull-5360](https://github.com/input-output-hk/cardano-node/pull/5360)\\n\\n### Cardano-ogmios\\n* Cardano ogmios bump to 5.6.0 for nixos service: [cardano-ogmios-pull-6](https://github.com/input-output-hk/cardano-ogmios/pull/6)\\n\\n### Cardano-ops\\n* Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: [cardano-ops-compare](https://github.com/input-output-hk/cardano-ops/compare/88a17c9...dfde751)\\n\\n### Cardano-rosetta\\n* Cardano-rosetta nixos modifications for rosetta 2.1.0 service: [cardano-rosetta-pull-532](https://github.com/cardano-foundation/cardano-rosetta/pull/532)\\n\\n### Cardano-world\\n* Cardano-node entrypoint improvements: [cardano-world-pull-99](https://github.com/input-output-hk/cardano-world/pull/99)\\n* Further automate pool performance SQL query: [cardano-world-pull-100](https://github.com/input-output-hk/cardano-world/pull/100)\\n* Performance and benchmark job related tweaks: [cardano-world-commit](https://github.com/input-output-hk/cardano-world/commit/02f1ba424d3e36bd114df6f53b769d2cd25301c3)\\n* Explorer related component version bumps and traefik definition handline: [cardano-world-pull-101](https://github.com/input-output-hk/cardano-world/pull/101)\\n\\n### Spongix\\n* Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: [spongix-simple-branch](https://github.com/input-output-hk/spongix/compare/afd77728f5823d61732425df52a363949096e163...4890ff93308f45584bea8443cc13fbc16c8ce911)"},{"id":"2023-07-06-developer-experience","metadata":{"permalink":"/cardano-updates/2023-07-06-developer-experience","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-06-developer-experience.md","source":"@site/blog/2023-07-06-developer-experience.md","title":"Developer Experience Update","description":"High level summary","date":"2023-07-06T00:00:00.000Z","formattedDate":"July 6, 2023","tags":[{"label":"devx","permalink":"/cardano-updates/tags/devx"}],"readingTime":1.145,"hasTruncateMarker":false,"authors":[{"name":"Moritz Angermann","title":"Head of Developer Experience","url":"https://github.com/angerman","imageURL":"https://github.com/angerman.png","key":"angerman"}],"frontMatter":{"title":"Developer Experience Update","slug":"2023-07-06-developer-experience","authors":"angerman","tags":["devx"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-07-07-sre"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-07-04-db-sync"}},"content":"## High level summary\\n\\nThe Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements.\\n\\n## Lower level summary\\n\\n### build support & maintainance\\n\\nThe DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions.\\n\\n### compiler upgrades\\n\\nCompatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We\'ve also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests.\\n\\n\\n### Hydra Tools\\nOur repository, [input-output-hk/actions](https://github.com/input-output-hk/hydra-tools), has seen quite some improvements to facility the hydra <-> github integration.\\n\\n\\n### haskell.nix\\n[Haskell.nix](https://github.com/input-output-hk/haskell.nix) has been maintained and updated with the addition of preliminary GHC 9.8 support.\\n\\n### devx\\n\\nThe [devx](https://github.com/input-output-hk/devx) repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our [actions/devx](https://github.com/input-output-hk/actions) GitHub Actions, we have a consistent set of tooling for\\n- nix develop shells\\n- GitHub CodeSpaces integration\\n- VSCode DevContainer support\\n- GitHub Actions integration\\n\\n### upstream tooling\\n\\nOur team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix."},{"id":"2023-07-04-db-sync","metadata":{"permalink":"/cardano-updates/2023-07-04-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-04-db-sync.md","source":"@site/blog/2023-07-04-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-07-04T00:00:00.000Z","formattedDate":"July 4, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.73,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-07-04-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Developer Experience Update","permalink":"/cardano-updates/2023-07-06-developer-experience"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-07-04-node-cli-api"}},"content":"## High level summary\\nWe\'ve made progress in all high level objectives\\n- CIP-1694 integration design\\n- UTxO-HD integration proof of concept\\n- schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested\\n- Many devx issues resolved\\n\\n## Lower level summary\\n- We have improved and validated the design for the Conway integration in db-sync\\n- Improved the initial integration of the UTxO-HD feauture branches which are under test\\n- Prepared a new release 13.1.1.3 which supports node 8.1.1\\n[#1455](https://github.com/input-output-hk/cardano-db-sync/pull/1455).\\n- This also fixes a bug\\n[#1451](https://github.com/input-output-hk/cardano-db-sync/issues/1451)\\n- Added new tests to the new tx_out options\\n[#1429](https://github.com/input-output-hk/cardano-db-sync/pull/1429)\\n- Fixed a chronic issue in db-sync related to exception handling and concurrency\\nThis fixes many other issues and simplifies the logic in db-sync\\n[#1447](https://github.com/input-output-hk/cardano-db-sync/pull/1447)\\n- A number of fixes and improvements in ci, docker, devx, docs\\n[#1436](https://github.com/input-output-hk/cardano-db-sync/pull/1436)\\n[#1442](https://github.com/input-output-hk/cardano-db-sync/pull/1442)\\n[#1448](https://github.com/input-output-hk/cardano-db-sync/pull/1448)\\n[#1452](https://github.com/input-output-hk/cardano-db-sync/pull/1452)"},{"id":"2023-07-04-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-07-04-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-04-node-cli-api.md","source":"@site/blog/2023-07-04-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-07-04T00:00:00.000Z","formattedDate":"July 4, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.495,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-07-04-node-cli-api","authors":"carlos","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-07-04-db-sync"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-30-hydra"}},"content":"# 2023-06-21 - 2023-07-04\\n\\n## High level summary\\n\\n- Started integration of conway era into the cardano-api,\\n- Pre-release of cardano-cli 8.2.1 which enables creating goveranance \\"Update constitution\\" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.\\n- Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities.\\n- Continue refactoring cardano-testnet\\n- CI and docs house keeping on the new cardnao-cli and cardano-api repositories\\n\\n\\n### cardano-cli\\n\\n- [Update to `cardano-api-8.7.0.0`](https://github.com/input-output-hk/cardano-cli/pull/60)\\n- [Release 8.2.1](https://github.com/input-output-hk/cardano-cli/pull/44)\\n- [Use new function-based API instead of using query data types directly](https://github.com/input-output-hk/cardano-cli/pull/39)\\n\\n### cardano-api\\n\\n- [Release cardano-api 8.7](https://github.com/input-output-hk/cardano-api/pull/94)\\n- [New version `cardano-api-8.6.0.0`](https://github.com/input-output-hk/cardano-api/pull/92)\\n- [New version `cardano-api-8.2.0.0.1.0.0`](https://github.com/input-output-hk/cardano-api/pull/90)\\n- [Backport: Add era phantom type parameter to Certificate](https://github.com/input-output-hk/cardano-api/pull/88)\\n- [Parameterise `Certificate` type with phantom `era` type argument](https://github.com/input-output-hk/cardano-api/pull/86)\\n- [Voting procedure and proposal procedure updates](https://github.com/input-output-hk/cardano-api/pull/85)\\n- [Parameterise `Certificate` with `era`](https://github.com/input-output-hk/cardano-api/pull/84)\\n- [Parameterise `Certificate` type with phantom `era` type argument](https://github.com/input-output-hk/cardano-api/pull/83)\\n- [Add contributing guide](https://github.com/input-output-hk/cardano-api/pull/79)\\n- [Unified `ShelleyBasedEra` constraint summoning](https://github.com/input-output-hk/cardano-api/pull/77)\\n- [Update CHaP index](https://github.com/input-output-hk/cardano-api/pull/70)\\n- [CIP-1694 API - Part 1](https://github.com/input-output-hk/cardano-api/pull/41)\\n\\n\\n### cardano-node\\n\\n- [cardano-node top level error handler](https://github.com/input-output-hk/cardano-node/pull/5356)\\n- [Turn on some traces by default](https://github.com/input-output-hk/cardano-node/pull/5353)\\n\\n### cardano-testnet\\n\\n- [Report payment address and UTxOs in testnets](https://github.com/input-output-hk/cardano-node/pull/5364)\\n- [New Conway `stake-snapshot` tests](https://github.com/input-output-hk/cardano-node/pull/5362)\\n\\n### docs\\n\\n- [Add contributing guide](https://github.com/input-output-hk/cardano-api/pull/79)\\n- [Release workflow description](https://github.com/input-output-hk/cardano-api/pull/33)\\n- [Turn on some traces by default](https://github.com/input-output-hk/cardano-node/pull/5353)\\n\\n\\n\\n### CI & project maintenance\\n\\n- [Add PR changelog check](https://github.com/input-output-hk/cardano-api/pull/75)\\n- [Fix stylish haskell in github action workflow](https://github.com/input-output-hk/cardano-api/pull/71)\\n- [Enable CI on PRs from forks](https://github.com/input-output-hk/cardano-api/pull/62)\\n- [Remove merge_group trigger from changelog check CI](https://github.com/input-output-hk/cardano-cli/pull/53)\\n- [Add PR changelog check. Add core-tech group to GHA description codeowners.](https://github.com/input-output-hk/cardano-cli/pull/46)\\n- [Fix stylish haskell in github action workflow](https://github.com/input-output-hk/cardano-cli/pull/41)\\n- [Enable CI in PRs from forks](https://github.com/input-output-hk/cardano-cli/pull/40)\\n- [Add contributing guide](https://github.com/input-output-hk/cardano-cli/pull/48)"},{"id":"2023-06-30-hydra","metadata":{"permalink":"/cardano-updates/2023-06-30-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-30-hydra.md","source":"@site/blog/2023-06-30-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-06-30T00:00:00.000Z","formattedDate":"June 30, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.925,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-06-30-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-07-04-node-cli-api"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-06-29-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team wrote and published the monthly report for June,\\nimplemented the end-to-end functionality for external commits, and tested it on\\nthe preview environment. They also listed Hydra as a tool on the Cardano\\ndeveloper portal, providing more visibility for the project. The team clarified\\nthe path forward for L2 protocol improvements and explored an alternative CI\\napproach using cabal instead of nix. Additionally, they released version 0.11.0,\\nmarking another milestone in the project’s development.\\n\\n## What did the team achieve this week\\n\\n- Written and published the monthly report for [June](https://hydra.family/head-protocol/monthly/2023-06)\\n- Implemented external commits end-to-end incl. tested it on preview [#215](https://github.com/input-output-hk/hydra/issues/215)\\n- Listed Hydra as a tool on cardano [developer portal](https://developers.cardano.org/tools/)\\n- Cleared up path forward on L2 protocol improvements [#728](https://github.com/input-output-hk/hydra/issues/728)\\n- Established an alternative CI using more cabal tools [#923](https://github.com/input-output-hk/hydra/pull/923)\\n- Release version [0.11.0](https://github.com/input-output-hk/hydra/releases/tag/0.10.0)\\n\\n## What are the goals of next week\\n\\n- Spike on performance improvements of event sourced persistence [#913](https://github.com/input-output-hk/hydra/issues/913)\\n- Complete ReqSn only sends transaction ids [#728](https://github.com/input-output-hk/hydra/issues/728)\\n- Groom and plan last items for 0.12.0 (remove internal commit)\\n- Improve reliability of benchmarks"},{"id":"2023-06-29-mithril","metadata":{"permalink":"/cardano-updates/2023-06-29-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-29-mithril.md","source":"@site/blog/2023-06-29-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-06-29T00:00:00.000Z","formattedDate":"June 29, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":2.205,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-06-29-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-30-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-06-28-consensus"}},"content":"## High level overview\\nThe Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano `mainnet` infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator.\\n\\nFinally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1.\\n\\n## Low level overview\\n- Worked on the epic that prepares the Mithril infrastructure for `mainnet` [#767](https://github.com/input-output-hk/mithril/issues/767):\\n - Worked on the issue `Add infrastructure monitoring` [#987](https://github.com/input-output-hk/mithril/issues/987)\\n- Completed the epic `Prepare Mithril Signer deployment model for SPO` [#862](https://github.com/input-output-hk/mithril/issues/862):\\n - Completed the issue `Design recommended deployment model for SPOs on \'mainnet\' and \'preview\'/\'preprod\'` [#961](https://github.com/input-output-hk/mithril/issues/961)\\n - Completed the issue `Adapt infrastructure to use Mithril Relay` [#1018](https://github.com/input-output-hk/mithril/issues/1018)\\n - Completed the issue `Announce the new signer deployment model in a dev blog post` [#1017](https://github.com/input-output-hk/mithril/issues/1017)\\n- Worked on the epic `Benchmark performances of Mithril Aggregator` [#904](https://github.com/input-output-hk/mithril/issues/904):\\n - Worked on the issue `Design & implement basic stress test tool for aggregator` [#991](https://github.com/input-output-hk/mithril/issues/991)\\n- Worked on bugs:\\n - Completed the issue `Aggregator does not exit on critical error` [#993](https://github.com/input-output-hk/mithril/issues/993)\\n - Completed the issue `Computation of master certificate of an epoch is incorrect` [#1006](https://github.com/input-output-hk/mithril/issues/1006)\\n - Completed the issue `End to end tests are flaky` [#954](https://github.com/input-output-hk/mithril/issues/954)\\n - Worked on the issue `\'testing-preview\' network does not create certificates` [#1015](https://github.com/input-output-hk/mithril/issues/1015)\\n- Worked on optimizations:\\n - Completed the issue `Dates format is not standardized` [#946](https://github.com/input-output-hk/mithril/issues/946)\\n - Completed the issue `Add \'recompute-certificates-hash\' command to aggregator` [#1001](https://github.com/input-output-hk/mithril/issues/1001)\\n - Completed the issue `Add a retry mechanism for artifact creation in aggregator` [#984](https://github.com/input-output-hk/mithril/issues/984)\\n - Completed the issue `Log node version at startup in Aggregator/Signer` [#944](https://github.com/input-output-hk/mithril/issues/944)\\n - Completed the issue `Reactivate Publish Results job in CI` [#978](https://github.com/input-output-hk/mithril/issues/978)\\n - Completed the issue `Clean \'pending_snapshot\' directory of aggregator` [#983](https://github.com/input-output-hk/mithril/issues/983)\\n - Completed the issue `Update OpenAPI spec examples` [#1000](https://github.com/input-output-hk/mithril/issues/1000)\\n- Worked on refactoring:\\n - Completed the issue `Refactor \'MithrilStakeDistribution\' entity` [#967](https://github.com/input-output-hk/mithril/issues/967)\\n - Completed the issue `Refactoring client` [#982](https://github.com/input-output-hk/mithril/issues/982)\\n - Completed the issue `Refactor download code in client` [#1010](https://github.com/input-output-hk/mithril/issues/1010)\\n - Worked on the issue `Factorize protocol crypto operations` [#669](https://github.com/input-output-hk/mithril/issues/669)\\n- Worked on dependencies:\\n - Completed the issue `Upgrade Cardano node to \'8.1.1\'` [#973](https://github.com/input-output-hk/mithril/issues/973)"},{"id":"2023-06-28-consensus","metadata":{"permalink":"/cardano-updates/2023-06-28-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-28-consensus.md","source":"@site/blog/2023-06-28-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-06-28T00:00:00.000Z","formattedDate":"June 28, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.85,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-06-28-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-06-29-mithril"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-06-28-performance-and-tracing"}},"content":"## High level summary\\n\\nDuring the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team. \\n\\nThe team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components.\\n\\nRegarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node. \\n\\n### Genesis\\n\\n- We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.\\n\\n- We [decided on an approach](https://github.com/input-output-hk/ouroboros-consensus/issues/101#issuecomment-1607767722) of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team.\\n\\n### UTxO-HD\\n\\n- We merged the last of the PRs that were part of UTxO-HD improvements for version [0.1](https://github.com/input-output-hk/ouroboros-consensus/issues/149): expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size.\\n- We [added](https://github.com/input-output-hk/ouroboros-consensus/pull/87) a new \\"legacy\\" cardano block in a new `ouroboros-consensus-cardano-legacy-block` package that should ease the transition for some downstream packages to UTxO-HD, like `db-sync`. This is really only useful for downstream packages that use the parts of consensus that don\'t involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block.\\n- We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this."},{"id":"2023-06-28-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-06-28-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-28-performance-and-tracing.md","source":"@site/blog/2023-06-28-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-06-28T00:00:00.000Z","formattedDate":"June 28, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.885,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-06-28-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-06-28-consensus"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-06-23-goedel"}},"content":"## High level summary\\n\\n* Benchmarking: We\'ve performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9.\\n* Infrastructure: The first batch of refactoring and documentation for our `tx-generator` has been merged to `master`.\\n* Tracing: We\'ve looked into an issue where the tracing system\'s concurrency could prevent a graceful node shutdown.\\n* Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nThe compiler switch to GHC9 as the default build platform for `cardano-node` and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9\'s significantly different inlining behaviour may produce those effects. We\'re currently locating the specific places in component code that have the most extensive effect in that regard. \\n \\nUsing the `forge-stress` approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node.\\n\\n### Infrastructure\\n\\nThe `tx-generator` is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to `master`. Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base.\\n\\n### Tracing\\n\\nThe tracing system\'s concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue.\\n\\n### Nomad backend\\n\\nWith the data gathered from running the new nomad cloud backend, we\'ve been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress.\\n\\nAdditionally, we\'re continuing the new backend\'s validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend."},{"id":"2023-06-23-goedel","metadata":{"permalink":"/cardano-updates/2023-06-23-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-goedel.md","source":"@site/blog/2023-06-23-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-06-23T00:00:00.000Z","formattedDate":"June 23, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.335,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-06-23-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-06-28-performance-and-tracing"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-23-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the teams presented two papers at ICE 2023.\\n\\n## Details\\n\\n* Presented two papers at ICE 2023: https://www.discotec.org/2023/ice\\n\\n* Analysing and implementing chain synchronization mini protocol\\n\\n* The team is hiring a performance engineering intern - https://apply.workable.com/io-global/j/BFEC5B0AFF/"},{"id":"2023-06-23-hydra","metadata":{"permalink":"/cardano-updates/2023-06-23-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-hydra.md","source":"@site/blog/2023-06-23-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-06-23T00:00:00.000Z","formattedDate":"June 23, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.79,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"},{"name":"Pascal Grange","title":"Hydra Software Engineer","url":"https://github.com/pgrange","imageURL":"https://github.com/pgrange.png","key":"pgrange"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-06-23-hydra","authors":["ffakenz","pgrange"],"tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-06-23-goedel"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-06-23-network"}},"content":"## High-level summary\\n\\nThis week, the Hydra team shared progress updates during the monthly review\\nmeeting (monthly report and video recording available soon) and started\\nexperimenting on preview network with the new commit from external wallet\\nfeature.\\n\\n## What did the team achieve this week\\n\\n- Monthly report & review meeting, demonstrating [commit from external\\n wallet](https://github.com/input-output-hk/hydra/pull/887)\\n- Published regular [benchmarks for\\n Hydra](https://hydra.family/head-protocol/unstable/benchmarks/end-to-end-benchmarks)\\n- Moved forward the journey for external commits using multiple script UTxOs\\n [#903](https://github.com/input-output-hk/hydra/pull/903)\\n- Changed the API to only put transaction id in snapshots, instead of the full\\n transactions [#922](https://github.com/input-output-hk/hydra/pull/922) -> this\\n is now evolved into fully addressing [#728](\\n https://github.com/input-output-hk/hydra/issues/728)\\n- Fuel marking is now optional as one can now commit from an external wallet\\n [#924](https://github.com/input-output-hk/hydra/pull/924)\\n- Add flag option to display node version on tui\\n [#934](https://github.com/input-output-hk/hydra/pull/934)\\n\\n## What are the goals of next week\\n\\n- Complete external commits using multiple script UTxOs [#903](https://github.com/input-output-hk/hydra/pull/903)\\n- New release 0.11.0\\n- Dirtroad solution of improved persistence performance [#913](https://github.com/input-output-hk/hydra/pull/913)"},{"id":"2023-06-23-network","metadata":{"permalink":"/cardano-updates/2023-06-23-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-network.md","source":"@site/blog/2023-06-23-network.md","title":"Network Team Update","description":"Network Update","date":"2023-06-23T00:00:00.000Z","formattedDate":"June 23, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.7,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-06-23-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-23-hydra"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-06-23-sre"}},"content":"## Network Update\\n\\n### Key contributions\\n\\nWe held a series of session to review the implementation of big ledger peers\\n(eclipse evasion). See [#4462].\\n\\nWe get a request from a 3rd party to clarify an inconsistency between CDDL spec\\nand protocol implementation. We worked out a nice solution which takes\\nadvantage of the `any` notion available in `CDDL`. On the Haskell side we\\nprovide `Any` type which gen generate almost any CBOR term (some are excluded\\nonly because they are not decoded back to the same form, and we relay on that\\nproperty). See [#4580].\\n\\nWe fixed a bunch of problems of the `cardano-cli ping` command. It also now has\\na limited support of `node-to-client` mini-protocol (the `-c` option is\\nignored, as it cannot be supported by `node-to-client` protocol). Note that\\nthe format of messages has changed, timestamps are printed in ISO8601 format.\\nSee [#4601], [#5326], [#5313], [#30]\\n\\nIn order to provide a new flag in the topology file which enables ledger peers\\nwhen the chain is close to the tip, we continued to work on [#4530]. This is\\ncurrently in review, the consensus team will need to provide us with the new\\napi. This feature is useful for two reasons: makes it easier to maintain\\na topology file, it will also limit the traffic on public roots generated by\\nfor example full node wallets and distribute it to ledger peers.\\n\\nWe also continued to work on a blog post which describes the journey of design\\n& implementation of the dynamic P2P network layer. Too be announced soon :). \\n\\n### Other smaller changes\\n\\nWe limit the concurrency of resolving dns names. Up to 8 root peers or ledger\\npeers DNS names are resolved concurrently, and at most 2 local root peer DNS\\nnames. See [#4596].\\n\\nWe fixed handshake query timeout in [#4603].\\n\\nWe renamed one of the block-fetch decision constructors as requested by the\\nconsensus team, see [#4608].\\n\\n[#30]: https://github.com/input-output-hk/cardano-cli/pull/30\\n[#4462]: https://github.com/input-output-hk/ouroboros-network/pull/4462\\n[#4580]: https://github.com/input-output-hk/ouroboros-network/pull/4580\\n[#4596]: https://github.com/input-output-hk/ouroboros-network/pull/4596\\n[#4598]: https://github.com/input-output-hk/ouroboros-network/issues/4598\\n[#4601]: https://github.com/input-output-hk/ouroboros-network/pull/4601\\n[#5313]: https://github.com/input-output-hk/cardano-node/pull/5313\\n[#5326]: https://github.com/input-output-hk/cardano-node/pull/5326\\n[#4603]: https://github.com/input-output-hk/ouroboros-network/pull/4603\\n[#4530]: https://github.com/input-output-hk/ouroboros-network/issues/4530\\n[#4608]: https://github.com/input-output-hk/ouroboros-network/pull/4608"},{"id":"2023-06-23-sre","metadata":{"permalink":"/cardano-updates/2023-06-23-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-sre.md","source":"@site/blog/2023-06-23-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-06-23T00:00:00.000Z","formattedDate":"June 23, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":0.98,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-06-23-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-06-23-network"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-16-hydra"}},"content":"## High level summary\\n\\nThe SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:\\n* A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality\\n* Cardano Sanchonet environment was stood up to test Conway era functionality\\n* Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case\\n* Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments\\n\\n## Lower level summary\\n\\n### Cardano-node\\n\\n- Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: [cardano-node-pull-5318](https://github.com/input-output-hk/cardano-node/pull/5318)\\n\\n### Cardano-ops\\n\\n- Updates required for node 8.1.1 nixos service: [cardano-ops-pull-414](https://github.com/input-output-hk/cardano-ops/pull/414)\\n- Work in progress continues on mixed legacy and p2p topology clusters in cardano-ops: [cardano-ops-ops-local](https://github.com/input-output-hk/cardano-ops/tree/ops-local), [cardano-ops-mn-mixed-p2p](https://github.com/input-output-hk/cardano-ops/tree/mn-mixed-p2p)\\n\\n### Cardano-world\\n\\n- Add Sanchonet environment: [cardano-world-pull-96](https://github.com/input-output-hk/cardano-world/pull/96)\\n\\n### Ci-ops\\n\\n- Add devx-ci cluster integration for legacy darwin [ci-ops-compare](https://github.com/input-output-hk/ci-ops/compare/b158b17...ed875b9)\\n\\n### Ci-world\\n\\n- Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: [ci-world-compare](https://github.com/input-output-hk/ci-world/compare/840cdb6...b08c250)\\n\\n### Devx-ci\\n\\n- A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: [devx-ci-repo](https://github.com/input-output-hk/devx-ci)\\n\\n### Iohk-nix\\n\\n- Add Sanchonet environment: [iohk-nix-pull-545](https://github.com/input-output-hk/iohk-nix/pull/545)"},{"id":"2023-06-16-hydra","metadata":{"permalink":"/cardano-updates/2023-06-16-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-16-hydra.md","source":"@site/blog/2023-06-16-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-06-16T00:00:00.000Z","formattedDate":"June 16, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.815,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-06-16-hydra","authors":"ffakenz","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-06-23-sre"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-06-15-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team focused their efforts on continuing to investigate and\\nexperiment operating a head on mainnet. They collected several bugs and issues\\nand worked on fixing them. Now the team is soon to release a new version,\\n0.11.0, which comes with a lot of improvements and bug fixes.\\n\\n\\n## What did the team achieve this week\\n\\n- Restored and fixed a bug which stalled our head on mainnet [#927](https://github.com/input-output-hk/hydra/issues/927)\\n- Solved one user issue [#914](https://github.com/input-output-hk/hydra/issues/914)\\n- Reduced significantly local state size and logs by removing the full scripts from it [#928](https://github.com/input-output-hk/hydra/pull/928)\\n- (pending review) Reduced snapshot size in the API, by only including tx ids [#922](https://github.com/input-output-hk/hydra/pull/922)\\n\\n## What are the goals of next week\\n\\n- New release 0.11.0\\n- Monthly report & review meeting.\\n- Fix some minor bugs discovered when operating our head on mainnet\\n- Complete journey for external commits using multiple script UTxOs [#903](https://github.com/input-output-hk/hydra/pull/903)\\n- Publish benchmarks and provide regular benchmarks for Hydra [#186](https://github.com/input-output-hk/hydra/issues/186)"},{"id":"2023-06-15-mithril","metadata":{"permalink":"/cardano-updates/2023-06-15-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-15-mithril.md","source":"@site/blog/2023-06-15-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-06-15T00:00:00.000Z","formattedDate":"June 15, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.795,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-06-15-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-16-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-06-14-consensus"}},"content":"## High level overview\\nThe Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client\u2019s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet.\\n\\nFinally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI.\\n\\n## Low level overview\\n- Completed on the epic that designs and implements generic signing/verification of entity services [#780](https://github.com/input-output-hk/mithril/issues/780):\\n - Completed the issue `Create the sub-command for \'Mithril Stake Distribution\' in client` [#896](https://github.com/input-output-hk/mithril/issues/896)\\n - Completed the issue `Adapt end to end tests to handle new types of data` [#899](https://github.com/input-output-hk/mithril/issues/899)\\n - Completed the issue `Update client documentation` [#897](https://github.com/input-output-hk/mithril/issues/897)\\n - Completed the issue `Update architecture documentations for new types of data` [#898](https://github.com/input-output-hk/mithril/issues/898)\\n - Completed the issue `Refactoring client` [#960](https://github.com/input-output-hk/mithril/issues/960)\\n- Worked on the epic that prepares the Mithril infrastructure for `mainnet` [#767](https://github.com/input-output-hk/mithril/issues/767):\\n - Completed the issue `Enhance terraform infrastructure` [#930](https://github.com/input-output-hk/mithril/issues/930)\\n- Completed the epic that implements the computation of the stake distribution for `mainnet` [#880](https://github.com/input-output-hk/mithril/issues/880):\\n - Completed the issue `Check performance impact of new stake distribution command on the \'mainnet\'` [#962](https://github.com/input-output-hk/mithril/issues/962)\\n- Worked on the epic `Prepare Mithril Signer deployment model for SPO` [#862](https://github.com/input-output-hk/mithril/issues/862):\\n - Worked on the issue `Design recommended deployment model for SPOs on \'mainnet\' and \'preview\'/\'preprod\'` [#961](https://github.com/input-output-hk/mithril/issues/961)\\n- Worked on bugs and optimizations:\\n - Completed the issue `Aggregator does not always detect new immutable file` [#953](https://github.com/input-output-hk/mithril/issues/953)\\n - Completed the issue `CI tests fail with Rust \'1.70.0\'` [#958](https://github.com/input-output-hk/mithril/issues/958)\\n - Worked on the issue `End to end tests are flaky` [#954](https://github.com/input-output-hk/mithril/issues/954)\\n - Worked on the issue `Certificate dates in metadata are not on the same timezone` [#946](https://github.com/input-output-hk/mithril/issues/946)\\n - Worked on the issue `Refactor \'MithrilStakeDistribution\' entity` [#967](https://github.com/input-output-hk/mithril/issues/967)\\n - Completed the issue `Fix \'Mithril Client multi-platform test\' with new client interface` [#956](https://github.com/input-output-hk/mithril/issues/956)\\n - Completed the issue `Enhance \'ImmutableDigesterError::NotEnoughImmutable\' error` [#969](https://github.com/input-output-hk/mithril/issues/969)\\n - Completed the issue `Client \'snapshot download\' command fails with option \'--download-dir\'` [#979](https://github.com/input-output-hk/mithril/issues/979)"},{"id":"2023-06-14-consensus","metadata":{"permalink":"/cardano-updates/2023-06-14-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-14-consensus.md","source":"@site/blog/2023-06-14-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-06-14T00:00:00.000Z","formattedDate":"June 14, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.115,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-06-14-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-06-15-mithril"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-06-14-performance-and-tracing"}},"content":"## High level summary\\n\\nThe Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the `Byron` and `TPraos` eras do not need to be checkpointed for an MVP.\\nThere is one remaining question (which applies also to the `Praos` era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated \\"Limit on Patience\\" timeout sufficiently bounds how long the adversary can inflate a victim\'s overall sync time.\\n\\nOn the UTxO-HD front, the prototype branch was rebased on top of the latest `ouroboros-consensus` `main` branch and integrated on top of `cardano-node 8.1.1-pre`. As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD.\\nWe managed to run a node again with UTxO-HD enabled. \\nWe also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for `cardano-node`, which uncovered a performance regression on the Network component when using `GHC-9.2/9.4`. This is being addressed.\\n\\nRegarding our support activities, we Released `fs-sim-0.2.0.0` and are in the process of preparing the 8.2 release of `cardano-node`. We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests."},{"id":"2023-06-14-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-06-14-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-14-performance-and-tracing.md","source":"@site/blog/2023-06-14-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-06-14T00:00:00.000Z","formattedDate":"June 14, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.515,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-06-14-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-06-14-consensus"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-06-12-network"}},"content":"## High level summary\\n\\n* Benchmarking: We\'ve continued release benchmarking and established a new baseline for `8.0.0`.\\n* New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined.\\n* Nomad backend: The healthcheck system for the the nomad cloud has been completed. We\'ve performed the first full runs on the new backend.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nIn our release benchmarking cycle, we established a new performance baseline for `8.0.0`. Additionally, we\'ve measured\\nperformance under various workloads for `8.1.1-pre`; the results look promising and validate the optimization efforts\\ndone on several system components. \\n \\nIn the meantime, we\'ve finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for\\nbenchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper.\\n\\n\\n### Tracing\\n\\nThe legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be\\nmeaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific\\ntrace messages are closely aligned. We\'ve found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles. \\n\\nAdditionally, we\'ve had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD.\\n\\n\\n### Nomad backend\\n\\nAs the new backend\'s healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we\'ve performed our first 52-node cluster runs on nomad cloud. We\'re currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs. \\n\\nThis means the backend is entering validation phase, where we systematically compare all metrics taken from the new\\ninfrastructure to the existing ones, including determining reproducibility and variance."},{"id":"2023-06-12-network","metadata":{"permalink":"/cardano-updates/2023-06-12-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-12-network.md","source":"@site/blog/2023-06-12-network.md","title":"Network Team Update","description":"Network Update","date":"2023-06-12T00:00:00.000Z","formattedDate":"June 12, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":2.205,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-06-12-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-06-14-performance-and-tracing"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-06-09-crypto"}},"content":"## Network Update\\n\\n### Key contributions and advances\\n\\nWe merged `light peer sharing` feature, which allows to include inbound peers\\ninto outbound governor known peers. This is the primary way for new\\nunregistered nodes to enter the network, which then can be shared using peer\\nsharing. Note that peer sharing is an experimental feature which is disabled\\nuntil genesis & eclipse evasion as fully implemented. See [#3596].\\n\\nWe are making progress reviewing eclipse evasion, [#3886].\\n\\nWe fixed another bug in local root peers. We found out that if the local roots\\nwhere ignored until the first domain name was resolved, see [#4583]. The bug\\nfix was backported and released in `ouroboros-network-0.8.1.1`.\\n\\nWe re-started working on dynamically enabling block forging to address issue\\n[#3159], which will enable us to release `P2P` on block producing nodes. See [#140].\\n\\n#### New `cardano-ping` / `cardano-cli ping` release\\n\\nWe prepared a new release of `cardano-ping` library which supports the new\\nquery feature (query supported versions). See [#4589], [#4593] and [#5313].\\nThe new version of `cardano-cli ping` will use `ISO8601` formatted\\ntimestamps; also the formatting of ping results is slightly improved, and it\\nwill introduce the new `--query-versions` (`-Q`) switch. If the remote site\\nsupports the query parameter, the command will print:\\n```\\nredacted-ip:port network rtt: 0.064\\nredacted-ip:port handshake rtt: 0.064010896s\\nredacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat\\norAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]\\n```\\notherwise it will print the negotiation results\\n```\\nredacted-ip:port network rtt: 0.045\\nredacted-ip:port handshake rtt: 0.101867615s\\nredacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder\\n```\\nNote that in that case `cardano-cli ping` offers `InitiatorAndResponder`, which\\nallows us to detect whether the remote side is an `InitiatorOnly` or\\n`InitiatorAndResponder`. Also `cardano-cli ping` will no longer announce\\nitself as `InitiatorAndResponder`, except for the case mentioned above.\\n\\n### Other smaller contributions\\n\\nOn a request from the Marlow Team, we published haddocks of `typed-protocols`,\\nwhich are now available [here][typed-protocols-haddocks] ([#40], [#41]).\\n\\nWe made a new release of `strict-stm-1.1.0.1` on Hackage, which fixed a bug in\\npackage description file, [#101] .\\n\\nWe also helped to debug a deadlock when using named pipes on Windows in the new\\n`RawBearer` API. The API is being used to store secret keys only in memory.\\nThe PR [#4395] is under review.\\n\\nWe also have two more PRs which are under review:\\n\\n* [#4530]: enabling ledger peers on a fixed number of slots before the tip of the chain;\\n* [#4580]: a PR which fixes inconsistencies in one of our cddl specs.\\n\\n[typed-protocols-haddocks]: https://input-output-hk.github.io/typed-protocols/\\n\\n[#40]: https://github.com/input-output-hk/typed-protocols/pull/40\\n[#41]: https://github.com/input-output-hk/typed-protocols/pull/41\\n[#101]: https://github.com/input-output-hk/io-sim/pull/101\\n[#140]: https://github.com/input-output-hk/ouroboros-consensus/pull/140\\n[#3159]: https://github.com/input-output-hk/ouroboros-network/issues/3159\\n[#3596]: https://github.com/input-output-hk/ouroboros-network/issues/3596\\n[#3886]: https://github.com/input-output-hk/ouroboros-network/issues/3886\\n[#4395]: https://github.com/input-output-hk/ouroboros-network/pull/4395\\n[#4530]: https://github.com/input-output-hk/ouroboros-network/issues/4530\\n[#4580]: https://github.com/input-output-hk/ouroboros-network/issues/4580\\n[#4583]: https://github.com/input-output-hk/ouroboros-network/issues/4583\\n[#4589]: https://github.com/input-output-hk/ouroboros-network/pull/4589\\n[#4593]: https://github.com/input-output-hk/ouroboros-network/pull/4593\\n[#5313]: https://github.com/input-output-hk/cardano-node/pull/5313"},{"id":"2023-06-09-crypto","metadata":{"permalink":"/cardano-updates/2023-06-09-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-crypto.md","source":"@site/blog/2023-06-09-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-06-09T00:00:00.000Z","formattedDate":"June 9, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":0.705,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-06-09-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-06-12-network"},"nextItem":{"title":"Developer Experience Update","permalink":"/cardano-updates/2023-06-09-developer-experience"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* cardano-base: E2E tests for BLS bindings and KES agent \\n* Sidechains: Implement ECC chip and Rescue hash primitives for ATMS\\n* mithril: Full node verifier\\n\\n## Low level summary\\n### cardano-base\\n* RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); blocked due to issue with windows\' localSnocket. Trying to resolve.\\n* Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors [#317](https://github.com/input-output-hk/cardano-base/pull/317).\\n* Above, blocked by the simplification of typeclasses [#404](https://github.com/input-output-hk/cardano-base/pull/404).\\n* Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings\\n### Mithril\\n* Implementation of Full Node Verifier [#939](https://github.com/input-output-hk/mithril/pull/939)\\n### Sidechains\\n* [ECC chip](https://github.com/input-output-hk/sidechains-zk/tree/master/prover/src/ecc) implemented for JubJub over BLS12-381\\n* [Rescue chip](https://github.com/input-output-hk/sidechains-zk/tree/master/prover/src/rescue) implemented for hashing.\\n* Currently working on Schnorr signature (which uses the above constraints)"},{"id":"2023-06-09-developer-experience","metadata":{"permalink":"/cardano-updates/2023-06-09-developer-experience","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-developer-experience.md","source":"@site/blog/2023-06-09-developer-experience.md","title":"Developer Experience Update","description":"High level summary","date":"2023-06-09T00:00:00.000Z","formattedDate":"June 9, 2023","tags":[{"label":"devx","permalink":"/cardano-updates/tags/devx"}],"readingTime":2.035,"hasTruncateMarker":false,"authors":[{"name":"Moritz Angermann","title":"Head of Developer Experience","url":"https://github.com/angerman","imageURL":"https://github.com/angerman.png","key":"angerman"}],"frontMatter":{"title":"Developer Experience Update","slug":"2023-06-09-developer-experience","authors":"angerman","tags":["devx"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-06-09-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-09-hydra"}},"content":"## High level summary\\n\\nThe Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements.\\n\\n## Lower level summary\\n\\n### build support & maintainance\\n\\nOur DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure `LoadDLL` errors to `blst` integration across Nix and Github CI. We\'ve also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like [cardano-base](https://github.com/input-output-hk/cardano-base) experiencing significant reductions in CI complexity.\\n\\n### compiler upgrades\\nAfter the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we\'re prioritizing compaining even stronger for better backwards compatibility.\\n\\n### CHaP (cardano-haskell-packages)\\nWe relocated the underlying tooling, ([foliage](https://github.com/input-output-hk/foliage)), for [CHaP](https://github.com/input-output-hk/cardano-haskell-packages) into the IOG organization. Furthermore, we have introduced [improved tooling to quickly add constraints to packages](https://github.com/input-output-hk/cardano-haskell-packages/pull/260), [better error reporting for add-revision](https://github.com/input-output-hk/cardano-haskell-packages/issues/285) and [better hackage url compatibility](https://github.com/input-output-hk/foliage/pull/63) to facilitate easer usage of CHaP.\\n\\n### GitHub Actions\\nOur repository, [input-output-hk/actions](https://github.com/input-output-hk/actions), now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the `base` and `haskell` install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking `cabal`.\\n\\n\\n### iohk-nix\\nThe [iohk-nix](https://github.com/input-output-hk/iohk-nix) repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, `sodium`, `blst`, and `secp256k1`, are also fixed to certain revisions within the `iohk-nix` repository.\\n\\n### haskell.nix\\n[Haskell.nix](https://github.com/input-output-hk/haskell.nix) has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to `gmp`.\\n\\n\\n### devx\\n\\nThe relatively new [devx](https://github.com/input-output-hk/devx) repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The `devx` repository\'s readme has been updated to reflect its purpose and usage guidelines.\\n\\n### upstream tooling\\n\\nOur team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix."},{"id":"2023-06-09-hydra","metadata":{"permalink":"/cardano-updates/2023-06-09-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-hydra.md","source":"@site/blog/2023-06-09-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-06-09T00:00:00.000Z","formattedDate":"June 9, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.18,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-06-09-hydra","authors":"ffakenz","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Developer Experience Update","permalink":"/cardano-updates/2023-06-09-developer-experience"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-06-08-db-sync"}},"content":"## High-level summary\\n\\nThis week, the Hydra team worked on multiple fronts. They finished the\\ninvestigation about the broken head on mainnet and re-opened their persistent\\nhead instance. The team also fixed the monthly report publication on their\\nwebsite and started sketching ideas and further improvements. Also, they are on\\nthe last mile to deliver a new feature which will allow parties to commit funds\\nfrom extern wallets. Finally the team started to work on optimizing the\\nperformance on their benchmarks.\\n\\n## What did the team achieve this week\\n\\n- Finished investigation on broken head on mainnet [#897](https://github.com/input-output-hk/hydra/issues/897) and re-opened it.\\n- Added support for externally committing regular utxo [#887](https://github.com/input-output-hk/hydra/pull/887)\\n- Fix monthly report publication on docs website and published the [monthly report](https://hydra.family/head-protocol/monthly/2023-05). Odd problems when publishing monthly report:\\n + Make us think about if we should change something about the website [#908](https://github.com/input-output-hk/hydra/issues/908)\\n + Open issue to docusaurus [#9036](https://github.com/facebook/docusaurus/issues/9036)\\n- Fixed a bug in the benchmark process [#910](https://github.com/input-output-hk/hydra/pull/910)\\n- Explored performance of the `hydra-node`{.verbatim} and identified a\\n bottleneck.\\n- Timed transaction feature is being used by the auction project \ud83c\udf89 \\n\\n## What are the goals of next week\\n\\n- Complete performance analysis and start/plan improvements and provide\\n regular benchmarks for Hydra [#186](https://github.com/input-output-hk/hydra/issues/186)\\n- Add hydra as tool to developer platform [#872](https://github.com/input-output-hk/hydra/issues/872).\\n- Authenticate network messages [#727](https://github.com/input-output-hk/hydra/issues/727).\\n- Complete journey for external commits using multiple script UTxOs [#903](https://github.com/input-output-hk/hydra/pull/903)\\n- Start implementing _Option B_ for external commits [#215](https://github.com/input-output-hk/hydra/issues/215)."},{"id":"2023-06-08-db-sync","metadata":{"permalink":"/cardano-updates/2023-06-08-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-db-sync.md","source":"@site/blog/2023-06-08-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-06-08T00:00:00.000Z","formattedDate":"June 8, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.745,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-06-08-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-09-hydra"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-06-08-goedel"}},"content":"## High level summary\\nWe\'ve made progress in all high level objectives\\n- CIP-1694 integration design\\n- UTxO-HD integration proof of concept\\n- schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2\\n- A new hire will help us with devx issues.\\n\\n## Lower level summary\\n- We have an initial design for the Conway integration in db-sync\\n- The initial UTxO-HD integration resulted in a requested feuture that\\nthe consensus team is working on\\n[#88](https://github.com/input-output-hk/ouroboros-consensus/issues/88).\\n- Added two optional migrations that speed up querying UTxO\\n[#1416](https://github.com/input-output-hk/cardano-db-sync/pull/1416)\\n- Work on improving the above feauture by adding tests and fixing tech debt\\n[#1429](https://github.com/input-output-hk/cardano-db-sync/pull/1429)\\n[#1419](https://github.com/input-output-hk/cardano-db-sync/pull/1419)\\n- Fixed issue with ada_pots being wrong\\nhttps://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/1ad4521a5601e8e98dc06bba2826d6b2f9b4fcf4\\n- Added a process which fixes in place scripts with wrong CBOR serialisation.\\nhttps://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/8792f72e2485b320de26c02dacc4d504d377ba17\\n- Prepared a tag [`13.1.1.2`](https://github.com/input-output-hk/cardano-db-sync/releases)\\nwhich is tested and ready to release. It contains many of the above."},{"id":"2023-06-08-goedel","metadata":{"permalink":"/cardano-updates/2023-06-08-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-goedel.md","source":"@site/blog/2023-06-08-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-06-08T00:00:00.000Z","formattedDate":"June 8, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.605,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-06-08-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-06-08-db-sync"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-06-08-sre"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has been working on giving and preparing public\\ntalks, also on preparing final versions of their ICE 2023 papers, and\\non analysing chain selection.\\n\\nThis sprint the team has been working on final revisions for the\\npre-proceedings versions of two ICE 2023 papers.\\n\\n## Details\\n\\n* Lambda Days keynote by Kevin Hammond:\\n https://www.lambdadays.org/lambdadays2023\\n\\n* Codebeam keynote by Peter Van Roy: https://www.youtube.com/watch?v=h8sE3Ai8Dsk; https://www.youtube.com/watch?v=h8sE3Ai8Dsk\\n\\n* Preparing talks and final versions for two ICE 2023 contributions:\\n https://www.discotec.org/2023/ice\\n\\n* Analysing chain selection.\\n\\n* The team is hiring a performance engineering intern - https://apply.workable.com/io-global/j/BFEC5B0AFF/"},{"id":"2023-06-08-sre","metadata":{"permalink":"/cardano-updates/2023-06-08-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-sre.md","source":"@site/blog/2023-06-08-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-06-08T00:00:00.000Z","formattedDate":"June 8, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":1.795,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-06-08-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-06-08-goedel"},"nextItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2023-06-08-system-test"}},"content":"## High level summary\\n\\nThe SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer.\\n\\n## Lower level summary\\n\\n### Bitte\\n\\n- Equinix bare metal capability was added to bitte: [bitte-pull-194](https://github.com/input-output-hk/bitte/pull/194)\\n- Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: [bitte-pull-201](https://github.com/input-output-hk/bitte/pull/201)\\n\\n### Bitte-cells\\n\\n- Improvements made for patroni cluster recovery of large databases: [bitte-cells-branch](https://github.com/input-output-hk/bitte-cells/compare/main...patroni-flex)\\n\\n### Cardano-graphql\\n\\n- Update cardano-graphql and nixos service: [cardano-graphql-pull-815](https://github.com/input-output-hk/cardano-graphql/pull/815)\\n\\n### Cardano-node\\n\\n- Update cardano-node to use the updated iohk-nix environments: [cardano-node-pull-5241](https://github.com/input-output-hk/cardano-node/pull/5241)\\n\\n### Cardano-ops\\n\\n- Update cardano-graphql, adds monitoring improvements and misc bug fixes: [cardano-ops-pull-411](https://github.com/input-output-hk/cardano-ops/pull/411)\\n- Work in progress on mixed legacy and p2p topology clusters in cardano-ops: [cardano-ops-branch](https://github.com/input-output-hk/cardano-ops/compare/master...ops-local)\\n\\n### Cardano-world\\n\\n- Add a declarative cardano-faucet dashboard: [cardano-world-commit](https://github.com/input-output-hk/cardano-world/commit/e7d40d34aff52bbeb309f87939bd0d40f585e60a)\\n- Remove a requirement for root user in Nomad docker images: [cardano-world-pull-68](https://github.com/input-output-hk/cardano-world/pull/68)\\n- Enable explorer in cardano-world for high IOPS metal access: [cardano-world-pull-69](https://github.com/input-output-hk/cardano-world/pull/69)\\n- Migrate explorer cluster to cardano-world: [cardano-world-pull-75](https://github.com/input-output-hk/cardano-world/pull/75)\\n- Migrate testnet metadata server to cardano-world, cleanup envs: [cardano-world-pull-77](https://github.com/input-output-hk/cardano-world/pull/77)\\n- Add a faucet restore delegation script to cardano-world for non-functioning delegated pools: [cardano-world-pull-79](https://github.com/input-output-hk/cardano-world/pull/79)\\n- Integrate node 8.x into cardano-world: [cardano-world-pull-84](https://github.com/input-output-hk/cardano-world/pull/84)\\n- Update cardano-world to use iohk-nix for node environments: [cardano-world-pull-87](https://github.com/input-output-hk/cardano-world/pull/87)\\n- Create a stakepool analysis query for cluster pool performance overview: [cardano-world-commit](https://github.com/input-output-hk/cardano-world/commit/64fe3b9d4067c24eef028ac1c561d6f9a7d5a9a8)\\n- Added an iptables fixup script for broken bridged networking nomad jobs: [cardano-world-commit](https://github.com/input-output-hk/cardano-world/commit/02550206e4e34d121135794b6e54084635e55a50)\\n- Improve cardano-world job automation with additional parameterization: [cardano-world-pr-92](https://github.com/input-output-hk/cardano-world/pull/92)\\n- Update preview network experimental config defaults: [cardano-world-pr-93](https://github.com/input-output-hk/cardano-world/pull/93)\\n\\n### Ci-ops\\n\\n- Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: [ci-ops-pull-108](https://github.com/input-output-hk/ci-ops/pull/108)\\n\\n### Ci-world\\n\\n- Resolve ci-world linux buildkite agent cleanup bug: [ci-world-commit](https://github.com/input-output-hk/ci-world/commit/3d053b202a6e40fab23db49801de7d6e580fab1f)\\n- Integrate new darwin builders into ci-world: [ci-world-pull-22](https://github.com/input-output-hk/ci-world/pull/22)\\n- Migrate patroni HA db to it\'s own namespace in ci-world: [ci-world-pull-24](https://github.com/input-output-hk/ci-world/pull/24)\\n\\n### Cicero\\n\\n- Implement a cicero webhook backoff with exponential decay plus jitter: [cicero-pull-79](https://github.com/input-output-hk/cicero/pull/79)\\n\\n### Iohk-nix\\n\\n- Update iohk-nix to be source of truth for node environments: [iohk-nix-pull-534](https://github.com/input-output-hk/iohk-nix/pull/534)\\n- Update preview network experimental config defaults: [iohk-nix-pull-544](https://github.com/input-output-hk/iohk-nix/pull/544)\\n\\n### Openziti\\n\\n- Add darwin intel and arm support to ziti-edge-tunnel nix modules: [openziti-bins-pull-1](https://github.com/johnalotoski/openziti-bins/pull/1)"},{"id":"2023-06-08-system-test","metadata":{"permalink":"/cardano-updates/2023-06-08-system-test","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-system-test.md","source":"@site/blog/2023-06-08-system-test.md","title":"System Test Team Update","description":"High level summary","date":"2023-06-08T00:00:00.000Z","formattedDate":"June 8, 2023","tags":[{"label":"system-test","permalink":"/cardano-updates/tags/system-test"}],"readingTime":1.005,"hasTruncateMarker":false,"authors":[{"name":"Martin Kourim","title":"System Test Engineer","url":"https://github.com/mkoura","imageURL":"https://github.com/mkoura.png","key":"mkoura"}],"frontMatter":{"title":"System Test Team Update","slug":"2023-06-08-system-test","authors":"mkoura","tags":["system-test"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-06-08-sre"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-06-07-node-cli-api"}},"content":"## High level summary\\nSince the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the _1.35.7_ and _8.0.0_ releases.\\n\\n## Workstreams\\n\\n[Full list of closed PRs](https://github.com/input-output-hk/cardano-node-tests/pulls?page=1&q=is%3Apr+is%3Aclosed+updated%3A2023-03-26..2023-06-08)\\n\\n### Framework improvements:\\n- Make cardano-submit-api REST API service available and run corresponding regression tests by default\\n- Update cabal build testing for 8.0.0\\n- Add support for testing governance SPO poll\\n- Use Poetry for Python dependency management\\n- Check status of known GH issues during tests runtime and finish the test accordingly\\n- Generate topology files with both IP addresses and DNS names\\n- Log issues like failure to start a cluster instance and report errors during tests runtime\\n\\n### Testing improvements\\n- Add rollback testing:\\n 1. global consensus is reached after rollback, in situation where less than `securityParam` blocks were produced since cluster split\\n 1. global consensus is not reached when more than `securityParam` blocks were produced, and the result is permanent fork\\n- Add tests to governance SPO poll commands\\n\\n### Node:\\n- tested the [1.35.7](https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_7.html) release\\n- tested the [8.0.0](https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_8_0_0.html) release\\n\\n### DB-Sync:\\n- improvements in db-sync sync tests\\n- improvements in db-sync functional tests"},{"id":"2023-06-07-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-06-07-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-07-node-cli-api.md","source":"@site/blog/2023-06-07-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-06-07T00:00:00.000Z","formattedDate":"June 7, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.37,"hasTruncateMarker":false,"authors":[{"name":"Carlos LopezDeLara","title":"Node Product Owner","url":"https://github.com/CarlosLopezDeLara","imageURL":"https://github.com/CarlosLopezDeLara.png","key":"carlos"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-06-07-node-cli-api","tags":["cli-api"],"authors":"carlos","hide_table_of_contents":false},"prevItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2023-06-08-system-test"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-02-hydra"}},"content":"# 2023-06-07 - 2023-06-20\\n\\n## High level summary\\n\\n* Completed cardano-cli migration to input-output-hk/cardano-cli\\n* cardano-cli ping now uses cardano-ping-0.2.0.5\\n* New queries on API:\\n * `queryCurrentEpochState`\\n * `queryDebugLedgerState`\\n * `queryGenesisParameters`\\n * `queryPoolDistribution`\\n * `queryPoolState`\\n * `queryProtocolParameters`\\n * `queryProtocolParametersUpdate`\\n * `queryProtocolState`\\n * `queryStakeAddresses`\\n * `queryStakeDistribution`\\n * `queryStakePoolParameters`\\n * `queryStakeSnapshot`\\n* Deprecate:\\n * `queryPparams`\\n* Export query API as functions\\n * `genFeatureValueInEra`\\n * `featureInShelleyBasedEra`\\n * `isFeatureValue`\\n * `valueOrDefault`\\n * `asFeatureValue`\\n * `asFeatureValueInShelleyBasedEra`\\n * `queryEpoch`\\n * `requireShelleyBasedEra`\\n* Restructure cardano-testnet (WIP)\\n____\\n\\n### cardano-cli\\n\\n- [update network dependency and versions](https://github.com/input-output-hk/cardano-node/pull/5328)\\n- [Updated cardano-cli to use `cardano-ping-0.2.0.5`.](https://github.com/input-output-hk/cardano-node/pull/5326)\\n- [Use `cardano-cli` from CHaP](https://github.com/input-output-hk/cardano-node/pull/5316)\\n- [Add `--conway-era` flag](https://github.com/input-output-hk/cardano-node/pull/5315)\\n- [Updated cardano-cli ping command](https://github.com/input-output-hk/cardano-node/pull/5313)\\n- [Add `--conway-era` flag](https://github.com/input-output-hk/cardano-node/pull/5311)\\n\\n- [Use cardano-ping-0.2.0.5](https://github.com/input-output-hk/cardano-cli/pull/30)\\n- [Deprecate `--protocol-params-file` option of the `transaction build` command more thoroughly](https://github.com/input-output-hk/cardano-cli/pull/28)\\n- [New `Cardano.Api.Query.Expr` module](https://github.com/input-output-hk/cardano-cli/pull/25)\\n- [Use simplified `queryStateForBalancedTx`](https://github.com/input-output-hk/cardano-cli/pull/24)\\n- [Add `--conway-era` flag](https://github.com/input-output-hk/cardano-cli/pull/20)\\n\\n\\n### cardano-api\\n\\n- [New version `cardano-api-8.5.2.0`](https://github.com/input-output-hk/cardano-api/pull/59)\\n- [New `requireShelleyBasedEra` function](https://github.com/input-output-hk/cardano-api/pull/58)\\n- [New version cardano-api-8.5.1.0](https://github.com/input-output-hk/cardano-api/pull/57)\\n- [New `queryEpoch` function](https://github.com/input-output-hk/cardano-api/pull/56)\\n- [New version 8.5.0.0](https://github.com/input-output-hk/cardano-api/pull/55)\\n- [Error on `hlint` warnings in CI](https://github.com/input-output-hk/cardano-api/pull/54)\\n- [Additional query expression functions](https://github.com/input-output-hk/cardano-api/pull/53)\\n- [New version `cardano-api-8.4.0.0`](https://github.com/input-output-hk/cardano-api/pull/52)\\n- [New version `cardano-api-8.3.0.0`](https://github.com/input-output-hk/cardano-api/pull/49)\\n- [New `Cardano.Api.Query.Expr` module](https://github.com/input-output-hk/cardano-api/pull/48)\\n- [Simplify `queryStateForBalancedTx`](https://github.com/input-output-hk/cardano-api/pull/47)\\n- [Revert to use `testProperty` now that it isn\'t deprecated anymore](https://github.com/input-output-hk/cardano-api/pull/46)\\n\\n### cardano-node\\n\\n- [cardano-node 8.1.1 release](https://github.com/input-output-hk/cardano-node/releases/tag/8.1.1)\\n- [update network dependency and versions](https://github.com/input-output-hk/cardano-node/pull/5328)\\n\\n### cardano-testnet\\n\\n- [Add ability to retry tests with DISABLE_RETRIES=1](https://github.com/input-output-hk/cardano-node/pull/5340)\\n- [Move golden files to proper location](https://github.com/input-output-hk/cardano-node/pull/5339)\\n- [Conway testnet](https://github.com/input-output-hk/cardano-node/pull/5336)\\n- [Don\'t retry testnet when failed](https://github.com/input-output-hk/cardano-node/pull/5335)\\n- [Remove YAML filepath record from data Conf](https://github.com/input-output-hk/cardano-node/pull/5321)\\n- [Add `--conway-era` flag](https://github.com/input-output-hk/cardano-node/pull/5315)\\n- [Add `--conway-era` flag](https://github.com/input-output-hk/cardano-node/pull/5311)\\n- [Remove duplicate --testnet-magic flag](https://github.com/input-output-hk/cardano-node/pull/5309)\\n- [Restructure cardano testnet ](https://github.com/input-output-hk/cardano-node/pull/5307)\\n\\n### docs\\n\\n### CI & project maintenance\\n\\n- [Fix Windows CI issues](https://github.com/input-output-hk/cardano-cli/pull/18)"},{"id":"2023-06-02-hydra","metadata":{"permalink":"/cardano-updates/2023-06-02-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-02-hydra.md","source":"@site/blog/2023-06-02-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-06-02T00:00:00.000Z","formattedDate":"June 2, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.215,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-06-02-hydra","authors":"ffakenz","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-06-07-node-cli-api"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-06-01-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team has put their effort on finding solutions on many\\ndifferent problems, such as our broken head on mainnet\\n[#897](https://github.com/input-output-hk/hydra/issues/897), our fragile monthly\\nreport publications on the website and implementing “Option A” for\\nexternal commits [#215](https://github.com/input-output-hk/hydra/issues/215).\\nAlthough most of these items are still open, huge progress has been made. To\\naccelerate the investigation, they improved their logging to give more precise\\nerrors when a transition requirement fails, and to reduce duplication on effets\\nlogged content. Last but not least, the team is exploring formal methods and\\nattended a workshop on formalizing cryptographic protocols in Agda.\\n\\n\\n## What did the team achieve this week\\n\\n- Continued investigating broken head and opened an issue to keep track [#897](https://github.com/input-output-hk/hydra/issues/897).\\n \\n As part of this issue, improvements were made to the node logs:\\n\\n + Give a precise error when a transition requirement fails [#895](https://github.com/input-output-hk/hydra/pull/895).\\n\\n + Reduce duplication for effects logged content by using sequential eventId and effectId pair [#896](https://github.com/input-output-hk/hydra/pull/896).\\n\\n- Fixed references in the hydra specification [#893](https://github.com/input-output-hk/hydra/pull/893).\\n\\n- Attended a workshop on formal methods and crypto in Agda.\\n\\n## What are the goals of next week\\n\\n- Investigate and re-open our team-internal head on mainnet.\\n- Improve and provide regular benchmarks for Hydra [#186](https://github.com/input-output-hk/hydra/issues/186).\\n- Complete journey for external commits implementing “Option A” and start implementing “Option B” [#215](https://github.com/input-output-hk/hydra/issues/215).\\n- Authenticate network messages [#727](https://github.com/input-output-hk/hydra/issues/727).\\n- Add hydra as tool to developr platform [#872](https://github.com/input-output-hk/hydra/issues/872).\\n- Fix monthly report publication on docs website."},{"id":"2023-06-01-mithril","metadata":{"permalink":"/cardano-updates/2023-06-01-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-01-mithril.md","source":"@site/blog/2023-06-01-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-06-01T00:00:00.000Z","formattedDate":"June 1, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.415,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-06-01-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-06-02-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-05-31-consensus"}},"content":"## High level overview\\nThe Mithril team released a new [`2321.1`](https://github.com/input-output-hk/mithril/releases/tag/2321.1) distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots.\\n\\nFinally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks.\\n\\n## Low level overview\\n- Released the new distribution [`2321.1`](https://github.com/input-output-hk/mithril/releases/tag/2321.1)\\n- Worked on the epic that designs and implements generic signing/verification of entity services [#780](https://github.com/input-output-hk/mithril/issues/780):\\n - Completed the issue `Enhance MessageAdapter for Artifact in aggregator REST API` [#925](https://github.com/input-output-hk/mithril/issues/925)\\n - Completed the issue `Create the sub-command for \'Cardano Immutable Files Full\' in client` [#895](https://github.com/input-output-hk/mithril/issues/895)\\n - Completed the issue `Enhance state machines Aggregator/Signer` [#933](https://github.com/input-output-hk/mithril/issues/933)\\n - Completed the issue `Adapt the aggregator REST API to list certificates` [#892](https://github.com/input-output-hk/mithril/issues/892)\\n - Worked on the issue `Adapt end to end tests to handle new types of data` [#899](https://github.com/input-output-hk/mithril/issues/899)\\n - Worked on the issue `Update client documentation` [#897](https://github.com/input-output-hk/mithril/issues/897)\\n - Worked on the issue `Update architecture documentations for new types of data` [#898](https://github.com/input-output-hk/mithril/issues/898)\\n- Worked on the epic that prepares the Mithril infrastructure for `mainnet` [#767](https://github.com/input-output-hk/mithril/issues/767):\\n - Worked on the issue `Enhance terraform infrastructure` [#930](https://github.com/input-output-hk/mithril/issues/930)\\n- Worked on the epic that implements the computation of the stake distribution for `mainnet` [#880](https://github.com/input-output-hk/mithril/issues/880):\\n - Completed the issue `Upgrade Cardano node to \'8.0.0\'` [#920](https://github.com/input-output-hk/mithril/issues/920)\\n- Completed the issue `Add export path in Client CLI` [#512](https://github.com/input-output-hk/mithril/issues/512)"},{"id":"2023-05-31-consensus","metadata":{"permalink":"/cardano-updates/2023-05-31-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-31-consensus.md","source":"@site/blog/2023-05-31-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-05-31T00:00:00.000Z","formattedDate":"May 31, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.825,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-05-31-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-06-01-mithril"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-05-31-performance-and-tracing"}},"content":"## High level summary\\n\\nDuring the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network\'s ledger-peer selection (see [this issue](https://github.com/input-output-hk/ouroboros-consensus/issues/101)). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain.\\n\\nOn the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano.\\n\\n## UTxO-HD\\n\\n- We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking `SOP` classes like `HPure` and `HAp` . In short, we implement generalised versions of important classes like `Applicative` and `Traversable`.\\n\\n## Support\\n\\n- `fs-sim-0.1.0.2` and `fs-api-0.1.0.2` were released, which makes them now compatible with GHC up to `9.6`.\\n- `ouroboros-consensus-0.7.0.0` was released for `cardano-node` `8.1`, including query serialization fixes for backwards compatibility."},{"id":"2023-05-31-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-05-31-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-31-performance-and-tracing.md","source":"@site/blog/2023-05-31-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-05-31T00:00:00.000Z","formattedDate":"May 31, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.055,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-05-31-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-05-31-consensus"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-05-26-goedel"}},"content":"## High level summary\\n\\n* Benchmarking: We\'ve performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster.\\n* New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism.\\n* Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.\\n\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nThe first set of runs with GHC9.2 as a build platform are in. We\'ve discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build\\nconfiguration: As it stands, the `ghc-bignum` package is using the Haskell `native-backend` as a default. We strive\\nto benchmark a build with the `gmp-backend` next. \\n\\nA variant of our `forge-stress` local benchmark has been set up to serve as an early indicator for the resource usage profile\\nwe\'d expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way\\nshorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great\\nsupport when evaluating different compiler versions or RTS flags incrementally.\\n\\n### Tracing\\n\\nThe hub of the new tracing system `cardano-tracer` is designed with a fixed output behaviour, which is limited to various\\nlogging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to \\ndirectly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all.\\n\\n\\n### Nomad backend\\nWe\'re currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with\\njob definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing\\nbenchmarking run required us to fine-tune communications with the nomad server. \\n\\nRelated to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible\\nand offers more detailed insight than the previous iteration in `cardano-ops`. The backend will enable you to formulate\\nvery specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met."},{"id":"2023-05-26-goedel","metadata":{"permalink":"/cardano-updates/2023-05-26-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-goedel.md","source":"@site/blog/2023-05-26-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-05-26T00:00:00.000Z","formattedDate":"May 26, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.39,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-05-26-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-05-31-performance-and-tracing"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-05-26-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has been working on final revisions for the\\npre-proceedings versions of two ICE 2023 papers.\\n\\n## Details\\n\\n* Porting Ouroboros Praos formalisation to new application layer.\\n\\n* Preparing pre-proceedings version of two ICE 2023 papers.\\n\\n* The team is hiring a performance engineering intern - https://apply.workable.com/io-global/j/BFEC5B0AFF/"},{"id":"2023-05-26-hydra","metadata":{"permalink":"/cardano-updates/2023-05-26-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-hydra.md","source":"@site/blog/2023-05-26-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-05-26T00:00:00.000Z","formattedDate":"May 26, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.11,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-05-26-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-05-26-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-05-26-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team accomplished several important tasks. They held their\\nmonthly review meeting and drafted the report for May. They made progress on\\nimplementing the first end-to-end journey for external commits using \\"Option A\\"\\nfor normal UTxOs, while still considering \\"Option B\\". The team also integrated a\\nSpanish translation contributed by the community, created micro-benchmarks for\\ntransaction validation and deserialization, and made improvements to\\nhydra-node\'s version reporting. Last but not least, they implemented the ability\\nto commit multiple UTxOs to a head at once.\\n\\n## What did the team achieve this week\\n\\n- Held the monthly review meeting ([recording](https://drive.google.com/file/d/1_N6b4RDe579TgLawiJzbE0NLofD3ljE6/view) + [slides](https://docs.google.com/presentation/d/1anUC3Z1idloyR6uwiSHLZtV6-LQvUcByHPMUgCBOVIA)) & drafted the report for May.\\n- Have a first end-to-end journey for external commits implementing “Option A”\\n for normal UTxOs [#887](https://github.com/input-output-hk/hydra/pull/887) (still considering “Option B”).\\n- Integrated the spanish translation [#866](https://github.com/input-output-hk/hydra/pull/866).\\n- Created micro-benchmarks for transaction validation and deserialization [#884](https://github.com/input-output-hk/hydra/pull/884).\\n- Improve hydra-node –version reporting on non-released builds [#849](https://github.com/input-output-hk/hydra/issues/849)\\n- Some minor CI improvements following up last weeks changes.\\n- Allow commit transactions with multiple UTxO [#774](https://github.com/input-output-hk/hydra/pull/774).\\n\\n## What are the goals of next week\\n\\n- Investigate and re-open our team-internal head on mainnet.\\n- Improve and provide regular benchmarks for Hydra [#186](https://github.com/input-output-hk/hydra/issues/186).\\n- Complete external commits with script UTxOs [#215](https://github.com/input-output-hk/hydra/issues/215).\\n- Authenticate network messages [#727](https://github.com/input-output-hk/hydra/issues/727).\\n- Add hydra as tool to developr platform [#872](https://github.com/input-output-hk/hydra/issues/872)."},{"id":"2023-05-26-ledger","metadata":{"permalink":"/cardano-updates/2023-05-26-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-ledger.md","source":"@site/blog/2023-05-26-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-05-26T00:00:00.000Z","formattedDate":"May 26, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.565,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-05-26-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-05-26-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-05-26-network"}},"content":"## High level summary\\n\\nThe ledger team made progress on the conway ledger era. In particular, the design and implementation\\nof the new certificates is near complete, we refactored some of our data structures\\nto be able to support DReps, we cleaned up the serialization format, and renamed things to make\\nclearer the differences with Shelley.\\n\\nThe team also completed integration work for the next node release, namely 8.1.0.\\nAnd, as always, we continue to address technical debt.\\n\\n## Low level summary\\n\\n### Conway progress\\n\\n- [pull-3408] - Improve conway delegation certificates\\n- [pull-3428] - Get rid of Constitutional in favor of Genesis and Committee\\n- [pull-3426] - Add DRep to internal data struture (UMap)\\n- [pull-3425] - Improve witness logic needed for conway\\n- [pull-3423] - Rename ShelleyDelegCerts constructors to distinguish them from Conway\\n- [pull-3421] - Rename DCert -> TxCert\\n- [pull-3454] - conway CDDL minor fixes\\n\\n### Improve testing\\n\\n- [pull-3403] - Add Plutus script context golden tests\\n\\n### Integration work\\n\\n- [pull-3410] - Update chaps index\\n- [pull-3416] - Bump cardano-ledger-alonzo-test version\\n- [pull-3414] - Bump cardano-ledger-shelley-test minor version\\n- [pull-3420] - Bump cardano-ledger-shelley-ma-test version\\n- [pull-3441] - Release cardano-ledger-[alonzo|babbage]-1.2.1\\n\\n### Technical debt\\n\\n- [pull-3409] - Unit test - no such thing as a reference datum\\n- [pull-3407] - Fixup release process documentation\\n- [pull-3404] - Create TotalDeposits events during all eras\\n- [pull-3402] - Fix broken references in the Shelley spec\\n- [pull-3424] - Remove no longer used cardano-ledger-shelley-ma package\\n- [pull-3432] - Add an example on how to bump up versions in the changelog \\n- [pull-3440] - Revert back to the group serialization for ProtVer for PParams \\n\\n[pull-3409]: https://github.com/input-output-hk/cardano-ledger/pull/3409\\n[pull-3408]: https://github.com/input-output-hk/cardano-ledger/pull/3408\\n[pull-3407]: https://github.com/input-output-hk/cardano-ledger/pull/3407\\n[pull-3404]: https://github.com/input-output-hk/cardano-ledger/pull/3404\\n[pull-3403]: https://github.com/input-output-hk/cardano-ledger/pull/3403\\n[pull-3402]: https://github.com/input-output-hk/cardano-ledger/pull/3402\\n[pull-3410]: https://github.com/input-output-hk/cardano-ledger/pull/3410\\n[pull-3416]: https://github.com/input-output-hk/cardano-ledger/pull/3416\\n[pull-3414]: https://github.com/input-output-hk/cardano-ledger/pull/3414\\n[pull-3428]: https://github.com/input-output-hk/cardano-ledger/pull/3428\\n[pull-3426]: https://github.com/input-output-hk/cardano-ledger/pull/3426\\n[pull-3425]: https://github.com/input-output-hk/cardano-ledger/pull/3425\\n[pull-3424]: https://github.com/input-output-hk/cardano-ledger/pull/3424\\n[pull-3423]: https://github.com/input-output-hk/cardano-ledger/pull/3423\\n[pull-3421]: https://github.com/input-output-hk/cardano-ledger/pull/3421\\n[pull-3420]: https://github.com/input-output-hk/cardano-ledger/pull/3420\\n[pull-3432]: https://github.com/input-output-hk/cardano-ledger/pull/3432\\n[pull-3454]: https://github.com/input-output-hk/cardano-ledger/pull/3454\\n[pull-3441]: https://github.com/input-output-hk/cardano-ledger/pull/3441\\n[pull-3440]: https://github.com/input-output-hk/cardano-ledger/pull/3440"},{"id":"2023-05-26-network","metadata":{"permalink":"/cardano-updates/2023-05-26-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-network.md","source":"@site/blog/2023-05-26-network.md","title":"Network Team Update","description":"High level summary","date":"2023-05-26T00:00:00.000Z","formattedDate":"May 26, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":0.515,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-05-26-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-05-26-ledger"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-05-24-node-cli-api"}},"content":"## High level summary\\n\\nWe continued working on `eclipse-evasion`. We also analysed and fixed a bug\\nwhen using DNS names in local root peers. We continued working on engineering\\nblog post about P2P. We released a new version of packages for\\n`cardano-node-8.1.0` release.\\n\\nWe improved our CI, removed obsolete scripts add extra validation which checks\\nif `CHANGELOG.md` files were updated.\\n\\nWe also improved release scripts.\\n\\n## Detailed summary\\n\\n* Eclipse evasion: [#4462]\\n* Local root peers bug fix: [#4559]\\n* Release to CHaP: [#4573]\\n* CI improvements: [#4572]\\n* Release script improvements: [#4573]\\n\\n[#4462]: https://github.com/input-output-hk/ouroboros-network/pull/4462\\n[#4558]: https://github.com/input-output-hk/ouroboros-network/pull/4558\\n[#4559]: https://github.com/input-output-hk/ouroboros-network/pull/4559\\n[#4572]: https://github.com/input-output-hk/ouroboros-network/pull/4572\\n[#4573]: https://github.com/input-output-hk/ouroboros-network/pull/4573"},{"id":"2023-05-24-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-05-24-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-24-node-cli-api.md","source":"@site/blog/2023-05-24-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-05-24T00:00:00.000Z","formattedDate":"May 24, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-05-24-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-05-26-network"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-05-19-hydra"}},"content":"# 2023-05-24 - 2023-06-06\\n\\n## High level summary\\n- The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released. \\n- We provided assitance where needed in the release\\n- An integration repository https://github.com/input-output-hk/fusion-flamingo was created to enable my team to more easily work on cardano-cli and cardano-api\\n\\n### docs\\n\\n### CI & project maintenance\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Update `cardano-cli` changelog](https://github.com/input-output-hk/cardano-node/pull/5290) \\n- [Propagate protocol parameters conversion errors](https://github.com/input-output-hk/cardano-node/pull/5197) \\n- [Command line option for parsing UTC time to slot number](https://github.com/input-output-hk/cardano-node/pull/5149) \\n\\n### cardano-api\\n- [Switch to `tasty-discover`](https://github.com/input-output-hk/cardano-api/pull/31) \\n- [Move tests to standard locations](https://github.com/input-output-hk/cardano-api/pull/30) \\n- [Make cardano-api:internal component public](https://github.com/input-output-hk/cardano-api/pull/26) \\n- [update chaps index](https://github.com/input-output-hk/cardano-api/pull/24) \\n- [Make `ErrorSpec` check for all constructors, move golden tests together](https://github.com/input-output-hk/cardano-api/pull/18) \\n- [Expose toAlonzoCostModels](https://github.com/input-output-hk/cardano-api/pull/17) \\n- [Make `ErrorsSpec` use generated types and constructors names](https://github.com/input-output-hk/cardano-api/pull/9) \\n- [Check changelog in tag script](https://github.com/input-output-hk/cardano-api/pull/32) \\n- [Use tag script from `cardano-dev` repository instead](https://github.com/input-output-hk/cardano-api/pull/34) \\n- [Use .x suffix for release branches](https://github.com/input-output-hk/cardano-api/pull/38) \\n\\n### cardano-node\\n- [Use `cryptoInit` instead of `sodiumInit`](https://github.com/input-output-hk/cardano-node/pull/5291) \\n- [Move configuration tests to `cardano-node` tests](https://github.com/input-output-hk/cardano-node/pull/5284) \\n- [update chaps & integration](https://github.com/input-output-hk/cardano-node/pull/5243) \\n- [#5222 Remove `ApplicationName` and `ApplicationVersion` config parameters](https://github.com/input-output-hk/cardano-node/pull/5240) \\n\\n### cardano-testnet"},{"id":"2023-05-19-hydra","metadata":{"permalink":"/cardano-updates/2023-05-19-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-19-hydra.md","source":"@site/blog/2023-05-19-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-05-19T00:00:00.000Z","formattedDate":"May 19, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.045,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-05-19-hydra","authors":"ffakenz","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-05-24-node-cli-api"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-05-17-consensus"}},"content":"## High-level summary\\n\\nThis week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the \\"Coding Standards\\" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.\\n\\n## What did the team achieve this week\\n\\n- Complete validation of timed transactions feature [#196](https://github.com/input-output-hk/hydra/issues/196).\\n- Write “ops” instructions and troubleshooting [#569](https://github.com/input-output-hk/hydra/issues/569) and improve logs.\\n- Remove `--ledger-genesis` argument to hydra-node options [#863](https://github.com/input-output-hk/hydra/pull/863).\\n- Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows [#877](https://github.com/input-output-hk/hydra/pull/877).\\n- Use nix to build test binaries to increase CI speed [#867](https://github.com/input-output-hk/hydra/pull/867).\\n- Updated our [Coding Standards](https://github.com/input-output-hk/hydra/wiki/Coding-Standards).\\n\\n## What are the goals of next week\\n\\n- Monthly report & review meeting.\\n- Have a first end-to-end journey for external commits implementing \\"Option A\\" [#215](https://github.com/input-output-hk/hydra/issues/215).\\n- Integrate spanish translation [#866](https://github.com/input-output-hk/hydra/pull/866).\\n- Improve and provide regular benchmarks for Hydra [#186](https://github.com/input-output-hk/hydra/issues/186).\\n- Allow commit transactions with multiple UTxO [#774](https://github.com/input-output-hk/hydra/pull/774).\\n- Explored stateless observation and refined hydra explorer ticket [#696](https://github.com/input-output-hk/hydra/issues/696)."},{"id":"2023-05-17-consensus","metadata":{"permalink":"/cardano-updates/2023-05-17-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-consensus.md","source":"@site/blog/2023-05-17-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-05-17T00:00:00.000Z","formattedDate":"May 17, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.285,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-05-17-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-05-19-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-05-17-mithril"}},"content":"## High level summary\\n\\nDuring the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the [Genesis][#genesis] section for more details.\\n\\nRegarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our `main` branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain.\\n\\nWe improved our tooling by releasing an [immutable DB server](https://github.com/input-output-hk/ouroboros-consensus/pull/68), which can be used for testing and benchmarking purposes, and a [`db-truncater`](https://github.com/input-output-hk/ouroboros-consensus/pull/70) program, which can be used in disaster recovery and benchmarking scenarios.\\n\\n## Genesis \\n\\nThe consensus team working on Genesis:\\n\\n- Improved the genesis selection rule as a result of our interaction with IO Research.\\n- Studied how the hard-fork combinator handles forecasting at era transitions, and [improved our documentation](https://github.com/input-output-hk/ouroboros-consensus/pull/89).\\n- Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP.\\n- Elaborated concrete proposal for the Genesis State Machine.\\n- Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it\'s similar to the Genesis State Machine).\\n\\nThe team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we\'ve re-introduced the Genesis State Machine."},{"id":"2023-05-17-mithril","metadata":{"permalink":"/cardano-updates/2023-05-17-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-mithril.md","source":"@site/blog/2023-05-17-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-05-17T00:00:00.000Z","formattedDate":"May 17, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.555,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-05-17-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-05-17-consensus"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-05-17-performance-and-tracing"}},"content":"## High level overview\\nThe Mithril team released a new [`2318.0`](https://github.com/input-output-hk/mithril/releases/tag/2318.0) distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types.\\n\\nFinally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node `8.0.0` (along with the backward compatibility for previous `1.35.x` versions).\\n\\n## Low level overview\\n- Worked on the epic that designs and implements generic signing/verification of entity services [#780](https://github.com/input-output-hk/mithril/issues/780):\\n - Completed the handling of multiple types of signed entity in the aggregator runtime [#907](https://github.com/input-output-hk/mithril/issues/907)\\n - Completed the adaptation of the signer runtime to use the signable builder service [#854](https://github.com/input-output-hk/mithril/issues/854)\\n - Completed the adaptation of the aggregator runtime to use the artifact builder service [#869](https://github.com/input-output-hk/mithril/issues/869)\\n - Completed the appending of the next AVK to all protocol messages [#888](https://github.com/input-output-hk/mithril/issues/888)\\n - Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced [#893](https://github.com/input-output-hk/mithril/issues/893)\\n - Completed the adaptation of the explorer to handle new artifact routes of the aggregator [#927](https://github.com/input-output-hk/mithril/issues/927)\\n- Worked on the epic that implements the computation of the stake distribution for `mainnet` [#880](https://github.com/input-output-hk/mithril/issues/880):\\n - Completed the implementation of the new stake distribution computation in the chain observer [#919](https://github.com/input-output-hk/mithril/issues/919)\\n - Worked on upgrading the Cardano node to `8.0.0` [#920](https://github.com/input-output-hk/mithril/issues/920)"},{"id":"2023-05-17-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-05-17-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-performance-and-tracing.md","source":"@site/blog/2023-05-17-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-05-17T00:00:00.000Z","formattedDate":"May 17, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":3.21,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-05-17-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-05-17-mithril"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-05-12-crypto"}},"content":"## High level summary\\n\\n* Benchmarking: We\'re preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes.\\n* New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due.\\n* Analysis pipeline: First steps on implementing incremental analysis have been untertaken.\\n* Open Sourcing: Exhaustive dataflow charts for both our analysis tool `locli` and our `workbanch` have been merged to `master`\\n* Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we\'re porting the definition of our model cluster.\\n* P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland.\\n* Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we\'re busy with the handover.\\n\\n## Low level overview\\n\\n### Benchmarking\\n\\nAs a compiler switch to GHC 9.2.7 for `cardano-node`\'s default build environment is around the corner, we\'re setting up our benchmarking cluster to\\nhandle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This\\nalso involves choosing a reliable baseline as reference point for inter-version comparisons. \\n\\nAdditionally we\'ve been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet,\\nwe strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to\\nbe balanced against resource demand for all our cluster\'s nodes.\\n\\n### Tracing\\n\\nFor our new tracing system, we\'re currently validating the behaviour of the system after optimizations have been applied. Furthermore, some\\nquality-of-life details that have changed required us to revision the system documentation.\\n\\n### Analysis\\n\\nAs a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been\\nnormally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a\\nhuge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken. \\n\\n### Open Sourcing\\n\\nA very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking\\ncopmonents more accessible. As a result, detailed charts for both our LogObject CLI `locli` and our `workbench` have been merged to `master`. \\n\\n### Nomad backend\\nWhile our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we\'ve been adjusting\\nthose profiles of our `workbench` that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality\\nof the nomad cloud backend. \\n\\nAdditionally, we\'re porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster.\\n\\n### Performance & Tracing Meetup\\n\\nWe held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive\\ndays together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future.\\nAlso, it was a great opportunity to finally meet in person.\\n\\n### Offboarding\\n\\nLast not least we regret that our team lead is leaving at the end of May. Currently, he\'s handing over all his obligations, which requires reorganisation\\nof team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!"},{"id":"2023-05-12-crypto","metadata":{"permalink":"/cardano-updates/2023-05-12-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-crypto.md","source":"@site/blog/2023-05-12-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-05-12T00:00:00.000Z","formattedDate":"May 12, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.095,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-05-12-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-05-17-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-05-12-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* cardano-base: Include final tests for BLS signature. Further adaptations for KES agent. \\n* Sidechains: Implement BLS and JubJub using upstream\'s macros to merge these curves in halo2curves.\\n## Low level summary\\n### cardano-base\\n* RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); this is needed for KES Agent. Review ongoing.\\n* Facilitate BLS test vectors in Haskell test suite (https://github.com/input-output-hk/cardano-base/pull/408)\\n* Add the SignKeyWithKES type to cardano-base (https://github.com/input-output-hk/cardano-base/pull/389)\\n* Restructuring and simplifying the MLocking code in cardano-base (https://github.com/input-output-hk/cardano-base/pull/404, https://github.com/input-output-hk/cardano-base/pull/405), getting rid of the purpose-built MonadMLock etc. typeclasses in the process\\n* Merging the DSIGN and DSIGNM APIs such that the same phantom type can be used to select both the pure and mlocked versions of the same DSIGN algorithm (https://github.com/input-output-hk/cardano-base/pull/411)\\n* Simplifying the KES API into a single KESAlgorithm typeclass, merging the KESSignAlgorithm class into it (this is possible due to the simplifications from #404). (Same PR as above: https://github.com/input-output-hk/cardano-base/pull/411).\\n* Update CIP-0381 with new plutus built-in functions, [#506](https://github.com/cardano-foundation/CIPs/pull/506). In particular hash_to_curve now takes as input a secon input for the Domain Separation Tag (DST), and we limit to have a maximu size of 255 bytes. \\n### Sidechains\\n* Opened PR in halo2curves to include BLS12-381 and JubJub, [#38](https://github.com/privacy-scaling-explorations/halo2curves/pull/38)\\n* Addition constraint over JubJub merged [#10](https://github.com/input-output-hk/sidechains-zk/pull/10)"},{"id":"2023-05-12-goedel","metadata":{"permalink":"/cardano-updates/2023-05-12-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-goedel.md","source":"@site/blog/2023-05-12-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-05-12T00:00:00.000Z","formattedDate":"May 12, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.445,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-05-12-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-05-12-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-05-12-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team had two paper accepted for ICE 2023\\n(https://www.discotec.org/2023/ice). The event will be held in Lisbon\\non 19th June 2023. The papers will be published in EPTCS.\\n\\n## Details\\n\\n* Application layer for Praos formalisation in review.\\n\\n* Participating in interactive peer review process for ICE 2023.\\n\\n* The team is hiring a performance engineering intern - https://apply.workable.com/io-global/j/BFEC5B0AFF/"},{"id":"2023-05-12-hydra","metadata":{"permalink":"/cardano-updates/2023-05-12-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-hydra.md","source":"@site/blog/2023-05-12-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-05-12T00:00:00.000Z","formattedDate":"May 12, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.145,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-05-12-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-05-12-goedel"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-05-12-network"}},"content":"## High-level summary\\n\\nThis week, the Hydra team achieved a number of milestones, including the release\\nof the first mainnet compatible version. Besides this they also addressed\\ninconsistencies in rollback handling, added an architecture page to the website,\\nreducing the size of logs using event IDs. They also had productive discussions\\nwith researchers on plans for incremental commits/decommits and had a whiteboard\\nsession on DeFi and lending protocols. The goals for next week include\\ncompleting the validation of the timed transactions feature, exploring stateless\\nobservation, refining the Hydra explorer ticket, writing ops instructions and\\ntroubleshooting, and implementing the first end-to-end journey for external\\ncommits.\\n\\n## What did the team achieve this week\\n\\n- Released first mainnnet compatible version [0.10.0](https://github.com/input-output-hk/hydra/releases/tag/0.10.0)\\n- Addressed inconsist handling of rollbacks [#784](https://github.com/input-output-hk/hydra/issues/784)\\n- Added [architecture page](https://hydra.family/head-protocol/core-concepts/architecture/) and fixed haddock links on our website [#838](https://github.com/input-output-hk/hydra/pull/838)\\n- Opened a new hydra head on mainnet\\n- Talked with researchers on initial plan for incremental commits/decommits\\n- Had a Whiteboard session on DeFi and lending protocols\\n- Reduced size of logs using event ids [#859](https://github.com/input-output-hk/hydra/pull/859)\\n- Published the [monthly report for April](https://hydra.family/head-protocol/monthly/2023-04)\\n\\n## What are the goals of next week\\n\\n- Complete validation of timed transactions feature [#196](https://github.com/input-output-hk/hydra/issues/196)\\n- Explored stateless observation and refined hydra explorer ticket [#696](https://github.com/input-output-hk/hydra/issues/696)\\n- Write “ops” instructions and troubleshooting [#569](https://github.com/input-output-hk/hydra/issues/569) and improve logs\\n- Have a first end-to-end journey for external commits implemented [#215](https://github.com/input-output-hk/hydra/issues/215)"},{"id":"2023-05-12-network","metadata":{"permalink":"/cardano-updates/2023-05-12-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-network.md","source":"@site/blog/2023-05-12-network.md","title":"Network Team Update","description":"High level summary","date":"2023-05-12T00:00:00.000Z","formattedDate":"May 12, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.79,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-05-12-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-05-12-hydra"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-05-05-ledger"}},"content":"## High level summary\\n\\nWe started working on a new way to switch between root & ledger peers (see\\nbelow). We continued to work on `eclipse-evasion`. We merged changes to\\nHandshake contributed by Galois Inc. We made improvements to our tests (fixed\\na flaky test, added cddl specs for `NodeToNodeVersionData` and\\n`NodeToClientVersionData`). We improved our CI and automated the process of\\nreleasing new package version to `CHaP`.\\n\\n## Detailed summary\\n\\nWe continued to work on testing `eclipse-evasion`.\\n\\nWe came up with an idea to limit how full node wallets relay on root peers\\n(currently operated by IOG, in future also CF and Emurgo). We designed\\na switch to use ledger peers if the node tip is close enough to the current\\ntime. For more details see [#4530].\\n\\nWe merged changes to the handshake mini-protocol which allow one to query\\nserver\'s `node-to-node` / `node-to-client` parameters. We are grateful to\\nGalois Inc. for implementing it, [#4256] and [#4538]. We published new version\\nof packages to CHaP [chap-#253].\\n\\nWe added `DiffusionError` wrapper. Thanks to it, `ouroboros-consensus` will\\nnot duplicate diffusion errors messages in the log, [#4537].\\n\\nWe fixed an issue which caused one of our tests to be flaky, [#4515].\\n\\nWe added cddl tests for `NodeToNodeVersionData` and `NodeToClientVersionData`:\\n[#4540], [#4544] (in review).\\n\\nWe wrote scripts which will help us release packages as well as verify that we\\nreleased all the package necessary to build the newest set of packages,\\n[#4542].\\n\\nWe renamed the consensus startup tracer and make sure it doesn\'t log\\n`ExitSuccess` exceptions, [consensus-#71].\\n\\nWe reviewed PR which adds `RawBearer` API, [#4395].\\n\\nWe made series of improvements to our CI:\\n* [#4539]: we don\'t need to install cryptographic libraries in CI;\\n* [#4545]: Javier Sagredo (consensus) cleaned up CI after `consensus` moved\\n to a new repo;\\n* [#4546]: we switched to use [GitHub merge queues][mq];\\n* [#4549]: we made it possible to trigger building haddocks manually;\\n* [#4553]: we fixed and enhanced caching of building dependencies.\\n\\n[#4256]: https://github.com/input-output-hk/ouroboros-network/issues/4256\\n[#4395]: https://github.com/input-output-hk/ouroboros-network/issues/4395\\n[#4515]: https://github.com/input-output-hk/ouroboros-network/issues/4515\\n[#4530]: https://github.com/input-output-hk/ouroboros-network/issues/4530\\n[#4537]: https://github.com/input-output-hk/ouroboros-network/issues/4537\\n[#4538]: https://github.com/input-output-hk/ouroboros-network/issues/4538\\n[#4539]: https://github.com/input-output-hk/ouroboros-network/issues/4539\\n[#4540]: https://github.com/input-output-hk/ouroboros-network/issues/4540\\n[#4542]: https://github.com/input-output-hk/ouroboros-network/issues/4542\\n[#4544]: https://github.com/input-output-hk/ouroboros-network/issues/4544\\n[#4545]: https://github.com/input-output-hk/ouroboros-network/issues/4545\\n[#4546]: https://github.com/input-output-hk/ouroboros-network/issues/4546\\n[#4549]: https://github.com/input-output-hk/ouroboros-network/issues/4549\\n[#4553]: https://github.com/input-output-hk/ouroboros-network/issues/4553\\n\\n[chap-#253]: https://github.com/input-output-hk/cardano-haskell-packages/pull/253\\n\\n[consensus-#71]: https://github.com/input-output-hk/ouroboros-consensus/pulls/71\\n\\n[mq]: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue"},{"id":"2023-05-05-ledger","metadata":{"permalink":"/cardano-updates/2023-05-05-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-05-ledger.md","source":"@site/blog/2023-05-05-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-05-05T00:00:00.000Z","formattedDate":"May 5, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.235,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-05-05-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-05-12-network"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-05-05-node-cli-api"}},"content":"## High level summary\\n\\nThe ledger team focused mainly on the conway ledger era and node integration.\\nFor conway, we completed a large structural change that now allows\\nfor delegation certificates to be parameterized by era, and introducing\\nnew certificates for the first time since Shelley.\\nWe also continue to build out our contraint based generators that we will\\nuse to property test the conway era.\\nIn particular, we can now generate an entire ledger state and a\\ntransaction which is balanced with respect to the ledger state.\\n\\n## Low level summary\\n\\n## Conway certificates\\n\\nCertificiates are now abstracted as a type family in the ledger codebase.\\nMoreover, there are new certificates in the Conway era to support CIP-1694,\\nand MIR certificates have been removed.\\n\\n* [pull-3387]\\n\\n## Constraint based testing\\n\\nOur plan for property testing in the conway era is to no longer use the trace generators,\\nbut instead generate ledger states and transactions based on constraints.\\nWe hit a milestone this week, namely the ability to generate a balanced transaction in the context\\nof a ledger state, all based on our ever growing constaint language.\\n\\n* [pull-3374]\\n* [pull-3386]\\n\\n## Integration work\\n\\n* [pull-3393] - Performance improvements\\n* [pull-3395] - Conway instances\\n* [pull-3398] - Fix mint translation in the script context\\n\\n## Technical debt\\n\\n* [pull-3389] - Reduce github pages size\\n* [pull-3390] - Reinstate the tickf optimizations\\n\\n[pull-3374]: https://github.com/input-output-hk/cardano-ledger/pull/3374\\n[pull-3398]: https://github.com/input-output-hk/cardano-ledger/pull/3398\\n[pull-3395]: https://github.com/input-output-hk/cardano-ledger/pull/3395\\n[pull-3393]: https://github.com/input-output-hk/cardano-ledger/pull/3393\\n[pull-3390]: https://github.com/input-output-hk/cardano-ledger/pull/3390\\n[pull-3389]: https://github.com/input-output-hk/cardano-ledger/pull/3389\\n[pull-3386]: https://github.com/input-output-hk/cardano-ledger/pull/3386\\n[pull-3387]: https://github.com/input-output-hk/cardano-ledger/pull/3387"},{"id":"2023-05-05-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-05-05-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-05-node-cli-api.md","source":"@site/blog/2023-05-05-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-05-05T00:00:00.000Z","formattedDate":"May 5, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.81,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-05-05-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-05-05-ledger"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-05-04-mithril"}},"content":"# 2023-05-05 - 2023-05-23\\n\\n## High level summary\\n- Golden tests for cardano-cli command help output were added.\\n- Documentation was updated with new libsodium installation instructions.\\n- There were several updates for the cardano-cli:\\n - Deletion of the deprecated shelley command group.\\n - Addition of golden tests for CLI help.\\n - An improvement to avoid bare IO in tests, allowing better error reporting in failed tests.\\n - Generation of UTCTime test values without leap seconds (avoids erroneous test failures)\\n - Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32.\\n- The cardano-api underwent multiple refinements:\\n - Implementing deposit handling when balancing transactions (necessary for Conway)\\n - Cleaning up socket file path code.\\n- Several changes were made to the cardano-testnet:\\n - Adding golden tests for cardano-testnet help.\\n - Removing all hardcoded yaml files in cardano-testnet\\n - Improving cardano-testnet help output.\\n - Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.\\n\\n### docs\\n- [Update libsodium installation instructions](https://github.com/input-output-hk/cardano-node/pull/5181) \\n\\n### CI & project maintenance\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Delete deprecated `shelley` command group](https://github.com/input-output-hk/cardano-node/pull/5264) \\n- [Add golden tests for CLI help](https://github.com/input-output-hk/cardano-node/pull/5206) \\n- [Avoid bare IO in tests](https://github.com/input-output-hk/cardano-node/pull/5201) \\n- [Split `cardano-cli` test files into separate directories](https://github.com/input-output-hk/cardano-node/pull/5200) \\n- [Make UTCTime test generator generate values without leap seconds](https://github.com/input-output-hk/cardano-node/pull/5198) \\n- [Add support with signing transactions with `GenesisDelegateSigningKey_ed25519_bip32`](https://github.com/input-output-hk/cardano-node/pull/5189) \\n- [Rename --signed-tx-file argument to --tx-file argument in verify-poll command](https://github.com/input-output-hk/cardano-node/pull/5184) \\n- [Simplify socket path code](https://github.com/input-output-hk/cardano-node/pull/5120) \\n\\n### cardano-api\\n- [refactor: make renderScriptWitnessIndex output more explicit](https://github.com/input-output-hk/cardano-node/pull/5221) \\n- [Implement deposit handling when balancing transactions](https://github.com/input-output-hk/cardano-node/pull/5218) \\n- [Replace remaining `FilePath` use in `cardano-api`](https://github.com/input-output-hk/cardano-node/pull/5217) \\n- [Cleanup socket file path code](https://github.com/input-output-hk/cardano-node/pull/5215) \\n- [Delete `readEnvSocketPath` function](https://github.com/input-output-hk/cardano-node/pull/5207) \\n- [IO functions for reading. Remove PoolMetadataFile type](https://github.com/input-output-hk/cardano-node/pull/5194) \\n- [Expose config reader](https://github.com/input-output-hk/cardano-node/pull/5191) \\n- [Golden tests for `cardano-api` errors](https://github.com/input-output-hk/cardano-node/pull/5188) \\n- [Fix `toEraInMode` for conway](https://github.com/input-output-hk/cardano-node/pull/5175) \\n- [Use machine readable output for ToJSON ScriptWitnessIndex](https://github.com/input-output-hk/cardano-node/pull/5168) \\n- [Expose LocalTxSubmissionClient data constructor](https://github.com/input-output-hk/cardano-node/pull/5096) \\n- [Use cardano-api from separate repository](https://github.com/input-output-hk/cardano-node/pull/5047) \\n- [[cardano-api] Export fromConsensusPointHF](https://github.com/input-output-hk/cardano-node/pull/4684) \\n\\n### cardano-node\\n- [Provide orphan `ToJSON` instances for `HardForkNodeToClientVersion` and `HardForkNodeToNodeVersion`](https://github.com/input-output-hk/cardano-node/pull/5022) \\n\\n### cardano-testnet\\n- [Add golden test for `cardano-testnet` help](https://github.com/input-output-hk/cardano-node/pull/5254) \\n- [Remove all hardcoded yaml files from cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/5242) \\n- [Fix cardano-testnet help](https://github.com/input-output-hk/cardano-node/pull/5234) \\n- [Parameterize default yaml configuration value in cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/5211) \\n- [Freeze callstack in integration and integrationRetryWorkspace functions](https://github.com/input-output-hk/cardano-node/pull/5165) \\n- [Create defaultYamlValue for cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/5128)"},{"id":"2023-05-04-mithril","metadata":{"permalink":"/cardano-updates/2023-05-04-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-04-mithril.md","source":"@site/blog/2023-05-04-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-05-04T00:00:00.000Z","formattedDate":"May 4, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.56,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-05-04-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-05-05-node-cli-api"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-05-03-consensus"}},"content":"## High level overview\\nThe Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version `1.35.7`.\\n\\nFinally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain.\\n\\n## Low level overview\\n- Worked on the epic that designs and implements generic signing/verification of entity services [#780](https://github.com/input-output-hk/mithril/issues/780):\\n - Completed the implementation of the `Certifier` service in the aggregator [#850](https://github.com/input-output-hk/mithril/issues/850)\\n - Completed the implementation of the signable builder for the `Mithril Stake Distribution` [#851](https://github.com/input-output-hk/mithril/issues/851)\\n - Completed the implementation of the artifact builder for the `Mithril Stake Distribution` [#870](https://github.com/input-output-hk/mithril/issues/870)\\n - Completed the implementation of the signable builder for the `Full Immutables Snapshot` [#852](https://github.com/input-output-hk/mithril/issues/852)\\n - Completed the implementation of the artifact builder for the `Full Immutables Snapshot` [#871](https://github.com/input-output-hk/mithril/issues/871)\\n - Completed the adaptation of the aggregator runtime to use the signable builder service [#853](https://github.com/input-output-hk/mithril/issues/853)\\n - Worked on the adaptation of the signer runtime to use the signable builder service [#854](https://github.com/input-output-hk/mithril/issues/854)\\n - Completed the definition of the entity service interface for verification/restoration [#868](https://github.com/input-output-hk/mithril/issues/868)\\n - Completed the refactoring of the `OpenMessage` type [#878](https://github.com/input-output-hk/mithril/issues/878)\\n- Completed the epic that simplifies the multi-signer in the aggregator [#398](https://github.com/input-output-hk/mithril/issues/398):\\n - Completed the extraction of the single signature registration from the multi-signer [#643](https://github.com/input-output-hk/mithril/issues/643)\\n- Completed the upgrade of the Cardano node to version `1.35.7` [#881](https://github.com/input-output-hk/mithril/issues/881)\\n- Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators [#873](https://github.com/input-output-hk/mithril/issues/873)"},{"id":"2023-05-03-consensus","metadata":{"permalink":"/cardano-updates/2023-05-03-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-03-consensus.md","source":"@site/blog/2023-05-03-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-05-03T00:00:00.000Z","formattedDate":"May 3, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.755,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-05-03-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-05-04-mithril"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-05-03-performance-and-tracing"}},"content":"## High level summary\\n\\nDuring the past two weeks we made some important progress in the Genesis design.\\nIt seems the `BlockFetch` logic need not be modified for Genesis, although this\\nneeds to be confirmed. We started a DoS mitigation handbook and updated our\\nconceptual component diagram to guide the Genesis design. We engaged with the\\nIOG researchers to work on the Limit on Patience attack vector, work in this\\narea is still ongoing. We sketched a design to decouple the CPU load of the node\\nfrom its responsiveness to the socket. Finally, we discussed with Networking our\\napproach to lower the performance impact of the BlockFetch decision logic, and\\ngot green light from them.\\n\\nWe migrated the consensus code to a [new\\nrepository](https://github.com/input-output-hk/ouroboros-consensus), splitting\\nit from the `ouroboros-network` repository, and released version 0.6 of\\nConsensus.\\n\\nWe also merged the mempool fairness improvement to main branch.\\n\\nAnother significant enhancement to our documentation was the addition of an\\nexplanation of the hardfork combinator forecast horizon.\\n\\nSee the sections below for more details.\\n\\n## Genesis\\n\\nWe reviewed the `BlockFetch` design documentation, and added some source-code\\ncomments that emphasize certain properties of the decisions the `BlockFetch`\\nlogic makes that are helping us confirm that Genesis does not require any\\nchanges to `BlockFetch`. We are waiting on input from our former system\\narchitect to verify this.\\n\\nWe migrated and updated the conceptual component diagram in the `ouroboros-consensus`\\nrepository which helps us situate the Genesis design and argument.\\n\\nWe engaged with the IOG researchers about the Genesis design. We sketched out a\\nway to address the concern that the Limit on Patiente (LoP) attack vector duty\\ncycle is indeed low, but it\'s still non-trivial to ultimately conclude it\'s\\nsufficiently low.\\n\\nWe also sketched a design to decouple the CPU load of the node from its\\nresponsiveness to the socket, since the LoP is a relatively tight timeout, and\\nnode performance bugs inducing seconds-worth of latency are unfortunately\\nfamiliar phenomena.\\n\\n## Fostering collaboration\\n\\nWe [added an\\nexplanation](https://github.com/input-output-hk/ouroboros-consensus/pull/62) of\\na question that we had to explain many times about the exact behavior of the\\nhardfork combinator forecast horizon."},{"id":"2023-05-03-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-05-03-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-03-performance-and-tracing.md","source":"@site/blog/2023-05-03-performance-and-tracing.md","title":"Performance & tracing update","description":"* Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.","date":"2023-05-03T00:00:00.000Z","formattedDate":"May 3, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.76,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-05-03-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-05-03-consensus"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-05-01-db-sync"}},"content":"* Benchmarking: The benchmarks and performance investigations for the new `8.0` release branch are ongoing.\\n* New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint.\\n* Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on.\\n* Infrastructure: The `plutus-apps` flake input for `cardano-node` has finally been removed.\\n* Nomad backend: A PR implementing placement of benchmarking clusters has been merged.\\n \\n# Benchmarking\\n\\nThe performance investigations on the `8.0` release branch have lead to pinpointing and addressing incosistent behaviour. For that,\\nwe created yet another local reproduction with the workbench\'s `forge-stress` benchmark. \\n\\nCurrently we\'re working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into `8.0` and\\nsubsequent releases. \\n\\nAdditionally, we\'ve refined the `trace-bench` family of profiles that target benchmarking our own new tracing system. \\n\\n# Tracing\\n\\nOptimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally\\nintended to run on a performance-critical codepath. We\'ve worked on improving those, as well as eliminating cases of redundant\\nconversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system.\\n\\n# Infrastructure & Analysis\\n\\n### Dataflow documentation\\nThe LogObject CLI `locli` is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate\\nfurther development, we\'re creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting. \\n\\n### Remove redundant Plutus flake input\\nThis step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input,\\nwe simplify the dependency graph for `cardano-node`, as well as enable immediate feedback when developing Plutus benchmarks.\\n\\n### Nomad backend\\nSophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking.\\nThis capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along\\nwith various quality-of-life improvements, has been merged to `master`."},{"id":"2023-05-01-db-sync","metadata":{"permalink":"/cardano-updates/2023-05-01-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-01-db-sync.md","source":"@site/blog/2023-05-01-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-05-01T00:00:00.000Z","formattedDate":"May 1, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.515,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-05-01-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-05-03-performance-and-tracing"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-04-28-crypto"}},"content":"## High level summary\\n\\n\\n\\n## Lower level summary\\n- Prepared a schema change which is expected to speed up queries and help clients\\n[#1389](https://github.com/input-output-hk/cardano-db-sync/pull/1389).\\n- Ran a big number of benchmarks on the above to evaluate if this change is reasonable.\\n- Performance optimization related to rewards\\n[#1382](https://github.com/input-output-hk/cardano-db-sync/pull/1382)\\n- Using the cache in more places to reduce recourses usage\\n[#1380](https://github.com/input-output-hk/cardano-db-sync/pull/1380)\\n- Evaluated risks related to UTXO-HD integration\\n- Worked on a feauture request to split the `tx_out` to an address table\\n[#1396](https://github.com/input-output-hk/cardano-db-sync/pull/1396)\\n- Worked on another feauture request to prune the consumed entries from the `tx_out` table\\n[#1398](https://github.com/input-output-hk/cardano-db-sync/pull/1398)\\n- Prepared for CIP-1694 integration"},{"id":"2023-04-28-crypto","metadata":{"permalink":"/cardano-updates/2023-04-28-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-crypto.md","source":"@site/blog/2023-04-28-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-04-28T00:00:00.000Z","formattedDate":"April 28, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.26,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-04-28-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-05-01-db-sync"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-04-28-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto\'s library.\\n* KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction.\\n* Sidechains: Started implementing ECC chip of JubJub over BLS12-381.\\n## Low level summary\\n### cardano-base\\n* [#255](https://github.com/input-output-hk/cardano-base/pull/255) finally merged :tada:\\n* Additional tests for BLS bindings [#384](https://github.com/input-output-hk/cardano-base/pull/384)\\n* Open PR for including test vectors created with [zkscrypto](https://github.com/zkcrypto/bls12_381)\'s library, [PR#397](https://github.com/input-output-hk/cardano-base/pull/397)\\n### KES agent\\n* Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period [PR#389](https://github.com/input-output-hk/cardano-base/pull/389).\\n* Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) [#317](https://github.com/input-output-hk/cardano-base/pull/317).\\n* Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim\\n* Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes\\n* Refactor MonadSodium into MonadMLock [PR#388](https://github.com/input-output-hk/cardano-base/pull/388).\\n### Sidechains\\n* Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)\\n* Use macros used by PSE library to try and merge our fork of halo2curves into PSE\'s repo"},{"id":"2023-04-28-goedel","metadata":{"permalink":"/cardano-updates/2023-04-28-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-goedel.md","source":"@site/blog/2023-04-28-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-04-28T00:00:00.000Z","formattedDate":"April 28, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.375,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-04-28-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-04-28-crypto"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-04-28-network"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThe team is working on porting an existing formalisation of Ouroboros\\nPraos to a newer foundation.\\n\\n## Details\\n\\n* The team worked on documentation.\\n\\n* The team worked on an application layer for the Praos formalisation.\\n\\n* The team is hiring a performance engineering intern - https://apply.workable.com/io-global/j/BFEC5B0AFF/"},{"id":"2023-04-28-network","metadata":{"permalink":"/cardano-updates/2023-04-28-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-network.md","source":"@site/blog/2023-04-28-network.md","title":"Network Team Update","description":"High level summary","date":"2023-04-28T00:00:00.000Z","formattedDate":"April 28, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.21,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-04-28-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-04-28-goedel"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-27-hydra"}},"content":"## High level summary\\n\\nThe networking team has released the following packages to `Hackage`:\\n\\n* [`io-classes`],\\n* [`io-classes-mtl`]\\n* [`io-sim`],\\n* [`strict-stm`],\\n* [`strict-mvar`]\\n\\nWe published an announcement [blog post][io-sim-blog-post]. We made progress\\nalso on another blog post which will describes the design of the P2P networking\\nlayer.\\n\\nAfter moving `ouroboros-consensus` to its own repository, we made\\n`ouroboros-network` compatible with `GHC` `9.4` and `9.6`.\\n\\nWe made `cardano-client` library independent of\\n`ouroboros-consensus-diffusion`.\\n\\nWe prepared release of network packages for `cardano-node-8.0`.\\n\\n## Detailed log\\n\\n### Ouroboros-Network\\n\\n* Compatibility with `io-classes-1.1.0.0`: [ouroboros-network#4281].\\n* Compatibility with `GHC` `9.4` and `9.6`: [ouroboros-network#4527].\\n* `cardano-client` independent of `ouroboros-cosnensus-diffusion`: [ouroboros-network#4526].\\n* Release new versions of packages for `cardano-node-8.0`: [ouroboros-network#4532].\\n* Galois Inc, has been making progress towards merging [ouroboros-network#4256].\\n\\n### IO-Sim\\n\\n* `io-classes-1.0.0.0`, and following up releases: `1.0.0.1` (`ghc-9.6`\\n support), `1.1.0.0` (documentation fix).\\n* Fixed timeouts and delays in `io-sim` in a series of PRs: [io-sim#81],\\n [io-sim#82], [io-sim#86], [io-sim#87].\\n* Renamed a module: [io-sim#88].\\n* Fixed a failing `registerDelayCancellable` test: [io-sim#80].\\n* Use GitHub merge queue in `io-sim` repository.\\n* CI: download `stylish-haskell`: [io-sim#83].\\n\\n### Typed Protocols\\n\\n* Released `typed-protocols-0.1.0.4` which support `io-classes-1.1.0.0`:\\n [typed-protocols#227].\\n* Use GitHub merge queue in `typed-protocols`: [typed-protocols#30].\\n* CI: download `stylish-haskell`: [typed-protocols#29].\\n\\n\\n[`io-classes`]: https://hackage.haskell.org/package/io-classes\\n[`io-classes-mtl`]: https://hackage.haskell.org/package/io-classes-mtl\\n[`io-sim`]: https://hackage.haskell.org/package/io-sim\\n[`strict-stm`]: https://hackage.haskell.org/package/strict-stm\\n[`strict-mvar`]: https://hackage.haskell.org/package/strict-mvar\\n[io-sim-blog-post]: https://engineering.iog.io/2023-04-14-io-sim-annoucement\\n\\n[io-sim#81]: https://github.com/input-output-hk/io-sim/pull/81\\n[io-sim#82]: https://github.com/input-output-hk/io-sim/pull/82\\n[io-sim#83]: https://github.com/input-output-hk/io-sim/pull/83\\n[io-sim#86]: https://github.com/input-output-hk/io-sim/pull/86\\n[io-sim#87]: https://github.com/input-output-hk/io-sim/pull/87\\n[io-sim#88]: https://github.com/input-output-hk/io-sim/pull/88\\n[io-sim#90]: https://github.com/input-output-hk/io-sim/pull/90\\n\\n[ouroboros-network#4256]: https://github.com/input-output-hk/ouroboros-network/pull/4256\\n[ouroboros-network#4281]: https://github.com/input-output-hk/ouroboros-network/pull/4281\\n[ouroboros-network#4526]: https://github.com/input-output-hk/ouroboros-network/pull/4526\\n[ouroboros-network#4527]: https://github.com/input-output-hk/ouroboros-network/pull/4527\\n[ouroboros-network#4532]: https://github.com/input-output-hk/ouroboros-network/pull/4532\\n\\n[typed-protocols#29]: https://github.com/input-output-hk/typed-protocols/pull/29\\n[typed-protocols#30]: https://github.com/input-output-hk/typed-protocols/pull/30\\n[typed-protocols#227]: https://github.com/input-output-hk/cardano-haskell-packages/pull/227"},{"id":"2023-04-27-hydra","metadata":{"permalink":"/cardano-updates/2023-04-27-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-27-hydra.md","source":"@site/blog/2023-04-27-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-04-27T00:00:00.000Z","formattedDate":"April 27, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.11,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-04-27-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-04-28-network"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-21-hydra"}},"content":"## High-level summary\\n\\nThis week, the Hydra team held their Monthly review meeting and drafted the\\nreport which likely is published next week. They put the spec into the\\nrepository and website, addressed a user issue and fixed the TUI peer list.\\nFurthermore, they updated dependencies, conducted a Twitter space on Auctions\\nuse cases, covered the rollback bug with tests and implemented a solution.\\nLooking ahead, their goals for next week include releasing 0.10.0, implementing\\ntimed transactions support, writing a Query API ADR, and grooming work items\\nlike off-chain benchmarks.\\n\\n## What did the team achieve this week\\n\\n- Held the Monthly review meeting and drafted the report (to be published next week)\\n- Added the spec into the repository\\n [#693](https://github.com/input-output-hk/hydra/issues/693) and published on\\n [the\\n website](https://hydra.family/head-protocol/unstable/core-concepts/specification)\\n- Groom and addressed user issue [#823](https://github.com/input-output-hk/hydra/issues/823)\\n- Covered the rollback bug with tests and implemented a solution (to be reviewed) [#784](https://github.com/input-output-hk/hydra/issues/784)\\n- Fixed the TUI peer list\\n- Updated dependencies to match `cardano-node` master\\n- Conducted a twitter space on Auctions use cases\\n\\n## What are the goals of next week\\n\\n- Release 0.10.0\\n- Support timed transactions solution drafted and validated API with users\\n- Write Query API ADR and groom a concrete step\\n- Groom and solve `PostTxOnChainFailed` UX problem [#832](https://github.com/input-output-hk/hydra/issues/832)\\n- Groom off-chain benchmarks idea [#186](https://github.com/input-output-hk/hydra/issues/186) and turn it into a “feature”"},{"id":"2023-04-21-hydra","metadata":{"permalink":"/cardano-updates/2023-04-21-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-21-hydra.md","source":"@site/blog/2023-04-21-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-04-21T00:00:00.000Z","formattedDate":"April 21, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.26,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-04-21-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-27-hydra"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-04-21-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team worked on several fronts, including fixing state\\nmachine continuity on-chain, discussing voting project solutions, exploring\\nadding Hydra support to kupo, and improving API navigation with a sidebar. The\\nteam also updated dependencies and fixed issues in their test suites. Moving\\nforward, the team plans to hold the next monthly review meeting, address a user\\nissue, prepare for the 0.10.0 release, and work on a dirt road fix for the\\nrollbacks issue with proper test coverage.\\n\\n## What did the team achieve this week\\n\\n- Fixed scripts to enforce state machine continuity on-chain [#777](https://github.com/input-output-hk/hydra/pull/777).\\n- Took part in a twitter space on [“Scaling Cardano”](https://twitter.com/thepizzaknight_/status/1647833904282320896).\\n- Joined a CBIA meeting to discuss Cardano network protocols & how to specify them.\\n- Discussed potential solutions of ensuring vote uniqueness in the voting project.\\n- Updated dependencies to match `cardano-node` master to prepare for upcoming releases and hard-forks\\n- Explored adding Hydra [support to kupo](https://github.com/CardanoSolutions/kupo/pull/117), a lightweight Cardano chain indexer - some more work required.\\n- Improved navigation of the API Reference with a sidebar, see [unstable API version](https://hydra.family/head-protocol/unstable/api-reference/).\\n- Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)\\n\\n## What are the goals of next week\\n\\n- Monthly review meeting (join via [Discord](https://discord.gg/inputoutput?event=1097863746216538194) or [AddEvent](https://www.addevent.com/event/ck16794110)) & report\\n- Dirt road fix for rollbacks [#784](https://github.com/input-output-hk/hydra/issues/784) properly covered by a test.\\n- Groom and ideally address user issue [#823](https://github.com/input-output-hk/hydra/issues/823).\\n- Put the spec into the repo [#693](https://github.com/input-output-hk/hydra/issues/693) and prepare release 0.10.0."},{"id":"2023-04-21-ledger","metadata":{"permalink":"/cardano-updates/2023-04-21-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-21-ledger.md","source":"@site/blog/2023-04-21-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-04-21T00:00:00.000Z","formattedDate":"April 21, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":0.905,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-04-21-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-21-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-04-20-mithril"}},"content":"## High level summary\\n\\nWe continued to make progress on CIP-1694 and the conway ledger era.\\nIn particular, the conway era now supports Plutus V3.\\nFinally, we made small improvements to the ledger API and now host\\nour Haskell code documentation (haddocks) on github pages.\\n\\n\\n## Low level summary\\n\\n### Conway ledger era\\n\\n* [[pull-3365]] - Support for Plutus V3.\\n* [[pull-3368]] - Conway genesis fix.\\n* [[pull-3369]] - Added some governance ledger state.\\n* [[pull-3372]] - Work on the conway delegation certificates.\\n* [[pull-3384]] - Rename.\\n\\n### Haddocks hosted on github pages\\n\\n* [[pull-3385]] \\n\\n### Small improvements to the API\\n\\n* [[pull-3366]]\\n\\n### Technical Debt\\n\\n* [[pull-3367]] Fix cost model json instances.\\n* [[pull-3371]] UMap cleanup.\\n* [[pull-3373]] Upgrade to ghc 9.2.7 and cabal 3.10.1.\\n* [[pull-3375]] Sadly, we had to revert the `TICKF` optimizations. There was a regression we do not yet understand.\\n* [[pull-3377]] Fix cabal warnings.\\n* [[pull-3383]] Fix multi-asset test.\\n\\n[pull-3365]: https://github.com/input-output-hk/cardano-ledger/pull/3365\\n[pull-3366]: https://github.com/input-output-hk/cardano-ledger/pull/3366\\n[pull-3367]: https://github.com/input-output-hk/cardano-ledger/pull/3367\\n[pull-3368]: https://github.com/input-output-hk/cardano-ledger/pull/3368\\n[pull-3369]: https://github.com/input-output-hk/cardano-ledger/pull/3369\\n[pull-3371]: https://github.com/input-output-hk/cardano-ledger/pull/3371\\n[pull-3372]: https://github.com/input-output-hk/cardano-ledger/pull/3372\\n[pull-3373]: https://github.com/input-output-hk/cardano-ledger/pull/3373\\n[pull-3375]: https://github.com/input-output-hk/cardano-ledger/pull/3375\\n[pull-3377]: https://github.com/input-output-hk/cardano-ledger/pull/3377\\n[pull-3383]: https://github.com/input-output-hk/cardano-ledger/pull/3383\\n[pull-3384]: https://github.com/input-output-hk/cardano-ledger/pull/3384\\n[pull-3385]: https://github.com/input-output-hk/cardano-ledger/pull/3385"},{"id":"2023-04-20-mithril","metadata":{"permalink":"/cardano-updates/2023-04-20-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-20-mithril.md","source":"@site/blog/2023-04-20-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-04-20T00:00:00.000Z","formattedDate":"April 20, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.245,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-04-20-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-04-21-ledger"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-04-20-node-cli-api"}},"content":"## High level overview\\nThe Mithril team released a new [`2315.0`](https://github.com/input-output-hk/mithril/releases/tag/2315.0) distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures.\\n\\nFinally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network.\\n\\n\\n## Low level overview\\n- Released the new distribution [`2315.0`](https://github.com/input-output-hk/mithril/releases/tag/2315.0)\\n- Completed the epic that implements a relational store in the aggregator [#779](https://github.com/input-output-hk/mithril/issues/779):\\n - Completed the migration/adaptation of the `signed_entity` table [#816](https://github.com/input-output-hk/mithril/issues/816)\\n - Completed the creation of the `signer` table [#814](https://github.com/input-output-hk/mithril/issues/814)\\n - Completed the migration/adaptation of the `single_signature` table [#829](https://github.com/input-output-hk/mithril/issues/829)\\n- Worked on the epic that designs and implement generic signing/verification of entity services [#780](https://github.com/input-output-hk/mithril/issues/780):\\n - Completed the definition of the interface of the generic entity service for signing [#847](https://github.com/input-output-hk/mithril/issues/847)\\n - Worked on the implementation of the `Certifier` service in the aggregator [#850](https://github.com/input-output-hk/mithril/issues/850)\\n - Completed the extension of the `SignedEntityType` type [#848](https://github.com/input-output-hk/mithril/issues/848)\\n - Completed the implementation of the `Tick` service in the aggregator [#849](https://github.com/input-output-hk/mithril/issues/849)\\n - Worked on implementing the signable builder for the `Mithril Stake Distribution` [#851](https://github.com/input-output-hk/mithril/issues/851)"},{"id":"2023-04-20-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-04-20-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-20-node-cli-api.md","source":"@site/blog/2023-04-20-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-04-20T00:00:00.000Z","formattedDate":"April 20, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":0.4,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-04-20-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-04-20-mithril"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-04-19-consensus"}},"content":"# 2023-04-20 - 2023-05-04\\n\\n## High level summary\\n- Various fixes and improvements\\n\\n### docs\\n\\n### CI & project maintenance\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Modify golden test functions to automatically create parent directories](https://github.com/input-output-hk/cardano-node/pull/5136) \\n- [SPO on-chain poll commands adjustments](https://github.com/input-output-hk/cardano-node/pull/5132) \\n- [New environment variable CARDANO_NODE_NETWORK_ID](https://github.com/input-output-hk/cardano-node/pull/5119) \\n\\n### cardano-api\\n- [`--out-file` option for governance commands](https://github.com/input-output-hk/cardano-node/pull/5172) \\n- [UTC Time to slots conversion function](https://github.com/input-output-hk/cardano-node/pull/5130) \\n\\n### cardano-node\\n- [Update CHaP to get latest ledger with performance fix](https://github.com/input-output-hk/cardano-node/pull/5157) \\n- [Integration with Peer Sharing](https://github.com/input-output-hk/cardano-node/pull/4854) \\n\\n### cardano-testnet"},{"id":"2023-04-19-consensus","metadata":{"permalink":"/cardano-updates/2023-04-19-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-19-consensus.md","source":"@site/blog/2023-04-19-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-04-19T00:00:00.000Z","formattedDate":"April 19, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.77,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-04-19-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-04-20-node-cli-api"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-04-19-performance-and-tracing"}},"content":"## High level summary\\n\\nThis week the consensus team continued working on the improved DB lock mechanism\\nfor UTxO-HD, and modifications to the mempool benchmarks that this prototype\\nrequires.\\n\\nOn the Genesis front we validated that the fragment size calculation in\\n`BlockFetch` is a major performance sink for ChainSync Jumping. By removing it\\nwe will get performance that is acceptably close to that of the baseline. We\\nalso started investigating a performance fix that does not alter the existing\\nbaseline behavior too much. In addition we reviewed our Genesis attack vector\\ncalculations.\\n\\nOn the support front we released Consensus 0.4, and we are working on improving\\nour release process, to support the Cardano-wide efforts in this area. We also\\nperformed an analysis on the number of file descriptors that consensus use. This\\ninformation can be used by the node operators to check if the number of file\\ndescriptors they want to support are enough."},{"id":"2023-04-19-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-04-19-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-19-performance-and-tracing.md","source":"@site/blog/2023-04-19-performance-and-tracing.md","title":"Performance & tracing update","description":"* Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.","date":"2023-04-19T00:00:00.000Z","formattedDate":"April 19, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.575,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-04-19-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-04-19-consensus"},"nextItem":{"title":"Incident Report","permalink":"/cardano-updates/2023-04-17-ledger"}},"content":"* Benchmarking: We performed a series of benchmarks aimed at the new `8.0` release branch and built a timeline from the `1.35` releases to that branch.\\n* New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois.\\n* Analysis pipeline: We\'re working on automatically obtaining a detailed manifest for each run.\\n* Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we\'ve laid the ground for including GHC profiling data into our workbench.\\n* Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.\\n \\n# Benchmarking\\n\\nWe have performed various cluster runs targeting the `8.0` release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile `epoch-transition` for local reproduction of what we observed on the benchmarking cluster. \\n\\nFurthermore, we bridged the gap between the run data from the `1.35.x` releases to the the new `8.0.x` release branch. This included walking the\\n`master` branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial\\nin locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of\\nbenchmarks.\\n\\n# Tracing\\n\\nIn-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still\\nongoing. \\n\\nIn coordination with Galois, who are developing a system assurance service by observing a number of `cardano-node`s, we\'re working with the implementation\\nof data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational\\nburden inside the node needs to be kept to an absolute minimum. We\'re currently in ideation about whether `cardano-tracer` could be extended with a richer\\nfeature set to that end.\\n\\n# Infrastructure & Analysis\\n\\n### Detailed manifest\\nA run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with.\\nThese dependencies come from different package sources, have different versioning policies, and an identical package version might provide different\\nperformance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated\\nby making all component bumps visible and accessible.\\n\\n### GHC profiling inside workbench\\nThe workbench has been equipped with a new `-profnix` profile flavour. This enforces a `-fprof-auto` build for all node-related packages. The type of\\nprofiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already\\nbeen merged to `master`.\\n\\n### Nomad backend\\nThe added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances.\\nThis results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing."},{"id":"2023-04-17-ledger","metadata":{"permalink":"/cardano-updates/2023-04-17-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-17-incident.md","source":"@site/blog/2023-04-17-incident.md","title":"Incident Report","description":"Incident reporting: Cardano block production temporary outage","date":"2023-04-17T00:00:00.000Z","formattedDate":"April 17, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.38,"hasTruncateMarker":false,"authors":[{"name":"Kevin Hammond","title":"Head of Software Engineering, Cardano Core","url":"https://github.com/kevinhammond","imageURL":"https://github.com/kevinhammond.png","key":"kevinhammond"}],"frontMatter":{"title":"Incident Report","slug":"2023-04-17-ledger","authors":"kevinhammond","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-04-19-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-04-14-goedel"}},"content":"## Incident reporting: Cardano block production temporary outage\\n\\nOn Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a \u2018critical\u2019 incident, thus warranting immediate response and investigation by IOG engineers.\\nThe investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue \u2013 a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite. \\nFollowing successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version.\\nWith the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue.\\n\\n### Further Details\\n\\nYou can read more details on the incident and how it was managed from SundaeSwap\u2019s Pi Lanningham [here](https://www.314pool.com/post/cardano-post-mortem-1). Thanks again to all the community for its support in identifying and fixing this bug."},{"id":"2023-04-14-goedel","metadata":{"permalink":"/cardano-updates/2023-04-14-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-14-goedel.md","source":"@site/blog/2023-04-14-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-04-14T00:00:00.000Z","formattedDate":"April 14, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.415,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-04-14-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Incident Report","permalink":"/cardano-updates/2023-04-17-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-14-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has submitted two papers for publication, carried\\nout consultancy with other teams and has an opening for an intern.\\n\\n## Details\\n\\n* Finalised and submitted two papers to ICE 2023\\n\\n* Studying Praos paper.\\n\\n* The team is hiring a performance engineering intern - https://apply.workable.com/io-global/j/BFEC5B0AFF/\\n\\n* Design exploration for congestion management."},{"id":"2023-04-14-hydra","metadata":{"permalink":"/cardano-updates/2023-04-14-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-14-hydra.md","source":"@site/blog/2023-04-14-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-04-14T00:00:00.000Z","formattedDate":"April 14, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.98,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-04-14-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-04-14-goedel"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-07-hydra"}},"content":"## High-level summary\\n\\nThis week, the Hydra team focused on improving the smoke test, fixing developer\\ntooling, and improving the API for voting use cases. They reviewed progress on\\nauction, payments, and voting projects and made worked on reproducing a bug with\\nhandling rollbacks. Moving forward, the team plans to update dependencies,\\nimplement a dirt road fix for the rollbacks bug, and explore adding Hydra\\nsupport to kupo.\\n\\n## What did the team achieve this week\\n\\n- Reviewed progress on auction, payments and voting projects\\n- Improved smoke tests so they can run on mainnet\\n- Fixed a regression in the development environment and updated cardano-node\\n used in tests\\n- Improved API with more configurability to unblock voting use case\\n - Exclude utxo in `SnapshotConfirmed` outputs [#808](https://github.com/input-output-hk/hydra/pull/808)\\n - Addressed a user request by only sending `Greetings` once [#813](https://github.com/input-output-hk/hydra/issues/813)\\n- Reproduced the rollback bug by improving our model-based test suite [#784](https://github.com/input-output-hk/hydra/issues/784)\\n\\n## What are the goals of next week\\n\\n- Update dependencies to match `cardano-node` master\\n- Dirt road fix for rollbacks [#784](https://github.com/input-output-hk/hydra/issues/784)\\n- Update Hydraw to maintain state locally\\n- Explore adding Hydra support to kupo\\n- Put disclaimer texts and closing mainnet compatibility feature [#713](https://github.com/input-output-hk/hydra/issues/713)"},{"id":"2023-04-07-hydra","metadata":{"permalink":"/cardano-updates/2023-04-07-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-07-hydra.md","source":"@site/blog/2023-04-07-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-04-07T00:00:00.000Z","formattedDate":"April 7, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.875,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-04-07-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-14-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-04-06-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team published the monthly report for March, created\\nseparate links for different versions of documentation, and clarified potential\\nsolutions for the Rollbacks bug. The team also discussed Query API requests for\\nthe Hydra Voting project and met with community members to answer questions\\nabout Hydra. Moving forward, the team plans to integrate the specification into\\nthe repository, implement a short-term fix for the Rollbacks issue, and draft a\\nQuery API ADR.\\n\\n## What did the team achieve this week\\n\\n- Published monthly reports on [website](https://hydra.family/head-protocol/monthly/2023-03)\\n- Separate last released and latest versions of docs (e.g. normal [released](https://hydra.family/head-protocol/core-concepts/behavior/#replay-of-past-server-outputs) vs. [/unstable](https://hydra.family/head-protocol/unstable/core-concepts/behavior/#replay-of-past-server-outputs))\\n- Discussed Query API concerns from Hydra Voting project ([link](https://github.com/input-output-hk/hydra/discussions/797))\\n- Clarified rollbacks bug and defined possible solutions (short and long term) [#784](https://github.com/input-output-hk/hydra/issues/784)\\n- Met with community members to answer questions about Hydra\\n\\n## What are the goals of next week\\n\\n- Finally get the docs integrated into the repository [#693](https://github.com/input-output-hk/hydra/issues/693)\\n- Dirt road fix for rollbacks [#784](https://github.com/input-output-hk/hydra/issues/784)\\n- Disclaimer text and detail known issues about mainnet compatibility\\n [#713](https://github.com/input-output-hk/hydra/issues/713)"},{"id":"2023-04-06-mithril","metadata":{"permalink":"/cardano-updates/2023-04-06-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-06-mithril.md","source":"@site/blog/2023-04-06-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-04-06T00:00:00.000Z","formattedDate":"April 6, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.075,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-04-06-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-04-07-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-04-05-consensus"}},"content":"## High level overview\\nThe Mithril team released a new [`2313.0`](https://github.com/input-output-hk/mithril/releases/tag/2313.0) distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages.\\n\\nFinally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to `1.35.6`.\\n\\n## Low level overview\\n- Released the new distribution [`2313.0`](https://github.com/input-output-hk/mithril/releases/tag/2313.0)\\n- Worked on the epic that implements a relational store in the aggregator [#779](https://github.com/input-output-hk/mithril/issues/779):\\n - Completed the migration/adaptation of the `epoch_settings` table [#813](https://github.com/input-output-hk/mithril/issues/813)\\n - Completed the migration/adaptation of the `signed-entity-type` table [#815](https://github.com/input-output-hk/mithril/issues/815)\\n - Completed the migration/adaptation of the `certificate` table [#817](https://github.com/input-output-hk/mithril/issues/817)\\n - Completed the migration/adaptation of the `open_message` table [#827](https://github.com/input-output-hk/mithril/issues/827)\\n - Completed the migration/adaptation of the `signer_registration` table [#828](https://github.com/input-output-hk/mithril/issues/828)\\n- Completed the refactoring of the dependency injection of the aggregator [#823](https://github.com/input-output-hk/mithril/issues/823)\\n- Completed the cleanup of the multi-signer of the aggregator [#824](https://github.com/input-output-hk/mithril/issues/824)\\n- Completed the upgrade of the Cardano node to `1.35.6` [#843](https://github.com/input-output-hk/mithril/issues/843)"},{"id":"2023-04-05-consensus","metadata":{"permalink":"/cardano-updates/2023-04-05-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-consensus.md","source":"@site/blog/2023-04-05-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-04-05T00:00:00.000Z","formattedDate":"April 5, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.66,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-04-05-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-04-06-mithril"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-04-05-node-cli-api"}},"content":"## High level summary\\n\\nThis week the consensus team finished the UTxO-HD prototype refactoring. We are\\nnow working on improving the DB lock mechanism to improve performance. We also\\nintroduced several improvements to the file system abstraction and simulation\\nlayer (`fs-sim`), which culminated in the release of `fs-sim-0.1.0.0` and\\n`fs-api-0.1.0.0` to `CHaP`.\\n\\nOn the Genesis front we distributed the updated Genesis design document,\\nsoliciting feedback from Networking Team and IOG Researchers. We also opened up\\na PR for the adversarial leader schedule `QuickCheck` generator, which is being\\nreviewed.\\n\\nOn the support front, we got a new Consensus version that can use different\\nfundamental VRF crypto primitives for Babbage and Conway eras.\\n\\nOn the tech debt front we fixed an bug in the followers logic, which was\\ndiscovered by our `QuickCheck` property tests."},{"id":"2023-04-05-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-04-05-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-node-cli-api.md","source":"@site/blog/2023-04-05-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-04-05T00:00:00.000Z","formattedDate":"April 5, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.315,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-04-05-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-04-05-consensus"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-04-05-performance-and-tracing"}},"content":"# 2023-04-05 - 2023-04-19\\n\\n## High level summary\\n- Introduce new governance commands create, answer and verify. This allows us to have onchain polls.\\n- Begin making changes in cardano-api to accomodate for CIP-1694\\n- Rename `TestEnableDevelopmentHardForkEras` to `ExperimentalHardForksEnabled` and `TestEnableDevelopmentNetworkProtocols` to `ExperimentalProtocolsEnabled`\\n- Various bug fixes and improvements \\n\\n### docs\\n\\n### CI & project maintenance\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Add new interim governance commands: {create, answer, verify}-poll](https://github.com/input-output-hk/cardano-node/pull/5112) \\n- [Remove --stake-address option from stake-address build](https://github.com/input-output-hk/cardano-node/pull/5061) \\n- [Frozen callstack for checkTextEnvelopeFormat function](https://github.com/input-output-hk/cardano-node/pull/5059) \\n- [#5052 Remove reading protocol parameters from Shelley genesis file](https://github.com/input-output-hk/cardano-node/pull/5053) \\n- [Move parsers to reusable location](https://github.com/input-output-hk/cardano-node/pull/5046) \\n- [New --socket-path cli option](https://github.com/input-output-hk/cardano-node/pull/4910) \\n\\n### cardano-api\\n- [CIP-1694 make space for DRep certificates](https://github.com/input-output-hk/cardano-node/pull/5108) \\n- [File type to track the content and direction of files](https://github.com/input-output-hk/cardano-node/pull/5105) \\n- [Fix import warning](https://github.com/input-output-hk/cardano-node/pull/5087) \\n- [Expose UsingRawBytes et al types](https://github.com/input-output-hk/cardano-node/pull/5086) \\n- [Expose SerialiseAsRawBytesError in Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/5085) \\n- [Introduce new AnyShelleyBasedEra type and simplify CDDL tests.](https://github.com/input-output-hk/cardano-node/pull/5072) \\n- [New genCardanoKeyWitness function](https://github.com/input-output-hk/cardano-node/pull/5071) \\n- [Replace roundtripCBOR with trippingCbor](https://github.com/input-output-hk/cardano-node/pull/5069) \\n- [Remove non-round-trippable value TxInsReferenceNone for babbage onwards in generator](https://github.com/input-output-hk/cardano-node/pull/5064) \\n- [Improve roundtrip functions to report annotations on callsite](https://github.com/input-output-hk/cardano-node/pull/5063) \\n- [Define Functor instance for FileError](https://github.com/input-output-hk/cardano-node/pull/5057) \\n- [Split serialisation from IO](https://github.com/input-output-hk/cardano-node/pull/5049) \\n\\n### cardano-node\\n- [Master build failure fixes](https://github.com/input-output-hk/cardano-node/pull/5115) \\n- [Allow renamed fields to exist if values the same](https://github.com/input-output-hk/cardano-node/pull/5106) \\n- [workbench: updates](https://github.com/input-output-hk/cardano-node/pull/5091) \\n- [Delete duplicate packages sort packages and imports](https://github.com/input-output-hk/cardano-node/pull/5084) \\n- [Rename TestEnableDevelopmentHardForkEras and TestEnableDevelopmentNetworkProtocols](https://github.com/input-output-hk/cardano-node/pull/4341) \\n\\n### cardano-testnet\\n- [Additional check for not-leader slots in LeadershipSchedule tests](https://github.com/input-output-hk/cardano-node/pull/5110) \\n- [Fix epochLength and securityParam to conform to the formula 10 * k / f](https://github.com/input-output-hk/cardano-node/pull/5099) \\n- [Ergonomic directory creation code in tests](https://github.com/input-output-hk/cardano-node/pull/5083) \\n- [Default Cardano.Testnet to NodeLoggingFormatAsJson](https://github.com/input-output-hk/cardano-node/pull/5036) \\n- [Integrate latest ledger dependencies](https://github.com/input-output-hk/cardano-node/pull/5013)"},{"id":"2023-04-05-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-04-05-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-performance-and-tracing.md","source":"@site/blog/2023-04-05-performance-and-tracing.md","title":"Performance & tracing update","description":"* Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.","date":"2023-04-05T00:00:00.000Z","formattedDate":"April 5, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.33,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-04-05-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-04-05-node-cli-api"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-03-31-crypto"}},"content":"* Benchmarking: We worked on adjusting our infrastructure to the new `8.0` release branch and performed a (very) early run.\\n* New tracing: We\'re profiling the new tracing system for minimizing its resource footprint and guarantee high throughput.\\n* Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged.\\n* Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added.\\n* Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.\\n \\n# Benchmarking\\n\\nWe have adapted our benchmarking cluster to the requirements of the `8.0` release branch. Testing runs of a very early feature branch for `8.0`\\nhelped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for `8.0` soon.\\n\\n# Tracing\\n\\nAnalysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very\\ndetailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing\\nthe highest possible throughput of data for forwarding to `cardano-tracer`. \\n\\nAdditionally, we\'ve worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions\\nfor tunneling trace forwarding from a node to `cardano-tracer` via an easy to manage system service, which will match the production setup of most users.\\n\\n# Infrastructure & Analysis\\n\\n### General\\nVariance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance\\nanalysis can be fed back and serve as an additional point of comparison.\\n\\nFurthermore, we\'ve created a profile family for the workbench that\'s specifically aimed at measuring and comparing tracing system configurations.\\n\\n### Plutus library\\nWe opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles.\\nThis will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile.\\nIt is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit.\\n\\n### Nomad backend\\nThe nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is\\nbeing improved to minimize any friction for the backend user."},{"id":"2023-03-31-crypto","metadata":{"permalink":"/cardano-updates/2023-03-31-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-crypto.md","source":"@site/blog/2023-03-31-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-03-31T00:00:00.000Z","formattedDate":"March 31, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.105,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-03-31-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-04-05-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-03-31-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Mithril: Started looking into full-node verifier\\n* cardano-base: BLS12-381\'s PR merged. Creating test-vectors for verifying basic pairing properties.\\n* KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent. \\n* Sidechains: Included BLS12-381 & JubJub to halo2curves\\n* MuSig2: Final modifs to C version.\\n## Low level summary\\n### Mithril\\n* Started designing how a full-node verifier would work. Issue comming in the next couple of weeks. \\n### cardano-base\\n* BLS12-381 branch merged [PR#266](https://github.com/input-output-hk/cardano-base/pull/266). \\n* Testing strategy for BLS bindings:\\n * Test-vectors for Groth16, and simple BLS signatures ready.\\n * Test-vectors with different library, and created by different engineer. \\n### KES agent\\n* Resolved issues of circular dependency\\n* Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same. \\n* Opened a PR for raw bearer branch in ouroboros network [PR4395](https://github.com/input-output-hk/ouroboros-network/pull/4395)\\n* Resolved a bug where the agent node did not properly closed connections\\n* Updated version of [IOSim](https://github.com/input-output-hk/io-sim/pull/70) allowed us to finish a first version of KES agent.\\n### Sidechains\\n* Included [BLS12-381](https://github.com/iquerejeta/halo2curves/commit/1ccf987b772dcfaa3c1e3439a4a28f23fcf07c7a) curve to our branch of halo2curves\\n* Included [JubJub](https://github.com/iquerejeta/halo2curves/commit/3f20edb2ed112733a0a0986b0a0386c1b9bc439f) to our branch of halo2curves \\n### MuSig2\\n* Minor reorg [PR#42](https://github.com/input-output-hk/musig2/pull/42)\\n* Started including fuzz testing for deserialisation [PR#](https://github.com/input-output-hk/musig2/pull/43)"},{"id":"2023-03-31-goedel","metadata":{"permalink":"/cardano-updates/2023-03-31-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-goedel.md","source":"@site/blog/2023-03-31-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-03-31T00:00:00.000Z","formattedDate":"March 31, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.455,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-03-31-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-03-31-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-31-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has been working on final drafts of two papers\\nfor internal review and planning next steps of analysis of consensus\\ndesign refiniments.\\n\\n## Details\\n\\n* Preparing final draft of DeltaQSD algebra paper for internal review\\n\\n* Preparing final draft of verifying design refinements for\\n distributed system design for internal review\\n\\n* Planning next phase of consensus design refinement analysis"},{"id":"2023-03-31-hydra","metadata":{"permalink":"/cardano-updates/2023-03-31-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-hydra.md","source":"@site/blog/2023-03-31-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-03-31T00:00:00.000Z","formattedDate":"March 31, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.82,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-03-31-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-03-31-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-03-31-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra continued work on finishing mainnet compatibility. The\\nsemi-automated smoke tests and some missing documentation is still preventing\\nfrom calling that fully done. They fixed smaller issues and made a step in the\\nHead protocol more robust. Besides development, they met with interested people\\nfrom the community who want to get started collaborating on communication and\\nmarketing materials.\\n\\n## What did the team achieve this week\\n\\n- Groomed and followed-up on `GetUTxO` user request discussion [#797](https://github.com/input-output-hk/hydra/discussions/797)\\n- Fixed `hydra-node` crashes after forks [#560](https://github.com/input-output-hk/hydra/issues/560)\\n- Made `collectCom` more robust and aligned with spec [#786](https://github.com/input-output-hk/hydra/pull/786)\\n- Completed configurable API feature [#380](https://github.com/input-output-hk/hydra/issues/380)\\n- Met potential contributors about Hydra communication and marketing materials\\n- Versioned documentation: we have a `unstable` bleeding edge version available as well now, seperate from the last released version\\n\\n## What are the goals of next week\\n\\n- Follow-up backlog and roadmap clean-up\\n- Complete mainnet compatibility feature [#713](https://github.com/input-output-hk/hydra/issues/713) (documentation updates)\\n- Integrate Hydra specification into repository [#693](https://github.com/input-output-hk/hydra/issues/693)"},{"id":"2023-03-31-ledger","metadata":{"permalink":"/cardano-updates/2023-03-31-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-ledger.md","source":"@site/blog/2023-03-31-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-03-31T00:00:00.000Z","formattedDate":"March 31, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.97,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-03-31-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-31-hydra"},"nextItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2023-03-27-system-test"}},"content":"## High level summary\\n\\nWe are still heavily involved in work related to preparing the next release.\\nThe other main thing we have worked on is experimentation about how we will\\nhandle the DRep stake distribution for CIP-1694 in the conway ledger era.\\nLastly, we merged a fix for\\n[node-4826](https://github.com/input-output-hk/cardano-node/issues/4826)\\ninto our main branch (there will be a post-mortem shortly).\\n\\n## Low level summary\\n\\n### Support for the next release\\n\\n* [pull-3363] - Fix problems relating to Arbitrary instances used by consensus.\\n* [pull-3361] - Remove the alonze genesis from the conway genesis.\\n* [pull-3360] - Translate bad pointer addresses to valid ones in conway.\\n* [pull-3357] - Fix a bug relating to zero valued ADA in the script context.\\n* [pull-3356] - Added needed instances (Arbitrary and Serialization) for conway integration.\\n* [pull-3345] - Added helper functions for the CLI.\\n* [pull-3342] - Fix a bug with a CLI helper function (having to do with deposit tracking).\\n\\n### Experiments for DRep stake distribution\\n\\nAdding another stake distribution to the ledger state presents some new challenges.\\nWe would like to be able to use the current stake distribution at the epoch boundary\\nfor DRep voting so that people can always vote themselves in time for any proposal.\\nTo this end, we have a prototype of an incremental computation based on the incremental\\nlambda calculus, together with tests and benchmarks (which are very promising).\\nSee [pull-3344].\\n\\nAdditionally, more of the ledger state is going to need to be rearranged to accomodate\\nthe new incremental computations.\\nWe have two draft PRs up for possibles solution.\\nSee [pull-3353] and [pull-3364].\\n\\n### Technical debt and bug fixes\\n\\n* [pull-3343] - A fix [node-4826](https://github.com/input-output-hk/cardano-node/issues/4826).\\n* [pull-3333] - Moving more code out of the shelley packages. \\n* [pull-3347] - Bug fix for the multi-asset generators.\\n* [pull-3341] - Removal of code duplication.\\n\\n### Documentation changes\\n\\n* [pull-3354] - Rename \\"optional datums\\" with \\"supplemental datums\\" in the alonzo spec.\\n* [pull-3352] - Add a section to the Shelly errata about the individual deposit tracking.\\n* [pull-3351] - Further clarify the details regarding the script integrity hash.\\n* [pull-3350] - Some cleanup of the Babbage spec.\\n\\n\\n[pull-3363]: https://github.com/input-output-hk/cardano-ledger/pull/3363\\n[pull-3361]: https://github.com/input-output-hk/cardano-ledger/pull/3361\\n[pull-3360]: https://github.com/input-output-hk/cardano-ledger/pull/3360\\n[pull-3357]: https://github.com/input-output-hk/cardano-ledger/pull/3357\\n[pull-3356]: https://github.com/input-output-hk/cardano-ledger/pull/3356\\n[pull-3345]: https://github.com/input-output-hk/cardano-ledger/pull/3345\\n[pull-3342]: https://github.com/input-output-hk/cardano-ledger/pull/3342\\n[pull-3344]: https://github.com/input-output-hk/cardano-ledger/pull/3344\\n[pull-3353]: https://github.com/input-output-hk/cardano-ledger/pull/3353\\n[pull-3364]: https://github.com/input-output-hk/cardano-ledger/pull/3364\\n[pull-3343]: https://github.com/input-output-hk/cardano-ledger/pull/3343\\n[pull-3333]: https://github.com/input-output-hk/cardano-ledger/pull/3333\\n[pull-3347]: https://github.com/input-output-hk/cardano-ledger/pull/3347\\n[pull-3341]: https://github.com/input-output-hk/cardano-ledger/pull/3341\\n[pull-3354]: https://github.com/input-output-hk/cardano-ledger/pull/3354\\n[pull-3352]: https://github.com/input-output-hk/cardano-ledger/pull/3352\\n[pull-3351]: https://github.com/input-output-hk/cardano-ledger/pull/3351\\n[pull-3350]: https://github.com/input-output-hk/cardano-ledger/pull/3350"},{"id":"2023-03-27-system-test","metadata":{"permalink":"/cardano-updates/2023-03-27-system-test","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-27-system-test.md","source":"@site/blog/2023-03-27-system-test.md","title":"System Test Team Update","description":"High level summary","date":"2023-03-27T00:00:00.000Z","formattedDate":"March 27, 2023","tags":[{"label":"system-test","permalink":"/cardano-updates/tags/system-test"}],"readingTime":0.785,"hasTruncateMarker":false,"authors":[{"name":"Martin Kourim","title":"System Test Engineer","url":"https://github.com/mkoura","imageURL":"https://github.com/mkoura.png","key":"mkoura"}],"frontMatter":{"title":"System Test Team Update","slug":"2023-03-27-system-test","authors":"mkoura","tags":["system-test"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-03-31-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-24-hydra"}},"content":"## High level summary\\nSince the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the _1.35.5_ and _1.35.6_ releases (and their predecessing release candidates) and ran tests on branch with the _UTxO-HD_ functionality.\\n\\n## Workstreams\\n\\n### Framework improvements:\\n- improvements in searching for unexpected error messages in log files during test run\\n- added support for UTxO-HD testing\\n- added support for the new P2P topology format\\n- added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)\\n- added preliminary support for the Conway era\\n- added support for running tests on the _Preview_ testnet\\n\\n[Full list of closed PRs](https://github.com/input-output-hk/cardano-node-tests/pulls?q=is%3Apr+is%3Aclosed+updated%3A2023-01-13..2023-03-26)\\n\\n### Node:\\n- ran tests on node branch with the UTxO-HD functionality\\n- tested the [1.35.5](https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_5.html) release\\n- tested the [1.35.6](https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_6.html) release\\n\\n### DB-Sync:\\n- improvements in db-sync sync tests\\n- improvements in db-sync functional tests"},{"id":"2023-03-24-hydra","metadata":{"permalink":"/cardano-updates/2023-03-24-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-24-hydra.md","source":"@site/blog/2023-03-24-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-03-24T00:00:00.000Z","formattedDate":"March 24, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.95,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-03-24-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2023-03-27-system-test"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-03-23-db-sync"}},"content":"## High-level summary\\n\\nThis week, the Hydra had a team workshop and conducted the monthly review\\nmeeting for March. They demonstrated a Hydra Head on mainnet, which was running\\nthe hydraw demo application. While this marks an important milestone, they also\\nemphasized that more features are still to be added as needed for applications\\nto run on Hydra. Besides this, the roadmap is getting cleaned up to encourage\\ndiscussions and provide more space for user requests.\\n\\n## What did the team achieve this week\\n\\n- Monthly review meeting [slides](https://docs.google.com/presentation/d/1yZ4AqUQ8OBMG9ARMYvj3IOjaIAqglf7kZei4vsLMrbs/edit#slide=id.g1f87a7454a5_0_1392)/[recording](https://drive.google.com/file/d/1krzM8VN-gpKTtpVdC2JQx-lGti-4gKQS/view?ts=641b3c1c), full report of March next week\\n - Opened a head on mainnet with hydraw demonstration\\n - Hydra pay updates\\n- Team workshop in Austria\\n - Hydra presentation at the Cardano Foundation in Zurich\\n - In-person grooming session, marked many items as candidates to be rather :idea: dicussions\\n - Improved head protocol [#786](https://github.com/input-output-hk/hydra/pull/786) and investigated a potential bug in rollback handling [#784](https://github.com/input-output-hk/hydra/issues/784)\\n - Team building and retrospective\\n\\n## What are the goals of next week\\n\\n- Follow-up on backlog and roadmap clean-up\\n- Complete mainnet compatibility feature (documentation updates)\\n- Make API more configurable [#380](https://github.com/input-output-hk/hydra/issues/380)\\n- Integrate Hydra specification into repository [#693](https://github.com/input-output-hk/hydra/issues/693)"},{"id":"2023-03-23-db-sync","metadata":{"permalink":"/cardano-updates/2023-03-23-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-23-db-sync.md","source":"@site/blog/2023-03-23-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-03-23T00:00:00.000Z","formattedDate":"March 23, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.755,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-03-23-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-24-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-03-23-mithril"}},"content":"## High level summary\\n\\nThe DBSync team worked in performance enhancements issues, on providing new db-sync options and on\\ntechnical debt and bug fixing. The DBSync team also on boarded a new member.\\n\\n## Low level summary\\n- Worked on an issue which causes `ada_pots` tables to include the values related not only to an\\nepoch, but also the first epoch of the last epoch.\\n[#1367](https://github.com/input-output-hk/cardano-db-sync/pull/1367)\\n- Fixed an issue where the `epoch` table didn\'t rollback and caused wrong values\\n[#1370](https://github.com/input-output-hk/cardano-db-sync/pull/1370)\\n- Fixed an issue were users with `disable-ledger` option had to provide the state dir option, even\\nthough it was never used. Also refactored the no ledger part of the codebase.\\n[#1378](https://github.com/input-output-hk/cardano-db-sync/pull/1378)\\n- Improved the perforance by using the cache more. Also provided many new options which enables or\\ndisables parts of db-sync. In addition a new `--turbo` mode is enables which allows db-sync to sync\\nmainnet in hours.\\n[#1379](https://github.com/input-output-hk/cardano-db-sync/pull/1379)"},{"id":"2023-03-23-mithril","metadata":{"permalink":"/cardano-updates/2023-03-23-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-23-mithril.md","source":"@site/blog/2023-03-23-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-03-23T00:00:00.000Z","formattedDate":"March 23, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.615,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-03-23-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-03-23-db-sync"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-03-22-consensus"}},"content":"## High level overview\\nThe Mithril team released a new [`2310.0`](https://github.com/input-output-hk/mithril/releases/tag/2310.0) distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images.\\n\\nFinally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano `mainnet` and they have fixed some bugs. \\n\\n## Low level overview\\n- Completed the epic that implements eras behavior switch [#707](https://github.com/input-output-hk/mithril/issues/707):\\n - Completed handling the API version switch at era transition [#727](https://github.com/input-output-hk/mithril/issues/727)\\n- Worked on the epic that implements a relational store in the aggregator [#779](https://github.com/input-output-hk/mithril/issues/779):\\n - Completed on the migration/adaptation of the `stake_pool` table [#787](https://github.com/input-output-hk/mithril/issues/787)\\n - Worked on the migration/adaptation of the `epoch_settings` table [#813](https://github.com/input-output-hk/mithril/issues/813)\\n - Worked on the migration/adaptation of the `signed-entity-type` table [#815](https://github.com/input-output-hk/mithril/issues/815)\\n - Completed the creation of a stake distribution service [#799](https://github.com/input-output-hk/mithril/issues/799)\\n- Completed the testing of Mithril with Cardano `mainnet` network [#777](https://github.com/input-output-hk/mithril/issues/777)\\n- Completed qualifying the computation of the stake distribution [#810](https://github.com/input-output-hk/mithril/issues/810)\\n- Completed the testing of the Docker client in the `Mithril Client multi-platform test` workflow [#794](https://github.com/input-output-hk/mithril/issues/794)\\n- Worked on bugs and optimizations:\\n - Fixed a bug that made computation of the stake distribution occur multiple times during an epoch [#804](https://github.com/input-output-hk/mithril/issues/804)\\n - Fixed a bug that created deadlocks on the SQLite connection [#807](https://github.com/input-output-hk/mithril/issues/807)\\n - Optimized the error message and the behavior of the signer node when KES keys have expired [#820](https://github.com/input-output-hk/mithril/issues/820)\\n - Upgraded the infrastructure of the `testing-preview` and `pre-release-preview` networks [#801](https://github.com/input-output-hk/mithril/issues/801)\\n - Re-genesis of the `testing-preview` network [#803](https://github.com/input-output-hk/mithril/issues/803)\\n - Re-genesis of the `pre-release-preview` network [#818](https://github.com/input-output-hk/mithril/issues/818)"},{"id":"2023-03-22-consensus","metadata":{"permalink":"/cardano-updates/2023-03-22-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-consensus.md","source":"@site/blog/2023-03-22-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-03-22T00:00:00.000Z","formattedDate":"March 22, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":0.63,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-03-22-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-03-23-mithril"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-03-22-node-cli-api"}},"content":"## High level summary\\n\\nThis week the consensus team continued working on the refactoring of the UTxO HD\\nprototype, and design and testing of Genesis. We also extracted the `fs-sim`\\npackage, which provides a file-system abstraction layer that can be used for\\ntesting and simulation. This makes the Consensus code base smaller, while\\nproviding a package that the community can reuse and contribute to. We also\\nfixed a failing property test related to iterators. We are also working on\\nmempool and VRF improvements.\\n\\n\\n## Low-level details\\n\\n- Extraction of `fs-sim` code from `ouroboros-network`:\\n - https://github.com/input-output-hk/ouroboros-network/pull/4425\\n - https://github.com/input-output-hk/fs-sim/pull/1\\n - https://github.com/input-output-hk/fs-sim/pull/2\\n - https://github.com/input-output-hk/ouroboros-network/pull/4460\\n- Smaller changes in `fs-sim` code (some required by `UTxO-HD`):\\n - https://github.com/input-output-hk/fs-sim/pull/5\\n - https://github.com/input-output-hk/fs-sim/pull/6\\n - https://github.com/input-output-hk/fs-sim/pull/7\\n - https://github.com/input-output-hk/fs-sim/pull/8\\n- Released cardano-lmdb-simple-0.6.0.0\\n - https://github.com/input-output-hk/lmdb-simple/pull/20\\n - https://github.com/input-output-hk/cardano-haskell-packages/pull/150"},{"id":"2023-03-22-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-03-22-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-node-cli-api.md","source":"@site/blog/2023-03-22-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-03-22T00:00:00.000Z","formattedDate":"March 22, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":0.645,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-03-22-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-03-22-consensus"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-03-22-performance-and-tracing"}},"content":"# 2023-03-22 - 2023-04-05\\n\\n## High level summary\\n\\n- Added new cardano-cli ping command which allows users to ping remote cardano-nodes.\\n- The `transaction build` command now can automatically balance multiassets\\n- New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.\\n\\n### docs\\n\\n### CI & project maintenance\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Remove unused error constructors](https://github.com/input-output-hk/cardano-node/pull/5041) \\n- [Fix qKesKesKeyExpiry to not always be null](https://github.com/input-output-hk/cardano-node/pull/4909) \\n- [New cardano-cli ping command.](https://github.com/input-output-hk/cardano-node/pull/4664) \\n\\n### cardano-api\\n- [Remove use of AcquireFailure type](https://github.com/input-output-hk/cardano-node/pull/5040) \\n- [Simplify implementation of executeQueryAnyMode](https://github.com/input-output-hk/cardano-node/pull/5038) \\n- [Script data serialisation](https://github.com/input-output-hk/cardano-node/pull/5002) \\n- [Guard against overflows in Shelley TxIns](https://github.com/input-output-hk/cardano-node/pull/4956) \\n- [Combinators for TxBodyContent and related types](https://github.com/input-output-hk/cardano-node/pull/4941) \\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450) \\n\\n### cardano-node\\n\\n### cardano-testnet\\n- [Use Haskell variables for passing values.](https://github.com/input-output-hk/cardano-node/pull/5011) \\n- [Re-enable kes-period-info test.](https://github.com/input-output-hk/cardano-node/pull/4879)"},{"id":"2023-03-22-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-03-22-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-performance-and-tracing.md","source":"@site/blog/2023-03-22-performance-and-tracing.md","title":"Performance & tracing update","description":"* Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.","date":"2023-03-22T00:00:00.000Z","formattedDate":"March 22, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.5,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-03-22-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-03-22-node-cli-api"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-03-21-network"}},"content":"* Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.\\n* New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we\'re currently improving documentation and creating setup guidelines for end users.\\n* Analysis pipeline: Our refined metrics PR has been merged. We\'re working on including variance analysis to our reporting machinery.\\n* Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we\'re laying the groundwork for enabling GHC 9.2 in our benchmarks.\\n* Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing.\\n* Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.\\n\\n# Performance\\n\\n### New tracing\\nThe new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe\\na slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use.\\n\\n### GHC RTS parametrization\\nWe\'re currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies\\non different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use.\\n\\n### Open Sourcing\\nOur API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we\'re refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases.\\n\\n# Tracing\\nFor the new tracing system we\'re currently undertaking an effort to multi-layered documentation: a condensed version, as well\\nas a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points\\nfor users of the new system, depending on their wants and needs. \\n\\n# Infrastructure & Analysis\\n\\n### General\\nHaving included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we\'re laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will\\nincrease confidence in specific metrics.\\n\\n### Nomad backend\\nWe have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis\\nis patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We\'re confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries."},{"id":"2023-03-21-network","metadata":{"permalink":"/cardano-updates/2023-03-21-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-21-network.md","source":"@site/blog/2023-03-21-network.md","title":"Network Team Update","description":"High level summary","date":"2023-03-21T00:00:00.000Z","formattedDate":"March 21, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.315,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-03-21-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-03-22-performance-and-tracing"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-03-17-crypto"}},"content":"## High level summary\\n\\nIn the last spring we released `cardano-node-1.35.6` with dynamic P2P\\nfunctionality.\\n\\nWe received reports from some SPOs who encountered problems with their non\\nP2P block producing nodes not being able to connect to their P2P relay. Karl\\nKnutsson (from Cardano Foundation) reproduced this issue between two nodes (a\\nnon P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed\\nit and found a bug in the legacy non p2p code. The bug is only possible to\\ntrigger with a P2P node which is binding its outbound connection port to\\na fixed IP address and port (default in p2p). A possible solution was found.\\nFor more information see [#4465].\\n\\nWe released `cardano-ping-0.1.0.0` package to `CHaP`. `cardano-ping` is no\\nlonger available as a standalone binary, but instead it will become part of\\n`cardano-cli` (see [#4664])\\n\\nWe are testing `cardano-node` with peer sharing functionality ([#4019]).\\n\\nWe are working on _eclipse evasion_. We added new class of peers: big ledger\\npeers to the outbound governor, implemented tests and fixed found issues\\n([#4462]). We also made the information if a given peer plays the role of\\na big ledger peer to the mini-protocols. This will allow to modify\\nmini-protocol applications for such peers. As part of this functionality we\\nrefactored some core types in the network code which simplifies exposed API.\\n\\nTogether with Moritz Angerman we started to update `io-sim` to `ghc-9.6.1` (see\\n[#73]).\\n\\nWe merged a fix of configuration of accepted connections limit in\\n`cardano-node` (see [#4902]).\\n\\n\\n[#4019]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[#4462]: https://github.com/input-output-hk/ouroboros-network/pull/4462\\n[#4465]: https://github.com/input-output-hk/ouroboros-network/issues/4465\\n[#4664]: https://github.com/input-output-hk/cardano-node/pull/4664\\n[#73]: https://github.com/input-output-hk/io-sim/pull/73\\n[#4902]: https://github.com/input-output-hk/cardano-node/pull/4902"},{"id":"2023-03-17-crypto","metadata":{"permalink":"/cardano-updates/2023-03-17-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-crypto.md","source":"@site/blog/2023-03-17-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-03-17T00:00:00.000Z","formattedDate":"March 17, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.255,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-03-17-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-03-21-network"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-17-hydra"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Mithril: RFP finished. Code ready for audit.\\n* cardano-base: BLS12-381\'s PR approved, only blocker is Windows\' CI. Preparing extensive testing strategy together with Plutus and Testing teams.\\n* KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing.\\n* Sidechains: Preparing proving system to use the curves needed for main-net PoC. \\n## Low level summary\\n### Mithril\\n* Merged [PR#783](https://github.com/input-output-hk/mithril/pull/783)\\n* RFP for crypto audit ready.\\n### cardano-base\\n* BLS12-381 branch approved [PR#266](https://github.com/input-output-hk/cardano-base/pull/266). Blocker is Windown\'s CI. Working on it\\n* Testing strategy for BLS bindings:\\n * Preparing test-vectors for Groth16, and simple BLS signatures\\n * Finding community projects to help write their use cases\\n * Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)\\n* Wrote [blogpost](https://github.com/input-output-hk/blogpost_breaking_ed25519_vrf/blob/main/blog.md) on how using the same key for ed25519 and VRF completely breaks the security of both systems \\n### KES agent\\n* Started integration of sockets interface used in consensus\\n* Use that for de/ser\\n* Resolving problems with block memory in IOSim. Can\'t use withForeignPtr in IOSim\\n* Results in having to parametrise for IOSim in KES and DSIGN for testing\\n### Sidechains\\n* Prepared an API for proof generation in sidechains, with it\'s C API for integration with JVM languages.\\n* Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS.\\n* EdDSA over JubJub ready"},{"id":"2023-03-17-hydra","metadata":{"permalink":"/cardano-updates/2023-03-17-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-hydra.md","source":"@site/blog/2023-03-17-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-03-17T00:00:00.000Z","formattedDate":"March 17, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.015,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-03-17-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-03-17-crypto"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-03-17-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team has continued work on the mainnet compatibility of the\\nhydra-node. They added a golden test suite for `hydra-plutus` scripts, added\\nsome detection of `hydra-node` misconfiguration, established a limit of 100 ADA\\nper commit and other smaller tasks to prepare for a mainnet beta release.\\n\\nNext week there will be a small team workshop to push for demonstrating a Hydra\\nHead on the Cardano mainnet, ideally just in time for the monthly review\\nmeeting. See the hydra channels on the IOG Technical Community discord server\\nfor details.\\n\\n## What did the team achieve this week\\n\\n- Implement a 100 ADA hard-coded commit limit in the hydra-node\\n [#763](https://github.com/input-output-hk/hydra/pull/763)\\n- Pay back funds to faucet after smoke-test run\\n [#773](https://github.com/input-output-hk/hydra/pull/773)\\n- Setup custom github runner for smoke-tests on mainnet\\n [#775](https://github.com/input-output-hk/hydra/pull/775)\\n- Created golden tests to assure the script hash stays the same between\\n changes [#772](https://github.com/input-output-hk/hydra/pull/772)\\n- Removed hardcoded error codes in plutus scripts\\n [#768](https://github.com/input-output-hk/hydra/pull/768)\\n- Detect misconfiguration of a hydra-node given persistent state\\n [#767](https://github.com/input-output-hk/hydra/pull/767)\\n- Met with potential users for hydra-pay\\n- Prepared hydra workshop\\n\\n## What are the goals of next week\\n\\n- Hydra monthly meeting\\n- Open a multi-party head on mainnet\\n- Complete mainnet compatibility feature"},{"id":"2023-03-17-ledger","metadata":{"permalink":"/cardano-updates/2023-03-17-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-ledger.md","source":"@site/blog/2023-03-17-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-03-17T00:00:00.000Z","formattedDate":"March 17, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.415,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-03-17-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-17-hydra"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-03-16-goedel"}},"content":"## High level summary\\n\\nWe made further progress on the conway ledger era.\\nIn particular, we expanded the ledger API significantly, including lots of governance features.\\nWe also made progress on the specification and corresponding work in the Haskell implementation.\\n\\nWe also continued to integrate the latest ledger packages into cardano node and addressed\\ntechnical debt.\\n\\n## Low level summary\\n\\n### Expanded ledger API\\n\\nThe ledger API was significantly expanded to include:\\n* a lot of protocol parameter support\\n* versioning support (type level ledger eras and protocol versions)\\n* auxiliary data support\\n* many new lenses\\n* support for witnesses\\n* support for conway governance\\n\\nSee [pull-3328].\\n\\n### Conway ledger rules\\n\\nWe have made progress on the formal ledger specification for the Conway era.\\nMoreover, the corresponding Haskell updates were also completed:\\n\\n* See [pull-3339]\\n* See [pull-3326]\\n* See [pull-3330]\\n\\n### Incremental SPO/DRep stake distribution computation\\n\\nWe have a working (and correct) proof of concept for how to use the incremental lambda calculus\\nto maintain several of the stake distributions incrementally.\\nFor the per-SPO distribution, this is a performance improvement.\\nFor the (conway) per-DRep distribution, this is will allow those who have delegated their votes\\nto a DRep to have time to react to any votes that they disapprove of.\\n(Sorry, no code to share just yet, more to come.)\\n\\n### Technical debt\\n\\n* Improved CBOR testing facilities [pull-3332]\\n* GitHub actions improvement [pull-3320]\\n* Move ToJSON orphans from cardano-node [pull-3323] [pull-3338]\\n* Minor OCert improvements [pull-3327]\\n* Remove duplication [pull-3341]\\n* Enforce unique elements in CBOR sets [pull-3331] \\n\\n[pull-3320]: https://github.com/input-output-hk/cardano-ledger/pull/3320\\n[pull-3323]: https://github.com/input-output-hk/cardano-ledger/pull/3323\\n[pull-3326]: https://github.com/input-output-hk/cardano-ledger/pull/3326\\n[pull-3327]: https://github.com/input-output-hk/cardano-ledger/pull/3327\\n[pull-3328]: https://github.com/input-output-hk/cardano-ledger/pull/3328\\n[pull-3330]: https://github.com/input-output-hk/cardano-ledger/pull/3330\\n[pull-3331]: https://github.com/input-output-hk/cardano-ledger/pull/3331\\n[pull-3332]: https://github.com/input-output-hk/cardano-ledger/pull/3332\\n[pull-3338]: https://github.com/input-output-hk/cardano-ledger/pull/3338\\n[pull-3339]: https://github.com/input-output-hk/cardano-ledger/pull/3339\\n[pull-3341]: https://github.com/input-output-hk/cardano-ledger/pull/3341"},{"id":"2023-03-16-goedel","metadata":{"permalink":"/cardano-updates/2023-03-16-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-16-goedel.md","source":"@site/blog/2023-03-16-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-03-16T00:00:00.000Z","formattedDate":"March 16, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.55,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-03-16-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-03-17-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-10-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has been working on drafts of two papers\\nimproving the deltaQ tutorial, consulting on performance design, and\\nthe final version of the Djed paper.\\n\\n## Details\\n\\n* Preparing draft of DeltaQSD algebra paper for ICE 2023\\n\\n* Successful outcome of Marlowe consultancy leading to substantial\\n improvement in performance\\n\\n* Preparing sections on the communication language and bisimulation\\n proofs for draft paper about verifying design refinements for\\n distributed system design\\n\\n* Camera ready version of Djed paper under preparation"},{"id":"2023-03-10-hydra","metadata":{"permalink":"/cardano-updates/2023-03-10-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-10-hydra.md","source":"@site/blog/2023-03-10-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-03-10T00:00:00.000Z","formattedDate":"March 10, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.825,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-03-10-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-03-16-goedel"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-03-09-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team addressed issues with committing complex UTxOs into a\\nHydra Head, prepared the `hydra-node` to be run on mainnet (soon) and improved\\nthe test suite of the `hydra-plutus` scripts. The specification is constantly\\ngetting improved upon reviewer feedback on overleaf - this week the graphical\\nnotation was refined to be more transaction-focused.\\n\\n## What did the team achieve this week\\n\\n- Clarified “bug” of committing UTxOs with reference scripts to a Hydra head [#737](https://github.com/input-output-hk/hydra/issues/737)\\n- Prepare usage of `hydra-node` on mainnet by updating command line options [#715](https://github.com/input-output-hk/hydra/pull/715)\\n- Improved our mutation test suite to all expected errors [#705](https://github.com/input-output-hk/hydra/issues/705)\\n- Re-opened our persistent hydraw demo head on `preprod` using version `0.9.0`\\n- Updated on-chain graphs to be more transaction-focused in the specification\\n\\n## What are the goals of next week\\n\\n- Complete mainnet compatibility feature\\n- Prepare the Hydra workshop\\n- Address all todo\u2019s in the Hydra specification\\n- Unblock the auctions project with “commit from script” a solution"},{"id":"2023-03-09-mithril","metadata":{"permalink":"/cardano-updates/2023-03-09-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-09-mithril.md","source":"@site/blog/2023-03-09-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-03-09T00:00:00.000Z","formattedDate":"March 9, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.42,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-03-09-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-10-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-03-08-consensus"}},"content":"## High level overview\\nThe Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano `mainnet` and computes the stake distribution with the optimized unreleased Cardano CLI command.\\n\\nFinally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup.\\n\\n## Low level overview\\n- Worked on the epic that implements eras behavior switch [#707](https://github.com/input-output-hk/mithril/issues/707):\\n - Completed the deployment of the era behavior switch to the test networks [#752](https://github.com/input-output-hk/mithril/issues/752)\\n - Completed the enhancement of datum generation for era markers [#786](https://github.com/input-output-hk/mithril/issues/786)\\n - Worked on handling the API version with an era switch [#727](https://github.com/input-output-hk/mithril/issues/727)\\n- Worked on the epic that implements a relational store in the aggregator [#779](https://github.com/input-output-hk/mithril/issues/779):\\n - Worked on the migration/adaptation of the `stake_pool` table [#787](https://github.com/input-output-hk/mithril/issues/787)\\n- Completed the refactoring of errors in the signer and aggregator state machines [#665](https://github.com/input-output-hk/mithril/issues/665)\\n- Worked on testing Mithril with a `mainnet` Cardano network [#777](https://github.com/input-output-hk/mithril/issues/777)\\n- Worked on fixing bugs with the Docker client image:\\n - Fixed a bug that made the Docker client container crash at startup [#769](https://github.com/input-output-hk/mithril/issues/769)\\n - Fixed a bug that prevented the restoration of a snapshot with a Docker client [#791](https://github.com/input-output-hk/mithril/issues/791)\\n - Worked on testing the Docker client in the `Mithril Client multi-platform test` workflow [#794](https://github.com/input-output-hk/mithril/issues/794)"},{"id":"2023-03-08-consensus","metadata":{"permalink":"/cardano-updates/2023-03-08-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-consensus.md","source":"@site/blog/2023-03-08-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-03-08T00:00:00.000Z","formattedDate":"March 8, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":2.46,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-03-08-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-03-09-mithril"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-03-08-node-cli-api"}},"content":"## High level summary\\n\\nThe Consensus team continued working on refactoring and improving the UTxO-HD\\nprototype, and introducing improvements to the `lmdb` related packages. In\\nparticular we identified an opportunity to gain performance by handling locks in\\na more optimal way.\\n\\nOn the Genesis front, we sketched a mitigation for an issue that `PNSol` and\\nResearchers caught. We also came op with a road map for not only testing the\\nGenesis prototypes, but also for enriching the tests we already have.\\n\\nRegarding technical debt, next to some minor improvements, we created\\ncomponent-level micro-benchmarks for adding transactions to the mempool. The\\nresults of these benchmarks will be published in the `ouroboros-consensus` [web\\npage][oc-web-page].\\n\\nWe also finished moving the Consensus documentation to the `ouroboros-consensus`\\nrepository, released `ouroboros-consensus` `0.3.0.0`, and reduced the time\\nGitHub actions take in `ouroboros-network`.\\n\\n## Workstreams\\n\\n### UTxO HD Prototype\\n\\nWe continued working on refactoring and improving the UTxO-HD prototype. As a\\nresult of the first round of sytem-level benchmarks, we identified an\\nopportunity to optimise the way we handle locks to improve performance\\n([#4393][issue-4393]).\\n\\nAlso, we introduced several improvements to the `lmdb` related packages:\\n- [New tests][pull-19] for read-only transaction handles.\\n- [New functions][pull-18] and [data types][pull-13].\\n- [Updates][pull-11] to support improved type safety and smaller constraints in\\n the UTxO HD prototype.\\n- Windows and MacOS [CI support][pull-8].\\n\\n### Genesis\\n\\nWe sketched out a mitigation of the issue that `PNSol` and Researchers caught in\\nthe Genesis design.\\n\\nWe came up with a road map for testing the Genesis prototypes, including early\\nmilestones that are applicable to today\'s master branch, ie tests that are\\nuseful before Genesis, and that will be nicely enriched when we do add Genesis.\\n\\nWe developed the aforementioned tests, specifically a `QuickCheck` generator for\\nthe Honest leader schedule and one as-aggressive-as-possible Adversarial\\nleader schedule that together satisfy the Praos properties that the Consensus\\ndesign takes as invariants.\\n\\nWe investigated why the improved `ChainDB` queueing implementation behaves\\ndifferently in the baseline compared to the prototype, and we are close to\\nhaving a full picture of how the Consensus components interact during bulk sync.\\n\\n### Technical debt\\n\\nWe [created][pull-4400] component-level micro-benchmarks for adding transactions\\nto the mempool. We plan on extending this to more mempool actions and different\\ntypes of blocks. We [store][pull-4422] the benchmark data to make it available\\nto the GitHub action that [publishes][pull-12] the benchmarks results.\\n\\nOther minor improvements include:\\n\\n- [Removal][pull-4429] of `Test.Util.Classify` in favour of `Test.StateMachine.Labelling`.\\n- [Addition][pull-4423] of `-Wunused-packages` to the default `ghc-options` for Consensus\\n packages.\\n\\n### Fostering collaboration\\n\\nWe finished moving the Consensus documentation [from][pull-4374]\\n`ouroboros-network` [to][pull-8] `ouroboros-consensus`, in preparation for\\nmigrating the code to the latter repository.\\n\\n### Support\\n\\nWe [released][pull-4412] ouroboros-consensus 0.3.0.0.\\n\\nWe [reduced][pull-4421] the load in the `ouroboros-network` GitHub actions,\\nthereby reducing the time CI jobs take.\\n\\n[issue-4393]: https://github.com/input-output-hk/ouroboros-network/issues/4393\\n[pull-19]: https://github.com/input-output-hk/lmdb-simple/pull/19\\n[pull-18]: https://github.com/input-output-hk/lmdb-simple/pull/18\\n[pull-13]: https://github.com/input-output-hk/lmdb-simple/pull/13\\n[pull-11]: https://github.com/input-output-hk/lmdb-simple/pull/11\\n[pull-8]: https://github.com/input-output-hk/haskell-lmdb/pull/8\\n[pull-4400]: https://github.com/input-output-hk/ouroboros-network/pull/4400\\n[pull-4422]: https://github.com/input-output-hk/ouroboros-network/pull/4422\\n[pull-12]: https://github.com/input-output-hk/ouroboros-consensus/pull/12\\n[pull-4429]: https://github.com/input-output-hk/ouroboros-network/pull/4429\\n[pull-4423]: https://github.com/input-output-hk/ouroboros-network/pull/4423\\n[pull-4374]: https://github.com/input-output-hk/ouroboros-network/pull/4374\\n[pull-8]: https://github.com/input-output-hk/ouroboros-consensus/pull/8\\n[pull-4412]: https://github.com/input-output-hk/ouroboros-network/pull/4412\\n[pull-4421]: https://github.com/input-output-hk/ouroboros-network/pull/4421\\n[oc-web-page]: https://input-output-hk.github.io/ouroboros-consensus/"},{"id":"2023-03-08-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-03-08-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-node-cli-api.md","source":"@site/blog/2023-03-08-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-03-08T00:00:00.000Z","formattedDate":"March 8, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":0.795,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-03-08-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-03-08-consensus"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-03-08-performance-and-tracing"}},"content":"# 2023-03-08 - 2023-03-21\\n\\n## High level summary\\n\\nGeneral bug fixes and some refactoring \\n## Completed\\n\\n### docs\\n\\n### CI & project maintenance\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Remove error calls in Cardano.CLI.Shelley.Run.Transaction](https://github.com/input-output-hk/cardano-node/pull/4958) \\n- [Detect invalid counter and certificate](https://github.com/input-output-hk/cardano-node/pull/4880) \\n\\n### cardano-api\\n- [Add missing imports](https://github.com/input-output-hk/cardano-node/pull/5003) \\n- [Add LedgerStateBabbage and LedgerStateConway pattern synonyms](https://github.com/input-output-hk/cardano-node/pull/5001) \\n- [Remove unnecessary functions](https://github.com/input-output-hk/cardano-node/pull/4967) \\n- [Remove duplicate scripts when building transaction body for Mary, Alonzo and Babbage](https://github.com/input-output-hk/cardano-node/pull/4953) \\n- [Reduce number of calls to toLedgerPParams](https://github.com/input-output-hk/cardano-node/pull/4903) \\n- [Remove simple script distinction](https://github.com/input-output-hk/cardano-node/pull/4763) \\n- [Add ToJSON/FromJSON instances for ChainPoint](https://github.com/input-output-hk/cardano-node/pull/4686) \\n- [Derive Eq instance for AcquiringFailure](https://github.com/input-output-hk/cardano-node/pull/4683) \\n- [Export `fromShelleyBasedScript` from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4682) \\n- [Remove unnecessary validation of Data](https://github.com/input-output-hk/cardano-node/pull/4344) \\n- [Remove hint of \\"string\\" support for ScriptData](https://github.com/input-output-hk/cardano-node/pull/3775) \\n\\n### cardano-node\\n- [Conway hard forks on prot-ver 9](https://github.com/input-output-hk/cardano-node/pull/4988) \\n- [Reinstate -Werror for cardano-node and fix errors](https://github.com/input-output-hk/cardano-node/pull/4968) \\n- [Take all dependencies from Hackage or CHaP](https://github.com/input-output-hk/cardano-node/pull/4921) \\n- [Less verbose node-to-client and node-to-node version logging](https://github.com/input-output-hk/cardano-node/pull/4911) \\n- [Get AcceptedConnectionsLimit from the configuration](https://github.com/input-output-hk/cardano-node/pull/4902) \\n\\n### cardano-testnet\\n- [fix cardano-testnet Babbage genesis.json](https://github.com/input-output-hk/cardano-node/pull/4729)"},{"id":"2023-03-08-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-03-08-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-performance-and-tracing.md","source":"@site/blog/2023-03-08-performance-and-tracing.md","title":"Performance & tracing update","description":"* Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.","date":"2023-03-08T00:00:00.000Z","formattedDate":"March 8, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.805,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-03-08-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-03-08-node-cli-api"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-03-03-crypto"}},"content":"* Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.\\n* New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.\\n* Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.\\n* Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.\\n* Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.\\n\\n\\n# Performance\\n\\n### 1.35.6 release\\nBenchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.\\n\\n### Analysis pipeline\\nOur analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better\\ndifferentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance.\\nAdditionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking\\ndata more easily accessible.\\n\\n### Open Sourcing\\nAs a prerequisite for going live with our benchmarking data, we\'re currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we\'ve begun working on a small visualization demo and interactive API documentation. Those will enable \\nthird parties to make use of that data much more easily, by having reliable guidelines and a working example.\\n\\n# Tracing\\nThe new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make\\nthe switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.\\n\\n# Infrastructure\\n\\n### Nomad backend\\nThe Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented."},{"id":"2023-03-03-crypto","metadata":{"permalink":"/cardano-updates/2023-03-03-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-crypto.md","source":"@site/blog/2023-03-03-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-03-03T00:00:00.000Z","formattedDate":"March 3, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.155,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-03-03-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-03-08-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-03-03-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.\\n* cardano-base: BLS branch is now ready for review. We are workign forward its merge. \\n* KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.\\n* Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs\\n## Low level summary\\n### Mithril\\n* Bumped to version [0.2.0](https://crates.io/crates/kes-summed-ed25519/0.2.0) the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using `mlock`.\\n* Opened [PR#783](https://github.com/input-output-hk/mithril/pull/783) to update dependency\\n* Improved testing for batch opening of mtree, [PR#773](https://github.com/input-output-hk/mithril/pull/773)\\n* Improved testing for batch verification of STM sigs [PR#774](https://github.com/input-output-hk/mithril/pull/774)\\n* RFP for crypto audit almost ready.\\n### cardano-base\\n* BLS12-381 branch finally ready for review [PR#266](https://github.com/input-output-hk/cardano-base/pull/266)\\n### KES agent\\nTeam off for one week. Other progress:\\n- Learning about raw direct-bearer abstraction. An interface for sockets in consensus.\\n- use that for direct ser/deser\\n- written those syntaxes for ouroboros (coming PR)\\n- the kes agent will depend on that. \\t\\n### Sidechains\\nProgress with familiarisation of Halo2 library to write circuits."},{"id":"2023-03-03-goedel","metadata":{"permalink":"/cardano-updates/2023-03-03-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-goedel.md","source":"@site/blog/2023-03-03-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-03-03T00:00:00.000Z","formattedDate":"March 3, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.815,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-03-03-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-03-03-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-03-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has been working on drafts of two papers and one\\ntechnical report, improving the deltaQ tutorial, consulting on\\nperformance design, and the Djed paper has been accepted for\\npublication.\\n\\n## Details\\n\\n* Preparing draft of DeltaQSD algebra paper for FORTE 2023\\n\\n* Extending the technical report on which the above paper is based\\n\\n* Consulting with an external company on performance engineering of Plutus contracts\\n\\n* Planning improvements and collecting material for the deltaQ\\n tutorial based on experience with systems that manage risk at\\n multiple timescales\\n\\n* Preparing sections on the communication language and idempontency\\n laws for draft paper about verifying design refinements for\\n distributed system design\\n\\n* Studying Cardano chain sync protocol\\n\\n* \\"Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin\\n Protocol\\" has been accepted for publication at IEEE ICBC 2023"},{"id":"2023-03-03-hydra","metadata":{"permalink":"/cardano-updates/2023-03-03-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-hydra.md","source":"@site/blog/2023-03-03-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-03-03T00:00:00.000Z","formattedDate":"March 3, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.19,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-03-03-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-03-03-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-03-03-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team released version\\n[0.9.0](https://github.com/input-output-hk/hydra/releases/tag/0.9.0) - a version\\nof the `hydra-node` with fully specified behavior of on-chain scripts and\\noff-chain head-logic, decreased costs for opening/closing a Head and scalable\\ncontestation deadline semantics. Check out the full release notes for details.\\n\\nFurthermore, they published the [monthly\\nreport](https://hydra.family/head-protocol/monthly/2023-03) of the Hydra project\\nand conducted a review meeting with an increasingly wider audience. The team\\nplans to extend invitations through the new Hydra\\n[#announcements](https://discord.gg/Bwdy2jNdm2) discord channel for the next\\nmonths, stay tuned!\\n\\n## What did the team achieve this week\\n\\n- Monthly review meeting with report published [on website](https://hydra.family/head-protocol/monthly/2023-03)\\n- Fixed smoke tests [#726](https://github.com/input-output-hk/hydra/pull/726)\\n- Reduced the cost of opening/closing a Head (error codes [#748](https://github.com/input-output-hk/hydra/pull/748) + head reference script [#701](https://github.com/input-output-hk/hydra/pull/701))\\n- Released version [0.9.0](https://github.com/input-output-hk/hydra/releases/tag/0.9.0)\\n- Conducted a first experiment on mainnet compatibility [#713](https://github.com/input-output-hk/hydra/issues/713)\\n- New discord category with [#announcements](https://discord.gg/Bwdy2jNdm2) channel\\n- Received a demo about the Hydra for Voting project\\n- Lightning talk on mutation-based testing (to be shared)\\n- New [themes view](https://github.com/orgs/input-output-hk/projects/21/views/26) in on our roadmap and some rearranging as we align it with high-level objectives\\n- Clarified things with researchers, but mostly identified action items for them\\n\\n## What are the goals of next week\\n\\n- Redraw transaction graphs and address TODOs specification\\n- Run hydraw with 0.9.0 on preprod\\n- Make smoke tests on mainnet possible\\n- Groom the explorer item\\n- Unblock the auctions projecth with “commit from script” a solution"},{"id":"2023-03-03-ledger","metadata":{"permalink":"/cardano-updates/2023-03-03-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-ledger.md","source":"@site/blog/2023-03-03-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-03-03T00:00:00.000Z","formattedDate":"March 3, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.57,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-03-03-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-03-03-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-03-02-network"}},"content":"## High level summary\\n\\nWe have focused the last two weeks on CIP-1694, integration of the last several months of ledger\\nwork into consensus and node, and testing infrastrutcture that we will use in the conway ledger era.\\n\\n## Low level summary\\n\\n### Conway rules\\n\\nWe made a major update to the conway era so that the implementation is now in sync with the spec\\nwith respect to the ratification and enactment logic.\\n\\nSee the notes in [pull-3291] for more details.\\n\\n### Constraint based generators\\n\\nThis week we hit a major milestone in our efforts to build out better property based testing\\nsupport for the main ledger properties.\\nThe new constraint based generators can now generate full ledger states with what is probably\\nvery close to the real constraints (if anything, it is under constrained).\\nNext we will work on generating a transaction in the context of a ledger state, which would allow\\nus to actually start using these generators for real tests.\\n\\nSee [pull-3219].\\n\\n### Preparing a release, now with proper versioning\\n\\nAfter quite some time, we are ready to release a version of ledger that will work with a new\\nversion of consensus, using CHaPs.\\n\\nSee [pull-3308].\\n\\n### Technical debt\\n\\n* We cleaned up the redeemer serialization code (to prevent future mistakes). See [pull-3269].\\n* We added a note to the Alonzo spec, specifying that the transaction inputs are\\n lexicographically ordered in the Plutus script context. See [pull-3306].\\n* We fixed a problem with the address deserialiazation\\n (we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway).\\n See [pull-3307].\\n* We fixed a problem with our nix build. See [pull-3311].\\n* We fixed a problem with our `NoThunks` tests. See [pull-3310].\\n* We improved our nightly tests. See [pull-3316].\\n\\n[pull-3219]: https://github.com/input-output-hk/cardano-ledger/pull/3219\\n[pull-3269]: https://github.com/input-output-hk/cardano-ledger/pull/3269\\n[pull-3291]: https://github.com/input-output-hk/cardano-ledger/pull/3291\\n[pull-3306]: https://github.com/input-output-hk/cardano-ledger/pull/3306\\n[pull-3307]: https://github.com/input-output-hk/cardano-ledger/pull/3307\\n[pull-3308]: https://github.com/input-output-hk/cardano-ledger/pull/3308\\n[pull-3310]: https://github.com/input-output-hk/cardano-ledger/pull/3310\\n[pull-3311]: https://github.com/input-output-hk/cardano-ledger/pull/3311\\n[pull-3316]: https://github.com/input-output-hk/cardano-ledger/pull/3316"},{"id":"2023-03-02-network","metadata":{"permalink":"/cardano-updates/2023-03-02-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-02-network.md","source":"@site/blog/2023-03-02-network.md","title":"Network Team Update","description":"High level summary","date":"2023-03-02T00:00:00.000Z","formattedDate":"March 2, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.85,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-03-02-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-03-03-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-24-hydra"}},"content":"## High level summary\\n\\nIn the current sprint the networking team focused on fixing bugs and pushing\\nforward implementation of eclipse evasion. We also found a bug in our\\nsimulation testing setup (in integration of test node). We also overviewed the\\nwork on extending handshake protocol which is delivered by Galois Inc.\\n\\nWe published `ouroboros-network-0.4.0.1` and\\n`ouroboros-network-protocols-0.3.0.0` to [CHaP][PR #147].\\n\\nWe also fixed a bug in `cardano-node` which results in not being able to\\nconfigure inbound connection limits, see [PR #4902].\\n\\nTogether with Karl Knutsson (CF) we realised an issue in `cardano-cli`: it\'s\\nvalidation of DNS names, IP address & ports when registering a stake pool\\nshould be more strict to protect against common mistakes which we identified on\\nthe chain. See [issue #4929].\\n\\n## Detailed work log\\n\\nIn [PR #4385] we fixed two bugs in peer state actions. First one results in\\na busy loop if demotion from hot to warm times outs. This busy loop is\\neventually exited when mux exits (we reported this in our previous report).\\nThis fix made it to `1.35.6` release as well.\\n\\nIn addition the [PR #4385] also fixes another bug which results in `hot -> warm\\n-> hot` demotion / promotion busy loop.\\n\\nThe [PR #4385] also fixed a bug in a node only used in simulation which\\nresulted in not using `chain-sync` or `block-fetch` mini-protocols. In the\\nreview process, we realised that the header-body split in the simulated node\\nrequires further work (see [PR #4419], which is under review).\\n\\nThe [PR #4385] also extend our generators, which together with the above fix,\\ncover the `hot -> warm -> hot` demotion / promotion busy loop.\\n\\nIn [PR #4419] we introduce a `ChainDB` for our simulation node, which plays\\nsimilar role to `ChainDB` in the `ouroboros-consensus`: a persistent (across\\nsimulated restarts) store of blocks which does chain selection. This ensures\\nthat the simulated node is using `block-fetch` to download blocks announced by\\n`chain-sync` mini-protocol.\\n\\nWe also made progress with reviewing [PR #4019] - peer sharing.\\n\\nWe also fixed [issue #4370] - a connection manager test failure, see [PR #4384].\\n\\n[PR #147]: https://github.com/input-output-hk/cardano-haskell-packages/pull/147\\n[PR #4019]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[PR #4384]: https://github.com/input-output-hk/ouroboros-network/pull/4384\\n[PR #4385]: https://github.com/input-output-hk/ouroboros-network/pull/4385\\n[PR #4419]: https://github.com/input-output-hk/ouroboros-network/pull/4419\\n[PR #4902]: https://github.com/input-output-hk/cardano-node/pull/4902\\n[issue #4370]: https://github.com/input-output-hk/ouroboros-network/issues/4370\\n[issue #4929]: https://github.com/input-output-hk/cardano-node/issues/4929"},{"id":"2023-02-24-hydra","metadata":{"permalink":"/cardano-updates/2023-02-24-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-24-hydra.md","source":"@site/blog/2023-02-24-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-02-24T00:00:00.000Z","formattedDate":"February 24, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.93,"hasTruncateMarker":false,"authors":[{"name":"Franco Testagrossa","title":"Hydra Software Engineer","url":"https://github.com/ffakenz","imageURL":"https://github.com/ffakenz.png","key":"ffakenz"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-02-24-hydra","authors":"ffakenz","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-03-02-network"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-02-23-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team continue closing many gaps and aligning the\\nimplementation with the specification. More over, they have groomed a plan to\\nmake Hydra Mainnet compatible. Also, they continue moving forward with the\\ninternal auditing and have published some auditing guidelines to receive\\ncontributions from the community.\\n\\n## What did the team achieve this week\\n\\n- Completed [#452](https://github.com/input-output-hk/hydra/issues/452) (what is\\n remaining in there)\\n- Aligned the Head protocol logic implementation with the specification\\n- Completed full minting policy implementation and spec\\n [#720](https://github.com/input-output-hk/hydra/issues/720)\\n- Clarified message authentication with researchers\\n- Groomed what is left to do for Mainnet compatibility\\n [#713](https://github.com/input-output-hk/hydra/issues/713) and drafted a\\n 0.10.0 version\\n- Added a tutorial by [@perturbing](https://github.com/perturbing/) to the\\n website [LINK](https://hydra.family/head-protocol/docs/tutorial/)\\n- Published auditing guidelines\\n [LINK](https://hydra.family/head-protocol/audit-guidelines)\\n- Made hydra-node work for macos\\n [#746](https://github.com/input-output-hk/hydra/issues/746) and added support\\n for building on aarch64\\n [#673](https://github.com/input-output-hk/hydra/issues/673)\\n- Met with a potential customer of Hydra for Payments\\n\\n## What are the goals of next week\\n\\n- Have the monthly review meeting incl. the report\\n- Have smoke tests fixed and running regularly\\n- Release 0.9.0 with updated scripts\\n- Redraw transaction graphs for specification"},{"id":"2023-02-23-mithril","metadata":{"permalink":"/cardano-updates/2023-02-23-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-23-mithril.md","source":"@site/blog/2023-02-23-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-02-23T00:00:00.000Z","formattedDate":"February 23, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.47,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-02-23-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-24-hydra"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-02-23-performance-and-tracing"}},"content":"## High level overview\\nThe Mithril team released a new [`2306.0`](https://github.com/input-output-hk/mithril/releases/tag/2306.0) distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes\u2019 CLI that allows generating and signing an era marker\u2019s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI.\\n\\n## Low level overview\\n- Released the new distribution [`2306.0`](https://github.com/input-output-hk/mithril/releases/tag/2306.0)\\n- Completed the epic that implements signer versions deployment monitoring [#718](https://github.com/input-output-hk/mithril/issues/718):\\n - Completed the implementation an event producer/consumer via channel [#738](https://github.com/input-output-hk/mithril/issues/738)\\n - Completed the creation of a database and its configuration to save the events on the consumer side [#740](https://github.com/input-output-hk/mithril/issues/740)\\n - Completed the creation of events and sending them on the channel on the producer side [#741](https://github.com/input-output-hk/mithril/issues/741)\\n - Completed the creation of the signer registration event [#742](https://github.com/input-output-hk/mithril/issues/742)\\n - Completed the creation a query to extract the node versions stakes distribution [#743](https://github.com/input-output-hk/mithril/issues/743)\\n- Worked on the epic that implements eras behavior switch [#707](https://github.com/input-output-hk/mithril/issues/707):\\n - Completed the loading of era reader adapters from config in the signer and the aggregator [#732](https://github.com/input-output-hk/mithril/issues/732)\\n - Completed the implementation of an era cli command in the aggregator [#755](https://github.com/input-output-hk/mithril/issues/755)\\n - Completed the implementation of a dynamic matrix of cases in CI end to end tests [#760](https://github.com/input-output-hk/mithril/issues/760)\\n- Fixed some bugs:\\n - Fixed the unsupported `unixepoch()` function [#757](https://github.com/input-output-hk/mithril/issues/757)\\n - Fixed the problem that prevented some signers from signing on the `testing-preview` network [#730](https://github.com/input-output-hk/mithril/issues/730)\\n - Update SQLite version to `3.40` in aggregator infrastructure [#765](https://github.com/input-output-hk/mithril/issues/765)"},{"id":"2023-02-23-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-02-23-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-23-performance-and-tracing.md","source":"@site/blog/2023-02-23-performance-and-tracing.md","title":"Performance & tracing update","description":"* SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.","date":"2023-02-23T00:00:00.000Z","formattedDate":"February 23, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.245,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-02-23-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-02-23-mithril"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-02-22-consensus"}},"content":"* SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.\\n* Release benchmarking: we performed a round of benchmarks for the 1.35.6 release.\\n* UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup.\\n* New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities.\\n* Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure.\\n* Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.\\n\\n# Performance\\n\\n### SECP\\n1. For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead.\\n2. The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run.\\n3. The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking. \\n\\n### UTxO-HD\\n1. After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop.\\n2. We\'re currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.\\n\\n### 1.35.6 release\\nBenchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health.\\n\\n# Tracing\\nWork on the new tracing system\'s introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible.\\n\\n# Infrastructure\\n\\n### Nomad backend\\n1. Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients.\\n2. Locality assumptions were removed and job monitoring was refactored.\\n3. To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster.\\n4. We\'re currently evaluating different options for genesis distribution in said cluster.\\n\\n### NixOps backend\\nThe NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery."},{"id":"2023-02-22-consensus","metadata":{"permalink":"/cardano-updates/2023-02-22-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-22-consensus.md","source":"@site/blog/2023-02-22-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-02-22T00:00:00.000Z","formattedDate":"February 22, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":2.45,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-02-22-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-02-23-performance-and-tracing"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-02-22-node-cli-api"}},"content":"## High level summary\\n\\nDuring the past two weeks we got the results from the system level benchmarks\\nfor UTxO HD. They showed a substantial performance regression, so we spent some\\ntime analyzing the results. We found out the frequency at which ledger snapshots\\nwere taken was too high, so we requested the benchmarking team a new run with a\\nmore realistic snapshotting policy. We continued refactoring and improving the\\nprototype, and we released UTxO-HD related packages to CHaP.\\n\\nWe met with IOG researchers and networking specialists to discuss the Genesis\\ndesign, which was well received. We continued working on testing and\\nbenchmarking different Genesis prototypes.\\n\\nWe are also working on solving a test failure related to iterators. This work\\nderived in several improvements such as better documentation, a framework for\\nwriting unit (and regression) tests, and the possibility of debugging\\n`QuickCheck` counter examples in the REPL.\\n\\nFinally, we released `ouroboros-consensus` 0.2.0.0 and\\n`ouroboros-consensus-cardano` 0.3.0.0 to CHaP\\n\\n## Workstreams \\n\\n### UTxO HD Prototype \\n\\nWe got the results of the first system level benchmarks for UTxO HD. They seemed\\nto indicate a significant regression in performance. After looking into the\\nbenchmark logs we found that the benchmark runs took ledger state snapshots too\\noften, due to the default snapshotting policy depending on `k`, and `k` being so\\nsmall in the benchmark runs. Therefore, the next step is to re-run the\\nbenchmarks with a snapshotting policy that more closely resembles the one from\\nmainnet.\\n\\nAt the same time, we continued refactoring and cleaning up the prototype. \\n\\nAlso, we prepared the `anti-diff` packages (`fingertree-rm`, `diff-containers`,\\n`simple-semigroupoids`) and the `lmdb` related packages (`cardano-lmdb` and\\n`cardano-lmdb-simple`) to [CHaP][chap].\\n\\n### Genesis\\n\\nThe Genesis design was presented to the IOG researchers and Peter Thompson from\\nNSol. It was well received. They pointed out one blindspot, but we think it\'ll\\nbe relatively simple to mitigate.\\n\\nIn parallel, we continued developing test and benchmarks for the Genesis\\nprototypes. I particular we tested and implemented a potential fix for\\n[increased ChainDB dequeue timings][increased-dequeue-timings], which partly\\nbehaved as we expected, but still needs further investigation. Also we obtained\\n[new benchmarking data][new-bench-data] for the prototype.\\n\\n### Technical debt\\n\\nRelated to [#4183][pull-4183], we developed a [DSL][pull-4379] for specifying\\n`ChainDB` unit tests. This will allow us to better understand the\\ncounter-examples returned by QuickCheck tests, and to write [regression\\ntests][pull-4383] for them. Also, we [added a module][pull-4358] to enable\\nQuickCheck counter-examples to be run on the REPL, allowing for faster debugging\\nfeedback. Also, we improved the documentation related to followers\\n([#4372][pull-4372]).\\n\\nWe are also working on a design for optimizing the way we handle blocks from the\\nfuture.\\n\\n### Support\\n\\nWe released `ouroboros-consensus` 0.2.0.0 and `ouroboros-consensus-cardano`\\n0.3.0.0 to CHaP. Remember that we decided to split the packages related to\\nConsensus into two bundles, one with the core functionality, Cardano-agnostic\\ncode, and another bundle with instantiations specific to Cardano.\\n\\n[new-bench-data]: https://github.com/input-output-hk/ouroboros-network/issues/4037#issuecomment-1434745031\\n[increased-dequeue-timings]: https://github.com/input-output-hk/ouroboros-network/issues/4037#issuecomment-1439708022\\n[chap]: https://github.com/input-output-hk/cardano-haskell-packages\\n[pull-4358]: https://github.com/input-output-hk/ouroboros-network/pull/4358\\n[pull-4183]: https://github.com/input-output-hk/ouroboros-network/issues/4183\\n[pull-4372]: https://github.com/input-output-hk/ouroboros-network/pull/4372\\n[pull-4379]: https://github.com/input-output-hk/ouroboros-network/pull/4379\\n[pull-4383]: https://github.com/input-output-hk/ouroboros-network/pull/4383"},{"id":"2023-02-22-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-02-22-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-22-node-cli-api.md","source":"@site/blog/2023-02-22-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-02-22T00:00:00.000Z","formattedDate":"February 22, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.385,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-02-22-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-02-22-consensus"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-02-21-db-sync"}},"content":"# 2023-02-22 - 2023-03-07\\n\\n## High level summary\\n\\nGeneral bug fixes \\n\\n## Completed\\n\\n### docs\\n- [Fix some markdown links](https://github.com/input-output-hk/cardano-node/pull/4882)\\n- [Update changelog with PR4788 changes](https://github.com/input-output-hk/cardano-node/pull/4881)\\n\\n### CI & project maintenance\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Fix bug in hash computation in cardano-cli genesis create-cardano](https://github.com/input-output-hk/cardano-node/pull/4761)\\n- [Cleanup exports of cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/4636)\\n- [BUGFIX] - [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Handle pipes in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4625)\\n- [Export SubmitResult from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4753)\\n\\n### cardano-api\\n- [Remove pattern Tx](https://github.com/input-output-hk/cardano-node/pull/4901)\\n\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n\\n### cardano-testnet\\n\\n## In Progress\\n\\n## Documentation\\n- [Fix path to mkfiles.sh script in documentation](https://github.com/input-output-hk/cardano-node/pull/4949)\\n\\n## CI & project mainteance\\n- [New build complete job](https://github.com/input-output-hk/cardano-node/pull/4932)\\n- [Update ouroboros-network](https://github.com/input-output-hk/cardano-node/pull/4764)\\n\\n### cardano-cli\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n- [Render consistent plutus script failure output](https://github.com/input-output-hk/cardano-node/pull/4659)\\n- [Read network ID from environment](https://github.com/input-output-hk/cardano-node/pull/4666)\\n- [CLI option to append additional signatures to a transactions](https://github.com/input-output-hk/cardano-node/pull/4647)\\n- [Cardano ping](https://github.com/input-output-hk/cardano-node/pull/4664)\\n- [Better error message for query utxo on oops](https://github.com/input-output-hk/cardano-node/pull/4777)\\n- [New --node-socket-path cli option](https://github.com/input-output-hk/cardano-node/pull/4910)\\n- [Fix qKesKesKeyExpiry to not always be null](https://github.com/input-output-hk/cardano-node/pull/4909)\\n- [Detect invalid counter and certificate](https://github.com/input-output-hk/cardano-node/pull/4880)\\n- [Straight line code for tx commands](https://github.com/input-output-hk/cardano-node/pull/4823)\\n- [New cardano-cli ping command.](https://github.com/input-output-hk/cardano-node/pull/4664)\\n- [Move cardano-ping from ouroboros-network to cardano-node project](https://github.com/input-output-hk/cardano-node/pull/4655)\\n\\n### cardano-api\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n- [Remove simple script distinction](https://github.com/input-output-hk/cardano-node/pull/4763)\\n- [Combinators for TxBodyCon\u017btent and related types](https://github.com/input-output-hk/cardano-node/pull/4941)\\n- [Reduce number of calls to toLedgerPParams](https://github.com/input-output-hk/cardano-node/pull/4903)\\n- [Better error message for query utxo without oops 2](https://github.com/input-output-hk/cardano-node/pull/4825)\\n\\n### cardano-node\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)\\n- [Less verbose node-to-client and node-to-node version logging](https://github.com/input-output-hk/cardano-node/pull/4911)\\n\\n### cardano-testnet\\n- [Use Haskell variables for passing values](https://github.com/input-output-hk/cardano-node/pull/4845)\\n- [Re-enable kes-period-info test](https://github.com/input-output-hk/cardano-node/pull/4879)\\n- [Transaction debug script command](https://github.com/input-output-hk/cardano-node/pull/3783)"},{"id":"2023-02-21-db-sync","metadata":{"permalink":"/cardano-updates/2023-02-21-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-21-db-sync.md","source":"@site/blog/2023-02-21-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-02-21T00:00:00.000Z","formattedDate":"February 21, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.75,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-02-21-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-02-22-node-cli-api"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-02-17-crypto"}},"content":"## High level summary\\n\\nThe db-sync team created a new tag `13.1.0.2` which is ready to release.\\nWe also investigated and had the first working UTxO-HD integration which is one\\nof the potential future risks for db-sync.\\n\\n## Low level summary\\n\\n- Integrated the UTxO-HD feauture branch in `kderme/utxo-hd-1`. This doesn\'t\\nuse the full on disk storage but keeps things in memory and the plan is to keep\\nit this way for the first iteration. The integration still has some performance\\nissues which we investigate\\n- Created tag `13.1.0.2` which upgrades the dependencies of db-sync\\n- Fixed an issue related to errors appearing in SMASH\\n[#1353](https://github.com/input-output-hk/cardano-db-sync/pull/1353)\\n- Continued with ghc-9.2 integration\\n[#1339](https://github.com/input-output-hk/cardano-db-sync/pull/1339)\\n- Worked on an new fixing procedure for\\n[#1348](https://github.com/input-output-hk/cardano-db-sync/issues/1348).\\nWe try to make these procedures work also on older schema version, without the\\nneed to migrate to newer schema, which can be very useful for fixing existing\\nsnapshots."},{"id":"2023-02-17-crypto","metadata":{"permalink":"/cardano-updates/2023-02-17-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-crypto.md","source":"@site/blog/2023-02-17-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-02-17T00:00:00.000Z","formattedDate":"February 17, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.43,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-02-17-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-02-21-db-sync"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-02-17-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril\'s core library (decided to add audit of KES). Design proposal for viable registration.\\n* cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus.\\n* KES agent: using snockets and making things testable in IOSim\\n* MuSig2: started implementation in rust.\\n\\n## Low level summary\\n\\n### Mithril\\n* Transmute helpers merged [PR#722](https://github.com/input-output-hk/mithril/pull/722)\\n* We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope. \\n* We are working in a modification of KES to require caller to allocate the secret key buffer.\\n* Proposed a solution for signer registration of [Mithril](https://github.com/input-output-hk/mithril/wiki/Mithril-registration-procedure#cost).\\n### cardano-base\\n* Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 [proof](https://github.com/input-output-hk/plutus/tree/kwxm/BLS12_381/prototype/plutus-benchmark/bls-benchmarks).\\n\\t* Results are promising, with using only 23% of the execution budget to verify a realistic proof. \\n\\t* Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril.\\n* KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this.\\n* Conversion finally merged [PR#344](https://github.com/input-output-hk/cardano-base/pull/344).\\n\\n### KES agent\\n* Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation\\n* Figuring out how to go from fake file descriptor to write the raw bytes\\n\\n### MuSig2\\n* Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental."},{"id":"2023-02-17-goedel","metadata":{"permalink":"/cardano-updates/2023-02-17-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-goedel.md","source":"@site/blog/2023-02-17-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-02-17T00:00:00.000Z","formattedDate":"February 17, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.53,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-02-17-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-02-17-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-17-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has been working on drafts of two papers and one\\ntechnical report, distributivity properties of deltaQ, and consulting\\non performance design with the Marlowe team.\\n\\n## Details\\n\\n* Processing reviews on performance engineering paper and planning\\n paper revisions accordingly\\n\\n* Investigating distributivity properties of DeltaQ\\n\\n* Preparing sections on the thorn calculus and idempotency laws for\\n draft paper about verifying design refinements for distributed\\n system design\\n\\n* Consulting on performance design with Marlowe team"},{"id":"2023-02-17-hydra","metadata":{"permalink":"/cardano-updates/2023-02-17-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-hydra.md","source":"@site/blog/2023-02-17-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-02-17T00:00:00.000Z","formattedDate":"February 17, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.75,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-02-17-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-02-17-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-02-17-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team completed work on dealing differently with contests\\nduring the contestation period. These will now always push out the deadline and\\nhence contestation periods are easier to pick (depending on the network a Head\\nruns on). Furthermore, they added an important acceptance test and completed\\ninternal refactoring of the protocol logic making future changes easier.\\n\\n## What did the team achieve this week\\n\\n- Push contestation deadline on each contest [#716](https://github.com/input-output-hk/hydra/pull/716)\\n- Wrote an acceptance (property) test “can always close/fanout when collect is successful”\\n- Internal refactoring of our `HeadLogic`\\n- Groomed remaining things from [#452](https://github.com/input-output-hk/hydra/issues/452) into dedicated features\\n\\n## What are the goals of next week\\n\\n- Complete full minting policy [#720](https://github.com/input-output-hk/hydra/issues/720)\\n- Release 0.9.0 with updated scripts\\n- Plan mainnet milestone and a 0.10.0 version\\n- Redraw transaction graphs for specification (upon feedback)\\n- Have smoke tests fixed and running regularly"},{"id":"2023-02-17-ledger","metadata":{"permalink":"/cardano-updates/2023-02-17-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-ledger.md","source":"@site/blog/2023-02-17-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-02-17T00:00:00.000Z","formattedDate":"February 17, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.33,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-02-17-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-17-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-02-17-network"}},"content":"## High level summary\\n\\nThis past two weeks saw many months worth of ledger changes integrated with the `cardano-base`\\nand `ouroboros-network` repositories.\\nThe vast majority of the effort involved all the changes to the ledger serialization libraries\\n(and the interplay with `cardano-base`) which now support proper versioning.\\nSupporting the conway ledger era, and in particular allowing the ledger state to transition\\nto a whole new system of governance, also played a noticeable part in the integration.\\n\\nBesides the integration work, the team continues to address technical debt, improve the\\ndocumentation, make our testing infrastructure better (such as experimenting with better\\nnightly tests), and formally specifying more parts of CIP-1694.\\n\\n## Lower level summary\\n\\n### Integration work\\n\\nBelow is all the integration work completed, which will enable a release to node from\\nthe current ledger master. Many thanks to\\n[Alexey](https://github.com/lehins) for this colossal undertaking!\\n\\n* [pull-3303]\\n* [pull-3302]\\n* [pull-3300]\\n* [pull-3299]\\n* [pull-3298]\\n* [pull-3297]\\n* [pull-3292]\\n* [pull-3289]\\n* [pull-3288]\\n* [pull-3279]\\n* [pull-3282]\\n* [pull-4349]\\n\\n### Technical debt\\n\\nStarting in major protocol version 9, zero-valued multi-assets will no longer be permitted\\nin the CBOR specification. See [pull-3241].\\n\\nWe now have our `.cabal` files being checked for a consistent formatting given by\\n`cabal format` in our CI. See [pull-3286].\\n\\nWe are still experimenting with better nightly tests for our long running\\nproperty based tests. See [pull-3276] and [pull-3296].\\n\\n### Small documentation improvements\\n\\nThe hand proofs of the preservation ADA property have been added back to the\\nShelley ledger specification. See [pull-3295].\\n\\nWe have clarified how the script integrity hash is computed in the CDDL description.\\nSee [pull-3290].\\n\\n### Specifying CIP-1694\\n\\nOur new formal specifications backed by Agda have seen a lot of progress!\\nUpgrading to Agda 2.6.3 fixed our main build infrastructure problems,\\nand we no longer have to rely on our custom fork. See [pull-50].\\n\\nOur progress on formally specifying CIP-1694 can be followed here:\\n* in Agda: [pull-40]\\n* the corresponding Haskell: [pull-3291]\\n\\n### Constraint based testing\\n\\nWe are still actively working on our new constraint based property testing framework.\\nWe have nearly all of the constraints for an entire ledger state\\nhooked into generators, and tests that the generators do indeed obey the constraints.\\nThe variable count in the constraints is over 100!\\nThere is still much work to do on shrinking, making the generators faster,\\nand writing actual property tests for the ledger, but the approach still seems viable and\\nwe are hopeful that it could replace our trace generators.\\nThe WIP can be followed here: [pull-3219].\\n\\n[pull-3241]: https://github.com/input-output-hk/cardano-ledger/pull/3241\\n[pull-3295]: https://github.com/input-output-hk/cardano-ledger/pull/3295\\n[pull-3290]: https://github.com/input-output-hk/cardano-ledger/pull/3290\\n[pull-3286]: https://github.com/input-output-hk/cardano-ledger/pull/3286\\n\\n[pull-3303]: https://github.com/input-output-hk/cardano-ledger/pull/3303\\n[pull-3302]: https://github.com/input-output-hk/cardano-ledger/pull/3302\\n[pull-3300]: https://github.com/input-output-hk/cardano-ledger/pull/3300\\n[pull-3299]: https://github.com/input-output-hk/cardano-ledger/pull/3299\\n[pull-3298]: https://github.com/input-output-hk/cardano-ledger/pull/3298\\n[pull-3297]: https://github.com/input-output-hk/cardano-ledger/pull/3297\\n[pull-3292]: https://github.com/input-output-hk/cardano-ledger/pull/3292\\n[pull-3289]: https://github.com/input-output-hk/cardano-ledger/pull/3289\\n[pull-3288]: https://github.com/input-output-hk/cardano-ledger/pull/3288\\n[pull-3279]: https://github.com/input-output-hk/cardano-ledger/pull/3279\\n[pull-3282]: https://github.com/input-output-hk/cardano-ledger/pull/3282\\n[pull-3291]: https://github.com/input-output-hk/cardano-ledger/pull/3291\\n[pull-3276]: https://github.com/input-output-hk/cardano-ledger/pull/3276\\n[pull-3296]: https://github.com/input-output-hk/cardano-ledger/pull/3296\\n[pull-3219]: https://github.com/input-output-hk/cardano-ledger/pull/3219\\n\\n[pull-50]: https://github.com/input-output-hk/formal-ledger-specifications/pull/50\\n[pull-40]: https://github.com/input-output-hk/formal-ledger-specifications/pull/40\\n\\n[pull-4349]: https://github.com/input-output-hk/ouroboros-network/pull/4349"},{"id":"2023-02-17-network","metadata":{"permalink":"/cardano-updates/2023-02-17-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-network.md","source":"@site/blog/2023-02-17-network.md","title":"Network Team Update","description":"High level summary","date":"2023-02-17T00:00:00.000Z","formattedDate":"February 17, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":0.865,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-02-17-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-02-17-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-10-hydra"}},"content":"## High level summary\\n\\nRecently QA found a bug in P2P code, which results in busy loops. We added one\\nfix to `1.35.6` release, another one will likely be part of next release. The\\nfirst one is already included in `ouroboros-network-0.3.0.1` release. These\\nbugs could only affect nodes which are out of sync and thus should not impose\\nrisk on well maintained nodes on mainnet. We also advertise to deploy at most\\none of the relays as a P2P node, which shields from possible consequences.\\n\\nWe recently finished design phase of eclipse evasion and we started\\nimplementing it (see [issue #3886] for progress).\\n\\nGalois finished implementing Handshake extension which will allow to query\\nnetwork protocol versions (see [pr #4256]).\\n\\nWe also recently released a newer set of network packages to be integrated with\\n`cardano-node` `master` branch, this includes:\\n * monoidal-synchronisation-0.1.0.2\\n * cardano-client-0.1.0.2\\n * network-mux-0.3.0.0\\n * ouroboros-network-api-0.1.0.0\\n * ouroboros-network-protocols-0.2.0.0\\n * ouroboros-network-testing-0.2.0.1\\n * ouroboros-network-mock-0.1.0.0\\n * ouroboros-network-framework-0.3.0.0\\n * ouroboros-network-0.4.0.0 (it doesn\'t not yet include the fix we included\\n in `0.3.0.1`)\\n\\n[issue #3886]: https://github.com/orgs/input-output-hk/projects/19/views/16?pane=issue&itemId=19819205\\n[pr #4256]: https://github.com/input-output-hk/ouroboros-network/pull/4256"},{"id":"2023-02-10-hydra","metadata":{"permalink":"/cardano-updates/2023-02-10-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-10-hydra.md","source":"@site/blog/2023-02-10-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-02-10T00:00:00.000Z","formattedDate":"February 10, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.14,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-02-10-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-02-17-network"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-02-09-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team closed several gaps to align the Hydra scripts\\nimplementation further with the specification. This also resulted in a slight\\nimprovement on Hydra script size and costs. They consequently analysed the\\nasymptotic complexity of collect and fanout and how they relate. Also plutus-tx\\nprofiling toolchain was evaluated and set up for future improvements on Hydra\\non-chain performance. In discussions with researchers and internal auditors,\\nthey also uncovered next steps on further securing the Head protocl using a\\n\\"full\\" minting policy.\\n\\n## What did the team achieve this week\\n\\n- Closed several gaps to align script implementation with specification [#452](https://github.com/input-output-hk/hydra/issues/452)\\n - Allow contest only once [#680](https://github.com/input-output-hk/hydra/pull/680)\\n - Optimization through head output at index 0 [#700](https://github.com/input-output-hk/hydra/pull/700)\\n - Value is preserved [#702](https://github.com/input-output-hk/hydra/pull/702) + optimized exact value equality [#709](https://github.com/input-output-hk/hydra/pull/709)\\n- Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to [#721](https://github.com/input-output-hk/hydra/pull/721)\\n ![](https://user-images.githubusercontent.com/2621189/218124686-7a85b40d-12f7-4b00-ad16-128c99f5b707.png)\\n- Fixed our tooling around the Haskell language server\\n- Discussed full minting policy with researchers\\n- Started grooming \u201cwhat we need for mainnet\u201d on [this](https://github.com/input-output-hk/hydra/issues/713) idea ticket and [milestone](https://github.com/input-output-hk/hydra/milestone/8)\\n\\n## What are the goals of next week\\n\\n- Implement full minting policy\\n- All remaining protocol discrepancies are implemented or groomed as individual features\\n- Ideally release 0.9.0 with updated scripts\\n- Discuss what we need for mainnet (milestone planning)\\n- Redraw transaction graphs for specification (upon feedback)"},{"id":"2023-02-09-mithril","metadata":{"permalink":"/cardano-updates/2023-02-09-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-09-mithril.md","source":"@site/blog/2023-02-09-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-02-09T00:00:00.000Z","formattedDate":"February 9, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.01,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-02-09-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-10-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-02-08-consensus"}},"content":"## High level overview\\nThe Mithril team released a new [`2304.1`](https://github.com/input-output-hk/mithril/releases/tag/2304.1) distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.\\n\\nFinally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version `1.35.5` on their `devnet` and infrastructure.\\n\\n## Low level overview\\n- Released the new distribution [`2304.1`](https://github.com/input-output-hk/mithril/releases/tag/2304.1)\\n- Fixed a bug that prevented some signers to sign with `2304.0-prerelease` [#716](https://github.com/input-output-hk/mithril/issues/716)\\n- Completed the implementation of an `EraChecker` that checks if an era is active [#708](https://github.com/input-output-hk/mithril/issues/708)\\n- Completed the implementation of an `EraReader` that gathers era activation data [#709](https://github.com/input-output-hk/mithril/issues/709)\\n- Completed the implementation of an `EraReader` adapter with on chain transaction as source [#710](https://github.com/input-output-hk/mithril/issues/710)\\n- Completed the relational design of the aggregator store [#476](https://github.com/input-output-hk/mithril/issues/476)\\n- Completed adding a new SPO on the `testing-preview` network [#729](https://github.com/input-output-hk/mithril/issues/729)\\n- Completed the upgrade of the Cardano node to `1.35.5` [#725](https://github.com/input-output-hk/mithril/issues/725)\\n- Fixed flakiness in the CI [#734](https://github.com/input-output-hk/mithril/issues/734)"},{"id":"2023-02-08-consensus","metadata":{"permalink":"/cardano-updates/2023-02-08-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-consensus.md","source":"@site/blog/2023-02-08-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-02-08T00:00:00.000Z","formattedDate":"February 8, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.5,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-02-08-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-02-09-mithril"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-02-08-node-cli-api"}},"content":"## High level summary\\n\\nWe continue refactoring the UTxO HD prototype while we wait for the system level\\nbenchmarks. We have created a new repository that contains the `anti-diff`\\npackages used in this prototype.\\n\\nOn the Genesis front, we are preparing another meeting with the researchers to\\naudit the implementation design, and we continued working on basic tests and\\nsimplifications.\\n\\nDuring the past two weeks we also introduced two new tools. One for dumping CBOR\\nencoded blocks to JSON, and another to serve a local immutable DB.\\n\\n## Workstreams \\n\\n### UTxO HD Prototype \\n\\nWe are in the process of refactoring the UTxO HD prototype, while we wait for\\nthe system level benchmarks to confirm if the performance of the prototype is\\nsatisfactory.\\n\\nWe also set up a repository for the [`anti-diff`][anti-diff] package, which\\nrequired us to refactor the code, write documentation, and prepare a release to\\n[CHaP][chap].\\n\\n### Genesis\\n\\nWe worked on [basic tests][issue-4347] for the _Limit on Eagerness_ property of\\nGenesis. We also introduced further robustness and simplifications in the\\nGenesis Density governor. Finally, we developed a presentation to engage again\\nwith the researchers on our Genesis implementation design.\\n\\n### Technical debt\\n\\n### Fostering collaboration \\n\\nWe are in the process of [polishing][pull-6] the `ouroboros-consensus`\\ndocumentation site, which we will use a the entry point for Consensus related\\ndocumentation. The first version will not be complete, but we plan on\\nsystematically improving it.\\n\\n### Support\\n\\nWe [added a tool][pull-4335] to `ouroboros-consensus-cardano-tools` which allows\\nto dump the Chain DB blocks or any given CBOR encoded blocks as JSON.\\n\\nWe also added [another tool][pull-4339] that serves an existing immutable DB via\\nBlockFetch and ChainSync. This tool can help in assisting our local benchmarking\\nefforts (for instance Genesis\' ChainSync jumping prototype).\\n\\n\\n[pull-6]: https://github.com/input-output-hk/ouroboros-consensus/pull/6\\n[pull-4335]: https://github.com/input-output-hk/ouroboros-network/pull/4335\\n[pull-4339]: https://github.com/input-output-hk/ouroboros-network/pull/4339 \\n[issue-4347]: https://github.com/input-output-hk/ouroboros-network/issues/4347\\n[anti-diff]: https://github.com/input-output-hk/anti-diffs\\n[chap]: https://github.com/input-output-hk/cardano-haskell-packages"},{"id":"2023-02-08-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-02-08-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-node-cli-api.md","source":"@site/blog/2023-02-08-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-02-08T00:00:00.000Z","formattedDate":"February 8, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.095,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-02-08-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-02-08-consensus"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-02-08-performance-and-tracing"}},"content":"# 2023-02-08 - 2023-02-21\\n\\n## High level summary\\nMore maintenance and resolving raised issues.\\n\\n## Completed\\n\\n### docs\\n\\n### CI & project maintenance\\n- [Remove use of multiline literals](https://github.com/input-output-hk/cardano-node/pull/4889)\\n- [Markdown links CI check](https://github.com/input-output-hk/cardano-node/pull/4775)\\n- [Date ranges for copyright](https://github.com/input-output-hk/cardano-node/pull/4755)\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Re-add support for decoding GenesisExtendedKey text envelope](https://github.com/input-output-hk/cardano-node/pull/4894)\\n- [Disallow empty cost model for create update proposal](https://github.com/input-output-hk/cardano-node/pull/4885)\\n- [Refactor code using onLeft and onNothing](https://github.com/input-output-hk/cardano-node/pull/4815)\\n\\n### cardano-api\\n- [Simplify SerialiseAsRawBytes type class](https://github.com/input-output-hk/cardano-node/pull/4876)\\n\\n### cardano-node\\n\\n### cardano-testnet\\n\\n## In Progress\\n\\n## CI & project mainteance\\n\\n### cardano-cli\\n- [Fix bug in hash computation in cardano-cli genesis create-cardano](https://github.com/input-output-hk/cardano-node/pull/4761)\\n- [Cleanup exports of cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/4636)\\n- [BUGFIX] - [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n- [Handle pipes in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4625)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n- [Render consistent plutus script failure output](https://github.com/input-output-hk/cardano-node/pull/4659)\\n- [Read network ID from environment](https://github.com/input-output-hk/cardano-node/pull/4666)\\n- [CLI option to append additional signatures to a transactions](https://github.com/input-output-hk/cardano-node/pull/4647)\\n- [Cardano ping](https://github.com/input-output-hk/cardano-node/pull/4664)\\n- [Better error message for query utxo on oops](https://github.com/input-output-hk/cardano-node/pull/4777)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n- [Remove simple script distinction](https://github.com/input-output-hk/cardano-node/pull/4763)\\n- [Export SubmitResult from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4753)\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)\\n\\n### cardano-testnet\\n- [Use Haskell variables for passing values](https://github.com/input-output-hk/cardano-node/pull/4845)"},{"id":"2023-02-08-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-02-08-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-performance-and-tracing.md","source":"@site/blog/2023-02-08-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-02-08T00:00:00.000Z","formattedDate":"February 8, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":2.445,"hasTruncateMarker":false,"authors":[{"name":"Serge Kosyrev","title":"Performance and Tracing Team Lead","url":"https://github.com/deepfire","imageURL":"https://github.com/deepfire.png","key":"deepfire"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-02-08-performance-and-tracing","authors":"deepfire","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-02-08-node-cli-api"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-02-03-crypto"}},"content":"## High level summary\\n\\n1. SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we\'re currently running what we consider the final benchmark, to validate the underlying assumptions.\\n2. Release benchmarking: we\'ve performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks.\\n3. New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node.\\n4. New tracing: before going live, we\'re performing the documentation update, as well as reworking the end user migration guide.\\n5. Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live.\\n6. Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on.\\n7. Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.\\n\\n## Performance\\n\\nWe are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:\\n\\n- we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,\\n- after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,\\n- finally, we\'re redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.\\n\\nIn addition, we started benchmarks of the 1.35.6 release.\\n\\n## Tracing\\n\\nA rework of the new tracing system\'s internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way.\\n\\nSpecifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting.\\n\\n## Infrastructure\\n\\nOn the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we\'ll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders.\\n\\nThe work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment.\\n\\nThe Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops."},{"id":"2023-02-03-crypto","metadata":{"permalink":"/cardano-updates/2023-02-03-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-crypto.md","source":"@site/blog/2023-02-03-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-02-03T00:00:00.000Z","formattedDate":"February 3, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":2.47,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-02-03-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-02-08-performance-and-tracing"},"nextItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-02-03-goedel"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril\'s core library. Exploring future paths of mithril. \\n* cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting. \\n* KES agent: using snockets and making things testable in IOSim \\n* MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.\\n\\n## Low level summary\\n\\n### Mithril\\n* Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing [PR#722](https://github.com/input-output-hk/mithril/pull/722)\\n* We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper.\\n* We are exploring possible paths of how mithril could be used \'as-a-service\'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.\\n### cardano-base\\n* There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it\'s trade-offs. Seems that the most interesting curve to have on main-net is still 381. \\n* The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner.\\n* The update VRF [PR#341](https://github.com/input-output-hk/cardano-base/pull/341) is finally merged, and we are ready to merge [PR#344](https://github.com/input-output-hk/cardano-base/pull/344), which implements conversion functions from the compatible types between Praos and PraosBatchCompat.\\n\\n### KES agent\\n* Use of snockets to send the data directly from the socket to secure memory. \\n* We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives\\n* Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.\\n\\n### MuSig2\\nThe GitHub Action [linelint](https://github.com/fernandrone/linelint) is used to check the files.\\n* A new job for linting is added to the file `/.github/workflows/ci.yml`. The rules are configured in the file `/.github/workflows/.linelint.yml`. Some files from the configuration of `libsecp` were failing, so in the rules in `.linelint.yml` the failing files are denoted to be ignored by the linter.\\n* Folders are reorganized. We created a folder to handle the example. This folder includes the `examplemusig2.c`, a distinct `config.h`, and `helper.c`. The example is enhanced by implementing the functions in the helper for the configuration given in `config.h`. The number of messages is different than the tests. The example is made more generic to run with a loop."},{"id":"2023-02-03-goedel","metadata":{"permalink":"/cardano-updates/2023-02-03-goedel","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-goedel.md","source":"@site/blog/2023-02-03-goedel.md","title":"Goedel Team Update","description":"The team works on applied research and consulting in formal methods","date":"2023-02-03T00:00:00.000Z","formattedDate":"February 3, 2023","tags":[{"label":"goedel","permalink":"/cardano-updates/tags/goedel"}],"readingTime":0.57,"hasTruncateMarker":false,"authors":[{"name":"James Chapman","title":"Head of Formal Methods","url":"https://github.com/jmchapman","imageURL":"https://github.com/jmchapman.png","key":"jmchapman"}],"frontMatter":{"title":"Goedel Team Update","slug":"2023-02-03-goedel","authors":"jmchapman","tags":["goedel"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-02-03-crypto"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-03-hydra"}},"content":"The team works on applied research and consulting in formal methods\\nthat is directly applicable to evidence based engineering in Core Tech\\nand beyond.\\n\\n## High level summary\\n\\nThis sprint the team has been preparing several papers for peer review\\nand knowledge sharing and consulting within IO and the community.\\n\\n## Details\\n\\n* R&D Seminar on experience participating in a member based organisation\\n* Full day tutorial on performance engineering presented at HiPEAC\\n 2023 conference\\n* Finished preparing and submitted a paper on performance engineering\\n to an ACM workshop\\n* Preparing a draft paper for future submission about verifying design\\n refinements for distributed system design\\n* Consulting on performance design of other IO projects"},{"id":"2023-02-03-hydra","metadata":{"permalink":"/cardano-updates/2023-02-03-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-hydra.md","source":"@site/blog/2023-02-03-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-02-03T00:00:00.000Z","formattedDate":"February 3, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.12,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-02-03-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Goedel Team Update","permalink":"/cardano-updates/2023-02-03-goedel"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-02-02-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team completed the Hydra specification with a section about\\nrollbacks and updated graphs\\n([#448](https://github.com/input-output-hk/hydra/issues/448)). In a next step,\\nthe specification will be made more approachable and an open standard. They\\nimproved their `hydra-cluster` tool to launch a local `--devnet` sandbox\\nenvironment and continued aligning the `hydra-plutus` scripts with the\\nspecification by hardening the checks on `close` and `contest` transactions.\\n\\n## What did the team achieve this week\\n\\n- Completed the specification with a section about rollbacks and updated graphs\\n [#448](https://github.com/input-output-hk/hydra/issues/448), with a follow-up on making it more approachable and an open standard.\\n- Continued spec review with internal auditor and incorporated changes.\\n- Talked to TxPipe about how Demeter and Hydra could work together\\n- The `hydra-cluster` executable can be used to launch a local `--devnet` sandbox environment.\\n- Reproduced the \u201chead being stuck on network outage\u201d bug\\n - relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed.\\n- Progressed with higher velocity by addressing more and more gaps [#677](https://github.com/input-output-hk/hydra/pull/677)\\n\\n## What are the goals of next week\\n\\n- Upstream our JSON instances to the ledger\\n- Close all transaction security related on-chain gaps\\n- Ideally release 0.9.0 with updated scripts\\n- Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap"},{"id":"2023-02-02-ledger","metadata":{"permalink":"/cardano-updates/2023-02-02-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-02-ledger.md","source":"@site/blog/2023-02-02-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-02-02T00:00:00.000Z","formattedDate":"February 2, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.23,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-02-02-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-02-03-hydra"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-01-27-hydra"}},"content":"## High level summary\\n\\nMuch of the work the past two weeks involved integration efforts,\\ncleaning up and debugging some serialization issues,\\nadding tests, and work on large projects that are still ongoing.\\nWe also released a CIP this week that aims to make the ledger\\na registered CIP category.\\n\\n## Lower level summary\\n\\n### Ledger evolution CIP\\n\\nWe published a\\n[CIP](https://github.com/cardano-foundation/CIPs/pull/456)\\nthat will make the Cardano ledger a registered category of the CIP process.\\n\\n### Serialization issues\\n\\nWe had previously thought that we had found a serialization problem with the redeemers,\\nbut it turned out to just be particularly confusing code.\\nWe have now clarified the issue for the future.\\n\\nSee [pull-3263], [pull-3269], and [pull-3268].\\n\\nStarting in protocol version 9, we will no longer accept duplicate keys in CBOR maps.\\n\\nSee [pull-3277].\\n\\n### New tests\\n\\nWe added a new property test suite for some of our custom containers.\\n\\nSee [pull-3270].\\n\\n### Progress on a better cost model serialization situation.\\n\\nWe are still working our way through [issue-2902].\\nTowards this end, we are now properly gating the new flexible encoders\\nuntil version 9.\\n\\nSee [pull-3274].\\n\\n### Nightly tests\\n\\nWe are still experimenting with moving more CI actions to GitHub actions.\\n\\nSee [pull-3276].\\n\\n### Constraint based generators\\n\\nWe continue to add to our proof of concept for constraint based generators.\\nSee the previous ledger update for more information about this project.\\n\\n[pull-3263]: https://github.com/input-output-hk/cardano-ledger/pull/3263\\n[pull-3268]: https://github.com/input-output-hk/cardano-ledger/pull/3268\\n[pull-3269]: https://github.com/input-output-hk/cardano-ledger/pull/3269\\n[pull-3270]: https://github.com/input-output-hk/cardano-ledger/pull/3270\\n[pull-3274]: https://github.com/input-output-hk/cardano-ledger/pull/3274\\n[pull-3277]: https://github.com/input-output-hk/cardano-ledger/pull/3277\\n[pull-3276]: https://github.com/input-output-hk/cardano-ledger/pull/3276\\n[issue-2902]: https://github.com/input-output-hk/cardano-ledger/issues/2902"},{"id":"2023-01-27-hydra","metadata":{"permalink":"/cardano-updates/2023-01-27-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-27-hydra.md","source":"@site/blog/2023-01-27-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-01-27T00:00:00.000Z","formattedDate":"January 27, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.945,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-01-27-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-02-02-ledger"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-01-26-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team had a monthly review meeting with their stakeholders,\\ncontributors and interested people from the community. The monthly repot for\\n[January 2023](https://hydra.family/head-protocol/monthly/2023-01) is a digest\\nof the things presented and also includes a summary of the meeting. The Hydra\\nspecification was getting discussed and the team is incorporating suggested\\nchanges of reviewers. Last but not least, they compute and publish script\\ninformation on every PR and also on the\\n[website](https://hydra.family/head-protocol/benchmarks/transaction-cost/#script-summary)\\nnow.\\n\\n## What did the team achieve this week\\n\\n- Had the monthly review meeting with a broader audience\\n- Published the monthly report for [January 2023](https://hydra.family/head-protocol/monthly/2023-01)\\n- Reviewed the spec and discussed individual aborts with researchers\\n- Compute and publish script information along benchmarks on every PR and [website](https://hydra.family/head-protocol/benchmarks/transaction-cost/#script-summary)\\n\\n## What are the goals of next week\\n\\n- Add rollback section to Hydra spec, update pictures and publish it as part of repository\\n- Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository.\\n- Groom & plan actions required for a maintainable Head explorer + break down “align gaps” feature."},{"id":"2023-01-26-mithril","metadata":{"permalink":"/cardano-updates/2023-01-26-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-26-mithril.md","source":"@site/blog/2023-01-26-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-01-26T00:00:00.000Z","formattedDate":"January 26, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.175,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-01-26-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-01-27-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-01-25-consensus"}},"content":"## High level overview\\nThe Mithril team released a new [`2302.0`](https://github.com/input-output-hk/mithril/releases/tag/2302.0) distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes.\\n\\nFinally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node.\\n\\n## Low level overview\\n- Released the new distribution [`2302.0`](https://github.com/input-output-hk/mithril/releases/tag/2302.0)\\n- Implemented a backward/forward compatibility mechanism for API messages [#688](https://github.com/input-output-hk/mithril/issues/688):\\n - Implement the mechanism for the signer registration [#689](https://github.com/input-output-hk/mithril/issues/689)\\n - Implement the mechanism for the signature registration [#693](https://github.com/input-output-hk/mithril/issues/693)\\n - Implement the mechanism for epoch settings [#695](https://github.com/input-output-hk/mithril/issues/695)\\n - Implement the mechanism for certificate pending [#696](https://github.com/input-output-hk/mithril/issues/696)\\n - Implement the mechanism for certificate [#697](https://github.com/input-output-hk/mithril/issues/697)\\n - Implement the mechanism for snapshots list [#698](https://github.com/input-output-hk/mithril/issues/698)\\n - Implement the mechanism for snapshot [#699](https://github.com/input-output-hk/mithril/issues/699)\\n - Update enforcement of API version with Semver [#705](https://github.com/input-output-hk/mithril/issues/705)\\n- Completed the PoC implementation of backward compatibility with `protobuf` [#677](https://github.com/input-output-hk/mithril/issues/677)\\n- Completed the PoC implementation of backward compatibility with `avro` [#678](https://github.com/input-output-hk/mithril/issues/678)\\n- Completed the PoC to Read/Write transaction on chain for Era activations [#672](https://github.com/input-output-hk/mithril/issues/672)\\n- Completed the upgrade Cardano devnet to 1.35.4 [#523](https://github.com/input-output-hk/mithril/issues/523)"},{"id":"2023-01-25-consensus","metadata":{"permalink":"/cardano-updates/2023-01-25-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-25-consensus.md","source":"@site/blog/2023-01-25-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-01-25T00:00:00.000Z","formattedDate":"January 25, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":2.27,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-01-25-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-01-26-mithril"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-01-25-node-cli-api"}},"content":"## High level summary\\n\\nDuring the past two weeks, the consensus team finished the testing activities\\naround the UTxO-HD prototype. This is a very important milestone which will\\nenable us to run system-level tests and benchmarks, as well as start refactoring\\nand cleaning the prototype. Regarding our Genesis workstream, we elaborated a\\nroadmap that gives an indication of the remaining work. We also continued our\\nwork on benchmarking chain-sync-jumping. We also continued working on improving\\nthe way we handle blocks from the future, and advancing the integration of the\\nnew VRF and KES crypto.\\n\\n## Workstreams \\n\\n### UTxO HD Prototype \\n\\nAs the prototype is nearing its completion, it was important to have enough\\nconfidence that we will be able to move additional parts of the ledger state\\nonto disk. We worked together with the Ledger team to [elaborate a\\nsketch][pull-4296] on how the UTxO-HD design would accommodate the migration of\\nadditional data from memory to disk. This gave us enough confidence that the\\ncurrent architecture will be extensible in the future.\\n\\nOn the testing front, we [added][pull-4274] property-based tests for the UTxO-HD\\ntype classes. \\n\\nWe also [enabled disabled components][pull-4289], and addressed several\\ntechnical debt issues:\\n\\n- Implement `splitSized` anti-diff split ([#4269][pull-4269]), and integrate it\\n into consensus ([#4273][pull-4273]).\\n- Renaming of `peekVal` to `peekMDBVal` ([#7][pull-7]).\\n\\nWe ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We\\nfound a race condition in the LMDB backing store, which [we fixed][pull-4283].\\nAfter the fix we were able to successfully run these benchmarks. The results\\nwere published by [this pull request][pull-4295].\\n\\nWe used our `db-analyser` tool to benchmark the cost of reading keys and\\nflushing values to disk. The following plot shows the duration of these disk\\noperation in relation to the main ledger operations, where we can see that the\\ncost of the former are comparatively low. The spike at the beginning of the\\ngraph is when, at the start of the Shelley era, the *entire* UTxO set is flushed\\nto disk.\\n\\n![UTxO-HD read and flush benchmarks](/images/consensus/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks.png)\\n\\nAfter months of hard work adding tests for the prototype, we are ready to run\\nend-to-end tests on the node, and system level benchmarks. This signals a very\\nimportant milestone for the UTxO-HD workstream :tada:.\\n\\n### Genesis \\n\\nWe elaborated a [high-level decomposition][genesis-roadmap] of the remaining\\nwork for Genesis. We also continued benchmarking the chain-sync-jumping\\nhappy-path.\\n\\n### Technical debt\\n\\nWe continued working on improving the way we handle blocks from the future.\\n\\n### Support \\n\\nWe completed the mapping of `Crypto` to `HeaderCrypto` and body `Crypto`.\\n`HeaderCrypto` is moved to `cardano-protocol-tpraos`. We created a draft [pull\\nrequest][pull-3262] to facilitate compiling consensus.\\n\\n[pull-4274]: https://github.com/input-output-hk/ouroboros-network/pull/4274\\n[pull-4296]: https://github.com/input-output-hk/ouroboros-network/pull/4296\\n[pull-4289]: https://github.com/input-output-hk/ouroboros-network/issues/4289\\n[pull-4295]: https://github.com/input-output-hk/ouroboros-network/pull/4295\\n[genesis-roadmap]: https://github.com/input-output-hk/ouroboros-network/blob/a626c84f6df585dd27d735eb7eec73904a1f570e/ouroboros-consensus/docs/2023-Jan-Genesis-roadmap.md\\n[pull-4269]: https://github.com/input-output-hk/ouroboros-network/pull/4269\\n[pull-4273]: https://github.com/input-output-hk/ouroboros-network/pull/4273\\n[pull-7]: https://github.com/input-output-hk/lmdb-simple/pull/7\\n[pull-4283]: https://github.com/input-output-hk/ouroboros-network/pull/4283\\n[pull-3262]: https://github.com/input-output-hk/cardano-ledger/pull/3262"},{"id":"2023-01-25-node-cli-api","metadata":{"permalink":"/cardano-updates/2023-01-25-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-25-node-cli-api.md","source":"@site/blog/2023-01-25-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2023-01-25T00:00:00.000Z","formattedDate":"January 25, 2023","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.585,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2023-01-25-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-01-25-consensus"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-01-20-crypto"}},"content":"# 2023-01-25 - 2023-02-07\\n\\n## High level summary\\nGeneral clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the `cardano-cli query stake-snapshot` command. \\n\\n## Completed\\n\\n### docs\\n\\n### CI & project maintenance\\n- [Fix how changed files are selected in stylish-haskell CI check](https://github.com/input-output-hk/cardano-node/pull/4853)\\n- [Copyright updates](https://github.com/input-output-hk/cardano-node/pull/4755)\\n- [Remove hlint from nix required CI](https://github.com/input-output-hk/cardano-node/pull/4848)\\n- [Remove reconfigure-hlint.sh script](https://github.com/input-output-hk/cardano-node/pull/4838)\\n- [Fix hlint warnings](https://github.com/input-output-hk/cardano-node/pull/4837)\\n- [Implement ADR-2: Restructure modules for generators](https://github.com/input-output-hk/cardano-node/pull/4833)\\n- [Stylish Haskell in CI](https://github.com/input-output-hk/cardano-node/pull/4803)\\n- [Revert skip doc in ci](https://github.com/input-output-hk/cardano-node/pull/4802)\\n- [Skip CI on doc only changes](https://github.com/input-output-hk/cardano-node/pull/4800)\\n- [Skip CI if only changes are documentation](https://github.com/input-output-hk/cardano-node/pull/4792)\\n- [Build all of cardano-node in CI](https://github.com/input-output-hk/cardano-node/pull/4776)\\n- [Check cabal files in CI](https://github.com/input-output-hk/cardano-node/pull/4766)\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Straight line error handling](https://github.com/input-output-hk/cardano-node/pull/4785)\\n- [Multiple pools support in query stake snapshot](https://github.com/input-output-hk/cardano-node/pull/4279)\\n\\n### cardano-api\\n- [New NodeToClientVersionOf typeclass](https://github.com/input-output-hk/cardano-node/pull/4787)\\n- [Remove NoImplicitPrelude from cardano-api](https://github.com/input-output-hk/cardano-node/pull/4832)\\n- [Add ReaderT of NodeToClientVersion to LocalStateQueryExpr](https://github.com/input-output-hk/cardano-node/pull/4809)\\n- [Use hoistMaybe](https://github.com/input-output-hk/cardano-node/pull/4808)\\n- [Better error message for query utxo without oops](https://github.com/input-output-hk/cardano-node/pull/4788)\\n\\n### cardano-node\\n\\n### cardano-testnet\\n- [New query stake-snapshot integration test](https://github.com/input-output-hk/cardano-node/pull/4805)\\n- [Make leadership-schedule test less flaky](https://github.com/input-output-hk/cardano-node/pull/4671)\\n\\n## In Progress\\n\\n## CI & project mainteance\\n\\n### cardano-cli\\n- [Fix bug in hash computation in cardano-cli genesis create-cardano](https://github.com/input-output-hk/cardano-node/pull/4761)\\n- [Cleanup exports of cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/4636)\\n- [BUGFIX] - [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n- [Handle pipes in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4625)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n- [Render consistent plutus script failure output](https://github.com/input-output-hk/cardano-node/pull/4659)\\n- [Read network ID from environment](https://github.com/input-output-hk/cardano-node/pull/4666)\\n- [CLI option to append additional signatures to a transactions](https://github.com/input-output-hk/cardano-node/pull/4647)\\n- [Cardano ping](https://github.com/input-output-hk/cardano-node/pull/4664)\\n- [Better error message for query utxo on oops](https://github.com/input-output-hk/cardano-node/pull/4777)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n- [Remove simple script distinction](https://github.com/input-output-hk/cardano-node/pull/4763)\\n- [Export SubmitResult from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4753)\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)\\n\\n### cardano-testnet\\n- [Use Haskell variables for passing values](https://github.com/input-output-hk/cardano-node/pull/4845)"},{"id":"2023-01-20-crypto","metadata":{"permalink":"/cardano-updates/2023-01-20-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-crypto.md","source":"@site/blog/2023-01-20-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-01-20T00:00:00.000Z","formattedDate":"January 20, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.65,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-01-20-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2023-01-25-node-cli-api"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-01-20-hydra"}},"content":"## High level summary\\nThe open fronts that the crypto team is working on are:\\n* Mithril: We explored whether some uses of `transmute` could be removed, but it resulted in considerable regression. \\n* cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision. \\n* KES agent: An inconsistency between `contra-tracer` available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the `contra-tracer` used by consensus. \\n\\n## Low level summary\\n\\n### Mithril\\n* We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average [PR#675](https://github.com/input-output-hk/mithril/pull/675). We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing. \\n* We are writing a RFP for the audit of the core library. \\n### cardano-base\\n* A problem with Nix is blocking merge of [PR#341](https://github.com/input-output-hk/cardano-base/pull/341)\\n* Plutus team ran [benchmarks](https://github.com/input-output-hk/plutus/blob/kwxm/BLS12_381/prototype/plutus-benchmark/bls-benchmarks/Main.hs) of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we\'ll be able to verify some proofs in a single script execution.\\n* Team is fully digesting the Plonk paper. \\n* There\'s been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used. \\n\\n### KES agent\\n* A little unforseen delay has been caused by a mismatch in the use of `contra-tracer`. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are [doing the change](https://github.com/input-output-hk/cardano-base/pull/255/commits/39b2d9473aa296976825248360a73cf066065431), but still the CI is not happy.\\n* The [same](https://github.com/input-output-hk/cardano-base/pull/317/commits/39b2d9473aa296976825248360a73cf066065431) was needed for the KES agents prerequisites [PR#317](https://github.com/input-output-hk/cardano-base/pull/317).\\n* We\'ve started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency"},{"id":"2023-01-20-hydra","metadata":{"permalink":"/cardano-updates/2023-01-20-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-hydra.md","source":"@site/blog/2023-01-20-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-01-20T00:00:00.000Z","formattedDate":"January 20, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.13,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-01-20-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-01-20-crypto"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-01-20-network"}},"content":"## High-level summary\\n\\nThis week, the Hydra team has been focusing on the write-up of the Hydra HeadV1\\nspecification. Of which a first version has been aggregated and is currently\\nunder review. They aligned the on-chain scripts of reimbursing funds on abort\\nlike defined in the specification, improved the mutation test framework to have\\nmore control when testing plutus scripts. The added HeadId in the API and the\\nTUI example client make `hydra-node` easier to use and a first experiment of a\\nHydra Head explorer was showing the utility of this - see what Heads exist on\\nthe `preview` network [here](http://explorer.hydra.family).\\n\\n## What did the team achieve this week\\n\\n- HeadId to API and display in the TUI [#678](https://github.com/input-output-hk/hydra/pull/678)\\n- Experiment of creating a hydra explorer, first result hosted [here](http://explorer.hydra.family)\\n- Improved mutation framework allowing to fail for the right reason [#679](https://github.com/input-output-hk/hydra/pull/679)\\n- Correctly reimburse funds in abort (matching the spec) [#670](https://github.com/input-output-hk/hydra/pull/670)\\n- Finished a first write-up of the Hydra HeadV1 spec: [Read it on overleaf](https://www.overleaf.com/read/bbqzmptcxryj) ([Communication channels](https://github.com/input-output-hk/hydra/blob/master/SUPPORT.md) for feedback)\\n\\n## What are the goals of next week\\n\\n- Monthly review meeting with a broader audience\\n- Groom & plan actions required for a maintainable Head explorer\\n- Break \u201calign gaps\u201d feature into smaller chunks (at least on- /off-chain) and groom it\\n- Review the spec & discuss individual aborts with researchers (a bigger open question)"},{"id":"2023-01-20-network","metadata":{"permalink":"/cardano-updates/2023-01-20-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-network.md","source":"@site/blog/2023-01-20-network.md","title":"Network Team Update","description":"High level summary","date":"2023-01-20T00:00:00.000Z","formattedDate":"January 20, 2023","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"},{"label":"release","permalink":"/cardano-updates/tags/release"}],"readingTime":1.045,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2023-01-20-network","authors":"coot","tags":["network","release"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-01-20-hydra"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-01-20-sre"}},"content":"## High level summary\\n\\nWe have been working towards `cardano-node-1.35.5` release. QA & benchmarking\\nteams gave a green light for the release, and we made decent progress with some\\nCI problem which we encountered on the way ([PR #4612]). We are also working on\\npeer sharing, making improvements in our testing infrastructure, reducing\\ntechnical debt and making progress towards `io-sim-1.0.0.0`. Galois is making\\nprogress on Handshake improvements.\\n\\n## Low level summary\\n\\nOur diffusion simulation network now includes a mixed network of `initiator\\nonly` and `initiator and responder` nodes. [issue #4222]\\n\\nWe are now reviewing the [peer sharing pull request][PR #4019].\\n\\nWe are also reviewing pull request which introduces handshake query flag. [PR #4256]\\n\\nWe fixed a bug in our network simulator. The bug was triggered when a node\\ndied when performing a simultaneous TCP open (a corner case of a corner case!). [PR #4265]\\n\\nWe also refactored `Snocket` interface and removed the bearer construction from\\nits methods. [PR #4260]\\n\\nWe are working towards releasing `io-sim-1.0.0.0` on Hackage, which includes\\nreviewing two PRs: [PR #57] and [PR #60] as well as writing an announcement\\nblog post. \\n\\n[PR #4019]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[PR #4256]: https://github.com/input-output-hk/ouroboros-network/pull/4256\\n[PR #4260]: https://github.com/input-output-hk/ouroboros-network/pull/4260\\n[PR #4265]: https://github.com/input-output-hk/ouroboros-network/pull/4265\\n[PR #4612]: https://github.com/input-output-hk/cardano-node/pull/4612\\n[PR #57]: https://github.com/input-output-hk/io-sim/pull/57\\n[PR #60]: https://github.com/input-output-hk/io-sim/pull/60\\n[issue #4222]: https://github.com/input-output-hk/ouroboros-network/issues/4222"},{"id":"2023-01-20-sre","metadata":{"permalink":"/cardano-updates/2023-01-20-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-sre.md","source":"@site/blog/2023-01-20-sre.md","title":"SRE Team Update","description":"High level summary","date":"2023-01-20T00:00:00.000Z","formattedDate":"January 20, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":1.13,"hasTruncateMarker":false,"authors":[{"name":"Michael Fellinger","title":"SRE Team Lead","url":"https://github.com/manveru","imageURL":"https://github.com/manveru.png","key":"manveru"}],"frontMatter":{"title":"SRE Team Update","slug":"2023-01-20-sre","authors":"manveru","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2023-01-20-network"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-01-19-ledger"}},"content":"## High level summary\\n\\nThe SRE team continues work on Cicero, Tullia, and Bitte, as well as providing\\nsupport for cardano-world.\\n\\n## Lower level summary\\n\\n### Cicero\\n\\n- Fixed various race conditions around transformers.\\n- Brought our CI up to date.\\n- Migrated to the Nomad exec driver with Nix support for many actions.\\n- Moved Nix builds to the Nomad clients for much better cache locality.\\n- Ongoing work on vastly improving the action matching and evaluation speed.\\n- \\n\\n### Tullia\\n\\n- Made it easier to support cloning from a PR\'s fork\\n- Update to latest std\\n- Add workaround for cgroup issue: [nomad#12877](https://github.com/hashicorp/nomad/issues/12877)\\n- github preset: add `github.ci.remote` and `(read|get)Repository` functions\\n- Fix various issues around CUE handling\\n\\n### Bitte\\n\\n- Upgrade to NixOS 22.11\\n- Prototype usage of [Colmena](https://colmena.cli.rs) for deploys instead of [deploy-rs](https://github.com/serokell/deploy-rs)\\n- Finalized work on Equinix Metal support\\n- Prototype better secrets management with [ragenix](https://github.com/yaxitech/ragenix) instead of [sops-nix](https://github.com/Mic92/sops-nix)\\n- Improve CI and bring it up to date\\n\\n### cardano-world\\n\\n- Fixd various OOM issues on preview and preprod\\n- Rotated KES keys on preview and preprod\\n- Optimize mainnet db-sync to cope with higher load\\n- Fix an issue where PostgreSQL would fail after a reboot\\n\\n### bitte-world\\n\\n- Updated to NixOS 22.11\\n\\n### ci-world\\n\\n- Updated to NixOS 22.11\\n- Added Equnix cluster\\n- Improve caching of Nix builds"},{"id":"2023-01-19-ledger","metadata":{"permalink":"/cardano-updates/2023-01-19-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-19-ledger.md","source":"@site/blog/2023-01-19-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-01-19T00:00:00.000Z","formattedDate":"January 19, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.665,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-01-19-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2023-01-20-sre"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-01-14-db-sync"}},"content":"## High level summary\\n\\nThe ledger team completed some preliminary ground work in preparation for CIP-1694\\n(restructuring the ledger state),\\nfixed the PDF hosting problem (mostly the formal specs),\\nbuilt out more of the new user-friendly ledger API,\\nfinished a proof of concept for constraint-based generators for property tests\\n(with the hopes of being able to replace our trace generators one day),\\nand addressed technical debt.\\n\\n## Lower level summary\\n\\n### Restructuring the ledger state\\n\\nThe existing governance structures will be replace in the conway ledger era,\\nas described in CIP-1694.\\nIn particular, the ledger rules will be restructured as follows:\\n\\n\\n```\\n BBODY\\n |\\n |-------------------------------|\\n v v\\n TICK LEDGERS\\n | |\\n |---------| |\\n v v v\\n RUPD ~NEWEPOCH~ ~LEDGER~\\n | |\\n |----------| |--------|-------------------|-----------|\\n v v v v v\\n ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+\\n | | |\\n |---------|------------| v |\\n v v v DELPL v\\n SNAP POOLREAP -UPEC- | UTXO\\n |--------| |\\n v v v\\n POOL DELEG ~UTXOS~\\n\\n-..- Removed\\n+..+ Added\\n~..~ Modified\\n```\\n\\nMoreover, the ledger state will also be restructured in accordance with the new rules.\\nIn the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT.\\nWe have also adapted all the data structures in the ledger state.\\n\\nSee:\\n\\n* [pull-3216]\\n\\n### PDF hosting\\n\\nWe now build all of our PDFs using a GitHub action which is triggered by pushing a tag\\nwith a specific form, `cardano-ledger-spec-YYYY-MM-DD`.\\nThe action creates a GitHub release containing the PDFs.\\nThe links in the main ledger README now point to the PDFs in the latest release.\\n\\nSee:\\n\\n* [pull-3245]\\n* [pull-3260]\\n\\n### Powering the new ledger API\\n\\nWe have now removed all the `HasField` instances from the protocol parameter data types,\\nand replaced them with lenses.\\nThis is probably the last major restructuring that the ledger team will do on the code base\\nfor the API for a while\\n(the Plutus tools team will be working on it next, see [here](https://github.com/input-output-hk/cardano-ledger/projects/5)).\\nWe also added a new helpful function `ensureMinCoinTxOut`.\\n\\nSee:\\n\\n* [pull-3242]\\n* [pull-3248]\\n\\n### Constraint-based generators\\n\\nOur largest scale property tests generate an initial ledger state and a long sequence of valid blocks\\nwhich span several epochs, mimicking a real network.\\nThese tests are, in theory, excellent for checking properties.\\nThey are, however, very difficult to maintain and are not as random as we would like\\n(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).\\n\\nWe would like to switch to tests which instead generate a random ledger state representative\\nof not just an initial state, generate a single random valid block, and then test our properties.\\nThe hope is that these will be much more random and easier to maintain.\\n\\nWe have finished a proof of concept are encouraged that this approach could work!\\n\\nSee:\\n\\n* [pull-3219]\\n\\n### Technical debt\\n\\n* [pull-3244] massive CI speedup\\n* [pull-3249] better types for fees in the protocol parameters\\n* [pull-3264] move our annotator code to the `cardano-ledger-binary` package where it belongs\\n* [pull-3239] move the `Wdrls` type to the `Core` module.\\n\\n\\n[pull-3244]: https://github.com/input-output-hk/cardano-ledger/pull/3244\\n[pull-3245]: https://github.com/input-output-hk/cardano-ledger/pull/3245\\n[pull-3248]: https://github.com/input-output-hk/cardano-ledger/pull/3248\\n[pull-3249]: https://github.com/input-output-hk/cardano-ledger/pull/3249\\n[pull-3260]: https://github.com/input-output-hk/cardano-ledger/pull/3260\\n[pull-3264]: https://github.com/input-output-hk/cardano-ledger/pull/3264\\n[pull-3239]: https://github.com/input-output-hk/cardano-ledger/pull/3239\\n[pull-3242]: https://github.com/input-output-hk/cardano-ledger/pull/3242\\n[pull-3216]: https://github.com/input-output-hk/cardano-ledger/pull/3216\\n[pull-3219]: https://github.com/input-output-hk/cardano-ledger/pull/3219"},{"id":"2023-01-14-db-sync","metadata":{"permalink":"/cardano-updates/2023-01-14-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-14-db-sync.md","source":"@site/blog/2023-01-14-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2023-01-14T00:00:00.000Z","formattedDate":"January 14, 2023","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.36,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2023-01-14-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-01-19-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-01-13-hydra"}},"content":"## High level summary\\n\\nAfter spending the last months on improving DBSync and releasing `13.1.0.0` the DBSync team focused\\nthe last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the\\nnew leger core and ghc-9.2.4\\n\\n## Lower level summary\\n- Integrate CHaP\\n[#1331](https://github.com/input-output-hk/cardano-db-sync/pull/1331)\\n- Integrate new ledger core `0.1.1.1` and ghc-9.2\\n[#1332](https://github.com/input-output-hk/cardano-db-sync/pull/1332)\\n- Technical debt: Add code formatter fourmolu\\n[#1334](https://github.com/input-output-hk/cardano-db-sync/pull/1334)\\n- Preparing and tracking Conway and UTxO integration"},{"id":"2023-01-13-hydra","metadata":{"permalink":"/cardano-updates/2023-01-13-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-hydra.md","source":"@site/blog/2023-01-13-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2023-01-13T00:00:00.000Z","formattedDate":"January 13, 2023","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.56,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2023-01-13-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2023-01-14-db-sync"},"nextItem":{"title":"Node Release Team Update","permalink":"/cardano-updates/2023-01-13-release"}},"content":"## High-level summary\\n\\nSince last weekly update before christmas, the Hydra team worked on the\\ntechnical specification, closed gaps in `hydra-plutus` scripts, made the unique\\n`headId` available to Hydra clients through the API, allow the `hydra-node` to\\nexplicitly synchronize from genesis (if configured), and fixed smaller log and\\nbuild issues reported by new users.\\n\\nBesides this, a retrospective [blog\\npost](https://cardanofoundation.org/en/news/hydra-head-protocol-an-open-source-solution-for-scalability/)\\nwas published by Matthias Benkort (CF) on Hydra, summarizing our progress made\\nin 2022 also an outlook where Hydra is headed for in 2023. Also, the team had\\nsome first sessions on the voting project with Catalyst and the CF.\\n\\nA full digest monthly digest for December 2022 can be found on the [hydra\\nwebsite](https://hydra.family/head-protocol/monthly/2022-12).\\n\\n## What did the team achieve this week\\n\\n- Had some first sessions on the voting project with Catalyst and CF\\n- Published retrospective [blog\\n post](https://cardanofoundation.org/en/news/hydra-head-protocol-an-open-source-solution-for-scalability/)\\n by Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also\\n an outlook where Hydra is headed for in 2023.\\n- Worked on the LaTeX spec for HydraHeadV1, not final or published yet - [latest\\n version in this repository](https://github.com/ch1bo/hydra-spec).\\n- Add unique `headId` to API and hence make it available to clients.\\n- Allow `hydra-node` to explicitly synchronize from genesis using `--start-chain-from 0`.\\n- Closed gaps in `hydra-plutus` scripts\\n - bounded transaction validity ([ADR21](https://hydra.family/head-protocol/adr/21/))\\n - enforcing contract continuity via state token in output\\n- Fixed JSON for some logs and smaller build issues reported by new users.\\n\\n## What are the goals of next week\\n\\n- Reach out to have `hydra-tutorial` integrated.\\n- Plan the next couple of months.\\n- Complete checking reimbursing of commits in head validator.\\n- Align plutus scripts to spec and simplify them (identified some simplifications)\\n- Improve mutation framework to be sure we fail tests for the right reasons\\n- Complete the spec except the open points (<5) and also discuss them with researchers."},{"id":"2023-01-13-release","metadata":{"permalink":"/cardano-updates/2023-01-13-release","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-release.md","source":"@site/blog/2023-01-13-release.md","title":"Node Release Team Update","description":"Node Reelease Update","date":"2023-01-13T00:00:00.000Z","formattedDate":"January 13, 2023","tags":[{"label":"release","permalink":"/cardano-updates/tags/release"}],"readingTime":0.64,"hasTruncateMarker":false,"authors":[{"name":"Samuel Leathers","title":"Service Reliability Manager","url":"https://github.com/disassembler","imageURL":"https://github.com/disassembler.png","key":"disassembler"}],"frontMatter":{"title":"Node Release Team Update","slug":"2023-01-13-release","authors":"disassembler","tags":["release"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-01-13-hydra"},"nextItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2023-01-13-system-test"}},"content":"## Node Reelease Update\\n## 2022-11-02 - 2023-01-13\\n\\n### Executive Summary\\n\\nA 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on\\n`release/1.35` branch and does not bump cardano-ledger.\\n\\nThe team successfully integrated an interim release bump of ledger and consensus into cardano-node master.\\nThis work will not be released in a node version, but will be continued by the current dependency bump in progress.\\n\\nWe anticipate once this dependency bump is completed, regular 2 week releases will be feasible again.\\n\\nThe 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress.\\n\\n### Completed\\n\\n- [Release 1.35.4](https://github.com/input-output-hk/cardano-node/releases/tag/1.35.4)\\n\\n### In Progress\\n\\n- [Release 1.35.5](https://github.com/input-output-hk/cardano-node/commits/release/1.35)\\n\\n * [Test Status](https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.5_rc1/src_docs/source/test_results/node/tag_1_35_5_rc1.rst)"},{"id":"2023-01-13-system-test","metadata":{"permalink":"/cardano-updates/2023-01-13-system-test","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-system-test.md","source":"@site/blog/2023-01-13-system-test.md","title":"System Test Team Update","description":"High level summary","date":"2023-01-13T00:00:00.000Z","formattedDate":"January 13, 2023","tags":[{"label":"system-test","permalink":"/cardano-updates/tags/system-test"}],"readingTime":0.91,"hasTruncateMarker":false,"authors":[{"name":"Dorin Solomon","title":"System Test Team Lead","url":"https://github.com/dorin100","imageURL":"https://github.com/dorin100.png","key":"dorin100"}],"frontMatter":{"title":"System Test Team Update","slug":"2023-01-13-system-test","authors":"dorin100","tags":["system-test"],"hide_table_of_contents":false},"prevItem":{"title":"Node Release Team Update","permalink":"/cardano-updates/2023-01-13-release"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-01-12-mithril"}},"content":"## High level summary\\nDuring the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the _P2P Single\\nRelay_ functionality.\\n\\nWe also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level.\\n\\n## Workstreams\\n\\n### Framework improvements:\\n- extended the _cardano-node-tests_ with the ability for anybody to fork the repo and [run all our System Tests on GitHub Actions](https://input-output-hk.github.io/cardano-node-tests/readme.html)\\n- added 2 new nightly pipelines - nightly-mixed and nightly-p2p - [details here](https://input-output-hk.github.io/cardano-node-tests/test_results/nightly_system_tests.html)\\n- some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;\\n\\n` === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) ===\\n to\\n === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===`\\n\\n### Node:\\n- ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled\\n- started the preparations for testing the next tag - [details here](https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.5_rc1/src_docs/source/test_results/node/tag_1_35_5_rc1.rst)\\n\\n### DB-Sync:\\n- some improvements on db-sync sync tests"},{"id":"2023-01-12-mithril","metadata":{"permalink":"/cardano-updates/2023-01-12-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-12-mithril.md","source":"@site/blog/2023-01-12-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2023-01-12T00:00:00.000Z","formattedDate":"January 12, 2023","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.165,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2023-01-12-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2023-01-13-system-test"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-01-11-consensus"}},"content":"## High level overview\\nThe Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an [ADR](https://mithril.network/doc/adr/4). They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible.\\n\\nFinally, they have worked on upgrading the `devnet` and fixing some flakiness in the end to end tests of the CI.\\n\\n## Low level overview\\n- Implemented the redaction of an ADR for handling graceful updates of the Mithril Network [#671](https://github.com/input-output-hk/mithril/issues/671)\\n- Worked on a proof of concept to handle backward compatibilty of exchanged messages with `protobuf` [#677](https://github.com/input-output-hk/mithril/issues/677)\\n- Worked on a proof of concept to handle backward compatibilty of exchanged messages with `avro` [#678](https://github.com/input-output-hk/mithril/issues/678)\\n- Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction [#672](https://github.com/input-output-hk/mithril/issues/672)\\n- Worked on upgrading the Cardano node of the Mithril `devnet`, as well as fixing flakiness of the CI [#523](https://github.com/input-output-hk/mithril/issues/523)\\n- Prepared and tested the new `2302` distribution pre-release [2302.0-prerelease](https://github.com/input-output-hk/mithril/releases/tag/2302.0-prerelease)\\n- Updated the documentation for SPO to build a signer node in order to better reflect the new release process [#681](https://github.com/input-output-hk/mithril/issues/681)"},{"id":"2023-01-11-consensus","metadata":{"permalink":"/cardano-updates/2023-01-11-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-11-consensus.md","source":"@site/blog/2023-01-11-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2023-01-11T00:00:00.000Z","formattedDate":"January 11, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":2.35,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2023-01-11-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-01-12-mithril"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-01-11-performance-and-tracing"}},"content":"## High level summary\\n\\nThe consensus team is resuming its activities after the Christmas break. During\\nthese weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and\\ndiscussing with the Ledger team the changes that might be required for the next\\niterations. The pull request that adds the Conway era is waiting for a second\\nreview round and we hope to merge it soon. On the technical debt side we are\\nlooking into a property-test failure found in the iterators. We are\\ninvestigating if this is an error in the model or in the implementation. We also\\nimproved the documentation of our testing code.\\n\\n## Workstreams \\n\\n### UTxO HD Prototype \\n\\nWe worked with the Ledger team to start preparing the next versions of UTxO-HD.\\nThe Ledger team is concerned that for the remaining maps we might need the full\\nledger state on epoch boundaries. Since the main consumer of the ledger rules is\\nConsensus, the code that requires access to a full state could be moved from the\\nledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take\\nplace in such bridge, instead of querying the ledger for the values that are\\nrequired in the epoch-transition computations.\\n\\nWe [relocated][pull-4234] some UTxO-HD definitions, in preparation for merging\\nthe prototype into `master`.\\n\\nWe also completed updated local benchmarks comparing the replay time and memory\\nconsumption of:\\n\\n- the baseline node (`f2fc76ef45647275c98634da1718290b976ff364`) \\n- the UTxO-HD node with the in-memory backend \\n- the UTxO-HD node with the LMDB backend\\n\\nThe following plot shows the results: we can see that the LMDB node barely\\nreaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The\\nin-memory backend is about 30 minutes faster, but still slower than the baseline\\nversion. We are aware of this phenomenon and it is inherent to the problem of\\nmaintaining sequences of differences of the last `k` ledger states that allows\\nus to perform rollback and roll-forward. We are in the process of measuring\\nsyncing from scratch times.\\n\\n![](/images/consensus/2023-01-11-utxo-hd-replay-benchmarks.png)\\n\\nWe also [added `StaticEither` accessors][pull-4263] that helped us to simplify\\nthe UTxO-HD prototype.\\n\\n### New Conway era\\n\\nWe incorporated the feedback of the [pull request][pull-3971], and rebased this\\nbranch on top of `master`. The PR is pending a second review round and we hope\\nto merge this soon.\\n\\n### Technical debt \\n\\nWe are investigating a [property-testing failure][issue-4183] involving\\niterators. Solving this requires understanding the expected behavior of\\niterators in the counterexample found by `QuickCheck` to determine if the error\\nis in the model or in the implementation.\\n\\n### Fostering collaboration\\n\\nWe [moved][pull-4248] the contents of `docs/Testing.md` closer to the code, so that the\\nexplanations about the tests are easier to find in the relevant modules, and the\\ndocumentation is easier to keep up to date.\\n\\n[pull-4234]: https://github.com/input-output-hk/ouroboros-network/pull/4234\\n[issue-4183]: https://github.com/input-output-hk/ouroboros-network/issues/4183\\n[pull-4248]: https://github.com/input-output-hk/ouroboros-network/pull/4248\\n[pull-3971]: https://github.com/input-output-hk/ouroboros-network/pull/3971\\n[pull-4263]: https://github.com/input-output-hk/ouroboros-network/pull/4263"},{"id":"2023-01-11-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2023-01-11-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-11-performance-and-tracing.md","source":"@site/blog/2023-01-11-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2023-01-11T00:00:00.000Z","formattedDate":"January 11, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.865,"hasTruncateMarker":false,"authors":[{"name":"Serge Kosyrev","title":"Performance and Tracing Team Lead","url":"https://github.com/deepfire","imageURL":"https://github.com/deepfire.png","key":"deepfire"}],"frontMatter":{"title":"Performance & tracing update","slug":"2023-01-11-performance-and-tracing","authors":"deepfire","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-01-11-consensus"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-01-06-crypto"}},"content":"## High level summary\\n\\nSince our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:\\n\\n1. SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress.\\n2. The new tracing system: the improved API of the new tracing system was implemented, and we\'re now porting the tracing integration layer over.\\n3. Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks.\\n4. New benchmark deployment infrastructure: we\'ve made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs.\\n5. Legacy benchmarking: we\'ve started merging the legacy benchmark deployment infrastructure into the workbench.\\n6. Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.\\n\\n## Performance\\n\\nThe AWS cluster infrastructure necessary for SECP benchmarking is still being worked on.\\n\\n## Tracing\\n\\nThe improved tracing internals were implemented, and we\'re now into the phase of updating the tracing integration, which is also mostly done.\\n\\n## Infrastructure\\n\\nThanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components.\\n\\nOn the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters.\\nWe now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes.\\n\\nWe also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development.\\nOnce this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads."},{"id":"2023-01-06-crypto","metadata":{"permalink":"/cardano-updates/2023-01-06-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-06-crypto.md","source":"@site/blog/2023-01-06-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2023-01-06T00:00:00.000Z","formattedDate":"January 6, 2023","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.46,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2023-01-06-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2023-01-11-performance-and-tracing"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-01-05-ledger"}},"content":"## High level summary\\nThe four open fronts that the crypto team is working on are:\\n* MuSig2: The API features (error handling) has been merged. \\n* Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures.\\n* cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. \\n* KES agent: We keep progressing with KES secure forgetting implementation.\\n\\nWe also started working in the cryptography engineering handbook, which will be a cross team effort.\\n\\n## Low level summary\\n### MuSig2\\n* Merged the more granular error handling mechanism [PR#33](https://github.com/input-output-hk/musig2/pull/33)\\n\\n### Mithril\\n* Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in [Version 0.1.1](https://github.com/input-output-hk/kes/commit/9de00835ed354cbb8d37838f6cee57930ea9fd3d), which was published in [crates.io](https://crates.io/crates/kes-summed-ed25519). \\n* Updated new KES format to mithril library [PR 674](https://github.com/input-output-hk/mithril/pull/674)\\n* We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync [PR 531](https://github.com/input-output-hk/mithril/pull/531)\\n* We keep progressing on reducing the use of `transmute` in `mithril-stm`.\\n### cardano-base\\n* Nothing new to report. Still working in merging these PRs. We are only missing nix merge of [PR#520](https://github.com/input-output-hk/iohk-nix/pull/520) and the updates on VRF will be merged.\\n\\n### KES agent\\n* We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests [PR#255](https://github.com/input-output-hk/cardano-base/pull/255#issuecomment-1362601518).\\n\\n### Cryptography handbook\\nWe have made available the (temporary) cryptography handbook https://input-output-hk.github.io/cryptography_spec/, and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives."},{"id":"2023-01-05-ledger","metadata":{"permalink":"/cardano-updates/2023-01-05-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-05-ledger.md","source":"@site/blog/2023-01-05-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2023-01-05T00:00:00.000Z","formattedDate":"January 5, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":4.44,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-01-05-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2023-01-06-crypto"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-12-28-node-cli-api"}},"content":"## High level summary\\n\\nThe ledger team finished up the remaining work for tracking individual depots,\\nbuilt out the new Conway era transaction body (in line with CIP-1694),\\ngreatly reduce some problematically large calculations on the epoch boundary,\\nand addressed technical debt.\\n\\n## Lower level summary\\n\\n### Finishing the deposit tracking\\n\\nThe initial work on the individual deposit tracking project focused only on correctness.\\nAs this is a large data structure\\n(since its size is linear with respect to the number of registered stake credentials),\\nit is very important that we also reduce the memory overhead as much as possible.\\nFortunately, we were able to add very little overhead for the deposits by using existing\\nefficient data structures. The extra tracking now only incurs one word (8 bytes)\\nper registered stake credential.\\n\\nSee:\\n* [pull-3195]\\n* [pull-3202]\\n* [pull-3217]\\n\\n### New Conway era transaction\\n\\nWe implemented the Conway era transaction body, which is in line with CIP-1694.\\nNote that the Conway era implements, losing speaking, the parts of CIP-1694 that are not\\nrelated to the liquid democracy (the \\"DReps\\").\\nThe new transaction body adds the new governance actions and votes,\\nwhile also deprecating the old governance structures\\n(i.e. the old protocol parameter updates and MIR certificates).\\n\\nWe also now have the wire specification (CDDL file) and serialization code in place.\\nThe wire specification is still subject to change while we work on the Conway era,\\nbut it is now usable and has proper testing support\\n(so that, for example, the serialization round-trips, etc).\\n\\nSee:\\n* [pull-3176]\\n* [pull-3226]\\n\\n### Optimizing the `TICKF` transition\\n\\nEvery since the release of the Shelley era, we have been working to reduce the computational load\\nplaced on the node by the ledger at the epoch boundary.\\nWhile still not perfect, we believe that we have removed one of the final problematically long\\nepoch boundary computations that exacerbate situations like\\n[this](https://github.com/input-output-hk/cardano-node/issues/4421).\\nIn particular, the problem involved the way in which the consensus layer obtains a view of the\\nledger for the purposes of checking the leadership schedule in a new epoch.\\nWe implemented a stopgap measure which now only incurs a single multi-second cost once per epoch\\ninstead of potentially several multi-second costs while the networks waits for the first block\\nof a new epoch to be minted.\\n\\nSee:\\n* An [ADR](https://github.com/input-output-hk/cardano-ledger/blob/ea48d4815946c4f35239eb41815fe06cd6ffec2e/docs/adr/2022-12-12_007-optimize-ledger-view.md) about the decision.\\n* [pull-3209]\\n\\n### Technical debt\\n\\nWe closed the year out with a lot of reduction to the technical debt!\\n\\n#### Improved ledger event\\n\\n* [pull-3212] - The ledger events are not guaranteed to appear in any given order within a block.\\n For this reason, motivated by the use case in db-sync, the `TotalDeposits` event now\\n includes a transaction ID and emits the _change_ in deposits instead of the value.\\n\\n#### Improved type saftey\\n\\n* [pull-3208] - We replaced `NominalDiffTime` with a newtype wrapper. The problem was that our CBOR\\n encoders and decoders were using the wrong level of precision, having to due with with\\n the Shelley genesis file. We removed the potential problem with a newtype wrapper.\\n* [pull-3167] - We now use a GADT to ensure consistency of the Plutus language in the types\\n for `TransactionScriptFailure` and `PlutusDebug`.\\n\\n#### Code/Module organization\\n\\n* [pull-3175] - The Allegra and Mary eras had an unusual relationship in our codebase,\\n due to the uncertainly of release dates while we were implementing them.\\n In particular, they were coupled in way that is different from the rest of the code base.\\n With hindsight on our side, we split the combined `shelley-ma` Haskell package into two\\n separate ledger era packages, which is now consistent with the rest of the repository\\n and module structure.\\n* [pull-3184] - We created a core test sub-library, cleaning up a lot of our property test\\n generator code.\\n* [pull-3210] - We moved the `KeyPair` type to the test library. Outside of testing,\\n the ledger does not need to deal with signing keys, and since this is a topic that\\n deserves the utmost care, it is best to make it clear that our use of signing keys\\n is only for testing.\\n* [pull-3229] - We split the `Cardano.Ledger.Alonzo.Data` module, which is more consistent with the rest\\n of the codebase.\\n\\n#### Revert pointer address deprecation\\n\\nThanks to one of our excellent internal auditors,\\n[@jmhrpr](https://github.com/jmhrpr),\\nwe now have a better plan for deprecating pointer addresses.\\nThis meant that we had to revert the previous work to deprecate them.\\n\\nSee:\\n* [issue-3161]\\n* [pull-3215]\\n\\n#### Miscellaneous\\n\\n* [pull-3205] - We removed deprecated type synonyms.\\n* [pull-3218] - We cleaned up the address deserialization.\\n* [pull-3223] - We fixed faulty address deserialization tests.\\n* [pull-3222] - We switched to a general type family `TxOut` from concrete ones,\\n reducing many constraints.\\n* [pull-3224] - `ShelleyGenesis` is now parameterized by crypto instead of by era.\\n* [pull-3170] - We set the cabal-version to 3.0 in our projects.\\n* [pull-3172] - We removed the now useless `EncodeMint`/`DecodeMint` classes.\\n* [pull-3225] - We switch from [ormolu](https://hackage.haskell.org/package/ormolu) to \\n [fourmolu](https://hackage.haskell.org/package/fourmolu).\\n The reason was to be able to finally have more diff friendly code!\\n\\n[issue-3161]: https://github.com/input-output-hk/cardano-ledger/issues/3161\\n[pull-3175]: https://github.com/input-output-hk/cardano-ledger/pull/3175\\n[pull-3176]: https://github.com/input-output-hk/cardano-ledger/pull/3176\\n[pull-3184]: https://github.com/input-output-hk/cardano-ledger/pull/3184\\n[pull-3195]: https://github.com/input-output-hk/cardano-ledger/pull/3195\\n[pull-3202]: https://github.com/input-output-hk/cardano-ledger/pull/3202\\n[pull-3205]: https://github.com/input-output-hk/cardano-ledger/pull/3205\\n[pull-3208]: https://github.com/input-output-hk/cardano-ledger/pull/3208\\n[pull-3209]: https://github.com/input-output-hk/cardano-ledger/pull/3209\\n[pull-3210]: https://github.com/input-output-hk/cardano-ledger/pull/3210\\n[pull-3212]: https://github.com/input-output-hk/cardano-ledger/pull/3212\\n[pull-3214]: https://github.com/input-output-hk/cardano-ledger/pull/3214\\n[pull-3215]: https://github.com/input-output-hk/cardano-ledger/pull/3215\\n[pull-3217]: https://github.com/input-output-hk/cardano-ledger/pull/3217\\n[pull-3218]: https://github.com/input-output-hk/cardano-ledger/pull/3218\\n[pull-3222]: https://github.com/input-output-hk/cardano-ledger/pull/3222\\n[pull-3223]: https://github.com/input-output-hk/cardano-ledger/pull/3223\\n[pull-3224]: https://github.com/input-output-hk/cardano-ledger/pull/3224\\n[pull-3225]: https://github.com/input-output-hk/cardano-ledger/pull/3225\\n[pull-3226]: https://github.com/input-output-hk/cardano-ledger/pull/3226\\n[pull-3229]: https://github.com/input-output-hk/cardano-ledger/pull/3229\\n[pull-3167]: https://github.com/input-output-hk/cardano-ledger/pull/3167\\n[pull-3170]: https://github.com/input-output-hk/cardano-ledger/pull/3170\\n[pull-3172]: https://github.com/input-output-hk/cardano-ledger/pull/3172"},{"id":"2022-12-28-node-cli-api","metadata":{"permalink":"/cardano-updates/2022-12-28-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-28-node-cli-api.md","source":"@site/blog/2022-12-28-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2022-12-28T00:00:00.000Z","formattedDate":"December 28, 2022","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.325,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-12-28-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-01-05-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-12-16-hydra"}},"content":"# 2022-12-28 - 2023-01-10\\n\\n## High level summary\\n\\n## Completed\\n\\n### docs\\n\\n### CI & project maintenance\\n- [Fix hedgehog-extras sha hash](https://github.com/input-output-hk/cardano-node/pull/4762)\\n- [Update hegehog-extras bounds](https://github.com/input-output-hk/cardano-node/pull/4759)\\n- [GitHub token fix](https://github.com/input-output-hk/cardano-node/pull/4751)\\n- [Use setup-haskell action](https://github.com/input-output-hk/cardano-node/pull/4743)\\n- [Use Github Action to install libsecp256k1](https://github.com/input-output-hk/cardano-node/pull/4738)\\n- [Update index state and hedgehog-extras.](https://github.com/input-output-hk/cardano-node/pull/4714)\\n- [Cleaned cabal files](https://github.com/input-output-hk/cardano-node/pull/4710)\\n- [Add cache versioning](https://github.com/input-output-hk/cardano-node/pull/4737)\\n- [Delete obsolete scripts](https://github.com/input-output-hk/cardano-node/pull/4742)\\n- [Use SECURITY.md published in Cardano Engineering Handbook](https://github.com/input-output-hk/cardano-node/pull/4746)\\n\\n### Developer experience\\n\\n### cardano-cli\\n- [Infer protocol params in transaction build](https://github.com/input-output-hk/cardano-node/pull/4431)\\n- [Allow assembling transactions with no witnesses](https://github.com/input-output-hk/cardano-node/pull/4408)\\n- [Filter out duplicate collateral inputs in tx build cmds](https://github.com/input-output-hk/cardano-node/pull/4749)\\n- [Optimise query stake-snapshot command](https://github.com/input-output-hk/cardano-node/pull/4754)\\n\\n### cardano-api\\n\\n### cardano-node\\n\\n### cardano-testnet\\n\\n## In Progress\\n\\n## CI & project mainteance\\n- [Copyright updates](https://github.com/input-output-hk/cardano-node/pull/4755)\\n\\n### cardano-cli\\n- [Fix bug in hash computation in cardano-cli genesis create-cardano](https://github.com/input-output-hk/cardano-node/pull/4761)\\n- [Cleanup exports of cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/4636)\\n- [BUGFIX]- [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Multiple pools support in query stake snapshot](https://github.com/input-output-hk/cardano-node/pull/4279)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n- [Handle pipes in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4625)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n- [Render consistent plutus script failure output](https://github.com/input-output-hk/cardano-node/pull/4659)\\n- [Read network ID from environment](https://github.com/input-output-hk/cardano-node/pull/4666)\\n- [CLI option to append additional signatures to a transactions](https://github.com/input-output-hk/cardano-node/pull/4647)\\n- [Cardano ping](https://github.com/input-output-hk/cardano-node/pull/4664)\\n- [Better error message for query utxo on oops](https://github.com/input-output-hk/cardano-node/pull/4777)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n- [Remove simple script distinction](https://github.com/input-output-hk/cardano-node/pull/4763)\\n- [Export SubmitResult from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4753)\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)\\n\\n### cardano-testnet\\n- [Use Haskell variables for passing values](https://github.com/input-output-hk/cardano-node/pull/4845)"},{"id":"2022-12-16-hydra","metadata":{"permalink":"/cardano-updates/2022-12-16-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-16-hydra.md","source":"@site/blog/2022-12-16-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2022-12-16T00:00:00.000Z","formattedDate":"December 16, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.27,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-12-16-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-12-28-node-cli-api"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-12-15-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on [the website](https://hydra.family/head-protocol/benchmarks/transaction-cost/) and reduced the cost for commit transactions by ~30% with the help of reference scripts.\\n\\nThe year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.\\n\\n## What did the team achieve this week\\n\\n- Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.\\n- Reduce commit transaction costs by ~30% with reference scripts.\\n- Prepared an RFP for external audit of the Hydra Head solution.\\n- Fixed transaction cost benchmarks for abort tx [#631](https://github.com/input-output-hk/hydra/issues/631).\\n- Recorded decision to use model-based testing ([ADR22](https://hydra.family/head-protocol/adr/22/)) and improved Model [documentation](https://hydra.family/head-protocol/haddock/hydra-node/tests/Hydra-Model.html).\\n - Concluding the first increment on “Validate coordinated Head protocol” [#194](https://github.com/input-output-hk/hydra/issues/194).\\n - Formulated next step / follow-up on testing the Soundness property of our protocol [#656](https://github.com/input-output-hk/hydra/issues/656).\\n- Switched to using nix flakes for development setup and CI build [#646](https://github.com/input-output-hk/hydra/pull/646).\\n\\n## What are the goals of next week\\n\\n- Push [ADR21](https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md) & tx validity gap over the finish line (smoke tests missing).\\n- Integrate the `hydra-tutorial`.\\n- Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.\\n- Close & recap on the year with another monthly report (+ blog post)."},{"id":"2022-12-15-mithril","metadata":{"permalink":"/cardano-updates/2022-12-15-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-15-mithril.md","source":"@site/blog/2022-12-15-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2022-12-15T00:00:00.000Z","formattedDate":"December 15, 2022","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.11,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2022-12-15-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-12-16-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-12-14-consensus"}},"content":"## High level overview\\nThe Mithril team has released the new distribution [`2248.1`](https://github.com/input-output-hk/mithril/releases/tag/2248.1) of their nodes. They have published the first version of the Mithril cryptographic library on [`crates.io`](https://crates.io/crates/mithril-stm), the Rust community\u2019s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.\\n\\nFinally, they have kept on simplifying the aggregator node\'s multi-signer by removing the signer registration and the certificate creation from its responsibilities.\\n\\n## Low level overview\\n- Implemented removing verification key and stake from single signatures [#619](https://github.com/input-output-hk/mithril/issues/619)\\n- Completed the extraction of the signer registration from the multi-signer [#642](https://github.com/input-output-hk/mithril/issues/642)\\n- Completed the extraction of the certificate creation from the multi-signer [#638](https://github.com/input-output-hk/mithril/issues/638)\\n- Implemented a workflow to test client binaries (Linux / MacOS / Windows) [#601](https://github.com/input-output-hk/mithril/issues/601)\\n- Completed the signature of the artifacts produced by the CI [#587](https://github.com/input-output-hk/mithril/issues/587)\\n- Fixed the protocol parameters transition [#627](https://github.com/input-output-hk/mithril/issues/627)\\n- Worked on optimizing the snapshot digest computation [#510](https://github.com/input-output-hk/mithril/issues/510)\\n- Worked on enforcing the API protocol versions in the client and signer [#633](https://github.com/input-output-hk/mithril/issues/633)\\n- Worked on deactivating the non certified signer registration mode [#621](https://github.com/input-output-hk/mithril/issues/621)\\n- Worked on the re-genesis of the test networks [#651](https://github.com/input-output-hk/mithril/issues/651)"},{"id":"2022-12-14-consensus","metadata":{"permalink":"/cardano-updates/2022-12-14-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-consensus.md","source":"@site/blog/2022-12-14-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2022-12-14T00:00:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":2.995,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-12-14-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-12-15-mithril"},"nextItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2022-12-14-db-sync"}},"content":"## High level summary\\n\\nDuring the past two weeks, the Consensus team finalized the QSM tests for the\\nbacking store and Mempool on the UTxO-HD branch with important discoveries\\nregarding parallel QSM testing. We also worked with the Ledger team to envisage\\nthe modifications that are required in Ledger and Consensus to accommodate the\\nchanges in the crypto VRF and KES. The `db-analyser` now supports bechmarking\\nthe ledger operations, which will allow us to identify, debug, and profile\\npotential performance problems. We drafted a document that defines how to manage\\nthe versions of Consensus-related packages. The top level documentation of\\n`ouroboros-network` now features a description of the consensus components and\\nprovides a hyperlinked map to the modules documentation.\\n\\n## Workstreams\\n\\n### UTxO HD prototype\\n\\nWhereas we had passing sequential state-machine tests for the mempool, the\\nparallel case proved to be more challenging than we thought. The operation of\\nadding a list of transactions to the mempool is not atomic and, as a result,\\nwhen adding a list of transactions, transactions from other processes can be\\nadded in between. The mempool implementation handles this correctly, however\\nthis required us to [redesign][pull-4076] the parallel model we had to take\\nthe lack of atomicity into account.\\n\\n#### Backing store property tests\\n\\nWe finished refactoring the backing store property tests. The second review\\nround is ongoing.\\n\\n### LSM tree implementation\\n\\nWe are working on benchmarking (in terms of time and number of IO operations)\\nfetching/looking up data from disk.\\n\\n### Genesis \\n\\nWe worked on the design of a mechanism to prevent a DoS attack on our Genesis\\ndesign related to rollbacks. This was arguably the biggest outstanding question.\\n\\nDuring the discussions around Genesis, we noticed a design boundary that nicely\\ndelineates a fundamental component. We almost have a full Haskell prototype of\\nit. It will be very nicely self-contained, perhaps even usable in the ultimate\\nimplementation!\\n\\n### New VRF and KES crypto integration\\n\\nWe collaborated with the Ledger team on preparing the ledger state and crypto\\ntypes to avoid huge allocation on the epoch boundary when changing aspects of\\nthe crypto that will only manifest in headers, not in the ledger states.\\n\\n### Technical debt\\n\\nWe merged the [pull-request][pull-4014] that adds a support to `db-analyser` for\\nbenchmarking ledger operations. This will allow us to identify, debug, and\\nprofile potential performance problems. The benchmark focus on the main 5 ledger\\noperations that are involved in chain syncing, block forging, and block\\nvalidation, namely:\\n\\n0. Forecast.\\n1. Header tick.\\n2. Header application.\\n3. Block tick.\\n4. Block application.\\n\\nThe following figure shows a plot of the benchmarking results for the first 65\\nmillion blocks (approximately) of the Cardano chain. The thin yellow lines under\\nthe x-axis show the epoch boundaries, whereas the thick yellow lines correspond\\nto the era transitions.\\n\\n![](/images/consensus/2022-12-14-ledger-ops-benchmark.png)\\n\\nAs we can see in this figure, era and epoch boundaries require more computation\\ntime. The ledger team are aware of this problem, and we are working to improve\\nthis situation.\\n\\n### Fostering collaboration\\n\\nWe [drafted a document][pull-4207] motivating and defining how Consensus (and\\npossibly other core teams) will/should manage our package versions. This\\npull-request garnered many great discussions from our team members and other\\nteams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et\\nal. We want to thank you all for your input, and we found this discussion very\\nenlightening!\\n\\nWe merged the [pull request][pull-4197] that adds an overview of consensus to\\nthe [top level\\ndocumentation](https://input-output-hk.github.io/ouroboros-network/) of\\nouroboros-network. This overview describes the consensus components and adds a\\nhyperlinked map to the modules documentation.\\n\\n[pull-4207]: https://github.com/input-output-hk/ouroboros-network/pull/4207\\n[pull-4014]: https://github.com/input-output-hk/ouroboros-network/pull/4014\\n[pull-4076]: https://github.com/input-output-hk/ouroboros-network/pull/4076\\n[pull-4197]: https://github.com/input-output-hk/ouroboros-network/pull/4197"},{"id":"2022-12-14-db-sync","metadata":{"permalink":"/cardano-updates/2022-12-14-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-db-sync.md","source":"@site/blog/2022-12-14-db-sync.md","title":"DB-sync Team Update","description":"High level summary","date":"2022-12-14T00:00:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.73,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB-sync Team Update","slug":"2022-12-14-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-12-14-consensus"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-12-14-node-cli-api"}},"content":"## High level summary\\n\\nThe DBSync team continued testing release `13.1.0.0`. The QA team has reported that no issues have\\nbeen found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.\\n\\n## Lower level summary\\n\\n- Release is cherry-picked back to master, which uses the new rollback mechanism which uses\\nreverse indexes, same as the release\\n[#1320](https://github.com/input-output-hk/cardano-db-sync/pull/1320)\\nThis also fixes a bug number of issues on master.\\n- Depenencies upgrade and CHaP integration\\n[#1324](https://github.com/input-output-hk/cardano-db-sync/pull/1324)\\n- AdaPots fix [#1323](https://github.com/input-output-hk/cardano-db-sync/pull/1323). This\\nfixes an issue where the per epoch AdaPots didn\'t match the epoch boundary, but\\nthey also included changes from the first block of the epoch.\\n- Deposits Event fix [#3212](https://github.com/input-output-hk/cardano-ledger/pull/3212). This pr\\nadjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the\\nnumber of queries that db-sync does during syncing an make syncing faster."},{"id":"2022-12-14-node-cli-api","metadata":{"permalink":"/cardano-updates/2022-12-14-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-node-cli-api.md","source":"@site/blog/2022-12-14-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2022-12-14T00:00:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.46,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-12-14-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"DB-sync Team Update","permalink":"/cardano-updates/2022-12-14-db-sync"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2022-12-14-performance-and-tracing"}},"content":"# 2022-12-14 - 2022-12-27\\n\\n## High level summary\\n\\nPRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped. \\n\\n## Completed\\n\\n### docs\\n\\n- [Move style guide to wiki](https://github.com/input-output-hk/cardano-node/pull/4703)\\n\\n### CI & project maintenance\\n\\n- [Cache secp256k1](https://github.com/input-output-hk/cardano-node/pull/4734)\\n- [Use cabal-cache](https://github.com/input-output-hk/cardano-node/pull/4717)\\n- [build(deps): bump certifi from 2020.4.5.2 to 2022.12.7 in /doc/.sphinx](https://github.com/input-output-hk/cardano-node/pull/4699)\\n- [Update cabal.project](https://github.com/input-output-hk/cardano-node/pull/4724)\\n\\n### Developer experience\\n\\n- [Add aarch64-darwin to nix-shell](https://github.com/input-output-hk/cardano-node/pull/4125)\\n\\n### cardano-cli\\n- [Improved error message for failed asset name decode](https://github.com/input-output-hk/cardano-node/pull/4626)\\n- [Optimise query leadership schedule command](https://github.com/input-output-hk/cardano-node/pull/4250)\\n- [Remove cardano-cli address build-script](https://github.com/input-output-hk/cardano-node/pull/4700)\\n\\n### cardano-api\\n- [Move signing key reading to cardano-api](https://github.com/input-output-hk/cardano-node/pull/4698)\\n\\n### cardano-node\\n\\n### cardano-testnet\\n- [Only run chairman test on latest era](https://github.com/input-output-hk/cardano-node/pull/4712)\\n- [Add fix and test for `foldBlocks`](https://github.com/input-output-hk/cardano-node/pull/4679)\\n\\n## In Progress\\n\\n## CI & project mainteance\\n- [Copyright updates](https://github.com/input-output-hk/cardano-node/pull/4755)\\n\\n### cardano-cli\\n- [BUGFIX]- [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Infer protocol params in transaction build](https://github.com/input-output-hk/cardano-node/pull/4431)\\n- [Allow assembling transactions with no witnesses](https://github.com/input-output-hk/cardano-node/pull/4408)\\n- [Multiple pools support in query stake snapshot](https://github.com/input-output-hk/cardano-node/pull/4279)\\n- [Optimise query leadership schedule command](https://github.com/input-output-hk/cardano-node/pull/4250)\\n- [Optimise query stake snapshot command](https://github.com/input-output-hk/cardano-node/pull/4179)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n- [Handle pipes in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4625)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n- [Render consistent plutus script failure output](https://github.com/input-output-hk/cardano-node/pull/4659)\\n- [Read network ID from environment](https://github.com/input-output-hk/cardano-node/pull/4666)\\n- [CLI option to append additional signatures to a transactions](https://github.com/input-output-hk/cardano-node/pull/4647)\\n- [Cardano ping](https://github.com/input-output-hk/cardano-node/pull/4664)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)\\n\\n### cardano-testnet\\n- [Cleanup exports of cardano-testnet](https://github.com/input-output-hk/cardano-node/pull/4636)"},{"id":"2022-12-14-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2022-12-14-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-performance-and-tracing.md","source":"@site/blog/2022-12-14-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2022-12-14T00:00:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":3.095,"hasTruncateMarker":false,"authors":[{"name":"Serge Kosyrev","title":"Performance and Tracing Team Lead","url":"https://github.com/deepfire","imageURL":"https://github.com/deepfire.png","key":"deepfire"}],"frontMatter":{"title":"Performance & tracing update","slug":"2022-12-14-performance-and-tracing","authors":"deepfire","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-12-14-node-cli-api"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-12-12-network"}},"content":"## High level summary\\n\\n1. SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment.\\n2. A new workstream for Plutus cost modeling improvement: we\'ve planned and started implementing the smart contract call overhead measurement machinery.\\n3. The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we\'re continuing with the further performance-oriented rework of the internals.\\n4. Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started.\\n5. Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.\\n\\n## Performance\\n\\nThe SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we\'ll be running the model cluster workload.\\n\\nWe\'ve also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling.\\n\\n## Tracing\\n\\nAfter the initial model-scale performance data caused us to panic, among other things we\'ve done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical.\\n\\nTo understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:\\n\\n 1. We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that\'s also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration.\\n 2. The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it\'s the fair benchmark, because that\'s the way we expect SPO\'s to set up tracing. That, however also causes it to do more work.\\n\\nAll that said, since we\'ve established the performance of the new system to be adequate for the release, we won\'t be delaying it much further.\\n\\nIn addition, we\'re still pursuing our performance-enhancing rework of the new tracing internals.\\n\\n## Infrastructure\\n\\nAfter implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends.\\n\\nMoving to analysis, we\'ve also improved provenance of the raw data, by collecting more identification information and statistics about it.\\nThis means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis.\\nThis will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports.\\n\\nA new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches.\\nPreviously we only had automation for two aspects separately, so we only could either:\\n - compare individual runs (used for different node configurations / versions)\\n - collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version)\\nNaturally, combining these two capabilities was a long-desired feature of our analysis pipeline."},{"id":"2022-12-12-network","metadata":{"permalink":"/cardano-updates/2022-12-12-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-12-network.md","source":"@site/blog/2022-12-12-network.md","title":"Network Team Update","description":"High level summary","date":"2022-12-12T00:00:00.000Z","formattedDate":"December 12, 2022","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"},{"label":"release","permalink":"/cardano-updates/tags/release"}],"readingTime":0.43,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2022-12-12-network","authors":"coot","tags":["network","release"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2022-12-14-performance-and-tracing"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-12-09-crypto"}},"content":"## High level summary\\n\\nIn last sprint the team focused on preparations for the conference talk at\\n[OPODIS 2022]. We also worked on preparations to publish `io-sim` and related\\npackages on Hackage ([PR #57], [PR #60]).\\n\\nWe also started reviewing:\\n* `ouroboros-network`\\n* `cardano-node`\\n* `cardano-ledger`\\nrepositories for open-source readiness ([PR #4128]).\\n\\nWe prepared a PR which changes how `node-to-node` and `node-to-client` protocol\\nversiones are serialised in `cardano-node` log ([PR #4691]).\\n\\n[OPODIS 2022]: https://sites.uclouvain.be/OPODIS2022/\\n[PR #57]: https://github.com/input-output-hk/io-sim/pull/57\\n[PR #60]: https://github.com/input-output-hk/io-sim/pull/60\\n[PR #4128]: https://github.com/input-output-hk/ouroboros-network/pull/4218\\n[PR #4691]: https://github.com/input-output-hk/cardano-node/pull/4691"},{"id":"2022-12-09-crypto","metadata":{"permalink":"/cardano-updates/2022-12-09-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-crypto.md","source":"@site/blog/2022-12-09-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2022-12-09T00:00:00.000Z","formattedDate":"December 9, 2022","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.39,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2022-12-09-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-12-12-network"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-12-09-hydra"}},"content":"## High level summary\\nThe four open fronts that the crypto team is working on are:\\n* MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency. \\n* Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe. \\n* cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack. \\n* KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.\\n\\n## Low level summary\\n### MuSig2\\n* [Still in progress] We are introducing a more granular error handling mechanism [PR#33](https://github.com/input-output-hk/musig2/pull/33)\\n* We merged the API redesig [PR#35](https://github.com/input-output-hk/musig2/pull/35)\\n* We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We\'ll probably circle back to this in the future [PR#36](https://github.com/input-output-hk/musig2/pull/36)\\n\\n### Mithril\\n* We merged the individual signature [PR#620](https://github.com/input-output-hk/mithril/pull/620)\\n* We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser ([kes repo](https://github.com/input-output-hk/kes/commits/master)) \\n\\n### cardano-base\\n* Nothing new to report. Still working in merging these PRs. \\n* We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a [bug in GHC](https://gitlab.haskell.org/ghc/ghc/-/issues/22564)\\n\\n## KES agent\\n* We keep progressing in the secure forgetting PR and resolving some bugs on memory handling [PR#255](https://github.com/input-output-hk/cardano-base/pull/255)\\n* Fixed a \'use-after-free\' bug in the KES agent."},{"id":"2022-12-09-hydra","metadata":{"permalink":"/cardano-updates/2022-12-09-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-hydra.md","source":"@site/blog/2022-12-09-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2022-12-09T00:00:00.000Z","formattedDate":"December 9, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.62,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-12-09-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-12-09-crypto"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-12-09-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team has worked on completing to \\"Validate coordinated head protocol against formal model\\", this is a huge step to verify the implementation is secure. They also worked on implementing [ADR21](https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md) related to bounded tx validity which is now under review. [HydraPay](https://github.com/obsidiansystems/hydra-pay) project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of [issues](https://github.com/obsidiansystems/hydra-pay/issues?q=is%3Aissue) they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced.\\n\\n## What did the team achieve this week\\n\\n- Document model based testing [#194](https://github.com/input-output-hk/hydra/issues/194) & [#641](https://github.com/input-output-hk/hydra/issues/641)\\n- Got [ADR21](https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md), reducing gaps between implementation and specification, under review.\\n- Complete review on `hydra-tutorial`.\\n- Complete first round of review on `HydraPay` work [#634](https://github.com/input-output-hk/hydra/issues/634)\\n- Meeting with `Director of CyberSecurity` frio `IOG` to unblock \\"the RFP prepared for the external audit\\" [#606](https://github.com/input-output-hk/hydra/issues/606)\\n- Remove `vasil-dev` and `testnet` from `smoke-test` because they were not working [#630](https://github.com/input-output-hk/hydra/issues/630)\\n- Fix flaky `plutus-merkle-tree` test [#642](https://github.com/input-output-hk/hydra/issues/642)\\n- Refactor `NetworkSpec` to improve legilibility.\\n- Fix benchmark cost for `abortTx` [#631](https://github.com/input-output-hk/hydra/issues/631)\\n- Adapt `nix.conf` to the recent hydra-ci nix cache migration.\\n\\n## What are the goals of next week\\n\\n- Get [ADR21](https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md) accepted & close tx validity gap in our implementation.\\n- Integrate the `hydra-tutorial`.\\n- Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.\\n- Get Cicero (new CI) working.\\n- Use reference inputs to reduce the cost of the `commitTx`."},{"id":"2022-12-09-ledger","metadata":{"permalink":"/cardano-updates/2022-12-09-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-ledger.md","source":"@site/blog/2022-12-09-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2022-12-09T00:00:00.000Z","formattedDate":"December 9, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.87,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-12-09-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-12-09-hydra"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-12-02-hydra"}},"content":"## High level summary\\n\\nThe Plutus tools team at IOG has started helping the ledger team to build out a user friendly\\n`cardano-ledger-api` package!\\nA [GitHub project](https://github.com/input-output-hk/cardano-ledger/projects/5)\\nwill be filled out in the days ahead,\\npeople interested in the API can use it to follow along and join in on the conversations.\\n\\nThe ledger team has started using\\n[architectural decision records](https://github.com/input-output-hk/cardano-ledger/blob/6fc0e198560fb4169d435da882394930789a8af8/docs/adr/2022-12-01_001-record-architectural-decisions.md)\\nto leave a record of important decisions that the team makes.\\nWe will retroactively go back through past decisions and make ADRs for them.\\n\\nThe logic to track individual deposits is now nearly in place.\\nWe are prioritizing correctness with our first pull request, and will follow up with\\nperformance optimizations and general cleanup next.\\n\\nPointer addresses are being deprecated with the Cardano major protocol version 8.\\nSee [CPS-0002](https://github.com/cardano-foundation/CIPs/pull/374)\\nfor more context.\\n\\n## Lower level summary\\n\\n#### Cardano ledger API\\n\\nThe **Plutus tools team** has taken our minimal `cardano-ledger-api` package and started filling it\\nout and adding much needed documentation.\\nThey have also added doctests!\\nIn the days to come, the Plutus tools team will map out a lot more work for the API and record\\nit in this\\n[GitHub project](https://github.com/input-output-hk/cardano-ledger/projects/5).\\n\\nSee\\n\\n* [pull-3182]\\n* [pull-3188]\\n\\n#### Architectural Decision Records (ADRs)\\n\\nWe are now providing more context and leaving a record of important decisions that are made\\nin the ledger. The first ADR explains the very lightweight process.\\n\\nSee\\n\\n* [pull-3177] (rendered [here](https://github.com/input-output-hk/cardano-ledger/blob/6fc0e198560fb4169d435da882394930789a8af8/docs/adr/2022-12-01_001-record-architectural-decisions.md))\\n\\n#### Tracking individual deposits\\n\\nSee [ADR-3](https://github.com/input-output-hk/cardano-ledger/pull/3190/files)\\nfor background.\\nWe now have the logic in place to track individual deposits, and a host of property tests\\nto make sure that the logic is correct.\\nThe current implementation uses more memory than it needs to, and we will address that next,\\nwith our hope being to only use one word (8 bytes) per registered stake credential.\\nThere is a fair amount of other cleanup needed for general maintainability.\\n\\nSee\\n\\n* [pull-3127]\\n* [pull-3195]\\n* [pull-3202]\\n\\n#### Removing pointer addresses\\n\\nPointer addresses, which have never seen any real use\\n(there are something like eleven on mainnet), are being deprecated starting at Cardano major\\nversion 9.\\n[CPS-0002](https://github.com/cardano-foundation/CIPs/pull/374) gives the context.\\nWe are disabling them by first preventing transaction outputs containing them\\nfrom being serialized by the node at the moment we switch to version 9.\\nAt the hard fork after that, we will translate the existing few pointer addresses\\nto enterprise addresses.\\n\\nSee\\n\\n* [pull-3174]\\n\\n#### Technical debt\\n\\n* [pull-3162] - Sometimes we have to put safeguards in place for hard forks which may never\\n be exercised. After we have passed the given hardfork, we are able to clean up the code\\n and simplify our logic. We removed all of the ones that we are currently easily able to.\\n* [pull-3165] - We improved the type safety of our code while also discovering and fixing\\n a serialization bug.\\n* [pull-3172] - We removed dead code.\\n* [pull-3175] - The Allegra and the Mary code used to be coupled in a particular way the we grew to\\n dislike. We made these two ledger eras now uniform with the rest of our code base.\\n* [pull-3184] - We organized our property testing code.\\n* [pull-3200] - The Plutus tools teams fixed an outstanding bug in the translation from the\\n ledger state to the Plutus script context.\\n\\n\\n[pull-3127]: https://github.com/input-output-hk/cardano-ledger/pull/3127\\n[pull-3162]: https://github.com/input-output-hk/cardano-ledger/pull/3162\\n[pull-3165]: https://github.com/input-output-hk/cardano-ledger/pull/3165\\n[pull-3170]: https://github.com/input-output-hk/cardano-ledger/pull/3170\\n[pull-3172]: https://github.com/input-output-hk/cardano-ledger/pull/3172\\n[pull-3174]: https://github.com/input-output-hk/cardano-ledger/pull/3174\\n[pull-3175]: https://github.com/input-output-hk/cardano-ledger/pull/3175\\n[pull-3177]: https://github.com/input-output-hk/cardano-ledger/pull/3177\\n[pull-3182]: https://github.com/input-output-hk/cardano-ledger/pull/3182\\n[pull-3184]: https://github.com/input-output-hk/cardano-ledger/pull/3184\\n[pull-3188]: https://github.com/input-output-hk/cardano-ledger/pull/3188\\n[pull-3190]: https://github.com/input-output-hk/cardano-ledger/pull/3190\\n[pull-3195]: https://github.com/input-output-hk/cardano-ledger/pull/3195\\n[pull-3200]: https://github.com/input-output-hk/cardano-ledger/pull/3200\\n[pull-3202]: https://github.com/input-output-hk/cardano-ledger/pull/3202"},{"id":"2022-12-02-hydra","metadata":{"permalink":"/cardano-updates/2022-12-02-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-02-hydra.md","source":"@site/blog/2022-12-02-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2022-12-02T00:00:00.000Z","formattedDate":"December 2, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.965,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-12-02-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-12-09-ledger"},"nextItem":{"title":"DB sync Team Update","permalink":"/cardano-updates/2022-12-01-db-sync"}},"content":"## High-level summary\\n\\nThis week, the Hydra team has worked on cleaning up several things in progress\\nafter last week\'s summit. They have extended their model-based testing (MBT)\\napproach with transaction creation & observation\\n[#410](https://github.com/input-output-hk/hydra/issues/410), solved\\n`AcquirePointTooOld` problems of the `hydra-node` with by changing the wallet\\ninitialization [#439](https://github.com/input-output-hk/hydra/issues/439).\\nAlso, the Hydra researchers updated the security proofs of the Coordinated Hydra\\nHead, which are bound to be included in the Hydra HeadV1 specification.\\n\\n## What did the team achieve this week\\n\\n- Monthly review & report - will also be published on our website [#644](https://github.com/input-output-hk/hydra/pull/644)\\n- Extended the model-based testing (MBT) with transaction creation/observation [#410](https://github.com/input-output-hk/hydra/issues/410)\\n- Solve `AcquirePointTooOld` problems with new wallet initialization [#439](https://github.com/input-output-hk/hydra/issues/439)\\n- Fixed our hydraw deployments (EC2 instances)\\n- Created & discussed [ADR21](https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md) within tx validity work\\n- Received & discussed security proofs of Coordinated Hydra Head (requires more work)\\n\\n## What are the goals of next week\\n\\n- Get ADR21 accepted & close tx validity gap in our implementation\\n- Complete review & integrate the Hydra tutorial\\n- Review latest hydra-pay work\\n- Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec\\n- Get Cicero (new CI) working"},{"id":"2022-12-01-db-sync","metadata":{"permalink":"/cardano-updates/2022-12-01-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-db-sync.md","source":"@site/blog/2022-12-01-db-sync.md","title":"DB sync Team Update","description":"High level summary","date":"2022-12-01T00:00:00.000Z","formattedDate":"December 1, 2022","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.78,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB sync Team Update","slug":"2022-12-01-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-12-02-hydra"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-12-01-mithril"}},"content":"## High level summary\\n\\nThe DB Sync team prepared a release `13.1.0.0-rc2` which includes many improvements for db-sync,\\nit makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces\\nmigrations. This release finalises the objectives that were set for db-sync for the previous\\n3 months period and part of the syncing speed objective set for the next period\\n[Changelog](https://github.com/input-output-hk/cardano-db-sync/blob/3640e5aa00b8bada61e5d4b6eee063749866711b/cardano-db-sync/CHANGELOG.md#13100)\\n\\n## Lower level summary\\n- Branch [release/13.1.0.x](https://github.com/input-output-hk/cardano-db-sync/compare/release/13.0.x..3640e5aa00b8bada61e5d4b6eee063749866711b)\\nincludes all the improvements related to the release. The release is passing through the testing\\nphase and a number of bugs and issues have been fixed, like\\n[#1312](https://github.com/input-output-hk/cardano-db-sync/issues/1312)\\n[#1311](https://github.com/input-output-hk/cardano-db-sync/issues/1311).\\nAlso many new unit tests have been added.\\n\\n- Part of the release branch is cherry-picked back into master, in a way that it respects the new\\nrelease and development process, so that it takes into account migrations\\n[release process](https://github.com/input-output-hk/cardano-db-sync/issues/1305)\\n\\n- The DB Sync team has also tagged release `13.0.6` which better supports preview and preprod for\\ndocker."},{"id":"2022-12-01-mithril","metadata":{"permalink":"/cardano-updates/2022-12-01-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-mithril.md","source":"@site/blog/2022-12-01-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2022-12-01T00:00:00.000Z","formattedDate":"December 1, 2022","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.04,"hasTruncateMarker":false,"authors":[{"name":"Jean-Philippe Raynaud","title":"Mithril Tech Lead","url":"https://github.com/jpraynaud","imageURL":"https://github.com/jpraynaud.png","key":"jpraynaud"}],"frontMatter":{"title":"Mithril Team Update","slug":"2022-12-01-mithril","authors":"jpraynaud","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"DB sync Team Update","permalink":"/cardano-updates/2022-12-01-db-sync"},"nextItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2022-12-01-system-test"}},"content":"## High level overview\\nThe Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes. \\n\\nFinally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer.\\n\\n## Low level overview\\n- Implemented custom Mithril SPOs on testing/pre-release networks [#563](https://github.com/input-output-hk/mithril/issues/563)\\n- Deprecated Signer Declarative Pool Id registration mode [#585](https://github.com/input-output-hk/mithril/issues/585)\\n- Completed the second stage of the store automatic migration process [#600](https://github.com/input-output-hk/mithril/issues/600)\\n- Completed the deployment pipelines to crates.io registry [#588](https://github.com/input-output-hk/mithril/issues/588)\\n- Completed automatic generation of nodes/libraries versions manifest in releases notes [#599](https://github.com/input-output-hk/mithril/issues/599)\\n- Completed CI/CD handling of PR from forks [#597](https://github.com/input-output-hk/mithril/issues/597)\\n- Worked on the CIP design for Mithril piggybacked on the Cardano network layer [#586](https://github.com/input-output-hk/mithril/issues/586)\\n- Worked on signing the artifacts released in the distributions by the CI/CD [#587](https://github.com/input-output-hk/mithril/issues/587)\\n- Worked on multi-platforms end to end test [#601](https://github.com/input-output-hk/mithril/issues/601)\\n- Worked on the refactorizaton of the aggregator multi-signer engine [#398](https://github.com/input-output-hk/mithril/issues/398)"},{"id":"2022-12-01-system-test","metadata":{"permalink":"/cardano-updates/2022-12-01-system-test","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-system-test.md","source":"@site/blog/2022-12-01-system-test.md","title":"System Test Team Update","description":"High level summary","date":"2022-12-01T00:00:00.000Z","formattedDate":"December 1, 2022","tags":[{"label":"system-test","permalink":"/cardano-updates/tags/system-test"}],"readingTime":0.765,"hasTruncateMarker":false,"authors":[{"name":"Dorin Solomon","title":"System Test Team Lead","url":"https://github.com/dorin100","imageURL":"https://github.com/dorin100.png","key":"dorin100"}],"frontMatter":{"title":"System Test Team Update","slug":"2022-12-01-system-test","authors":"dorin100","tags":["system-test"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-12-01-mithril"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-11-30-consensus"}},"content":"## High level summary\\nDuring the last 2 weeks we did more improvements on our Test Framework, planned the testing of the _P2P Single \\nRelay_ functionality, and also tested some DB-Sync tags.\\n\\n## Workstreams\\n\\n### Framework improvements:\\n- moved the System Test CLI Pipelines from BuildKite to Github Actions\\n- improved the reporting tools to support the rerun of the failled tests and update of the reports \\n- added support for Github API in [report-aggregator](https://github.com/mkoura/report-aggregator), so reports will be generated from the GitHub nightly jobs from now on\\n- added support for mixed topology - P2P, legacy, mixed topologies\\n- planned the P2P Single Relay system test activities \\n- added support to start regression tests with PV8 + better selection of tests\\n\\n### DB-Sync:\\n- confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)\\n- tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2"},{"id":"2022-11-30-consensus","metadata":{"permalink":"/cardano-updates/2022-11-30-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-consensus.md","source":"@site/blog/2022-11-30-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2022-11-30T00:00:00.000Z","formattedDate":"November 30, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":2.4,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-11-30-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2022-12-01-system-test"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-11-30-node-cli-api"}},"content":"## High level summary\\n\\nDuring the past two weeks, the consensus team merged improvements to the monadic\\ncursor API that was needed to implement LMDB range reads, which is in turn\\nrequired for the implementation of the UTxO HD feature. We added tables to\\nseveral tests in for the UTxO HD feature, which increases our confidence in the\\ncorrectness of the prototype. The mempool property tests are close to being\\ncompleted. Also, we finished the LSM tree tuning algorithm.\\n\\nOn the Genesis front we started simplifying the BlockFetch logic with\\nCSJ-specific workloads in mind. \\n\\nWe are also documenting the Block Diffusion Pipelining feature, and added a\\nhigh-level overview of consensus to the top level documentation of\\n`ouroboros-network`.\\n\\n## Workstreams\\n\\n### UTxO HD prototype\\n\\nWe merged the implementation of a monadic cursor API ([#1][pull-1])) which was\\nneeded to solve a bug with LMDB range-reads. After this PR was merged, we focused on\\nbridging the gap between the `lmdb-simple` interface and consensus by facilitating\\nusing `lmdb-simple`\'s cursor API without `Serialise` constraints ([#3][pull-3]).\\n\\nWe refactored the backing store property tests to use `quickcheck-lockstep`\\n([#4081][pull-4081]).\\n\\nWe added tables to the mock ledger in the UTxO-HD feature branch\\n([#4184][pull-4184]). Every test that used to run with `SimpleBlocks` now uses\\ntables. This will enable us to exercise the UTxO HD mempool integration by\\nleveraging the existing mempool property-tests. The new state-machine\\nproperty-tests are still needed for testing the parallel behaviour of the\\nmempool.\\n\\nOur work on the mempool state-machine tests revealed the need for improvements\\nin the `quickcheck-state-machine` library. Parallel testing assumed that the\\nstate machine did not have access to mutable references. However, the mempool\\ntests require the use of such mutable references for mocking the ledger\\ninterface. As a result, our parallel tests were failing with rather obscure\\nmessages. @Jasagredo submitted a pull request ([#12][pull-12]) that allows for\\nnew mutable references to be created at each run of the state machine.\\n\\n#### Backing store property tests\\n\\n### LSM tree implementation\\n\\nWe finished the LSM Tree tuning algorithm. We are currently tidying up the code\\nand gathering results (i.e., plots and their interpretation).\\n\\n### CSJ prototype\\n\\nWe started simplifying the BlockFetch logic with CSJ-specific workloads in mind.\\n\\n### New VRF and KES crypto integration\\n\\nStarted working on supporting new version of `StandardCrypto` which uses compact\\nKES and batched VRF ([#4151][issue-4151]).\\n\\n### Technical debt\\n\\nWe reviewed the existing state of the Block Diffusion Pipelining document. We\\nare now working on the \\"Implementation\\" section ([#4020][issue-4020]).\\n \\n### Fostering collaboration\\n\\nWe cleared up our understanding of the error dynamics of forecasting\\n([#4146][pull-4146] and [#4174][pull-4174]).\\n\\nWe submitted a pull request that adds an overview of consensus to the [top level\\ndocumentation](https://input-output-hk.github.io/ouroboros-network/) of\\nouroboros-network ([#4197][pull-4197]). This overview describes the consensus components and adds a\\nhyperlinked map to the modules documentation.\\n\\nhttps://github.com/input-output-hk/ouroboros-network/pull/4197\\n\\n\\n[issue-4151]: https://github.com/input-output-hk/ouroboros-network/issues/4151\\n[pull-1]: https://github.com/input-output-hk/lmdb-simple/pull/1\\n[pull-3]: https://github.com/input-output-hk/lmdb-simple/pull/3\\n[pull-4081]: https://github.com/input-output-hk/ouroboros-network/pull/4081\\n[pull-4184]: https://github.com/input-output-hk/ouroboros-network/pull/4184\\n[pull-12]: https://github.com/stevana/quickcheck-state-machine/pull/12\\n[pull-4146]: https://github.com/input-output-hk/ouroboros-network/pull/4146\\n[pull-4174]: https://github.com/input-output-hk/ouroboros-network/pull/4174 \\n[issue-4020]: https://github.com/input-output-hk/ouroboros-network/issues/4020\\n[pull-4197]: https://github.com/input-output-hk/ouroboros-network/pull/4197"},{"id":"2022-11-30-node-cli-api","metadata":{"permalink":"/cardano-updates/2022-11-30-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-node-cli-api.md","source":"@site/blog/2022-11-30-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2022-11-30T00:00:00.000Z","formattedDate":"November 30, 2022","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.01,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-11-30-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-11-30-consensus"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2022-11-30-performance-and-tracing"}},"content":"# 2022-11-30 - 2022-12-13\\n\\n## High level summary\\n\\nPRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped. \\n## Completed\\n\\n### docs\\n\\n### cardano-cli\\n- [Append tx output in cli transaction build command](https://github.com/input-output-hk/cardano-node/pull/4675)\\n- [Update Error messages in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4592)\\n\\n### cardano-api\\n\\n### cardano-node\\n- [Replace Data.Map with Data.Map.Strict](https://github.com/input-output-hk/cardano-node/pull/4675)\\n- [Update Github actions](https://github.com/input-output-hk/cardano-node/pull/4708)\\n\\n### cardano-testnet\\n\\n## In Progress\\n\\n### cardano-cli\\n- [BUGFIX]- [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Infer protocol params in transaction build](https://github.com/input-output-hk/cardano-node/pull/4431)\\n- [Allow assembling transactions with no witnesses](https://github.com/input-output-hk/cardano-node/pull/4408)\\n- [Multiple pools support in query stake snapshot](https://github.com/input-output-hk/cardano-node/pull/4279)\\n- [Optimise query leadership schedule command](https://github.com/input-output-hk/cardano-node/pull/4250)\\n- [Optimise query stake snapshot command](https://github.com/input-output-hk/cardano-node/pull/4179)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n- [Handle pipes in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4625)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n- [Render consistent plutus script failure output](https://github.com/input-output-hk/cardano-node/pull/4659)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n- [Fully remove the cli intermediate TxBody format](https://github.com/input-output-hk/cardano-node/pull/4713)\\n\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)"},{"id":"2022-11-30-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2022-11-30-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-performance-and-tracing.md","source":"@site/blog/2022-11-30-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2022-11-30T00:00:00.000Z","formattedDate":"November 30, 2022","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.95,"hasTruncateMarker":false,"authors":[{"name":"Serge Kosyrev","title":"Performance and Tracing Team Lead","url":"https://github.com/deepfire","imageURL":"https://github.com/deepfire.png","key":"deepfire"}],"frontMatter":{"title":"Performance & tracing update","slug":"2022-11-30-performance-and-tracing","authors":"deepfire","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-11-30-node-cli-api"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-11-28-network"}},"content":"## High level summary\\n\\n1. Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release.\\n2. SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench.\\n3. The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks.\\n4. Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started.\\n5. Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.\\n\\n## Performance\\n\\nWe have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don\'t see any significant performance changes. The component bumps are therefore clear for release.\\n\\n## Tracing\\n\\nFor the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them.\\nThe idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time.\\n\\nTo support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics.\\n\\n## Infrastructure\\n\\nGeneration support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation.\\n\\nIn addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model.\\n\\nThe intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged.\\nWe are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration.\\n\\nWe continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability.\\n\\nWe are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP.\\n\\nAs usual, a number of smaller workbench, data analysis & reporting improvements have been made."},{"id":"2022-11-28-network","metadata":{"permalink":"/cardano-updates/2022-11-28-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-28-network.md","source":"@site/blog/2022-11-28-network.md","title":"Network Team Update","description":"Stake-Driven Data Diffusion Release for Relays","date":"2022-11-28T00:00:00.000Z","formattedDate":"November 28, 2022","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"},{"label":"release","permalink":"/cardano-updates/tags/release"}],"readingTime":3.675,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2022-11-28-network","authors":"coot","tags":["network","release"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2022-11-30-performance-and-tracing"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-11-25-crypto"}},"content":"## Stake-Driven Data Diffusion Release for Relays\\n\\nIOG networking team decided to release the _Stake-Driven Data Diffusion with\\nRobust Optimised Peer Selection_ also more commonly known as _P2P_. In the\\nlast update, we informed about a performance regression, but it turns out it\\nonly affects block producers, and thus we highly advise against running it on\\nsuch nodes. Further investigation is required to find the cause of it.\\n\\nOn IOG\'s benchmarking cluster we have seen quite a good performance improvement\\non block propagation itself. The cluster is running a static topology with\\nvalency 6 (each node is connected to 6 other nodes). In which every of the 50\\nnodes are block producers. The setup of this network is the same as mainnet.\\nWe\'ve seen 40-50% performance improvement on block propagation comparing to the\\nsame cluster deployed with the same topology but using non-P2P nodes. We think\\nthis performance improvement is caused by using full duplex connections. Quite\\nlikely the transaction traffic floating in both directions on the same TCP\\nconnection helps to keep the TCP window open. Note that in a cluster of 50\\nnodes with valency 6 the probability of having at least one duplex connection\\nis more than 50%. We don\'t expect the same improvement on mainnet because the\\nnetwork is much wider and the transaction traffic is not as large.\\n\\nJust before the release we squashed two small bugs:\\n\\n* [issue #4163] - top level integration bug in `keep-alive`;\\n* [issue #4177] - a bug in `outbound-governor`;\\n* [PR #4165] - a fix `cardano-ping` support of `NodeToNodeV_10`.\\n\\n\\n### Peer Sharing\\n\\nWe were carrying a review of [peer sharing PR][PR #4019].\\n\\n### DeltaQ\\n\\nNeil Davies was invited to give a guest lecture entitled `Avoiding System Catastrophes` at [UCLouvain].\\n\\n## What have we achieve last sprint\\n\\n* [issue #4163]: we found out that a control message is not passed to the\\n `keep-alive` mini-protocol, this results in every demotion executing demotion\\n timeout rather than a graceful termination. With the fix the node will no longer log:\\n ```json\\n { \\"kind\\": \\"PeerStatusChangeFailure\\"\\n , \\"peerStatusChangeType\\": \\"WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})\\"\\n , \\"reason\\": \\"TimeoutError\\"\\n }\\n ````\\n\\n* [issue #4177]: we fixed an assertion failure in the `outbound-governor`; now\\n we don\'t try demoted peers which are being demoted already.\\n\\n* [PR #4155]: we refactored `ouroboros-network` packages. There\'s a top level\\n `ouroboros-consensus-diffusion` package which integrates `network`\\n & `consensus` code. We also introduced:\\n\\n - `ouroboros-network-api` package which contains the API shared between\\n `network` & `conensus`;\\n - `ouroboros-network-mock` package which contains mock API used for testing\\n (e.g. a mock chain & chain producer, etc.)\\n - `ouroboros-network-protocols` package which contains implementation of all\\n (but `handshake`) mini-protocols, exposes a `testlib` and contains `test`\\n and `cddl` components.\\n\\n This made the dependency tree of `network` & `consensus` packages much\\n cleaner.\\n\\n* [PR #4169]: we described the usage of release branches in `CONTRIBUTING.md`\\n doc.\\n\\n* [PR #4165]: we fixed `cardano-ping` support of `NodeToNodeV_10` protocol.\\n\\n\\n### DeltaQ\\n\\nThe abstract of the talk:\\n\\n> An essential step to ensuring that distributed systems are fit for\\n> purpose.\\n>\\n> Distributed systems have become an integral part of our society and\\n> daily lives. We are, both implicitly and explicitly, individually as well as\\n> collectively, placing ever more trust in them.\\n>\\n> Are they worthy of this trust? Our need for them to be \u2018fit-for-purpose\u2019 goes\\n> well beyond notions of functional correctness (i.e. never getting the wrong\\n> answer). We need them to deliver the desired outcomes in a timely, robust,\\n> reliable, resilient fashion, at scale and in a sustainable way (both\\n> economically and environmentally).\\n>\\n> This all sounds like a worthy aspiration, but what would be a practical\\n> approach to capturing and reasoning about these issues? How can we ensure that\\n> systems can meet their fit-for-purpose objectives, not just in their design but\\n> as they are deployed, encounter the imperfect world, are scaled to become\\n> economic, and proceed into ongoing maintenance?\\n>\\n> This talk will illustrate how the notions of Outcomes and Quality Attenuation\\n> (as captured by \u2018\u2206Q\u2019) are being used to both frame the necessary notions and\\n> provide a basis for assuring the refinement and reification of such systems,\\n> from initial concept to operational infrastructure.\\n\\nYou can download the slides from [here](../static/pdf/network/2022-11-24-UCL.pdf).\\n\\n[issue #4163]: https://github.com/input-output-hk/ouroboros-network/issues/4163\\n[issue #4177]: https://github.com/input-output-hk/ouroboros-network/issues/4177\\n[PR #4155]: https://github.com/input-output-hk/ouroboros-network/pull/4155\\n[PR #4169]: https://github.com/input-output-hk/ouroboros-network/pull/4169\\n[PR #4165]: https://github.com/input-output-hk/ouroboros-network/pull/4165\\n[PR #4019]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[UCLouvain]: https://uclouvain.be/en/index.html"},{"id":"2022-11-25-crypto","metadata":{"permalink":"/cardano-updates/2022-11-25-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-25-crypto.md","source":"@site/blog/2022-11-25-crypto.md","title":"Crypto Team Update","description":"High level summary","date":"2022-11-25T00:00:00.000Z","formattedDate":"November 25, 2022","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.705,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2022-11-25-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-11-28-network"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-25-hydra"}},"content":"## High level summary\\nThe four open fronts that the crypto team is working on are:\\n* MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team. \\n* Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes\\n* cardano-base: The VRF and BLS branchs are still open and in progress\\n* KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent. \\n\\n## Low level summary\\n### MuSig2\\n* We redesigned the library so that MuSig2 lib users don\'t need to be aware of the underlying secp256k1 library [PR#31](https://github.com/input-output-hk/musig2/pull/31)\\n* We are introducing a more granular error handling mechanism [PR#33](https://github.com/input-output-hk/musig2/pull/33)\\n* We rethought the API and made it more consistent with the underlying secp256k1 library [PR#35](https://github.com/input-output-hk/musig2/pull/35)\\n\\n### Mithril\\n* The mithril crates in general will be published in crates.io, and we adapted the core library\'s README [PR#616](https://github.com/input-output-hk/mithril/pull/616) \\n* We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information [PR#620](https://github.com/input-output-hk/mithril/pull/620)\\n\\n### cardano-base\\n* We\'ve been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) [PR#341](https://github.com/input-output-hk/cardano-base/pull/341)\\n* SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions [PR#344](https://github.com/input-output-hk/cardano-base/pull/344)\\n* Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus [PR#266](https://github.com/input-output-hk/cardano-base/pull/266)\\n\\n## KES agent\\n* We keep progressing in the secure forgetting PR and resolving some bugs on memory handling [PR#255](https://github.com/input-output-hk/cardano-base/pull/255)\\n* Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation."},{"id":"2022-11-25-hydra","metadata":{"permalink":"/cardano-updates/2022-11-25-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-25-hydra.md","source":"@site/blog/2022-11-25-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2022-11-25T00:00:00.000Z","formattedDate":"November 25, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.73,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-11-25-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-11-25-crypto"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-11-23-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a [presentation](https://summit.cardano.org/agenda-day-2/cardano-ballot-speaker-winner-presentation-6/) about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas.\\n\\n## What did the team achieve this week\\n\\n- Attended the Cardano Summit in Lausanne. Hydra was topic of one talk: \\n- Had a team workshop / hackathon after the summit:\\n - Retrospective\\n - Impact mapping session\\n - Hacked on smaller things\\n- Got a PR for tullia/cicero things by @kdermetfan\\n\\n## What are the goals of next week\\n\\n- Monthly report & review meeting\\n- Tie up several loose ends / branches.\\n- Resolve Tx validity discussions & PRs.\\n- Review cicero PR & try it out."},{"id":"2022-11-23-ledger","metadata":{"permalink":"/cardano-updates/2022-11-23-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-23-ledger.md","source":"@site/blog/2022-11-23-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2022-11-23T00:00:00.000Z","formattedDate":"November 23, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.19,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-11-23-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-25-hydra"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-18-hydra"}},"content":"## High level summary\\n\\nWe released [CIP-1694],\\nour proposal for entering the [Voltaire phase](https://roadmap.cardano.org/en/voltaire/).\\n**Please come join the discussion**, this will be an incredibly exciting transition for\\nCardano and we want everyone to participate!\\n\\nWe now have a sensible way to version all of the serialization schemes used in the ledger.\\nThe draft pull request was polished, reviewed, and merged this week.\\nThis solves many problems that have vexed us since the beginning of the Shelley ledger era.\\n\\nEveryone working on the Cardano node is working together to improve our release process,\\nand the ledger team in particular dedicated one engineer to help with these efforts\\nfor the next release.\\n\\n## Lower level summary\\n\\n### The Conway ledger era\\n\\nThe current proposal in [CIP-1694] encompasses two new ledger eras.\\nThe first era will be called Conway, after the English mathematician John Horton Conway.\\nThe community facing aspects of the Conway ledger era will be very minimal,\\nbut it will pave the way for introducing liquid democracy.\\nThe details can be viewed [here](https://github.com/input-output-hk/cardano-ledger/projects/4).\\nWe do not yet have a formal specification for the Conway era.\\nOur plan is to debut the\\n[formal ledger model](https://github.com/input-output-hk/formal-ledger-specifications).\\nBriefly, the Conway ledger era will:\\n* introduce SPO voting for hard forks (in the spirit of the now abandoned [CIP-47])\\n* provide an on-chain mechanism for rotating the governance keys\\n* re-plumb the ledger rules involving governance to be in line with [CIP-1694]\\n\\n### Versioned CBOR\\n\\nWe now have the ability to easily tie our serialization schemes to the Cardano\\nmajor protocol version.\\nWe still aim to preserve backwards compatibility as much as possible, but we now have a principled\\nplan for resolving problems (see [CIP-ledger-cbor]).\\nIn particular, we can now address several long standing issues, such as\\n[issue-2444], [issue-2965], and [issue-3003]. \\n\\nThe final (and massive!) pull request which brought us the versioning is [pull-3138].\\n\\n### Deposit tracking\\n\\nThe draft pull request which was exploring how best to track individual deposits\\nis much closer now to being ready to take out of draft ([pull-3127]).\\nFor background on the issue, see [issue-3113].\\nThis is quite an invasive change which effects many of our tests, which we are now addressing.\\n\\n### Technical debt\\n\\nAs always, we keep working on technical debt.\\nWe have deduplicated a some things: [pull-3129], [pull-3162].\\nWe have memoized a problematic computation (though more due diligence is needed before we can\\nmerge): [pull-3141].\\n\\n### Node release\\n\\nWe have been helping with the node release efforts. See [pull-4608].\\n\\n[CIP-47]: https://github.com/cardano-foundation/CIPs/pull/318\\n[CIP-1694]: https://github.com/cardano-foundation/CIPs/pull/380\\n[CIP-ledger-cbor]: https://github.com/cardano-foundation/CIPs/pull/372\\n[issue-3003]: https://github.com/input-output-hk/cardano-ledger/issues/3003\\n[issue-2965]: https://github.com/input-output-hk/cardano-ledger/issues/2965\\n[issue-2444]: https://github.com/input-output-hk/cardano-ledger/issues/2444\\n[issue-3113]: https://github.com/input-output-hk/cardano-ledger/issues/3113\\n[pull-3129]: https://github.com/input-output-hk/cardano-ledger/pull/3129\\n[pull-3141]: https://github.com/input-output-hk/cardano-ledger/pull/3141\\n[pull-3127]: https://github.com/input-output-hk/cardano-ledger/pull/3127\\n[pull-3162]: https://github.com/input-output-hk/cardano-ledger/pull/3162\\n[pull-3138]: https://github.com/input-output-hk/cardano-ledger/pull/3138\\n[pull-4608]: https://github.com/input-output-hk/cardano-node/pull/4608"},{"id":"2022-11-18-hydra","metadata":{"permalink":"/cardano-updates/2022-11-18-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-18-hydra.md","source":"@site/blog/2022-11-18-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2022-11-18T00:00:00.000Z","formattedDate":"November 18, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.085,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-11-18-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-11-23-ledger"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-11-18-mithril"}},"content":"## High-level summary\\n\\nThis week, the Hydra team released version `0.8.1`, which includes several fixes and a user-wished extension of the persistence introduced by `0.8.0` of replaying server outputs to make clients like the `hydra-tui` be aware of the latest `hydra-node` state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from `hydra-poc` to [`hydra`](https://github.com/input-output-hk/hydra)!\\n\\n## What did the team achieve this week\\n\\n- Implemented replaying of server outputs to address [#580](https://github.com/input-output-hk/hydra-poc/issues/580)\\n- Released version 0.8.1 containing this and other fixes [Release notes](https://github.com/input-output-hk/hydra/releases/tag/0.8.1)\\n- Worked on the bounded tx validity as one of the on-chain script fixes, but couldn’t finish it just yet [#615](https://github.com/input-output-hk/hydra/pull/615)\\n- Collaborated with the education team on a Hydra tutorial.\\n- Discovered and discussed issues with the “seen ledger”.\\n- Renamed the Hydra repository `hydra-poc` -> `hydra`\\n\\n## What are the goals of next week\\n\\n- Create and discuss an ADR about handling tx validity correctly.\\n- Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: **\\"Developing Hydra\\" on Day 2, Nov 21st, 13:50 CET**\\n- Have a team workshop / hackathon after the summit:\\n - Retrospective\\n - Roadmapping session\\n - Hack on something complex or useful"},{"id":"2022-11-18-mithril","metadata":{"permalink":"/cardano-updates/2022-11-18-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-18-mithril.md","source":"@site/blog/2022-11-18-mithril.md","title":"Mithril Team Update","description":"High level overview","date":"2022-11-18T00:00:00.000Z","formattedDate":"November 18, 2022","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.35,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Mithril Team Update","slug":"2022-11-18-mithril","authors":"iquerejeta","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-18-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-11-16-consensus"}},"content":"## High level overview\\nThe Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks. \\n\\nFinally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer.\\n\\n## Low level overview\\n- Released a new Mithril distribution [2246.1](https://github.com/input-output-hk/mithril/releases/tag/2246.1)\\n- Completed the first stage of the store migrations process [#562](https://github.com/input-output-hk/mithril/issues/562)\\n- Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes [#565](https://github.com/input-output-hk/mithril/issues/565)\\n- Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage [#576](https://github.com/input-output-hk/mithril/issues/576)\\n- Prepared a Daedalus synchronization benchmark video with/without Mithril [#606](https://github.com/input-output-hk/mithril/issues/606)\\n- Upgraded the Cardano nodes of the testing Mithril networks to `1.35.4` [#594](https://github.com/input-output-hk/mithril/issues/594)\\n- Worked on implementing SPO tests nodes on testing Mithril networks [#563](https://github.com/input-output-hk/mithril/issues/563)\\n- Worked on the CIP design for Mithril piggybacked on the Cardano network layer [#588](https://github.com/input-output-hk/mithril/issues/588)\\n- Worked on the refactorizaton of the aggregator multi signer engine [#398](https://github.com/input-output-hk/mithril/issues/398)"},{"id":"2022-11-16-consensus","metadata":{"permalink":"/cardano-updates/2022-11-16-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-consensus.md","source":"@site/blog/2022-11-16-consensus.md","title":"Consensus Team Update","description":"High-level summary","date":"2022-11-16T00:00:00.000Z","formattedDate":"November 16, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":5.06,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-11-16-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-11-18-mithril"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-11-16-node-cli-api"}},"content":"## High-level summary\\n\\nDuring the past two weeks, the consensus team started documenting the\\nimplementation of the UTxO HD feature and continued developing tests for it. As\\npart of our work on UTxO HD, we improved the Haskell support for LMDB. We also\\nspent time working on the LSM tree prototype, and designed a parameter tuning\\nalgorithm for it. Regarding our work on Genesis, our investigation of the\\n\\"plateaus\\" pointed at the `TICKF` slowdown on era boundaries as culprit. This\\nled us to developing a caching strategy that will not only remove the\\naforementioned \\"plateaus\\", but can help alleviating the growing block production\\ndelay on epoch switch. We also helped reviewing the block forge credential\\nhotswap feature, which is intended for use in the adoption of P2P.\\n\\nWe also worked on paying technical debt and fostering collaboration. In\\nparticular, we improved the `io-sim` framework, which is crucial for testing and\\nsimulating Cardano components. We also removed thunks that appeared on era\\ntranslations, and improved our diffusion pipelining feature. We are working on a\\npresentation for explaining Praos and Genesis.\\n\\n## High-level status report\\n\\n- Finish the UTxO HD prototype: in progress.\\n - We added documentation for this feature.\\n - We developed the second version of the mempool tests.\\n - We fixed benchmarks that were inflating the speedup we observed in the\\n anti-diff implementation of sequences of differences. Speedups are now in the\\n range of [3.33, 4.75], which remain significant.\\n - We continued improving Haskell LMDB support.\\n - We finished implementing a \\"parameter tuning algorithm\\" for the LSM tree\\n prototype. This enables us to run experiments to check the correctness of\\n the algorithm.\\n- Genesis: in progress.\\n - Work investigating the \\"plateaus\\" in the `ChainSync` jumping prototype\\n pointed to the `TICKF` slowdown on era boundaries as culprit.\\n- Tech debt:\\n - We improved the capabilities of our `io-sim` library, which is crucial for\\n testing and simulating Cardano components.\\n - We removed thunks from epoch translations in the ledger.\\n - We added Linux CI support for `lmdb-simple`.\\n - We got pending diffusion pipelining improvements merged.\\n- Fostering collaboration:\\n - We are working on a explanation of Praos and Genesis protocols.\\n- Support:\\n - Investigation of CSJ \\"plateaus\\" led us to developing a caching strategy for\\n `TICKF` that will not only remove these \\"plateaus\\", but can help alleviating\\n the growing block production delay on epoch switch.\\n - We reviewed the block forge credential hotswapping feature which is intended\\n for use in the adoption of P2P.\\n\\n## Workstreams\\n\\n### Finish the UTxO HD prototype\\n\\nWe merged PR [#4060][pr-4060], which adds a report documenting the UTxO HD\\nfeature, and puts emphasis in explaining how the mempool works in combination\\nwith UTxO HD.\\n\\nWe opened a draft PR with the second iteration of the property tests for the\\nmempool ([#4076][pr-4076]).\\n\\nWe fixed the `Arbitrary` instances for keys and values in `DiffSeq` benchmarks\\n([#4143][pr-4143]). The problem was that we were testing with mostly small\\nvalues, which artificially boosted the performance gains we saw on benhcmarks.\\nSpeedups are now in the range of [3.33, 4.75] across the different\\nconfigurations.\\n\\n#### Backing store property tests\\n\\nWe focused on incorporating feedback on the monadic cursor API PR ([#1][pr-1]).\\nThis required us to make small tweaks to `quickcheck-lockstep` to test the new\\nAPI. We also updated the backing store property tests to use the new version of\\nthe monadic cursor API.\\n\\n### LSM tree implementation\\n\\nWe worked on the LSM tree prototype. In particular: finished implementing a\\n\\"parameter tuning algorithm\\" that adapts the LSM tree design based on factors\\nlike:\\n- workload\\n- machine specs, \\n- and characteristics of the data being stored. \\n\\nWe are now running experiments to gather results and cross-reference them with\\nexisting experimental results from the LSM tree paper to see if the algorithm is\\nworking correctly.\\n\\n### Benchmarking the CSJ prototype\\n\\nWe focused on investigating the \\"plateaus\\" in the `ChainSync` tip, which turned\\nout to be due to the `TICKF` bug which we previously were only aware of in the\\ncontext of the long forging times near epoch boundaries. For the most drastic\\npatch by @nfrisby to speed up `TICKF`, full sync is speeding up by 7%.\\n\\nThe following plot shows that by caching the `TICKF` the `ChainSync` tip and the\\n`VolatileDB` tip progress at the same rate.\\n\\n![](/images/consensus/2022-11-16-removed-stuttering.png)\\n\\nThe plot below shows the speedup observed by caching the `TICKF` rule wrt the\\nbaseline.\\n\\n![](/images/consensus/2022-11-16-comparing-TICKF-batch.png)\\n\\n### Technical debt\\n\\nAfter addressing the PR comments, we merged PR [#16][pr-16], which implements\\nthe `MonadCatch` instance for `STM`. This extends the capability of our `io-sim`\\nlibrary, which is crucial for testing and simulating Cardano components PR #16\\nclosed [#1461][issue-1461]. This new feature was published as version `0.4.0.0`\\nof `io-sim`.\\n\\nWe continued with our work fixing the `NoThunk` errors required for enabling\\nnightly tests, with the help of `TVarInvariant` checks in `strict-stm` and\\n`nothunks` libraries. We proposed fixes in `cardano-ledger` that took care of\\nthunks that appeared in era translations ([#3143][pr-3143]). The fixes will be\\nintegrated back into consensus when `cardano-ledger` approves and publish the\\nchanges introduced in `#3143`.\\n\\nWe added CI support for `lmdb-simple` ([#2][pr-2]). We currently test the build on\\na Linux environment only.\\n\\nWe got pending diffusion pipelining PRs ([#3857][pr-3857], [#3860][pr-3860],\\n[#3856][pr-3856]) merged, after rebasing and addressing feedback.\\n\\n### Fostering collaboration\\n\\n@nfrisby finished a visualisation tool and outlined scripts for the Praos and\\nGenesis explanation presentations. The idea is to produce a video that gives an\\noverview of these protocols.\\n\\n### Support \\n\\nWe started working on caching the computation of the `TICKF` rule\\n([#4054][issue-4054]), since this was blocking our benchmarking work for\\nGenesis. In addition, this issue has the Cardano community [quite\\nconcerned][issue-4421], so we are hoping the work done in caching the\\ncomputation of the `TICKF` rule can help alleviating the growing block\\nproduction delay on epoch switch.\\n\\nWe reviewed the block forge credential hotswapping PR [#3800][pr-3800] from the\\nnetworking team, which is intended for use in the adoption of P2P.\\n\\n[issue-4054]: https://github.com/input-output-hk/ouroboros-network/issues/4054\\n[issue-4421]: https://github.com/input-output-hk/cardano-node/issues/4421\\n[issue-1461]: https://github.com/input-output-hk/ouroboros-network/issues/1461\\n\\n[pr-3800]: https://github.com/input-output-hk/ouroboros-network/pull/3800\\n[pr-16]: https://github.com/input-output-hk/io-sim/pull/16\\n[pr-3143]: https://github.com/input-output-hk/cardano-ledger/pull/3143\\n[pr-4060]: https://github.com/input-output-hk/ouroboros-network/pull/4060\\n[pr-4076]: https://github.com/input-output-hk/ouroboros-network/pull/4076\\n[pr-1]: https://github.com/input-output-hk/lmdb-simple/pull/1\\n[pr-4143]: https://github.com/input-output-hk/ouroboros-network/pull/4143\\n[pr-2]: https://github.com/input-output-hk/lmdb-simple/pull/2\\n[pr-3857]: https://github.com/input-output-hk/ouroboros-network/pull/3857\\n[pr-3860]: https://github.com/input-output-hk/ouroboros-network/pull/3860\\n[pr-3856]: https://github.com/input-output-hk/ouroboros-network/pull/3856"},{"id":"2022-11-16-node-cli-api","metadata":{"permalink":"/cardano-updates/2022-11-16-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-node-cli-api.md","source":"@site/blog/2022-11-16-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2022-11-16T00:00:00.000Z","formattedDate":"November 16, 2022","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":0.68,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-11-16-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-11-16-consensus"},"nextItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2022-11-16-performance-and-tracing"}},"content":"# 2022-11-16 - 2022-11-29\\n\\n## High level summary\\n\\n## Completed\\n\\n### docs\\n- [Add a native tokens tutorial and exercises](https://github.com/input-output-hk/cardano-node/pull/4562)\\n\\n### cardano-cli\\n- [Update cardano-cli\'s help](https://github.com/input-output-hk/cardano-node/pull/4674)\\n- [Remove error calls in renderShelleyTxCmdError](https://github.com/input-output-hk/cardano-node/pull/4644)\\n\\n### cardano-api\\n- [Implement Cardano.Api.DeserialiseAnyOf](https://github.com/input-output-hk/cardano-node/pull/4639)\\n\\n### cardano-node\\n- [Fix windows CI](https://github.com/input-output-hk/cardano-node/pull/4650)\\n\\n### cardano-testnet\\n\\n## In Progress\\n\\n### cardano-cli\\n- [BUGFIX]- [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Infer protocol params in transaction build](https://github.com/input-output-hk/cardano-node/pull/4431)\\n- [Allow assembling transactions with no witnesses](https://github.com/input-output-hk/cardano-node/pull/4408)\\n- [Multiple pools support in query stake snapshot](https://github.com/input-output-hk/cardano-node/pull/4279)\\n- [Optimise query leadership schedule command](https://github.com/input-output-hk/cardano-node/pull/4250)\\n- [Optimise query stake snapshot command](https://github.com/input-output-hk/cardano-node/pull/4179)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n- [Handle pipes in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4625)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)"},{"id":"2022-11-16-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2022-11-16-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-performance-and-tracing.md","source":"@site/blog/2022-11-16-performance-and-tracing.md","title":"Performance & tracing update","description":"High level summary","date":"2022-11-16T00:00:00.000Z","formattedDate":"November 16, 2022","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.635,"hasTruncateMarker":false,"authors":[{"name":"Serge Kosyrev","title":"Performance and Tracing Team Lead","url":"https://github.com/deepfire","imageURL":"https://github.com/deepfire.png","key":"deepfire"}],"frontMatter":{"title":"Performance & tracing update","slug":"2022-11-16-performance-and-tracing","authors":"deepfire","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-11-16-node-cli-api"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-11-11-crypto"}},"content":"## High level summary\\n\\n1. P2P performance investigation is ongoing, in support of the networking team.\\n2. SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support.\\n3. Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing.\\n4. On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started.\\n5. We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.\\n\\n\\n## Performance\\n\\nWe are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes.\\n\\n## Tracing\\n\\nWe ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis.\\n\\n## Infrastructure\\n\\nThe first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends.\\n\\nWe designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing.\\n\\nA number of smaller workbench, data analysis & reporting improvements have been made."},{"id":"2022-11-11-crypto","metadata":{"permalink":"/cardano-updates/2022-11-11-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-crypto.md","source":"@site/blog/2022-11-11-crypto.md","title":"Crypto Team Update","description":"High level overview","date":"2022-11-11T00:00:00.000Z","formattedDate":"November 11, 2022","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.305,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2022-11-11-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & tracing update","permalink":"/cardano-updates/2022-11-16-performance-and-tracing"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-11-hydra"}},"content":"## High level overview\\n\\nThe SECP primitives AC has been met, and the test-vectors [PR](https://github.com/input-output-hk/cardano-base/pull/320) has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool [PR](https://github.com/input-output-hk/cardano-base/pull/336) has been merged, and we\'ve adapted the KES secure [PR](https://github.com/input-output-hk/cardano-base/pull/255) to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork ([PR#](https://github.com/input-output-hk/cardano-base/pull/341)). Finally, we\'ve \'cleaned\' our libsodium fork, and we directly fork upstream, rather than forking Algorand\'s fork. \\n\\n## Low level overview\\n* With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation. \\n* We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool. \\n* In parallel, we keep progressing on the [KES agent](https://github.com/input-output-hk/kes-agent)\\n* VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification. \\n* Our libsodium fork now links directly to upstream libsodium."},{"id":"2022-11-11-hydra","metadata":{"permalink":"/cardano-updates/2022-11-11-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-hydra.md","source":"@site/blog/2022-11-11-hydra.md","title":"Hydra Team Update","description":"High-level summary","date":"2022-11-11T00:00:00.000Z","formattedDate":"November 11, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.94,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-11-11-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-11-11-crypto"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-11-11-ledger"}},"content":"## High-level summary\\n\\nThis week, the Hydra team published together with Obsidian Systems a light paper\\non our \\"Hydra for Payments\\" project ([Link](https://iohk.io/en/blog/posts/2022/11/10/hydra-for-payments-introducing-developer-tooling-to-unlock-micropayments-on-cardano/)). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of `hydra-node` processes. \\n\\n## What did the team achieve this week\\n\\n- Published Hydra for Payments light paper ([Link](https://iohk.io/en/blog/posts/2022/11/10/hydra-for-payments-introducing-developer-tooling-to-unlock-micropayments-on-cardano/))\\n- Have a draft RFP ready for a first review internally\\n- Answered the internal auditor’s questions\\n- Fixed a bug with following the chain when starting with persistence ([#599](https://github.com/input-output-hk/hydra-poc/issues/599))\\n- Minor improvements to logging for better observability ([#598](https://github.com/input-output-hk/hydra-poc/issues/598), [#600](https://github.com/input-output-hk/hydra-poc/issues/600))\\n- Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look ([#590](https://github.com/input-output-hk/hydra-poc/issues/590))\\n\\n## What are the goals of next week\\n\\n- Implement event-sourced persistence [#580](https://github.com/input-output-hk/hydra-poc/issues/580)\\n- Close more gaps [#452](https://github.com/input-output-hk/hydra-poc/pull/452)\\n- Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: **\\"Developing Hydra\\" on Day 2, Nov 21st, 13:50 CET**"},{"id":"2022-11-11-ledger","metadata":{"permalink":"/cardano-updates/2022-11-11-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-ledger.md","source":"@site/blog/2022-11-11-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2022-11-11T00:00:00.000Z","formattedDate":"November 11, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.41,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-11-11-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-11-hydra"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-11-11-network"}},"content":"## High level summary\\n\\nI am extremely excited to say that we now have a pull request up which introduces our new versioned\\nCBOR serialization. This was an enormous effort, but it will solve a host of problems that we have\\nhad since the Shelley phase. It will take time to properly review it, and we will\\nneed to put in a lot of effort to integrate it with the downstream components, but this is a huge\\nmilestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction\\nserialization schemes.\\n\\nWe also have a draft pull request that reworks how deposits are tracked. Users of the system will\\nnot notice any difference, but it is a necessary change needed to prepare the way for\\ndecentralizing the governance of Cardano.\\n\\nFinally, we continued to address technical debt. In particular, we continued to make progress on\\nbringing coherency and consistency to the code base with a common naming convention, and\\nimproving some error messages.\\n\\n## Lower level summary\\n\\n- We have a pull request up for our new versioned CBOR serialization.\\n When we encounter a problem with our deserializers, it can be very difficult to implement a fix.\\n It is difficult because we can only fix such issues during a hard fork, and leading up to the\\n hard fork we must maintain two serializations for the same type in order to not cause unintended\\n network splitting (the problematic version must be used before the hard fork,\\n and the fixed version is used afterwards).\\n This can be especially tricky with the `FromCBOR` typeclass, since it is not always easy to\\n search for where all the problematic uses are located.\\n The new versioned CBOR serialization allows us to gracefully handle this transition.\\n See [[pull-3138]].\\n- We proposed a CIP for backwards compatibility of the transaction serialization schemes.\\n See [[pull-372]].\\n- We have draft for the new deposit tracking.\\n This draft is not as memory efficient as the final version will be,\\n but it is a sufficient proof of concept that we can write property tests against, ensuring\\n that we have not changed the semantics.\\n We will optimize after we are sure of the correctness.\\n See [[pull-3127]].\\n- We now provide better support for debugging failed Plutus scripts in an important helper\\n function, named `evaluateTransactionExecutionUnits`.\\n In particular, it now returns all the information needed to rerun the script with exactly the\\n same arguments. This feature will end up appearing in the CLI and other tools from the Plutus\\n tools team.\\n See [[pull-3135]].\\n- We did a lot more renaming to bring coherency and consistency to the code base.\\n See [[pull-3126]], [[pull-3120]], [[pull-3118]], and [[pull-3116]].\\n- We have added a few things to the ledger repository to make it conform to the\\n [Cardano Engineering Handbook](https://input-output-hk.github.io/cardano-engineering-handbook/)\\n See [[pull-3139]].\\n\\n\\n[pull-3138]: https://github.com/input-output-hk/cardano-ledger/pull/3138\\n[pull-3127]: https://github.com/input-output-hk/cardano-ledger/pull/3127\\n[pull-3135]: https://github.com/input-output-hk/cardano-ledger/pull/3135\\n[pull-3126]: https://github.com/input-output-hk/cardano-ledger/pull/3126\\n[pull-3120]: https://github.com/input-output-hk/cardano-ledger/pull/3120\\n[pull-3118]: https://github.com/input-output-hk/cardano-ledger/pull/3118\\n[pull-3116]: https://github.com/input-output-hk/cardano-ledger/pull/3116\\n[pull-3139]: https://github.com/input-output-hk/cardano-ledger/pull/3139\\n[pull-372]: https://github.com/cardano-foundation/CIPs/pull/372"},{"id":"2022-11-11-network","metadata":{"permalink":"/cardano-updates/2022-11-11-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-network.md","source":"@site/blog/2022-11-11-network.md","title":"Network Team Update","description":"High-level summary","date":"2022-11-11T00:00:00.000Z","formattedDate":"November 11, 2022","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":1.595,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2022-11-11-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-11-11-ledger"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-04-hydra"}},"content":"import NoticedHeaders from \'@site/static/images/network/2022-11-11-noticed-headers.png\';\\n\\n## High-level summary\\n\\nIn last sprint we got a performance report of P2P performance testing cluster\\n(which consists of 50 nodes). There is a performance regression in the header\\nnotification metric. The P2P cluster is constructed with the same\\ntopology as the non-p2p reference one this indicates some regression which\\nneeds to be further investigated. This poses a risk for releasing P2P.\\n\\nWe also continued to work on peer sharing: [pull #4019].\\n\\nWe continued working on dynamic block production which is required for P2P\\nrelease for BP nodes: [pull #3159].\\n\\nWe simplified the P2P topology format: [issue #4559], [pull #3888].\\n\\nWe added a new trace point for asynchronous demotions of local peers with\\n`Warning` severity. This trace is **important** for SPOs.\\n\\n## Detail description\\n\\n### Performance regression\\n\\nBelow we include a graph which shows the performance regression of the P2P code base vs non P2P.\\n\\n\\n\\nOn the `x` axis is time in seconds which measures the delay from the start of\\nthe slot to when a header was received. The `y` axis is the percentile of nodes\\nthat received a header. We are currently investigating possible causes of the\\nregression. \\n\\n### New P2P topology form\\n\\nThe new topology file format is described in this [issue #4559].\\n\\n### Tracing improvements\\n\\n* We improved a handshake error reporting, [pull #4136]\\n* We added `TraceDemoteLocalAsynchronous` rendered as `DemoteLocalAsynchronous`\\n in `json` format, [pull #4127]. Such demotions should be investigated by the\\n pool operator. They can indicate a problem in the deployed system, but also\\n they could indicate a remote problem in arranged connections with other SPOs.\\n\\n### Open Source Improvements\\n\\nWe improved documentation of `io-sim` and `typed-protocols` for open-source\\ncontributors and/or maintenance tasks: [pull #22], [pull #45], [pull #48]. \\n\\n[pull #4019]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[pull #3888]: https://github.com/input-output-hk/ouroboros-network/issues/3888\\n[pull #3159]: https://github.com/input-output-hk/ouroboros-network/issues/3159\\n[issue #4559]: https://github.com/input-output-hk/cardano-node/issues/4559\\n[pull #4136]: https://github.com/input-output-hk/ouroboros-network/pull/4136\\n[pull #4127]: https://github.com/input-output-hk/ouroboros-network/pull/4127\\n[pull #22]: https://github.com/input-output-hk/typed-protocols/pull/22\\n[pull #45]: https://github.com/input-output-hk/io-sim/pull/45\\n[pull #48]: https://github.com/input-output-hk/io-sim/pull/48"},{"id":"2022-11-04-hydra","metadata":{"permalink":"/cardano-updates/2022-11-04-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-hydra.md","source":"@site/blog/2022-11-04-hydra.md","title":"Hydra Team Update","description":"High level summary","date":"2022-11-04T00:00:00.000Z","formattedDate":"November 4, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.935,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-11-04-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-11-11-network"},"nextItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-11-04-mithril"}},"content":"## High level summary\\n\\nThis week, the hydra team first re-deployed the latest Hydra scripts to the re-spun `preview` network, see [0.8.0 release notes](https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0). They also completed implementation of [ADR18](https://hydra.family/head-protocol/adr/18/) and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates [#195](https://github.com/input-output-hk/hydra-poc/issues/195#issuecomment-1300503557) and alignment of the specification document with auditors.\\n\\n## What did the team achieve this week\\n\\n- Complete and merge ADR18 [#579](https://github.com/input-output-hk/hydra-poc/pull/579)\\n- Re-deploy hydra scripts to respun `preview` network, see [0.8.0 release notes](https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0) [#595](https://github.com/input-output-hk/hydra-poc/pull/595)\\n- Have first gap of [#452](https://github.com/input-output-hk/hydra-poc/pull/452) in review.\\n- Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot.\\n- Engineering meeting to discuss hard forks and protocol parameter updates [#195](https://github.com/input-output-hk/hydra-poc/issues/195#issuecomment-1300503557)\\n- Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions.\\n- Drafted project scope for an external audit RFP.\\n\\n## What are the goals of next week\\n\\n- Implement event-sourced persistence [#580](https://github.com/input-output-hk/hydra-poc/issues/580)\\n- Answer the internal auditor’s questions\\n- Have a draft RFP ready for a first review internally\\n- Close some gaps [#452](https://github.com/input-output-hk/hydra-poc/pull/452)"},{"id":"2022-11-04-mithril","metadata":{"permalink":"/cardano-updates/2022-11-04-mithril","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-mithril.md","source":"@site/blog/2022-11-04-mithril.md","title":"Mithril Team Update","description":"This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we\'ve implemented an efficiency improvement on the size of the mithril certificates.","date":"2022-11-04T00:00:00.000Z","formattedDate":"November 4, 2022","tags":[{"label":"mithril","permalink":"/cardano-updates/tags/mithril"}],"readingTime":1.015,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Mithril Team Update","slug":"2022-11-04-mithril","authors":"iquerejeta","tags":["mithril"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-11-04-hydra"},"nextItem":{"title":"Open-Source Team","permalink":"/cardano-updates/2022-10-31-open-source"}},"content":"This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we\'ve implemented an efficiency improvement on the size of the mithril certificates.\\n# Low level overview\\n- We have been moving forward on the implementation of the release process [#500](https://github.com/input-output-hk/mithril/issues/500):\\n - Setup of the new hosted environments for `testing-preview`, `pre-release-preview` and `release-preprod` with their terraform and GitHub environments [#542](https://github.com/input-output-hk/mithril/issues/542)\\n - Adapted the CI workflows to work with the new release process [#543](https://github.com/input-output-hk/mithril/issues/543)\\n - Publication of an [ADR3](https://mithril.network/doc/adr/3)\\n - Publication of a [dev blog post](https://mithril.network/doc/dev-blog/2022/10/28/updated-environments) about Mithril networks evolution \\n - Releasing our first Mithril distribution [2244.0](https://github.com/input-output-hk/mithril/releases/tag/2244.0)\\n- Worked on the API versioning mechanism [#565](https://github.com/input-output-hk/mithril/issues/565)\\n- Worked on the implementation of the stores migration process for the signer and aggregator nodes [#562](https://github.com/input-output-hk/mithril/issues/562)\\n- Prepared a Mithril `devnet` video demo [#526](https://github.com/input-output-hk/mithril/issues/526)\\n- Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably [#484](https://github.com/input-output-hk/mithril/pull/484)"},{"id":"2022-10-31-open-source","metadata":{"permalink":"/cardano-updates/2022-10-31-open-source","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-open-source.md","source":"@site/blog/2022-11-04-open-source.md","title":"Open-Source Team","description":"High Level Summary","date":"2022-11-04T00:00:00.000Z","formattedDate":"November 4, 2022","tags":[{"label":"open-source","permalink":"/cardano-updates/tags/open-source"}],"readingTime":1.465,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Open-Source Team","slug":"2022-10-31-open-source","authors":"coot","tags":["open-source"],"hide_table_of_contents":false},"prevItem":{"title":"Mithril Team Update","permalink":"/cardano-updates/2022-11-04-mithril"},"nextItem":{"title":"Embedding Quality Workstream","permalink":"/cardano-updates/2022-11-03-embedding-quality"}},"content":"## High Level Summary\\n\\n* We\'ve been working toward publishing _Cardano Backlog_, currently its in\\n review by the IOG communication team.\\n* We identified a number of libraries which can be published.\\n* We setup and enhanced [cardano-updates][cardano-updates].\\n\\n## Detailed description\\n\\nI am glad to announce that I was given the role of open-source advocate for\\ncardano project. In last few weeks we were making steps towards publishing our\\nbacklog. It\'s currently under review by the communication team, although most\\nof the issues are already visible across various repositories.\\n\\nThe open-source initiatives have their own\\n[project](https://github.com/orgs/input-output-hk/projects/60). It is set up\\nto help us track our major open-source activities. Right now there are two\\nwork streams:\\n\\n* the work on [_Cardano Engineering Handbook_][ceh];\\n* libraries to be release on [Hackage][Hackage] or [crates.io][crates.io].\\n\\nWe identifies a number of libraries across all the teams which contribute to\\n_Cardano_ which we would like publish to publish, see the following\\n[link][publish-on-hackage]. Arnauld Bailly recently published\\n[`quickcheck-dynamic`](https://hackage.haskell.org/package/quickcheck-dynamic)\\nlibrary on Hackage. The networking team is slowly progressing towards\\npublishing [io-sim][io-sim] and related packages, checkout the progress\\n[here](https://github.com/orgs/input-output-hk/projects/19/views/24).\\n\\nThanks to Arnaud Bailly our [Cardano Updates][cardano-updates] website has\\na new look & feel! It\'s using [docusaurus.io][docusaurus].\\n\\n\\nChristian Taylor carried recently a detailed analysis of our open-source\\nrepositories. He collected many interesting metrics, which allows us to see\\nwhere we need to improve as an open-source project to make the Cardano project\\nand many smaller related libraries which we maintain be more open and available\\nfor open-source contributors.\\n\\nThe graph below shows which documents the 55 most important Cardano\\nrepositories are missing the most:\\n![Documentation Adoption](../static/img/doc-adoption.png)\\nYou can expect we will improve in these metrics in the coming weeks.\\n\\n\\n[Hackage]: https://hackage.haskell.org/\\n[crates.io]: https://crates.io\\n[publish-on-hackage]: https://github.com/orgs/input-output-hk/projects/60/views/3\\n[io-sim]: https://github.com/input-output-hk/io-sim\\n[ceh]: https://input-output-hk.github.io/cardano-engineering-handbook/\\n[cardano-updates]: https://input-output-hk.github.io/cardano-updates\\n[docusaurus]: https://docusaurus.io"},{"id":"2022-11-03-embedding-quality","metadata":{"permalink":"/cardano-updates/2022-11-03-embedding-quality","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-03-embedding-quality.md","source":"@site/blog/2022-11-03-embedding-quality.md","title":"Embedding Quality Workstream","description":"High level summary","date":"2022-11-03T00:00:00.000Z","formattedDate":"November 3, 2022","tags":[{"label":"embedding-quality","permalink":"/cardano-updates/tags/embedding-quality"}],"readingTime":0.65,"hasTruncateMarker":false,"authors":[{"name":"Dorin Solomon","title":"System Test Team Lead","url":"https://github.com/dorin100","imageURL":"https://github.com/dorin100.png","key":"dorin100"}],"frontMatter":{"title":"Embedding Quality Workstream","slug":"2022-11-03-embedding-quality","authors":"dorin100","tags":["embedding-quality"],"hide_table_of_contents":false},"prevItem":{"title":"Open-Source Team","permalink":"/cardano-updates/2022-10-31-open-source"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-10-02-consensus"}},"content":"## High level summary\\n\\nWe made good progress on most of the Action Items we agreed on Lisbon, like:\\n* Cardano System Tests was fully open to public (tools, tests, results) \\n See [cardano-node-tests webpage](https://input-output-hk.github.io/cardano-node-tests).\\n* We defined an [user-facing-functionality template](https://github.com/input-output-hk/cardano-node/blob/master/.github/ISSUE_TEMPLATE/user-facing-feature.md) that is used with the cardano-cli team \\n * this includes acceptance criteria & user stories, and definition of done\\n* We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)\\n* We started to apply a _labelling convention_ on [cardano-node issues](https://github.com/input-output-hk/cardano-node/issues) that will be used to generate some visual dashboards with some metrics [TBD]\\n* Ziyand Liu started an _End-to-End Development and Testing Process for Plutus Features_"},{"id":"2022-10-02-consensus","metadata":{"permalink":"/cardano-updates/2022-10-02-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-consensus.md","source":"@site/blog/2022-11-02-consensus.md","title":"Consensus Team Update","description":"High-level summary","date":"2022-11-02T00:00:00.000Z","formattedDate":"November 2, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":3.53,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-10-02-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Embedding Quality Workstream","permalink":"/cardano-updates/2022-11-03-embedding-quality"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-11-02-ledger"}},"content":"## High-level summary\\n\\nDuring the past two weeks, the consensus team continued its work on testing the\\nUTxO HD prototype. We completed the era-transition and backing store tests, and\\nthe mempool tests are advancing at a steady pace. Regarding our work in the\\nGenesis design, we continued our collaboration with the research and networking\\nteams, and we continue investigating strategies for making the chain-sync\\njumping prototype faster.\\n\\n## High-level status report\\n\\n- Finish the UTxO HD prototype: on track.\\n - We worked on state-machine tests for the mempool, and spotted potential bugs\\n in the implementation. Investigation is ongoing.\\n - We have a set of property tests for the backing store. We still need to\\n incorporate the improvements to the LMDB cursor API that these tests\\n made possible.\\n - We merged the era-transition tests PR.\\n- Genesis: on track.\\n - Design work around Genesis continues in collaboration with researchers and\\n the networking team.\\n - We continued trying to improve the performance of the chain-sync jumping\\n prototype. We gained additional insight on which parameters to tweak next.\\n In spite of the baseline still being faster, the current prototype already\\n achieves a significant speedup when compared to the naive approach of simply\\n running full chain-sync with all peers.\\n- Tech debt: on track.\\n - We clarified a common source of confusion around VRF tie-breaking and\\n cross-era chain selection.\\n\\n## Workstreams\\n\\n### Finish the UTxO HD prototype\\n\\nWe continued working on property-tests for the UTxO HD prototype. In particular\\nwe merged the [era-transition tests\\nPR](https://github.com/input-output-hk/ouroboros-network/pull/4073).\\n\\n#### Backing store property tests\\n\\nThe [backing store property tests\\nPR](https://github.com/input-output-hk/ouroboros-network/pull/4081) has been\\nreviewed. The next steps are:\\n\\n- Improve error handling and command generation.\\n- Add coverage testing to check that we are not failing to cover interesting\\n test cases.\\n\\nThe [monadic cursor API](https://github.com/input-output-hk/lmdb-simple/pull/1)\\nwent through its first review round. The API is in a relatively stable state.\\nThis PR also unifies the `cborg` and `serialise`-based interfaces to LMDB\\noperations. The next steps are:\\n\\n- Write\\n [`quickcheck-dynamic`](https://hackage.haskell.org/package/quickcheck-dynamic)\\n state-machine tests for this API.\\n- Adapt the changes in the serialisation interface in the backing store property\\n tests. This will involve adding boilerplate code in consensus to make up for\\n the removal of the `cborg`-based interface.\\n\\n## LSM tree implementation\\n\\nWe worked on the [LSM tree\\nprototype](https://github.com/input-output-hk/ouroboros-network/issues/4121). In\\nparticular, we focused on tuning the LSM tree design to the different workloads\\nthat consensus has (eg syncing, normal node operation, etc).\\n\\n### Benchmarking the CSJ prototype\\n\\nWork on improving the chain-sync jumping performance is ongoing. In particular\\nwe compared the performance of different jump intervals, which, somewhat\\nsurprisingly, do not make a significant difference. In particular, we are seeing\\nperiodic \\"plateaus\\" where the chain-sync tip does not progress, but they are\\nmuch longer for the prototype. Our hypothesis is that this seem to be due to a\\ncombination of the garbage collector (GC) pauses, and the actual time it takes\\nthe non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo\\nfragment.\\n\\nIn the coming weeks we will try to shorten these plateaus via a combination of\\ntweaking GC options and less synchronisation in the CSJ governor.\\n\\nThe following plot shows the performance of the chain-sync jumping prototype\\nusing different jumping intervals. It compares the syncing progress by plotting\\nthe slots of adopted blocks against time. The baseline is still faster, however\\nit is worth noting that the current prototype already achieves a significant\\nspeedup when compared to the naive approach of simply running full chain-sync\\nwith all peers.\\n\\n![](/images/consensus/2022-11-02-csj-vs-baseline.svg)\\n\\nThe second plot shows the syncing progress sliced to a chosen ~5min interval,\\nand includes, in addition to the slots of adopted blocks, the slots of the tip\\nof the ChainSync fragment. This allows us to see how far ahead of the selected\\ntip the CS dynamo is, i.e. how much room we have for BlockFetch not to get\\nstalled. It shows periodic behaviour (due to the forecasting limit), and shows\\nthat the CS fragment tip is not progressing for significant periods\\n(\\"plateaus\\").\\n\\n![](/images/consensus/2022-11-02-csj-vs-baseline-sliced.svg)\\n\\n## Technical debt\\n\\nWe [clarified](https://github.com/input-output-hk/ouroboros-network/pull/4098) a\\ncommon source of confusion around VRF tie-breaking and cross-era chain\\nselection. This PR involved correcting potentially misleading names of\\nVRF-related functions, and providing context for a particular VRF value is\\nused for tie-breaking."},{"id":"2022-11-02-ledger","metadata":{"permalink":"/cardano-updates/2022-11-02-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-ledger.md","source":"@site/blog/2022-11-02-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2022-11-02T00:00:00.000Z","formattedDate":"November 2, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.275,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-11-02-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-10-02-consensus"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-11-02-node-cli-api"}},"content":"## High level summary\\nWe have made the decision to use the\\n[formal ledger repository](https://github.com/input-output-hk/formal-ledger-specifications)\\nin place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure\\nto the model. In particular, we now have a lot of support for axiomatic set theory.\\nWhile the next ledger era is still in the design phase, most of the team remains working\\non technical debt.\\nIn particular, we have moved a lot more code out of the Shelley specific modules and into\\na ledger core module, we have finished up our benchmarking around the problematic `TICKF`\\nledger transition (while improving the performance), made conveniences to the development\\nenvironment, cleaned up all the recent changes to the cost model, added a lot of documentation,\\nfixed some flaky tests, and deleted some dead code.\\n\\n## Lower level summary\\n\\n### Axiomatic Set Theory\\n\\nThe formal ledger model now has support for much of the set theory that we make use of in\\nthe formal ledger specifications. See [[pull-20]].\\n\\n### Completed Technical Debt\\n\\n- We have addressed issues with two of our most problematic and flaky tests.\\n See [[pull-3039]] and [[pull-3093]].\\n- We have added more documentation and tests to the Twiddler module. This is a module which\\n makes our CBOR serialization round-trip tests much more robust, and will also hopefully\\n help enforce the mandate for downstream libraries to never re-serialize data that needs\\n to be hashed. See [[pull-3073]] and [[pull-3095]]\\n (we cannot merge 3095 just yet, due to a preference for merging other features).\\n- We have finished our long analysis of the problematic `TICKF` transition.\\n We now have a lot of benchmarks surrounding this code, and have added performance improvements.\\n See [[pull-3068]] and [[issue-3035]].\\n- We have restored support for\\n [ghcid](https://hackage.haskell.org/package/ghcid)\\n in our repository. This is a tool for developing with Haskell that many of us find greatly\\n improves our productivity by providing us with constant feedback from the type checker.\\n See [[pull-3112]].\\n- After much activity on the cost model, we have done some final clean up of the code.\\n See [[pull-3075]] and [[pull-3101]].\\n- We moved a lot of the existing user facing documentation regarding native tokens into the\\n ledger repository, and cleaned it up\\n (most of the heavy lifting was done by our amazing technical writers).\\n See [[pull-3091]].\\n- We removed dead code. See [[pull-3089]].\\n- We moved a lot of code from the Shelley specific libraries to the ledger core library.\\n See [[pull-3109]] and [[pull-3110]].\\n- We\'ve removed more of the awkward legacy template Haskell names.\\n See [[pull-3108]].\\n\\n[issue-3035]: https://github.com/input-output-hk/cardano-ledger/issues/3035\\n\\n[pull-20]: https://github.com/input-output-hk/formal-ledger-specifications/pull/20\\n[pull-3039]: https://github.com/input-output-hk/cardano-ledger/pull/3039\\n[pull-3093]: https://github.com/input-output-hk/cardano-ledger/pull/3093\\n[pull-3073]: https://github.com/input-output-hk/cardano-ledger/pull/3073\\n[pull-3095]: https://github.com/input-output-hk/cardano-ledger/pull/3095\\n[pull-3068]: https://github.com/input-output-hk/cardano-ledger/pull/3068\\n[pull-3112]: https://github.com/input-output-hk/cardano-ledger/pull/3112\\n[pull-3075]: https://github.com/input-output-hk/cardano-ledger/pull/3075\\n[pull-3101]: https://github.com/input-output-hk/cardano-ledger/pull/3101\\n[pull-3091]: https://github.com/input-output-hk/cardano-ledger/pull/3091\\n[pull-3089]: https://github.com/input-output-hk/cardano-ledger/pull/3089\\n[pull-3109]: https://github.com/input-output-hk/cardano-ledger/pull/3109\\n[pull-3110]: https://github.com/input-output-hk/cardano-ledger/pull/3110\\n[pull-3108]: https://github.com/input-output-hk/cardano-ledger/pull/3108"},{"id":"2022-11-02-node-cli-api","metadata":{"permalink":"/cardano-updates/2022-11-02-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-node-cli-api.md","source":"@site/blog/2022-11-02-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2022-11-02T00:00:00.000Z","formattedDate":"November 2, 2022","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.265,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-11-02-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-11-02-ledger"},"nextItem":{"title":"Node Release Team Update","permalink":"/cardano-updates/2022-11-02-release"}},"content":"# 2022-11-02 - 2022-11-15\\n\\n## High level summary\\n- Documentation improvments\\n- Merged community contributions\\n- Exposing types from cardano-api requested by the community/other teamss\\n- Test output has been improved so diagnosing failures is now easier\\n- Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)\\n- Refactoring of cardano-testnet making it more useable as a library (ongoing)\\n- Release 1.35.4 was merged & released\\n\\n## Completed\\n\\n### cardano-cli\\n- [Community contributions - doc fixes and spelling errors](https://github.com/input-output-hk/cardano-node/pull/4567)\\n\\n### cardano-api\\n- [Reduce exposed modules in cardano-api](https://github.com/input-output-hk/cardano-node/pull/4546)\\n- [Add Ord instance for AddressInEra](https://github.com/input-output-hk/cardano-node/pull/4587)\\n- [Export TxTotalAndReturnCollateralSupportedInEra from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4496)\\n- [Expose TextEnvelopeCddl from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4635)\\n- [Expose txScriptValidityToScriptValidity in Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4628)\\n- [export RawBytesHexError](https://github.com/input-output-hk/cardano-node/pull/4599)\\n\\n### cardano-node\\n- [Add Plutus minting script doc](https://github.com/input-output-hk/cardano-node/pull/2883)\\n- [Improve test output](https://github.com/input-output-hk/cardano-node/pull/4575/files)\\n- [Enable stale bot](https://github.com/input-output-hk/cardano-node/pull/4586)\\n- [Add link to troubleshooting page in the wiki](https://github.com/input-output-hk/cardano-node/pull/4557)\\n- [Use environment files in Github Actions](https://github.com/input-output-hk/cardano-node/pull/4550)\\n\\n\\n### cardano-testnet\\n- [Add single entrypoint for starting testnets](https://github.com/input-output-hk/cardano-node/pull/4544)\\n- [Improve cardano-testnet test output](https://github.com/input-output-hk/cardano-node/pull/4575)\\n- [Reorder module hierarchy](https://github.com/input-output-hk/cardano-node/pull/4595)\\n\\n## In Progress\\n\\n### cardano-cli\\n- [BUGFIX]- [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Infer protocol params in transaction build](https://github.com/input-output-hk/cardano-node/pull/4431)\\n- [Allow assembling transactions with no witnesses](https://github.com/input-output-hk/cardano-node/pull/4408)\\n- [Multiple pools support in query stake snapshot](https://github.com/input-output-hk/cardano-node/pull/4279)\\n- [Optimise query leadership schedule command](https://github.com/input-output-hk/cardano-node/pull/4250)\\n- [Optimise query stake snapshot command](https://github.com/input-output-hk/cardano-node/pull/4179)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)"},{"id":"2022-11-02-release","metadata":{"permalink":"/cardano-updates/2022-11-02-release","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-release.md","source":"@site/blog/2022-11-02-release.md","title":"Node Release Team Update","description":"Node Reelease Update","date":"2022-11-02T00:00:00.000Z","formattedDate":"November 2, 2022","tags":[{"label":"release","permalink":"/cardano-updates/tags/release"}],"readingTime":0.445,"hasTruncateMarker":false,"authors":[{"name":"Samuel Leathers","title":"Service Reliability Manager","url":"https://github.com/disassembler","imageURL":"https://github.com/disassembler.png","key":"disassembler"}],"frontMatter":{"title":"Node Release Team Update","slug":"2022-11-02-release","authors":"disassembler","tags":["release"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-11-02-node-cli-api"},"nextItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2022-11-02-system-test"}},"content":"## Node Reelease Update\\n## 2022-10-19 - 2022-11-02\\n\\n### Executive Summary\\nThe team is formalizing the new release process and team structure. Both preview/preprod environments have been reset,\\na temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8.\\n\\n1.35.4 release candidates have been created and are being tested internally and externally.\\n\\n### Completed\\n\\n- [1.35.4-rc1 tag](https://github.com/input-output-hk/cardano-node/commits/1.35.4-rc1)\\n- [1.35.4-rc2 tag (config changes only for preview)](https://github.com/input-output-hk/cardano-node/commits/1.35.4-rc1)\\n- [CHaP Migration] (https://github.com/input-output-hk/cardano-node/pull/4540)\\n\\n### In Progress\\n\\n- [Release 1.35.4](https://github.com/input-output-hk/cardano-node/commits/release/1.35)\\n\\n * [Test Status](https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.4_rc1/src_docs/source/test_results/node/tag_1_35_4_rc1.rst)\\n\\n- [Cicero CI Migration](https://input-output-hk.github.io/cardano-updates/2022-08-12-sre)"},{"id":"2022-11-02-system-test","metadata":{"permalink":"/cardano-updates/2022-11-02-system-test","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-system-test.md","source":"@site/blog/2022-11-02-system-test.md","title":"System Test Team Update","description":"High level summary","date":"2022-11-02T00:00:00.000Z","formattedDate":"November 2, 2022","tags":[{"label":"system-test","permalink":"/cardano-updates/tags/system-test"}],"readingTime":0.4,"hasTruncateMarker":false,"authors":[{"name":"Dorin Solomon","title":"System Test Team Lead","url":"https://github.com/dorin100","imageURL":"https://github.com/dorin100.png","key":"dorin100"}],"frontMatter":{"title":"System Test Team Update","slug":"2022-11-02-system-test","authors":"dorin100","tags":["system-test"],"hide_table_of_contents":false},"prevItem":{"title":"Node Release Team Update","permalink":"/cardano-updates/2022-11-02-release"},"nextItem":{"title":"DB Sync Team Update","permalink":"/cardano-updates/2022-11-01-db-sync"}},"content":"## High level summary\\n\\nWe have been focused on:\\n* Fully opening our test results (on top of the existing tests & tools): \\n See [cardano-node-tests webpage](https://input-output-hk.github.io/cardano-node-tests/).\\n* Started to test and automate the new functionalities added in the `1.35.4-rc1` node tag \\n See [test results tracking page](https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.4_rc1/src_docs/source/test_results/node/tag_1_35_4_rc1.rst).\\n* Made some improvements to the automated db-sync sync tests \\n See [db-sync tests](https://github.com/input-output-hk/cardano-node-tests/tree/db_sync_tests/db_sync_tests).\\n* Multiple cleanups and updates to the cardano-node-tests framework\\n* Updated the nightly pipelines for the cardano-node-tests after the Babbage HF"},{"id":"2022-11-01-db-sync","metadata":{"permalink":"/cardano-updates/2022-11-01-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-01-db-sync.md","source":"@site/blog/2022-11-01-db-sync.md","title":"DB Sync Team Update","description":"High level summary","date":"2022-11-01T00:00:00.000Z","formattedDate":"November 1, 2022","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":0.86,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB Sync Team Update","slug":"2022-11-01-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"System Test Team Update","permalink":"/cardano-updates/2022-11-02-system-test"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-10-28-hydra"}},"content":"## High level summary\\n\\nThe DBSync team is preparing a release which introduces schema simplifications, removes indexes,\\nunique and foreign keys. It also provides a way to fix older values and migrates without the need to\\nresync from genesis.\\n\\n## Lower level summary\\n\\n### Schema simplifications\\n\\nIndexes, Unique and Foreign keys are removed in order to speedup syncing\\n[#1295](https://github.com/input-output-hk/cardano-db-sync/pull/1295)\\nThe same pr also introduces a different way to rollback, which doesn\'t rely on foreign keys and\\nindexes.\\n\\n### Performance\\n\\nThe DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A\\nconservative number of these will be included in the next release and the rest can be found in\\n[performance view](https://github.com/orgs/input-output-hk/projects/52/views/7).\\n\\n### Migrations and resyncing\\n\\nThe next release will be 13.1.0, it will enable a migration without the need to resync. It will also\\nintroduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases\\n[#1294](https://github.com/input-output-hk/cardano-db-sync/pull/1294)\\n\\n### Release\\n\\nThe release has been mostly cherry-picked from master\\n[#1294](https://github.com/input-output-hk/cardano-db-sync/pull/1294) and its scope can be seen\\n[release view](https://github.com/orgs/input-output-hk/projects/52/views/6)"},{"id":"2022-10-28-hydra","metadata":{"permalink":"/cardano-updates/2022-10-28-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-hydra.md","source":"@site/blog/2022-10-28-hydra.md","title":"Hydra Team Update","description":"High level summary","date":"2022-10-28T00:00:00.000Z","formattedDate":"October 28, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.795,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-10-28-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"DB Sync Team Update","permalink":"/cardano-updates/2022-11-01-db-sync"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-10-28-network"}},"content":"## High level summary\\n\\nThis week, the hydra team completed several user experience improvements to the\\n`hydra-tui` and `hydra-node`, and delivered a first version of persisted head\\nstates by publishing release version\\n[`0.8.0`](https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0).\\nBesides this, they met with researchers on topic of the HeadV1 specification and\\nkicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation.\\n\\n## What did the team achieve this week\\n\\n- Completed the UX improvements on the `hydra-tui`\\n- Released version [`0.8.0`](https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0), which delivers a first version of persisted head states\\n- Met with researchers on the HeadV1 specification\\n- Started work on the RFP for our external audit\\n\\n## What are the goals of next week\\n\\n- Complete ADR18 implementation and get it merged\\n- Start work on event-sourced persistence [#580](https://github.com/input-output-hk/hydra-poc/issues/580)\\n- Have a first plutus script gap closed [#452](https://github.com/input-output-hk/hydra-poc/issues/452)\\n- Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)"},{"id":"2022-10-28-network","metadata":{"permalink":"/cardano-updates/2022-10-28-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-network.md","source":"@site/blog/2022-10-28-network.md","title":"Network Team Update","description":"High-level summary","date":"2022-10-28T00:00:00.000Z","formattedDate":"October 28, 2022","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":2.665,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2022-10-28-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-10-28-hydra"},"nextItem":{"title":"Performance & Tracing Team Update","permalink":"/cardano-updates/2022-10-28-performance-and-tracing"}},"content":"## High-level summary\\n\\nThe team has focused on debuging & fixing bugs for the **P2P single relay release**, which included\\n\\n* diagnosing, fixing and writing tests for a bug in `peer-state-actions` which\\n fortunately hasn\'t been released;\\n* diagnosing & preventing misconfiguration of DNS\\n\\nWe also focused on developing **peer sharing**. We also held a session with\\nthe scientists on eclipse evasion.\\n\\n## Detailed description\\n\\n### P2P Network Stack\\n\\nDuring the past two weeks the team focused on p2p single relay release and peer\\nsharing. We found and fixed an important bug recently introduced in one of the\\ncomponents of p2p networking stack (fortunately never released). Together with\\na fix, we designed a unit test diffusion simulation as well as quickcheck\\nproperty test (both could reproduce it). We also changed the code in a way that\\nif such a bug is reintroduced in the future, it will be obvious to diagnose.\\nFor more see:\\n\\n* [ouroboros-network#4067](https://github.com/input-output-hk/ouroboros-network/pull/4067)\\n* [ouroboros-network#4086](https://github.com/input-output-hk/ouroboros-network/pull/4086)\\n\\nInitial benchmarking run of the P2P code was executed. The results where\\nunlike what we see on the mainnet. We found a possible misconfiguration of the\\ncluster (caused by 0 TTL on domain names), which could be the direct cause of\\nit. We wrote a PR which rules out such misconfiguration. We are awaiting on\\nthe next benchmarking results. See more at:\\n\\n[ouroboros-network#4106](https://github.com/input-output-hk/ouroboros-network/pull/4106)\\n\\nWe also started working on P2P single relay release. The PR\\n[ouroboros-network#4120](https://github.com/input-output-hk/ouroboros-network/pull/4120)\\nincludes _108_ patches cherry-picked from the `master` branch. We started\\nworking toward integration these changes against the release branch of\\n`cardano-node`. Early next week we ought to be able to have an early version\\nof `cardano-node` with _non experimental P2P support_!\\n\\nFor more detailed release plan please see [P2P - Single\\nRelay](https://github.com/input-output-hk/ouroboros-network/issues/3888)\\nissue.\\n\\n### Consensus\\n\\nWe identified and fixed missing error reporting in consensus\\ninitialisation phase. See more at\\n[ouroboros-network#4015](https://github.com/input-output-hk/ouroboros-network/pull/4015)\\n\\n### Cardano Node\\n\\nWe also made changes in `cardano-node` in order to give better experience for\\nnode operators. This includes updating severities of some of the traces as\\nwell as implementing new format of the p2p topology file. For more see:\\n\\n* [cardano-node#4563](https://github.com/input-output-hk/cardano-node/pull/4563).\\n* [cardano-node#4561](https://github.com/input-output-hk/cardano-node/pull/4561)\\n\\n### Peer Sharing\\n\\nWe continued working on implementation of peer sharing. We have an early\\nimplementation which will be reviewed and analysed in next weeks. We started\\nworking on `cardano-node` integration. We need\\n[PR #4392](https://github.com/input-output-hk/cardano-node/pull/4392) to be merged\\nbefore such integration will be able to land in `cardano-node`, although this\\nis _not blocking_ us currently. See more at:\\n\\n* [ouroboros-network#4019](https://github.com/input-output-hk/ouroboros-network/pull/4019)\\n\\n### Eclipse Evasion\\n\\nWe held a session which included Alexander Russel, Sandro Coretti-Drayton and\\nNick Frisby from the consensus team. We discussed high lever design of the\\neclipse evasion scheme, which is important for the design and implementation of\\n`ouroboros-genesis`. We got a positive feedback from the researchers.\\n\\n### IO-Sim\\n\\nIn this period we made little progress towards releasing `IO-Sim` on Hackage.\\nA single [PR](https://github.com/input-output-hk/io-sim/pull/32) which added\\na few missing instances of the `STM` monad.\\n\\n### Open Source\\n\\nWe made sure the CI runs for PRs which comes from forks (which is important to\\naccept contributions from 3rd parties).\\n\\n### Mithril Cardano Integration\\n\\nWe held initial discussions with Arnaud Bailly about possible path to integrate\\nmithril to `cardano-node` and take advantage of the `ouroboros-network`\\ndiffusion layer."},{"id":"2022-10-28-performance-and-tracing","metadata":{"permalink":"/cardano-updates/2022-10-28-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-performance-and-tracing.md","source":"@site/blog/2022-10-28-performance-and-tracing.md","title":"Performance & Tracing Team Update","description":"High level summary","date":"2022-10-28T00:00:00.000Z","formattedDate":"October 28, 2022","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing"}],"readingTime":1.155,"hasTruncateMarker":false,"authors":[{"name":"Serge Kosyrev","title":"Performance and Tracing Team Lead","url":"https://github.com/deepfire","imageURL":"https://github.com/deepfire.png","key":"deepfire"}],"frontMatter":{"title":"Performance & Tracing Team Update","slug":"2022-10-28-performance-and-tracing","authors":"deepfire","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-10-28-network"},"nextItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2022-08-12-sre"}},"content":"## High level summary\\n\\nOn the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline.\\n\\nOn the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario.\\n\\n## Executive summary\\n\\n- The new tracing system public release is getting closer, as we\'re resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale.\\n- The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment.\\n- The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE."},{"id":"2022-08-12-sre","metadata":{"permalink":"/cardano-updates/2022-08-12-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-sre.md","source":"@site/blog/2022-10-28-sre.md","title":"SRE Team Update","description":"High level summary","date":"2022-10-28T00:00:00.000Z","formattedDate":"October 28, 2022","tags":[{"label":"sre","permalink":"/cardano-updates/tags/sre"}],"readingTime":3.04,"hasTruncateMarker":false,"authors":[{"name":"Michael Fellinger","title":"SRE Team Lead","url":"https://github.com/manveru","imageURL":"https://github.com/manveru.png","key":"manveru"}],"frontMatter":{"title":"SRE Team Update","slug":"2022-08-12-sre","authors":"manveru","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & Tracing Team Update","permalink":"/cardano-updates/2022-10-28-performance-and-tracing"},"nextItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-10-27-crypto"}},"content":"## High level summary\\n\\nThe SRE team is heavily working on the Equinix Metal migration, replacing Hydra\\nwith Cicero, and a new version of Spongix.\\n\\n## Lower level summary\\n\\n### OpenZiti\\n\\n- Work is ongoing on our OpenZiti integration into Bitte in [[bitte-zt]].\\n- CI-World deployment of Darwin CI Ziti service in [[ci-world-commit-d40f4d]].\\n- Multiple issues filed, and a lot of discussion with the OpenZiti developers,\\n we\'re making pretty rapid progress thanks to them.\\n- Work on getting Equinix baremetal machines integrated into AWS World Bitte\\n clusters utilizing a Ziti ZTNA network overlay to bridge the networking of\\n the two environments and get IAM extension to Equinix machine for Nomad\\n client onboarding.\\n- A Nix Flake for most of our OpenZiti dependencies including the Console,\\n Controller, Edge Tunnel, and Router is now at [[openziti-bins]].\\n- The Flake also includes a WiP NixOS modules for these components.\\n- Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with\\n no issues seen so far\\n- Moved the console to traefik routing service (`zac.$DOMAIN`) and\\n controller/edge router stay at `zt.$DOMAIN`, but have registered consul\\n services\\n\\n### Cicero & Tullia Integrations\\n\\n- Added webhook for [[haskell.nix]].\\n- Finished Cicero CI action for [[cardano-addresses-pull-205]].\\n- Fixed cardano-prelude cicero action in [[cardano-prelude-pull-176]].\\n- Fixed the `abcird-stdlib/publish` action [[abcirdc-pull-104]]\\n- fix error on vm-bigdisk flake configs [[cicero-pull-66]].\\n- Helped with Cicero actions and answered questions for [[plutus]]\\n [[cardano-prelude]], and [[abcirdc]].\\n- Merged [[cardano-base-pull-323]] for Tullia on cardano-base.\\n- Merged Cicero action in [[cardano-ogmios-pull-5]].\\n- Opened [[cardano-explorer-app-pull-427]] to add Tullia and Cicero.\\n- Opened [[cardano-ledger-pull-3097]] to add Cicero CI action.\\n- Opened [[cardano-node-pull-4489]] to add Tullia and Cicero, including\\n OS-agnostic jobs.\\n- Opened [[ouroboros-network-pull-4108]] to add Cicero action.\\n- Reviewed [[plutus-pull-4918]] and helped test it.\\n- Update Tullia in [[abcirdc-pull-97]] to build if a tag is given.\\n\\n### Cicero & Tullia Features\\n\\n- Improvements to Tullia task aggregation to make [[cardano-addresses]] build\\n correctly.\\n- Better tullia CUE lib default for tags [[tullia-commit-4df3c5d]].\\n- Put `cache.nixos.org` back in `cache.iog.io`\'s upstreams. This is now\\n considered a public cache again, and without it some Cicero evaluations had\\n to build huge packages.\\n- Started working on a flake-parts module for Tullia.\\n- Started working on cutting down Tullia task build time by putting facts in\\n JSON files.\\n- Fixed running into kernel arg limit by reading tullia\'s DAG from a file\\n- Merged [[tullia-pull-9]] that fixes several issues related to error reporting.\\n and escaping.\\n- Added Mac builders in Cicero on CI-World.\\n- Started work on Tullia invocation caching.\\n\\n### Spongix\\n\\n- A lot of progress on an SQlite backed version of Spongix, it already supports\\n the full HTTP binary cache protocol but still lacks comprehensive testing and\\n some tuning, as well as recursive lookups.\\n- First steps in the implementation of the `nix-daemon` `ssh-ng` protocol so\\n Spongix can be used via SSH and we can get rid of basic auth.\\n\\n### Bugs\\n\\n- Discovered Cicero bug where Nomad reschedules cause the Github commit status\\n to get stuck in `pending`\\n- Discovered Cicero race condition bug around concurrent transactions for\\n codependent actions.\\n- Fixed tullia task order bug in [[cardano-addresses]]\\n- Diagnose Cicero action not triggered in [[abcirdc]]\\n- Fixed meta/description of the Tullia package in [[tullia-pull-7]]\\n- Add Vault token loop alerts in [[bitte-cells-pull-40]]\\n- Ongoing investigation on recurring Patroni and nomad-follower issues related\\n to token rotation.\\n\\n[abcirdc]: https://github.com/input-output-hk/abcirdc\\n[abcirdc-pull-104]: https://github.com/input-output-hk/abcirdc/pull/104\\n[abcirdc-pull-97]: https://github.com/input-output-hk/abcirdc/pull/97\\n[bitte-cells-pull-40]: https://github.com/input-output-hk/bitte-cells/pull/40\\n[bitte-zt]: https://github.com/input-output-hk/bitte/compare/zt\\n[cardano-addresses]: https://github.com/input-output-hk/cardano-addresses\\n[cardano-addresses-pull-205]: https://github.com/input-output-hk/cardano-addresses/pull/205\\n[cardano-base-pull-323]: https://github.com/input-output-hk/cardano-base/pull/323\\n[cardano-explorer-app-pull-427]: https://github.com/input-output-hk/cardano-explorer-app/pull/427\\n[cardano-ledger-pull-3097]: https://github.com/input-output-hk/cardano-ledger/pull/3097\\n[cardano-node-pull-4489]: https://github.com/input-output-hk/cardano-node/pull/4489\\n[cardano-ogmios-pull-5]: https://github.com/input-output-hk/cardano-ogmios/pull/5\\n[cardano-prelude]: https://github.com/input-output-hk/cardano-prelude\\n[cardano-prelude-pull-176]: https://github.com/input-output-hk/cardano-prelude/pull/176#issuecomment-1280947946\\n[cicero-pull-66]: https://github.com/input-output-hk/cicero/pull/66\\n[ci-world-commit-d40f4d]: https://github.com/input-output-hk/ci-world/commit/d40f4d19187a2128b6f0d63bde7e3f9a33071994\\n[haskell.nix]: https://github.com/input-output-hk/haskell.nix\\n[openziti-bins]: https://github.com/johnalotoski/openziti-bins\\n[ouroboros-network-pull-4108]: https://github.com/input-output-hk/ouroboros-network/pull/4108\\n[plutus]: https://github.com/input-output-hk/plutus\\n[plutus-pull-4918]: https://github.com/input-output-hk/plutus/pull/4918\\n[tullia-commit-4df3c5d]: https://github.com/input-output-hk/tullia/commit/4df3c5d956f1b062b950643da12768ae71acf245\\n[tullia-pull-7]: https://github.com/input-output-hk/tullia/pull/7\\n[tullia-pull-9]: https://github.com/input-output-hk/tullia/pull/9"},{"id":"2022-10-27-crypto","metadata":{"permalink":"/cardano-updates/2022-10-27-crypto","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-27-crypto.md","source":"@site/blog/2022-10-27-crypto.md","title":"Crypto Team Update","description":"High level overview","date":"2022-10-27T00:00:00.000Z","formattedDate":"October 27, 2022","tags":[{"label":"crypto","permalink":"/cardano-updates/tags/crypto"}],"readingTime":1.095,"hasTruncateMarker":false,"authors":[{"name":"I\xf1igo Querejeta Azurmendi","title":"Cardano Lead Cryptography Engineer","url":"https://github.com/iquerejeta","imageURL":"https://github.com/iquerejeta.png","key":"iquerejeta"}],"frontMatter":{"title":"Crypto Team Update","slug":"2022-10-27-crypto","authors":"iquerejeta","tags":["crypto"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Team Update","permalink":"/cardano-updates/2022-08-12-sre"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-10-21-hydra"}},"content":"## High level overview\\n\\nThe crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to\\nmeeting the [acceptance criteria](https://github.com/input-output-hk/cardano-base/issues/315) in cardano-base,\\nwhich lacks some editorial comments on the style of dQuandrant\'s PR, the inclusion of one additional test, and\\nwe are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution,\\nbut also progressing on the implementation.\\n\\n## Low level overview\\n### SECP built-ins\\n* (missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in [PR 313](https://github.com/input-output-hk/cardano-base/pull/313)\\n* CIP-0049 was addressed in the editors meeting, and [PR 250](https://github.com/cardano-foundation/CIPs/pull/250) was merged\\n* The unit-tests [PR 320](https://github.com/input-output-hk/cardano-base/pull/320) is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.\\n\\n### KES agent\\n* We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them.\\n* We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s)."},{"id":"2022-10-21-hydra","metadata":{"permalink":"/cardano-updates/2022-10-21-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-21-hydra.md","source":"@site/blog/2022-10-21-hydra.md","title":"Hydra Team Update","description":"High level summary","date":"2022-10-21T00:00:00.000Z","formattedDate":"October 21, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":0.97,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-10-21-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Crypto Team Update","permalink":"/cardano-updates/2022-10-27-crypto"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-10-19-node-cli-api"}},"content":"## High level summary\\n\\nThis week, the hydra team reviewed and addressed several open comments on the\\nnew HeadV1 specification, completing a list the of identified gaps between\\nspecification and implementation while doing so. In the wake of the recent\\ndemonstration of SundaeSwap running their DEX in a Hydra Head, they met with\\nthem to capture feature ideas & incorporate their feedback on the roadmap, as\\nwell as potential research avenues.\\n\\n### What did the team achieve this week\\n\\n- Had the monthly review meeting, a bit earlier than expected: \\n- Reviewed and addressed several open comments on HeadV1 specification.\\n- Completed the list of identified gaps between specification and implementation [#452](https://github.com/input-output-hk/hydra-poc/issues/452)\\n- Had two meetings with SundaeSwap to incorporate their feedback (on research and on the roadmap).\\n- Some small fixes on TUI and our docker images. [#538](https://github.com/input-output-hk/hydra-poc/issues/538) [#562](https://github.com/input-output-hk/hydra-poc/pull/562)\\n- Met with the internal audit team and clarified scope.\\n\\n### What are the goals of next week\\n\\n- Complete the last two items required for a version `0.8.0`.\\n- Cut the next release, version `0.8.0`\\n- Get backup/recovery [#187](https://github.com/input-output-hk/hydra-poc/issues/187) done with proper event sourcing (ADR18)\\n- Have the CI build macos artifacts"},{"id":"2022-10-19-node-cli-api","metadata":{"permalink":"/cardano-updates/2022-10-19-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-19-node-cli-api.md","source":"@site/blog/2022-10-19-node-cli-api.md","title":"Node API & CLI Team Update","description":"High level summary","date":"2022-10-19T00:00:00.000Z","formattedDate":"October 19, 2022","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":1.57,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-10-19-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-10-21-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-10-18-consensus"}},"content":"# 2022-10-19 - 2022-11-01\\n\\n## High level summary\\n\\nThis sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node\'s mempool for the following information:\\n- Ask the node about the current mempool\'s capacity and sizes\\n- Request the next transaction from the mempool\'s current list\\n- Query if a particular transaction exists in the mempool\\n\\nOutside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric `tx_submit_fail_count` has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:\\n- Documentation improvments\\n- Release 1.35.4 was merged & released\\n- Exported various types from cardano-api that were requested by community members\\n\\n## Completed\\n\\n- [Release 1.35.4](https://github.com/input-output-hk/cardano-node/pull/4508)\\n\\n### cardano-cli\\n- [Add tx-mempool command to CLI](https://github.com/input-output-hk/cardano-node/pull/4276)\\n- [BUGFIX] - [Fix query era mismatch bug in transaction build command](https://github.com/input-output-hk/cardano-node/pull/4538)\\n- [Serenity] - [Condense Read and Validation modules in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4516)\\n\\n### cardano-api\\n- [Return Lovelace for calculateMinimumUTxO](https://github.com/input-output-hk/cardano-node/pull/4482)\\n- [Export IsPlutusScriptLanguage from cardano-api](https://github.com/input-output-hk/cardano-node/pull/4554)\\n- [Reduce exposed modules in cardano-api](https://github.com/input-output-hk/cardano-node/pull/4546)\\n- [Add ToJSON and FromJSON instances for Address](https://github.com/input-output-hk/cardano-node/pull/4568)\\n- [Export TxIns type alias from Cardano.Api](https://github.com/input-output-hk/cardano-node/pull/4565)\\n- [Export more generators from cardano-api](https://github.com/input-output-hk/cardano-node/pull/4534)\\n\\n### cardano-submit-api\\n- [Add tx_submit_fail_count metric](https://github.com/input-output-hk/cardano-node/pull/4566)\\n\\n### cardano-node\\n- [Upgrade to cabal-3.8.1.0](https://github.com/input-output-hk/cardano-node/pull/4549)\\n- [Update building-the-node-using-nix.md](https://github.com/input-output-hk/cardano-node/pull/4613)\\n\\n### cardano-testnet\\n- None\\n\\n## In Progress\\n\\n### cardano-cli\\n- [BUGFIX]- [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Infer protocol params in transaction build](https://github.com/input-output-hk/cardano-node/pull/4431)\\n- [Allow assembling transactions with no witnesses](https://github.com/input-output-hk/cardano-node/pull/4408)\\n- [Multiple pools support in query stake snapshot](https://github.com/input-output-hk/cardano-node/pull/4279)\\n- [Optimise query leadership schedule command](https://github.com/input-output-hk/cardano-node/pull/4250)\\n- [Optimise query stake snapshot command](https://github.com/input-output-hk/cardano-node/pull/4179)\\n- [Debug output for transaction submit](https://github.com/input-output-hk/cardano-node/pull/3819)\\n\\n### cardano-api\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n\\n### cardano-node\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)"},{"id":"2022-10-18-consensus","metadata":{"permalink":"/cardano-updates/2022-10-18-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-18-consensus.md","source":"@site/blog/2022-10-18-consensus.md","title":"Consensus Team Update","description":"High-level summary","date":"2022-10-18T00:00:00.000Z","formattedDate":"October 18, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":3.225,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-10-18-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-10-19-node-cli-api"},"nextItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-10-14-hydra"}},"content":"## High-level summary\\n\\nDuring the past two weeks, the consensus team worked on adding property test for\\ndifferent aspects of the UTxO HD prototype: era transitions, mempool, and\\nbacking store. Thanks to these tests we were able to uncover a bug in the\\nprototype. On the Genesis front, we benchmarked a different version of the\\nChainSync jumping prototype to try to improve its performance, but this did not\\nresult in any noticeable speedup.\\n\\n## High-level status report\\n\\n- Finish the UTxO HD prototype: on track.\\n - We focused on increasing test coverage for the UTxO-HD prototype:\\n - We started implementing Cadano-eras transition property-tests.\\n - We started implementing state-machine property-tests for the mempool.\\n - We merged the mempool rewrite.\\n - We started working on state-machine tests for the backing store. This\\n uncovered a bug in the range-read implementation of the LMDB backing\\n store.\\n- Genesis: on track.\\n - We benchmarked a version of the Genesis ChainSync Jumping prototype that\\n spreads out the ChainSync updates over a longer period of time. This did not\\n result in any noticeable speedup.\\n - We investigated the overhead introduced by non-ChainSync components, but no\\n conclusions could be drawn from the benchmarks we ran.\\n\\n## Workstreams\\n\\n### Finish the UTxO HD prototype\\n\\nWe focused on increasing test coverage for the UTxO HD prototype. We also merged\\nthe [mempool\\nrewrite](https://github.com/input-output-hk/ouroboros-network/pull/4049).\\n\\n#### Era transition property tests\\n\\nWe started implementing [Cardano era transition property\\ntests](https://github.com/input-output-hk/ouroboros-network/issues/4043),\\nwhich are needed for making sure that the ledger tables get updated in the\\nright way when we move from one era to the next. There are at the moment two\\nimportant transitions.\\n- Byron to Shelley: where all the UTxO is transferred from in-memory Byron\\n state (which has no tables) to the ledger tables of the Shelley state.\\n- Shelley to Allegra: where the AVVM addresses must be deleted.\\n\\nWe have tests for the Byron to Shelley transitions. We are working on adding\\nthe remaining ones.\\n\\n#### Mempool state-machine tests\\n\\nWe started implementing [state-machine property tests for the\\nmempool](https://github.com/input-output-hk/ouroboros-network/issues/4044).\\nThe mempool is currently tested via pure property tests, and use a ledger\\nstate without tables. With the introduction of UTxO HD, testing the concurrent\\nbehavior of the mempool became of crucial importance (eg now we have to\\nacquire locks to flush the backing store). In addition, we need to test a\\nledger state with tables. These needs led to the creation of a new set of\\nproperty tests. In particular we aim to run parallel state-machine tests that\\nexercise the mempool in a way similar to how the node would make use of it.\\n\\n#### Backing store property tests\\n\\nWe started working on [state-machine tests for the backing\\nstore](https://github.com/input-output-hk/ouroboros-network/pull/4081) that UTxO\\nHD uses. The property tests uncovered errors in the range-reads implementation\\nof the LMDB backing store. To facilitate fixing this bug, we made\\n[changes](https://github.com/input-output-hk/lmdb-simple/pull/1) to the Haskell\\nLMDB bindings.\\n\\n### Benchmarking the CSJ prototype\\n\\nPrompted by previous benchmarks showing significant improvements in sync time by\\nusing more capabilities, we implemented a way to spread out the ChainSync\\nupdates over a larger period instead of firing them all at the same time. This\\ndidn\'t result in a noticeable speedup.\\n\\nWe also benchmarked the prototype with CSJ disabled (such that just the dynamo\\npeer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule\\nout/confirm overhead by non-ChainSync (mainly BlockFetch) related components.\\nThis results in era-specific behavior (speed is like the prototype in Byron, but\\nlike the baseline in Shelley). This deserves a closer look in the future.\\n\\nThis diagram shows the respective syncing progress, starting at Genesis and\\ncontinuing a good part into Shelley (with the dashed line indicating the\\nByron-to-Shelley transition).\\n\\n - Red: baseline\\n - Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps.\\n - Blue: like Green, jumps are spread out.\\n - Orange: variant with no jumping, to measure unrelated overhead.\\n\\n![](/images/happy-path-csj-prototype-bench-2.svg)"},{"id":"2022-10-14-hydra","metadata":{"permalink":"/cardano-updates/2022-10-14-hydra","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-14-hydra.md","source":"@site/blog/2022-10-14-hydra.md","title":"Hydra Team Update","description":"High level summary","date":"2022-10-14T00:00:00.000Z","formattedDate":"October 14, 2022","tags":[{"label":"hydra","permalink":"/cardano-updates/tags/hydra"}],"readingTime":1.26,"hasTruncateMarker":false,"authors":[{"name":"Sebastian Nagel","title":"Hydra Team Lead","url":"https://github.com/ch1bo","imageURL":"https://github.com/ch1bo.png","key":"ch1bo"}],"frontMatter":{"title":"Hydra Team Update","slug":"2022-10-14-hydra","authors":"ch1bo","tags":["hydra"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-10-18-consensus"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-10-14-ledger"}},"content":"## High level summary\\n\\nThis week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the `hydra-node` over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks \\"past the opening of a Head\\". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.\\n\\n## What did the team achieve this week\\n\\n- Last week we thought we were done with [ADR18](https://hydra.family/head-protocol/adr/18/), but were not ...\\n- ... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence.\\n- Implemented a first version for persistence [#187](https://github.com/input-output-hk/hydra-poc/issues/187) in response.\\n- Enhanced CI to publish test results [on our website](https://hydra.family/head-protocol/benchmarks/tests/hydra-node/hspec-results)\\n- Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!\\n- Pulled static executable feature [#200](https://github.com/input-output-hk/hydra-poc/issues/200) into scope, implemented it and merged it!\\n- Received and read through a project proposal by a vendor (building a Hydra platform).\\n\\n## What are the goals of next week\\n\\n- Get backup/recovery [#187](https://github.com/input-output-hk/hydra-poc/issues/187) done with proper event sourcing (ADR18)\\n- Cut the next release, version `0.8.0`\\n- Address open comments on specification document & complete the list of identified gaps between specification and implementation [#452](https://github.com/input-output-hk/hydra-poc/issues/452)\\n- Have the CI build macos artifacts"},{"id":"2022-10-14-ledger","metadata":{"permalink":"/cardano-updates/2022-10-14-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-14-ledger.md","source":"@site/blog/2022-10-14-ledger.md","title":"Ledger Team Update","description":"High level summary","date":"2022-10-14T00:00:00.000Z","formattedDate":"October 14, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.03,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-10-14-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Hydra Team Update","permalink":"/cardano-updates/2022-10-14-hydra"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-10-05-consensus"}},"content":"## High level summary\\n\\nThe ledger team is still primarily focused on addressing\\n[technical](https://github.com/input-output-hk/cardano-ledger/issues?q=is%3Aissue+is%3Aopen+label%3A%22%3Acredit_card%3A+technical-debt%22)\\n[debt](https://github.com/input-output-hk/cardano-ledger/projects/3).\\nWe now have the infrastructure for versioning our serialization schemes,\\nwhich we continue to put into action.\\nWe have made first steps towards getting proper support for the\\n[formal ledger repository](https://github.com/input-output-hk/formal-ledger-specifications)\\n(in particular, we\'ve added nix builds and\\ncontinuous integration support).\\nWe are wrapping up an investigation of the performance of a critical\\nfunction used by the consensus layer for leader checks.\\nFinally, we are improving the packaging and versioning of our code.\\n\\n## Lower level summary\\n\\n### Completed Technical Debt\\n\\n- Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of\\n our code lives in the `cardano-ledger-shelley` package, though with hindsight we can say that\\n much of it should live in `cardano-ledger-core`.\\n We continue to move things to `cardano-ledger-core`, and have much more to come. [[pull-3059]]\\n- We now have the infrastructure to support **versioned** serialization schemes.\\n The inability to do this has caused us a lot difficulties,\\n such as [[issue-3003]], [[issue-2965]] and [[issue-2444]].\\n We are still in the process of switching to the versioned serialization scheme\\n (such as [[pull-3078]]),\\n but the infrastructure was completed in [[pull-3063]].\\n- We now have proper nix and CI support for the formal ledger project. [[pull-19]]\\n- A separate team is helping bring support for\\n [CHaP](https://github.com/input-output-hk/cardano-haskell-packages)\\n to all the cardano-node repositories.\\n We have been helping out with this effort.\\n* A separate team continues working on upgrading all the\\n cardano-node repositories to work with ghc 9.2.4.\\n We have been helping out with this effort.\\n\\n### In-progress Technical Debt\\n\\nWe also have several fairly large pull-requests in review\\nthat we are working on.\\n\\n- In an on-going attempt to build out a more user-friendly API,\\n we continue to remove `HasField` instances in place of using micro-lenses.\\n The protocol parameters, in particular, are being worked on. [[pull-3045]]\\n- We are also renaming record fields to be consistent across the repository. [[pull-3062]]\\n- We are now cleaning up all the work we did to understand the performance\\n of the TICKF transition. We have some improvements to the computatation\\n as well. [[pull-3068]]\\n- We are adding more documentation, in particular to our `Twiddler` functionality. [[pull-3073]]\\n- The formal ledger is adding support for finite set theory. [[pull-20]]\\n\\n[issue-2444]: https://github.com/input-output-hk/cardano-ledger/issues/2444\\n[issue-2965]: https://github.com/input-output-hk/cardano-ledger/issues/2965\\n[issue-3003]: https://github.com/input-output-hk/cardano-ledger/issues/3003\\n\\n[pull-3059]: https://github.com/input-output-hk/cardano-ledger/pull/3059\\n[pull-3045]: https://github.com/input-output-hk/cardano-ledger/pull/3045\\n[pull-3062]: https://github.com/input-output-hk/cardano-ledger/pull/3062\\n[pull-3063]: https://github.com/input-output-hk/cardano-ledger/pull/3063\\n[pull-3068]: https://github.com/input-output-hk/cardano-ledger/pull/3068\\n[pull-3073]: https://github.com/input-output-hk/cardano-ledger/pull/3073\\n[pull-3078]: https://github.com/input-output-hk/cardano-ledger/pull/3078\\n[pull-19]: https://github.com/input-output-hk/formal-ledger-specifications/pull/19\\n[pull-20]: https://github.com/input-output-hk/formal-ledger-specifications/pull/20"},{"id":"2022-10-05-consensus","metadata":{"permalink":"/cardano-updates/2022-10-05-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-05-consensus.md","source":"@site/blog/2022-10-05-consensus.md","title":"Consensus Team Update","description":"High level summary","date":"2022-10-05T00:00:00.000Z","formattedDate":"October 5, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":1.825,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-10-05-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-10-14-ledger"},"nextItem":{"title":"DB Sync Team Update","permalink":"/cardano-updates/2022-10-04-db-sync"}},"content":"## High level summary\\n\\nDuring the past two weeks, the consensus team worked on improving the\\nperformance of the ChainSync jumping logic, which is needed for Genesis. We also\\nrewrote the implementation of the mempool in the UTxO HD prototype which solved\\nthe issues that prevented us from running system level benchmarks. Also on the\\nUTxO HD front, we have an improved implementation of the sequence-of-differences\\n(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for\\nthe UTxO HD feature.\\n\\n## Executive summary\\n\\n- With the latest implementation of ChainSync jumping we are closer to the\\n baseline performance. In particular, the prototype seems to benefit from the\\n extra concurrency provided by additional capabilities.\\n- We rewrote the implementation of the mempool in the UTxO HD prototype. This\\n rewrite was required due to performance problems we observed when running the\\n [workbench](https://github.com/input-output-hk/cardano-node/blob/master/Makefile#L51).\\n These performance problems prevented us from running system level benchmarks.\\n The rewrite solved these issues. After the [UTxO-HD: mempool\\n rewrite](https://github.com/input-output-hk/ouroboros-network/pull/4049) PR is\\n merged, we will contact the Benchmarking team so that they run the system\\n level benchmarks.\\n- The implementation of sequences of differences based on anti-diffs was\\n integrated into the UTxO HD prototype. It is pending\\n [review](https://github.com/input-output-hk/ouroboros-network/pull/4036) and\\n we also need to run replay and syncing benchmarks to confirm that this will\\n deliver a performance improvement, as observed in our micro-benchmarks.\\n- [The UTxO HD prototype\\n inspection](https://github.com/input-output-hk/ouroboros-network/issues/3944)\\n resulted in a [list of\\n tests](https://github.com/input-output-hk/ouroboros-network/issues/4045)\\n needed for consensus to consider the UTxO HD prototype as fully tested.\\n\\n## Additional information\\n\\n### Genesis\\n\\nBenchmarking setup: 50MBit/s, 50ms latency\\n\\n - Red: baseline\\n - Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.\\n\\nAs ChainSync Jumping involves many concurrent network operations at every jump,\\nwe tried to run the node with 6 instead of the default 2 capabilties.\\n\\n - Orange: baseline with 6 capabilities\\n - Blue: CSJ prototype with 6 capabilities\\n\\nThis diagram shows the respective syncing progress, starting at Genesis and\\ncontinuing a good part into Shelley (with the dashed line indicating the\\nByron-to-Shelley transition).\\n\\n![](/images/happy-path-csj-prototype-bench-1.svg)\\n\\nFurther work includes whether we can tune the prototype to better handle few\\ncapabilities, or to adapt the default number of capabilities (potentially just\\nwhile syncing)."},{"id":"2022-10-04-db-sync","metadata":{"permalink":"/cardano-updates/2022-10-04-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-04-db-sync.md","source":"@site/blog/2022-10-04-db-sync.md","title":"DB Sync Team Update","description":"DBSync Update","date":"2022-10-04T00:00:00.000Z","formattedDate":"October 4, 2022","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":1.65,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB Sync Team Update","slug":"2022-10-04-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-10-05-consensus"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-10-04-node-cli-api"}},"content":"## DBSync Update\\n\\n\\n### Fast restarts\\n We fixed a long overdue issue in db-sync which caused long delays on restarts\\n [1266](https://github.com/input-output-hk/cardano-db-sync/pull/1266). This has been\\n one of db-sync main objectives for this period. Restarts are now very fast,\\n because db-sync deletes almost nothing from the db, it just replays the ledger rules until it\\n reaches the tip of the db. The fix also improves reconnection speed, in cases where the node\\n restarts or the connection is temporarily lost. It also speeds up even more in cases where due to a\\n deployment mess up a very old snapshot or no snapshot at all is used.\\n\\n### Property based testing\\nWe added stateful property based testing, using `quickcheck-state-machine`\\n [1269](https://github.com/input-output-hk/cardano-db-sync/pull/1269). These tests use empty or\\n almost empty blocks to test the new behaviour of restarts and rollbacks.\\n\\n These tests generate arbitrarily a list of symbolic commands from these:\\n\\n```\\nRollForward Int\\nRollBack BlockNo\\nStopDBSync\\nStartDBSync\\nRestartNode\\nAssertBlockNo BlockNo\\n```\\n\\nThe commands are translated into real commands. For example `RollForward Int` will forge a new block\\nthat fits on the current chain. These real commands are executed against db-sync using the mock\\nchain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync\\nwhich looks like this:\\n\\n``` haskell\\n Model\\n { serverTip :: BlockNo\\n , dbSyncTip :: BlockNo\\n , dbSynsIsOn :: Bool\\n , dbSynsHasSynced :: Bool\\n }\\n```\\n\\nFinally a number of postconditions are checked, related to the eventual block number of db-sync.\\n\\n### Tech Debt\\n\\nWe handled a number of tech debt in\\n [1275](https://github.com/input-output-hk/cardano-db-sync/pull/1275)\\n This improves the code format of db-sync, deletes many queries that were never used and groups the\\n others. This tech debt resolution not only improves the experience of working in db-sync, but can\\n facilitate some of our other objectives, as it makes it very explicit which queries are used\\n during syncing and which indexes are necessary.\\n\\n### Smash\\n\\nWe worked on fixing an issue related to fetching pool metadata\\n [1276](https://github.com/input-output-hk/cardano-db-sync/pull/1276).\\n The issue which is described in\\n [1270](https://github.com/input-output-hk/cardano-db-sync/issues/1270)"},{"id":"2022-10-04-node-cli-api","metadata":{"permalink":"/cardano-updates/2022-10-04-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-04-node-cli-api.md","source":"@site/blog/2022-10-04-node-cli-api.md","title":"Node API & CLI Team Update","description":"Node-Api-Cli Update","date":"2022-10-04T00:00:00.000Z","formattedDate":"October 4, 2022","tags":[{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api"}],"readingTime":0.98,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-10-04-node-cli-api","authors":"Jimbo4350","tags":["cli-api"],"hide_table_of_contents":false},"prevItem":{"title":"DB Sync Team Update","permalink":"/cardano-updates/2022-10-04-db-sync"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-09-30-ledger"}},"content":"## Node-Api-Cli Update\\n## 2022-10-04 - 2022-10-18\\n\\n### Executive Summary\\nThe majority of the team\'s time was spent between getting `1.34.4` ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to `cardano-cli`.\\n\\n### Completed\\n\\n- [GHC 9.2.4 preparations](https://github.com/input-output-hk/cardano-node/pull/4504)\\n\\n#### cardano-cli\\n\\n- [Serenity] - [Separate IO from txBuild and txBuildRaw functions](https://github.com/input-output-hk/cardano-node/pull/4491)\\n\\n#### cardano-api\\n\\n- [BUGFIX] - [TxWitness text envelope format does not roundtrip in Shelley era](https://github.com/input-output-hk/cardano-node/pull/4501)\\n\\n#### cardano-node\\n\\n- [Fix MacOS GHA CI](https://github.com/input-output-hk/cardano-node/pull/4526)\\n\\n### In Progress\\n\\n- [Release 1.34.4](https://github.com/input-output-hk/cardano-node/pull/4508)\\n\\n#### cardano-cli\\n\\n- [BUGFIX] - [Fix query era mismatch bug in transaction build command](https://github.com/input-output-hk/cardano-node/pull/4538)\\n- [Serenity] - [Condense Read and Validation modules in cardano-cli](https://github.com/input-output-hk/cardano-node/pull/4516)\\n- [BUGFIX]- [Stop the cli from changing the bytes in user-supplied data](https://github.com/input-output-hk/cardano-node/pull/4537)\\n- [Infer protocol params in transaction build](https://github.com/input-output-hk/cardano-node/pull/4431)\\n- [Allow assembling transactions with no witnesses](https://github.com/input-output-hk/cardano-node/pull/4408)\\n- [Add tx-mempool command to CLI](https://github.com/input-output-hk/cardano-node/pull/4276)\\n\\n### cardano-api\\n\\n- [Return Lovelace for calculateMinimumUTxO](https://github.com/input-output-hk/cardano-node/pull/4482)\\n- [Make TxBodyContent an instance of Monoid](https://github.com/input-output-hk/cardano-node/pull/4458)\\n- [Auto-balance multiasset transactions](https://github.com/input-output-hk/cardano-node/pull/4450)\\n\\n### cardano-node\\n\\n- [Stop running CI when the only changes are to docs](https://github.com/input-output-hk/cardano-node/pull/4263)\\n- [Rename TestEnableDevelopmentHardForkEras](https://github.com/input-output-hk/cardano-node/pull/4341)"},{"id":"2022-09-30-ledger","metadata":{"permalink":"/cardano-updates/2022-09-30-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-30-ledger.md","source":"@site/blog/2022-09-30-ledger.md","title":"Ledger Team Update","description":"Ledger Update","date":"2022-09-30T00:00:00.000Z","formattedDate":"September 30, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":2.285,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-09-30-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/2022-10-04-node-cli-api"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-09-27-network"}},"content":"## Ledger Update\\n\\nWe have continued focusing nearly entirely on addressing technical debt.\\nA lot of design work has begun for the next ledger era,\\nbut we do not yet have anything concrete to share.\\n\\n### Technical debt issues completed\\n\\n* [[issue-1676]][[pull-2992]] We have finally removed the ledger dependency on the\\n `cardano-prelude` package. It was barely used in the ledger repository, and it added a dependency\\n that we did not want to maintain. It was a bit difficult to remove, and we had\\n to coordinate removing it from cardano-base.\\n A lot ended up going into [pull-2992][pull-2992], due to the coordination effort, and we ended\\n up updating Plutus as well.\\n This means that we\'ve now also made a lot of progress on the problematic cost model serialization\\n issues described in [issue-2902].\\n In particular, after we resolve [issue-3014], we will not have to wait an epoch before\\n releasing a cost model for a new version of Plutus, as we had to do for the Vasil HF.\\n* [[issue-3046]][[pull-3055]] We moved a module that is now only used in Byron to a Byron package.\\n* [[issue-3047]][[pull-3054]] We improved the interface to the `Value` (multi-asset) type.\\n* [[pull-3044]] We debugged and fixed a tricky compilation issue. Certain kinds of field updates\\n were adding approximately 20 minutes to our compile time!\\n* [[issue-2932]][[pull-3036]] As a part of our ongoing re-organization of the codebase, we\\n have added a `Cardano.Ledger.[Era].Core` module to each ledger era that has a TxBody class.\\n Most classes defined in the era should go in this new module.\\n We also re-export the `Cardno.Ledger.Core` module and the previous `Cardano.Ledger.[Era].Core`\\n modules from each era.\\n\\n### Technical debt in progress\\n\\n* [[issue-3034]][[issue-3035]][[node-issue-4421]] We are continuing to write benchmarks to understand exactly where\\n all the time is being spent on executing the `TICKF` transition.\\n The consolidation of the per-stake-credential stake distribution to the per-stake-pool\\n distribution does seem to account for a large amount of time (near a second as written, which we\\n have down to about half a second with some optimizations),\\n but this does not account for everything.\\n Applying the reward update may also be a big contributing factor.\\n* [[pull-3033]][[pull-3038]][[pull-3041]] A separate team is working on upgrading all the\\n cardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort.\\n* The nix scripts used to build our new\\n [formal ledger model](https://github.com/input-output-hk/formal-ledger-specifications)\\n do not work consistently for everyone, and we have been working on fixing these issues.\\n* [[issue-3014]] We are still working on adding a versioning scheme to all of the ledger\\n serializers.\\n\\n[issue-1676]: https://github.com/input-output-hk/cardano-ledger/issues/1676\\n[issue-2902]: https://github.com/input-output-hk/cardano-ledger/issues/2902\\n[issue-2932]: https://github.com/input-output-hk/cardano-ledger/issues/2932\\n[issue-3014]: https://github.com/input-output-hk/cardano-ledger/issues/3014\\n[issue-3034]: https://github.com/input-output-hk/cardano-ledger/issues/3034\\n[issue-3035]: https://github.com/input-output-hk/cardano-ledger/issues/3035\\n[issue-3046]: https://github.com/input-output-hk/cardano-ledger/issues/3046\\n[issue-3047]: https://github.com/input-output-hk/cardano-ledger/issues/3047\\n\\n[node-issue-4421]: https://github.com/input-output-hk/cardano-node/issues/4421\\n\\n[pull-2992]: https://github.com/input-output-hk/cardano-ledger/pull/2992\\n[pull-3033]: https://github.com/input-output-hk/cardano-ledger/pull/3033\\n[pull-3038]: https://github.com/input-output-hk/cardano-ledger/pull/3038\\n[pull-3036]: https://github.com/input-output-hk/cardano-ledger/pull/3036\\n[pull-3041]: https://github.com/input-output-hk/cardano-ledger/pull/3041\\n[pull-3044]: https://github.com/input-output-hk/cardano-ledger/pull/3044\\n[pull-3054]: https://github.com/input-output-hk/cardano-ledger/pull/3054\\n[pull-3055]: https://github.com/input-output-hk/cardano-ledger/pull/3055"},{"id":"2022-09-27-network","metadata":{"permalink":"/cardano-updates/2022-09-27-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-27-network.md","source":"@site/blog/2022-09-27-network.md","title":"Network Team Update","description":"Network Update","date":"2022-09-27T00:00:00.000Z","formattedDate":"September 27, 2022","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":2.24,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2022-09-27-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-09-30-ledger"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-09-20-consensus"}},"content":"```mdx-code-block\\nimport ReactPlayer from \'react-player\'\\n```\\n\\n## Network Update\\n\\n### Ouroboros Network\\n\\n* We finished high and low level _peer sharing_ design. See\\n [Peer Sharing Implementation Plan](https://github.com/input-output-hk/ouroboros-network/wiki/Peer-Sharing-Implementation-Plan)\\n* We started working on low-level design of _eclipse evasion_ (work in\\n progress).\\n* We decided to use **peer sharing** instead of overloaded and ambiguous _gossip_ term.\\n [PR input-output-hk/ouroboros-network#3980](https://github.com/input-output-hk/ouroboros-network/pull/3980)\\n* We fixed technical dept\\n [issue input-output-hk/cardano-node#3905](https://github.com/input-output-hk/ouroboros-network/issues/3905) in\\n the simulation testing of diffusion\\n [PR input-output-hk/cardano-node#4004](https://github.com/input-output-hk/ouroboros-network/pull/4004)\\n* We deployed all our nodes using our new nix based deployment architecture.\\n When deploying we found an issue in the\\n [`RTView`](https://github.com/input-output-hk/cardano-node/issues/3752).\\n\\n### Ouroboros Consensus\\n\\n* Recently we found out that the consensus does not log exceptions thrown during\\n intiialisation. This was fixed in\\n [PR input-output-hk/ouroboros-network#4015](https://github.com/input-output-hk/ouroboros-network/pull/4015)\\n As part of this pull request we also changed that all exceptions rethrown by\\n the connection handler thread are wrapped in `ExceptionInHandler`.\\n\\n#### Some older items, which were not announced\\n\\n* We identified and fixed an issue related to socket activation (socket options\\n where not set for sockets passed through socket activation).\\n [PR input-output-hk/cardano-node#3979](https://github.com/input-output-hk/ouroboros-network/pull/3979)\\n This fix will be released in the next `cardano-node` release.\\n\\n### Cardano Node\\n\\n* We extended the NixOs service module so that one can modify `socketPath`,\\n `runtimeDir`, `databasePath`, `traceSocketPathAccept`,\\n `traceSocketPathConnect` and `stateDir` options.\\n [PR input-output-hk/cardano-node#4196](https://github.com/input-output-hk/cardano-node/pull/4196)\\n\\n### IO-Sim\\n\\nWe resolved a number of issues before release of `io-sim` on hackage:\\n\\n* [issue input-output-hk/ouroboros-network#2797](https://github.com/input-output-hk/ouroboros-network/issues/2797)\\n* [issue input-output-hk/ouroboros-network#2650](https://github.com/input-output-hk/ouroboros-network/issues/2650)\\n* [issue input-output-hk/ouroboros-network#3436](https://github.com/input-output-hk/ouroboros-network/issues/3436)\\n* [issue input-output-hk/ouroboros-network#2588](https://github.com/input-output-hk/ouroboros-network/issues/2588)\\n* [issue input-output-hk/ouroboros-network#2587](https://github.com/input-output-hk/ouroboros-network/issues/2587)\\n* [issue input-output-hk/ouroboros-network#2586](https://github.com/input-output-hk/ouroboros-network/issues/2586)\\n\\nSee [PR #24](https://github.com/input-output-hk/io-sim/pull/24).\\n\\nWe also improved experience for contributors of `io-sim` and `typed-protocols` by adding issue templates:\\n* [PR input-output-hk/io-sim#25](https://github.com/input-output-hk/io-sim/pull/25)\\n\\n### Typed Protocols\\n\\n* We pushed a branch which identifies a GHC quirk:\\n [coot/typed-protocols-rewrite-StateToken-problem](https://github.com/input-output-hk/typed-protocols/tree/coot/typed-protocols-rewrite-StateToken-problem).\\n That\'s too be resolved in order to push forward review of the redesign in\\n [PR input-output-hk/typed-protocols#3](https://github.com/input-output-hk/typed-protocols/pull/3).\\n* As for `io-sim`, we wrote issue templates:\\n [PR input-output-hk/typed-protocols#11](https://github.com/input-output-hk/typed-protocols/pull/11)\\n\\n### Input Endorsers Simulation\\n\\nNew features include:\\n\\n* Histograms of block arrival frequency, for both network (inbound) and CPU\\n (block validation). This is interesting to check that we\'re not overloading\\n the CPU block validation capacity, or network link capacity. Or alternatively\\n to observe the behaviour in an overload situation if we set the block\\n generation rate high enough.\\n\\n* Pie chart of utilisation of TCP links. This shows how small a fraction of\\n links are being used at any one time, and shows that once the system \\"warms\\n up\\" and is operating stably, most block delivery is ballistic.\\n\\n* Showing off the new screen layout combinators, that let us put multiple\\n charts, titles etc on screen at once and scale them to whatever screen or\\n video resolution we like without having to tweak numbers (this example is\\n scaled to fit 1080HD video resolution).\\n\\n\\n```mdx-code-block\\n\\n```"},{"id":"2022-09-20-consensus","metadata":{"permalink":"/cardano-updates/2022-09-20-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-20-consensus.md","source":"@site/blog/2022-09-20-consensus.md","title":"Consensus Team Update","description":"- We proposed a fix for the performance degradation observed when running","date":"2022-09-20T00:00:00.000Z","formattedDate":"September 20, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":3.895,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-09-20-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-09-27-network"},"nextItem":{"title":"DB Sync Team Update","permalink":"/cardano-updates/2022-09-19-db-sync"}},"content":"- We proposed a fix for the performance degradation observed when running\\n distributed multi-node benchmarks in the UTxO HD feature branch. While this\\n fixed the problems observed when running local benchmarks, it broke the\\n `ThreadNet` tests due to concurrency issues. Therefore, we think it is wise to\\n start redesigning the UTxO HD mempool integration.\\n- We did several rounds of code review on the alternative implementation of\\n diff-sequences required by the UTxO HD feature based on the idea of\\n anti-diffs. This alternative implementation is close to being merged, and the\\n next step is to integrate this to the UTxO HD branch, so that we can run\\n ad-hoc replaying and syncing from scratch benchmarks and compare these with\\n the baseline. The micro-benchmarks we elaborated for the alternative\\n implementation show speedups of up to 4x, so we are optimistic about the\\n performance of replaying and syncing from scratch benchmarks, however it is\\n important to notice that *due to the nature of UTxO HD* we will still be\\n slower than the baseline.\\n- The final draft of the Genesis implementation specification is ready for\\n review.\\n- We implemented a prototype for the happy path of Genesis\' ChainSync Jumping\\n (CSJ). The prototype is slower than the baseline, however it is not the latest\\n version of the prototype and the jump interval is very small.\\n- Work on integrating Conway has [stopped][nicks-comment-conway] since\\n priorities have changed.\\n- We started work on benchmarking epoch-boundaries and epoch overhead\\n [pr-4014][pr-4014]. To this end, we made use of a modified version of our\\n `db-analyser` tool. We ran the new benchmarking setup using the Cardano\\n mainnet chain, and we can see that block tick and application take\\n substantially longer at epoch boundaries, although there are a couple of slots\\n during an epoch in which these computations take more than normal. We notified\\n the ledger team about these findings. We will use this modified version of\\n `db-analyser` to investigate the epoch overhead.\\n\\n\\n# Workstreams\\n\\n## UTxO HD\\n\\n - Spent quite some time investigating the root cause of the degradation in\\n performance observed in the benchmarks. We run the `make forge-stress`\\n benchmarks locally in order to debug this behavior.\\n\\n - Transaction batching doesn\'t make a notable difference in the outcome\\n (considering we are using the in-memory backend).\\n\\n - The mempool batching implementation required asynchronous transaction\\n validation which is a violation of the `LocalTxSubmission` protocol\\n contract and therefore if we continued on that route, the impact would\\n have been quite big.\\n\\n - The STM logic we implemented by using a `TMVar` for the mempool internal\\n state was buggy and under certain circumstances it seemed to lock.\\n Reverting the mempool internal state to be stored in a `TVar` seems to\\n solve this problem.\\n\\n - The results we get after this change look almost identical to the ones\\n from the baseline.\\n\\n - [The anti-diff prototype (PR\\n #3997)](https://github.com/input-output-hk/ouroboros-network/pull/3997) has\\n been reviewed and is close to being merged.\\n\\n - A follow-up issue ([issue\\n #4010](https://github.com/input-output-hk/ouroboros-network/issues/4010))\\n to integrate the anti-diff prototype in the various `consensus` packages\\n was created. A first version of the integration exists, and all tests\\n pass. A next step is to get some indication of the \\"real\\" performance gain\\n by profiling `db-analyser` (or `cardano-node`).\\n\\n## Genesis\\n\\n - Final draft of the Genesis implementation specification, now up for review.\\n\\n - Local benchmark setup for parameter tuning via the happy path ChainSync\\n Jumping (CSJ) prototype ([Issue 3987][issue-3987]).\\n\\n - Context: Our Genesis design requires us to check in with a large (~20)\\n number of servers periodically while syncing. These servers are offered\\n jump requests via the ChainSync protocol (hence the name), which they can\\n accept or decline. If a peer declines, the Genesis rule allows us to\\n determine whether a node actually has a better chain.\\n\\n - The \\"happy path\\" is when no peer declines a jump. We want this to have\\n close to no overhead compared to status quo, i.e. syncing without Genesis.\\n\\n - We implemented a prototype for this happy path, and are now starting to\\n test in various configurations (number of peers, latency, bandwidth) to\\n tune the performance of ChainSync jumping, i.e. how complicated our logic\\n of choosing when to jump needs to be.\\n\\n **Example:**\\n\\n - Simulated connection: 50 MBit/s, 50ms latency\\n\\n - Jump interval: 3000 slots (on the low end, could be increased to up to\\n `3k/f`)\\n\\n - Red: baseline (1.35.3), one peer in topology file\\n\\n - Blue: Preliminary version of our prototype, with 10 peers.\\n\\n ![](/images/happy-path-csj-prototype-prelim.svg)\\n\\n It is slower by about ~30%, but it is not the latest version of the\\n prototype, and the jump interval is very small, making CSJ more of a\\n bottleneck.\\n\\n## Technical debt\\n\\n- Fix flakiness in ChainDB QSM tests ([PR 3990](https://github.com/input-output-hk/ouroboros-network/pull/3990)).\\n\\n[issue-3987]: https://github.com/input-output-hk/ouroboros-network/issues/3987\\n[nicks-comment-conway]: https://github.com/input-output-hk/ouroboros-network/pull/3971#issuecomment-1252524031\\n[pr-4014]: https://github.com/input-output-hk/ouroboros-network/pull/4014"},{"id":"2022-09-19-db-sync","metadata":{"permalink":"/cardano-updates/2022-09-19-db-sync","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-19-db-sync.md","source":"@site/blog/2022-09-19-db-sync.md","title":"DB Sync Team Update","description":"DBSync Update","date":"2022-09-19T00:00:00.000Z","formattedDate":"September 19, 2022","tags":[{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync"}],"readingTime":1.525,"hasTruncateMarker":false,"authors":[{"name":"Kostas Dermentzis","title":"Cardano DB-Sync Software Engineer","url":"https://github.com/kderme","imageURL":"https://github.com/kderme.png","key":"kderme"}],"frontMatter":{"title":"DB Sync Team Update","slug":"2022-09-19-db-sync","authors":"kderme","tags":["db-sync"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-09-20-consensus"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-09-16-ledger"}},"content":"## DBSync Update\\n\\n### New Tag\\nWe created a new db-sync tag 13.0.5 which addresses shortcomings of the last\\nrelease 13.0.4. It is currently under testing.\\nThe Changelog is\\n [here](https://github.com/input-output-hk/cardano-db-sync/blob/8ad98d48e0068f3768d48e18fdcbe254037cba3b/cardano-db-sync/CHANGELOG.md#1305) and in more details:\\n\\n* We fixed fees for tx with phase 2 failure that didn\'t include a total collateral field.\\n [1248](https://github.com/input-output-hk/cardano-db-sync/pull/1248)\\n\\n* We fixed an issue that could cause db-sync to crash if a specific rollback occured.\\n [1247](https://github.com/input-output-hk/cardano-db-sync/pull/1247)\\n\\n* DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but\\n could result in the wrong CBOR encoding being inserted.\\n [1217](https://github.com/input-output-hk/cardano-db-sync/pull/1217)\\n\\n* All the fixes above come with unit tests which validates the fix.\\n\\n* Added support for preprod and preview from docker. DBSync no longer needs to include the configs\\n for different networks, these are directly fetched from the cardano world.\\n [1254](https://github.com/input-output-hk/cardano-db-sync/pull/1254)\\n\\n* We added better support from docker for the new disable options and the overall documentation.\\n [1260](https://github.com/input-output-hk/cardano-db-sync/pull/1260)\\n\\nAll the above were also backported to the master branch\\n\\n### Open source\\n\\nWe made the db-sync [board public](https://github.com/orgs/input-output-hk/projects/52/views/1), so\\n everyone can have access on the issues we prioritise.\\n We also added new tasks to the board, some of them could be approachable to newcomers or people who\\n want to contribute.\\n\\n### Progress on tech debt and new features\\n* [1223](https://github.com/input-output-hk/cardano-db-sync/pull/1223) was merged, which removes the\\n foreign keys from the db schema. This opens the road to a number of optimizations.\\n\\n* An additional fix on top of the previous work was added\\n [1250](https://github.com/input-output-hk/cardano-db-sync/pull/1250)\\n\\n* An initial version where DBSync does not rollback on restart is done here\\n [1266](https://github.com/input-output-hk/cardano-db-sync/pull/1266).\\nThis allows db-sync to restart much faster, without the need to delete data and reinsert them. In\\n the future it can also facilitate migrations in cases where the ledger snapshots have a breaking\\n change, without the need to resync everything from genesis."},{"id":"2022-09-16-ledger","metadata":{"permalink":"/cardano-updates/2022-09-16-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-16-ledger.md","source":"@site/blog/2022-09-16-ledger.md","title":"Ledger Team Update","description":"Ledger Update","date":"2022-09-16T00:00:00.000Z","formattedDate":"September 16, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.625,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-09-16-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"DB Sync Team Update","permalink":"/cardano-updates/2022-09-19-db-sync"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-09-01-ledger"}},"content":"## Ledger Update\\n\\nWe have been focused nearly entirely on addressing technical debt.\\n\\n* We introduced more consistent naming across eras, this time for the auxiliary data.\\n See [3032](https://github.com/input-output-hk/cardano-ledger/pull/3032).\\n* We made clear how the `consumed` functions differs between eras (which was a previous source of\\n confusion), and added some related support to the fledgling ledger API.\\n See [3016](https://github.com/input-output-hk/cardano-ledger/pull/3016).\\n* We added clarity and organizational consistency to the main ledger era type synonyms.\\n See [3017](https://github.com/input-output-hk/cardano-ledger/pull/3017).\\n* We removed code duplication related to the input data hashes.\\n See [3018](https://github.com/input-output-hk/cardano-ledger/pull/3018).\\n* We split up a large module into smaller components. The large module was actually causing our\\n CI to time out.\\n See [3020](https://github.com/input-output-hk/cardano-ledger/pull/3020).\\n* We cleaned up stale information in our cabal files, and upgraded cabal 3.8.\\n See [3023](https://github.com/input-output-hk/cardano-ledger/pull/3023),\\n [3031](https://github.com/input-output-hk/cardano-ledger/pull/3031),\\n and [3028](https://github.com/input-output-hk/cardano-ledger/pull/3028).\\n* We made consistent, standalone `TxOut` (transaction output) modules for every era.\\n See [3024](https://github.com/input-output-hk/cardano-ledger/pull/3024).\\n* We brought consistency to a maddening inconsistent use of type variables indicating the specific\\n choice of cryptographic primitives. In particular, all uses of `crypto` have been renamed to `c`.\\n See [3027](https://github.com/input-output-hk/cardano-ledger/pull/3027).\\n* We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric\\n types that will compose better in the future and which simplifies the constraints.\\n See [3029](https://github.com/input-output-hk/cardano-ledger/pull/3029).\\n* We consolidated some existing fragmented logic regarding how we gather the scripts needed for a\\n given transaction. This is a much needed cleanup to prevent future mistakes.\\n See [3019](https://github.com/input-output-hk/cardano-ledger/pull/3019).\\n* We fixed a problem with our generators that was causing a fair number of our property tests to\\n fail in CI.\\n See [3039](https://github.com/input-output-hk/cardano-ledger/pull/3039).\\n* We have started the work to update Plutus. This will bring support for SECP in the next major\\n protocol version, and also address a\\n [problem](https://github.com/input-output-hk/cardano-ledger/issues/2902)\\n that we current have evolving the cost models.\\n See [3030](https://github.com/input-output-hk/cardano-ledger/pull/3030).\\n* We addressed a small issue that came up when integrating the conway era downstream, namely\\n the lack of some serialization instances.\\n See [3022](https://github.com/input-output-hk/cardano-ledger/pull/3022)."},{"id":"2022-09-01-ledger","metadata":{"permalink":"/cardano-updates/2022-09-01-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-01-ledger.md","source":"@site/blog/2022-09-01-ledger.md","title":"Ledger Team Update","description":"Ledger Update","date":"2022-09-01T00:00:00.000Z","formattedDate":"September 1, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/tags/ledger"}],"readingTime":1.94,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-09-01-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-09-16-ledger"},"nextItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-08-31-consensus"}},"content":"## Ledger Update\\n\\nSince finishing up support for the Vasil Hardfork, the ledger team has been\\nfocused on two main things: a new ledger era and technical debt.\\n\\n### New minimal ledger era\\n\\nWe have implemented a new ledger era named `conway` which is nearly identical\\nto the `babbage` era. This has been the first time that we have been able to see\\nwhat a minimal ledger era looks like. We have finished this task, modulo any\\nintegration issues that might come up. The only thing that the `conway` era\\ndoes differently from the `babbage` era is provide support for rotating\\nthe master keys using the hardfork combinator\'s state translation.\\nWe may end up adding features to the `conway` era, but it is a nice exercise\\nseeing what it looks like to get a minimal ledger era supported in all the\\ndownstream components.\\n\\n### Addressing technical debt\\n\\nWe have been addressing technical debt, mostly in an effort to make the\\nrepository a more friendly code base to work in.\\n\\n- We have begun work on a ledger API, called `cardano-ledger-api`.\\n- We have done a big re-design of the major type classes used in the ledger.\\n With hindsight on our side, we now have something much more organized and\\n easier to use.\\n- We have done a lot of re-naming. The names across eras are now much more\\n uniform, avoid certain confusions that plagued us, and are clearer in where\\n they are from.\\n- We have reduced a lot of code duplication that could lead to bugs if you\\n do not have the whole code base in your head.\\n- We have added a handful of performance improvements.\\n- We added type safety in a number of locations. In particular, the type of\\n values that can be minted in a transaction no longer allow for Lovelace\\n in the type, and some functions which used to handle both timelock scripts\\n and plutus script now correctly enoforce at the type level that only one of\\n them can be used.\\n- We made our generators so that they now produce a much richer set of\\n valid serializations. There is room within CBOR to serialize the same\\n data structure in multiple ways, and it is helpful to have the generators\\n use a wide variety.\\n- We have begun re-organizing our test suites."},{"id":"2022-08-31-consensus","metadata":{"permalink":"/cardano-updates/2022-08-31-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-08-31-consensus.md","source":"@site/blog/2022-08-31-consensus.md","title":"Consensus Team Update","description":"Executive summary","date":"2022-08-31T00:00:00.000Z","formattedDate":"August 31, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/tags/consensus"}],"readingTime":8.925,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Team Update","slug":"2022-08-31-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/2022-09-01-ledger"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/2022-08-12-network"}},"content":"## Executive summary\\n\\n- We did most of the heavy lifting required to integrate the Conway era.\\n- We have property tests for the UTxO HD backing store API implementations. A\\n possible bug was identified. Work is ongoing to make sure the property-tests\\n cover all the relevant cases.\\n- We implemented and benchmarked the \\"anti-diff\\" prototype to speed up the UTxO\\n HD functionality. Results show a rough speedup of `4x` to `5.5x` across\\n several scenarios. Note that: [\\"Data reported by `tasty-bench` is only of\\n indicative and comparative significance.\\"](https://hackage.haskell.org/package/tasty-bench-0.3.2/docs/Test-Tasty-Bench.html).\\n We are investigating additional performance improvements. The \\"anti-diff\\"\\n prototype and benchmarks are still pending code review.\\n- We elaborated a draft specification for the Genesis implementation and\\n `ChainSync` jumping optimization.\\n\\n## Workstreams\\n\\n### Conway\\n\\n - Integration PR of the minimal Conway era ([Issue #3963][issue-3962], [PR\\n #3971][pull-3971]).\\n - Discussions with Ledger revealed possible sources of confusion about which\\n data should be changed in the Conway era. As a result, a new technical debt\\n issue was raised, which does not block the integration of the Conway era\\n ([Issue #3976][issue-3976]).\\n\\n### UTxO HD\\n\\n- [Issue #3954][issue-3954], [branch][branch-3954]: The functionality of a\\n backing store, which is the interface to the on-disk part of ledger state in\\n UTxO-HD, is tested at a high level through the `OnDisk` tests. However, some\\n functionalities remain untested, e.g., reads of ranges of keys. As such, we\\n have implemented `quickcheck-state-machine` tests that exercise backing stores\\n directly. The tests are reusable for different backing store implementations\\n because the tests are implementation-agnostic: Any backing store that conforms\\n to the backing store interface can be plugged into the tests. Work is still\\n ongoing to label/monitor the tests, such that we can verify that interesting\\n cases are being tested. Furthermore, a possible bug has been identified in the\\n LMDB backing store with respect to range reads, though the bug has not been\\n resolved yet.\\n- [Issue #3946][issue-3946], [branch][branch-4199], [PR #3882][pull-3882]: The\\n \\"anti-diff\\" prototype proposes an alternative approach to keeping track of\\n sequences (more specifically, `FingerTree`s) of diffs. These diff sequences\\n are a component of the in-memory parts of the ledger state in UTxO-HD. Since\\n the consensus code often requires the cumulative diff of a sequence of diffs,\\n the current implementation \\"caches\\" cumulative diffs of each subtree in the\\n diff sequence. This caching allows relatively fast reconstruction of the total\\n cumulative diff, but this caching proved to incur a non-negligible cost: when\\n we manipulate diff sequences through splits and appends, we force re-computing\\n a logarithmic number of caches. This is problematic, since we often split and\\n append in consensus: we split when we flush diffs to a backing store or when\\n we roll back blocks, and we append when pushing blocks. The new approach\\n should reduce the overhead of this caching.\\n\\n We implemented micro-benchmarks for the \\"anti-diff\\" prototype: we\\n first generate a sequence of commands (`Forward`, `Push`, `Flush`, or\\n `Rollback`) through a simulation, after which we measure the performance of\\n applying the commands to a diff sequence. In this context, `Forward` means\\n forwarding of values through a diff, whereas `Rollback` means switching to\\n a different fork by rolling back diffs/blocks and pushing new ones.\\n Moreover, we compare the performance for the two implementations: the\\n \\"legacy\\" approach, and the anti-diff approach.\\n\\n Some preliminary results were positive, but we needed to revisit the\\n benchmark\'s configuration to obtain more definitive results. After a\\n discussion with @dcoutts and the consensus team about this configuration\\n (e.g., number of commands generated, choice of the security parameter `k`),\\n the benchmarks should now be closer to the realistic setting. The following\\n configuration specifies the default configuration that is used in the\\n benchmarking code:\\n * Number of commands generated: `10_000`\\n * Security parameter `k`: `2160`\\n * Number of initial backing values: `100`\\n * Number of key-value pairs deleted by a push: `50`\\n * Number of key-value pairs inserted by a push: `50`\\n * Number of key-value pairs forwarded by a forward: `50`\\n * Probability of a large (in the range `[1000, 2000]`) rollback: `0.05`\\n * Probability of a small (in the range `[1, 10]`) rollback: `0.95`\\n * Order of commands:\\n * An equal number of forward and pushes.\\n * `1` flush every `10` pushes.\\n * `1` rollback every `100` pushes\\n\\n Moreover, we run four benchmark scenarios:\\n * Default configuration\\n * Without rollbacks\\n * With only small rollbacks\\n * Without rollbacks, larger flushes (`1` flush every `100` pushes)\\n\\n ### How to read results\\n\\n Note: this section uses documentation from the\\n [tasty-bench](https://hackage.haskell.org/package/tasty-bench) package to\\n explain how to read the results of running our benchmarks.\\n\\n Running a benchmark scenario gives us the following (curated) output:\\n ```text\\n ...\\n AntiDiff: OK (18.27s)\\n 2.527 s \xb1 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x\\n LegacyDiff: OK (32.73s)\\n 10.829 s \xb1 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory\\n ...\\n ```\\n\\n The output says that the first benchmark, which exercises the anti-diff\\n prototype, was repeatedly executed for `18.27` seconds (wall-clock time),\\n its predicted mean CPU time was `2.527` seconds and means of individual\\n samples do not often diverge from it further than `\xb1 47` milliseconds\\n (double standard deviation). We also configure the RTS to collect GC\\n statistics, which enables `tasty-bench` to estimate and report memory usage.\\n This data is reported as per `RTSStats` fields: `allocated_bytes`,\\n `copied_bytes` and `max_mem_in_use_bytes`. So, the output of the first\\n benchmark says that a total of `2.1 GB` of memory was allocated, that a\\n total of `544 MB` of memory were copied, and that the peak memory in usage\\n was `2.2 GB`. We read the output for the second benchmark in the same way.\\n\\n Furthermore, the benchmark compares the mean CPU times for\\n both the anti-diff and legacy approaches: In this case, the mean CPU time\\n for the anti-diff approach is `~0.23x` the mean CPU time for the legacy\\n approach. Conversely, the mean CPU time for the legacy approach is\\n `1 / 0.23 ~= 4.35x` the mean CPU time for the anti-diff approach. We will\\n call `0.23x` the *improvement factor*. We will call `4.35x` the *speedup*.\\n\\n Note that these improvement factors (and reported results) are subject to\\n noise, randomness, the specific configuration parameters, and the whims\\n of statistics. Data reported by `tasty-bench` is only of indicative and\\n comparative significance.\\n\\n ### Results\\n\\n For each of the 4 scenarios, we list the results of running the anti-diff and\\n legacy approaches 5 times. We run the benchmarks 5 times to get an indication\\n of whether the results are similar across multiple runs. Furthermore, we\\n calculate the accompanying *ranges* (if applicable) of improvement factors and\\n speedups.\\n\\n Note also the decrease in total bytes allocated and total bytes copied for\\n the anti-diff approach compared to the legacy approach.\\n\\n #### Default configuration\\n\\n |Name|Mean CPU time|2*Stdev (CPU time)|Total bytes allocated|Total bytes copied|Peak memory|\\n |-|-|-|-|-|-|\\n |Run 1: AntiDiff|2.533 s (0.23x)|4.7 ms|2.1 GB|557 MB|2.4 GB|\\n |Run 1: LegacyDiff|10.792 s|162 ms|6.8 GB|2.3 GB|2.4 GB|\\n |Run 2: AntiDiff|2.508 s (0.23x)|245 ms|2.1 GB|515 MB|2.2 GB|\\n |Run 2: LegacyDiff|10.850 s| 30 ms|6.9 GB|2.3 GB|2.2 GB|\\n |Run 3: AntiDiff|2.562 s (0.23x)|5.0 ms|2.1 GB|552 MB|2.2 GB|\\n |Run 3: LegacyDiff|10.993 s|149 ms|6.9 GB|2.3 GB|2.2 GB|\\n |Run 4: AntiDiff|2.168 s (0.22x)|5.3 ms|1.8 GB|434 MB|2.0 GB|\\n |Run 4: LegacyDiff|9.976 s| 39 ms|6.3 GB|2.0 GB|2.0 GB|\\n |Run 5: AntiDiff|2.527 s (0.23x)| 47 ms|2.1 GB|544 MB|2.2 GB|\\n |Run 5: LegacyDiff|10.829 s|148 ms|6.8 GB|2.3 GB|2.2 GB|\\n\\n * Improvement factor: `[0.22, 0.23]`\\n * Speedup : `[1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]`\\n\\n #### No rollbacks\\n\\n |Name|Mean CPU time|2*Stdev (CPU time)|Total bytes allocated|Total bytes copied|Peak memory|\\n |-|-|-|-|-|-|\\n |Run 1: AntiDiff|1.638 s (0.19x)| 36 ms|1.4 GB|181 MB|2.4 GB|\\n |Run 1: LegacyDiff|8.656 s|207 ms|5.7 GB|1.5 GB|2.4 GB|\\n |Run 2: AntiDiff|1.638 s (0.19x)| 75 ms|1.4 GB|181 MB|2.2 GB|\\n |Run 2: LegacyDiff|8.654 s|322 ms|5.7 GB|1.5 GB|2.2 GB|\\n |Run 3: AntiDiff|1.663 s (0.19x)| 74 ms|1.4 GB|181 MB|2.2 GB|\\n |Run 3: LegacyDiff|8.799 s|216 ms|5.7 GB|1.5 GB|2.2 GB|\\n |Run 4: AntiDiff|1.645 s (0.19x)| 51 ms|1.4 GB|181 MB|2.0 GB|\\n |Run 4: LegacyDiff|8.732 s|261 ms|5.7 GB|1.5 GB|2.0 GB|\\n |Run 5: AntiDiff|1.639 s (0.19x)| 19 ms|1.4 GB|181 MB|2.2 GB|\\n |Run 5: LegacyDiff|8.653 s|234 ms|5.7 GB|1.5 GB|2.2 GB|\\n\\n * Improvement factor: `0.19`\\n * Speedup : `1 / 0.19 ~= 5.25`\\n\\n\\n #### Only small rollbacks\\n\\n |Name|Mean CPU time|2*Stdev (CPU time)|Total bytes allocated|Total bytes copied|Peak memory|\\n |-|-|-|-|-|-|\\n |Run 1: AntiDiff|1.833 s (0.18x)| 36 ms|1.5 GB|185 MB|2.4 GB|\\n |Run 1: LegacyDiff|10.362 s|867 ms|5.8 GB|1.6 GB|2.4 GB|\\n |Run 2: AntiDiff|1.696 s (0.19x)| 30 ms|1.5 GB|185 MB|2.2 GB|\\n |Run 2: LegacyDiff|8.822 s|106 ms|5.8 GB|1.5 GB|2.2 GB|\\n |Run 3: AntiDiff|1.702 s (0.19x)| 44 ms|1.5 GB|186 MB|2.2 GB|\\n |Run 3: LegacyDiff|8.906 s|147 ms|5.8 GB|1.5 GB|2.2 GB|\\n |Run 4: AntiDiff|1.701 s (0.19x)| 47 ms|1.5 GB|185 MB|2.0 GB|\\n |Run 4: LegacyDiff|8.949 s|197 ms|5.8 GB|1.5 GB|2.0 GB|\\n |Run 5: AntiDiff|1.677 s (0.19x)| 55 ms|1.5 GB|186 MB|2.2 GB|\\n |Run 5: LegacyDiff|8.856 s|177 ms|5.8 GB|1.5 GB|2.2 GB|\\n\\n * Improvement factor: `[0.18, 0.19]`\\n * Speedup : `[1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]`\\n\\n #### No rollbacks, larger flushes (every 100 pushes)\\n\\n |Name|Mean CPU time|2*Stdev (CPU time)|Total bytes allocated|Total bytes copied|Peak memory|\\n |-|-|-|-|-|-|\\n |Run 1: AntiDiff|1.643 s (0.25x)| 21 ms|1.5 GB|196 MB|2.4 GB|\\n |Run 1: LegacyDiff|6.591 s|351 ms|4.0 GB|1.4 GB|2.4 GB|\\n |Run 2: AntiDiff|1.616 s (0.25x)| 47 ms|1.5 GB|196 MB|2.2 GB|\\n |Run 2: LegacyDiff|6.520 s|232 ms|4.0 GB|1.4 GB|2.2 GB|\\n |Run 3: AntiDiff|1.640 s (0.25x)| 34 ms|1.5 GB|196 MB|2.2 GB|\\n |Run 3: LegacyDiff|6.540 s|150 ms|4.0 GB|1.4 GB|2.2 GB|\\n |Run 4: AntiDiff|1.635 s (0.25x)| 76 ms|1.5 GB|196 MB|2.0 GB|\\n |Run 4: LegacyDiff|6.589 s|131 ms|4.0 GB|1.4 GB|2.0 GB|\\n |Run 5: AntiDiff|1.628 s (0.25x)| 19 ms|1.5 GB|196 MB|2.2 GB|\\n |Run 5: LegacyDiff|6.490 s|5.9 ms|4.0 GB|1.4 GB|2.2 GB|\\n\\n * Improvement factor: `0.25`\\n * Speedup : `1 / 0.25 ~= 4`\\n\\n### Genesis\\n\\n - We elaborated a draft of the specification of the Genesis implementation and\\n the ChainSync Jumping optimization. In particular, this includes a proof\\n sketch that the latter preserves liveness and safety in all cases ([Issue\\n 3964][issue-3964]).\\n - @nfrisby\'s main realization during this sprint was that he had been\\n focusing so far on the case where the selected chain is an extension of\\n the intersection of our peers\' ChainSync candidates.\\n - This is the main case, ie an \\"absorbing\\" state, but it\'s not the only\\n case.\\n - The new proof sketch begins by case splitting on that predicate, and\\n that made the sketch quite a bit easier to follow.\\n - We continued working on the \\"happy path\\" `ChainSync` Jumping prototype ([Issue\\n 3960][issue-3960]).\\n\\n### Technical debt\\n\\n - We started working on the issues required to re-enable nightly CI runs..\\n Nightly CI runs have far more lax time constraints, which gives the option to\\n run significantly more property tests than in our regular CI. To this end, we\\n merged a PR to easily adapt the number of tests globally ([PR\\n #3947][pull-3947]).\\n\\n[issue-3954]: https://github.com/input-output-hk/ouroboros-network/issues/3954\\n[branch-3954]: https://github.com/input-output-hk/ouroboros-network/tree/jdral/3954-backingstore-property-tests\\n[issue-3946]: https://github.com/input-output-hk/ouroboros-network/issues/3946\\n[branch-4199]: https://github.com/input-output-hk/ouroboros-network/tree/jdral/CAD-4199-prototype-anti-diffs\\n[pull-3882]: https://github.com/input-output-hk/ouroboros-network/pull/3882\\n[pull-3947]: https://github.com/input-output-hk/ouroboros-network/pull/3947\\n[issue-3960]: https://github.com/input-output-hk/ouroboros-network/issues/3960\\n[issue-3962]: https://github.com/input-output-hk/ouroboros-network/issues/3962\\n[issue-3964]: https://github.com/input-output-hk/ouroboros-network/issues/3964\\n[pull-3971]: https://github.com/input-output-hk/ouroboros-network/pull/3971\\n[issue-3976]: https://github.com/input-output-hk/ouroboros-network/issues/3976"},{"id":"2022-08-12-network","metadata":{"permalink":"/cardano-updates/2022-08-12-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-08-12-network.md","source":"@site/blog/2022-08-12-network.md","title":"Network Team Update","description":"The networking team took an active part in the project iteration (PI) planning","date":"2022-08-12T00:00:00.000Z","formattedDate":"August 12, 2022","tags":[{"label":"network","permalink":"/cardano-updates/tags/network"}],"readingTime":0.88,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2022-08-12-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Team Update","permalink":"/cardano-updates/2022-08-31-consensus"}},"content":"```mdx-code-block\\nimport ReactPlayer from \'react-player\'\\n```\\n\\n\\nThe networking team took an active part in the project iteration (PI) planning\\nsession, see cardano-node [backlog](https://github.com/orgs/input-output-hk/projects/39) for detailed\\noutcomes.\\n\\n\\n* We started working on a detailed design / implementation plan for gossip.\\n\\n* We merged [input-output-hk/ouroboros-network#3859](https://github.com/input-output-hk/ouroboros-network/pull/3859) which\\n sets the ouroboros-network repository for the single relay release.\\n\\n* We identified a bug in the network simulator, which is fixed in the\\n [input-output-hk/ouroboros-network#3852](https://github.com/input-output-hk/ouroboros-network/pull/3852).\\n The above PR was reviewed.\\n\\n* We set the tracing configuration for nodes which we deploy and fixed and\\n identified some deployment hiccups. We identified some bugs in the RT view\\n which were registered by the maintainers.\\n [input-output-hk/ouroboros-network-ops#4](https://github.com/input-output-hk/ouroboros-network-ops/pull/4)\\n\\n* We fixed typos in network-mux library:\\n [input-output-hk/ouroboros-network#3921](https://github.com/input-output-hk/ouroboros-network/pull/3921)\\n\\n* For easy of debugging we renamed a trace point:\\n [input-output-hk/ouroboros-network#3922](https://github.com/input-output-hk/ouroboros-network/pull/3922)\\n\\n* Duncan iterated on his simulation / visualisation. He also was able to\\n identify and fix a bug in the simulator. The simulation contains 50 nodes.\\n Dashed lines indicate and established connection, while solid lines indicate\\n a TCP connection with fully open TCP window.\\n\\n```mdx-code-block\\n\\n```"}]}')}}]); \ No newline at end of file diff --git a/assets/js/3ee2c73a.56f15864.js b/assets/js/3ee2c73a.56f15864.js new file mode 100644 index 00000000000..905d8732422 --- /dev/null +++ b/assets/js/3ee2c73a.56f15864.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[50506],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),c=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=c(r),d=a,h=s["".concat(u,".").concat(d)]||s[d]||m[d]||o;return r?n.createElement(h,l(l({ref:t},p),{},{components:r})):n.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"DB-sync Team Update",slug:"2023-05-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-01-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-01-db-sync.md",source:"@site/blog/2023-05-01-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-05-01T00:00:00.000Z",formattedDate:"May 1, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.515,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-05-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-03-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-04-28-crypto"}},u={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:c},s="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Prepared a schema change which is expected to speed up queries and help clients\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1389"},"#1389"),"."),(0,a.kt)("li",{parentName:"ul"},"Ran a big number of benchmarks on the above to evaluate if this change is reasonable."),(0,a.kt)("li",{parentName:"ul"},"Performance optimization related to rewards\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1382"},"#1382")),(0,a.kt)("li",{parentName:"ul"},"Using the cache in more places to reduce recourses usage\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1380"},"#1380")),(0,a.kt)("li",{parentName:"ul"},"Evaluated risks related to UTXO-HD integration"),(0,a.kt)("li",{parentName:"ul"},"Worked on a feauture request to split the ",(0,a.kt)("inlineCode",{parentName:"li"},"tx_out")," to an address table\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1396"},"#1396")),(0,a.kt)("li",{parentName:"ul"},"Worked on another feauture request to prune the consumed entries from the ",(0,a.kt)("inlineCode",{parentName:"li"},"tx_out")," table\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1398"},"#1398")),(0,a.kt)("li",{parentName:"ul"},"Prepared for CIP-1694 integration")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3f2108ba.00951b81.js b/assets/js/3f2108ba.00951b81.js new file mode 100644 index 00000000000..b7bb5114a86 --- /dev/null +++ b/assets/js/3f2108ba.00951b81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[99610],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>d});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(i),c=a,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||n;return i?r.createElement(d,o(o({ref:t},u),{},{components:i})):r.createElement(d,o({ref:t},u))}));function d(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-08-10-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-08-10-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-10-mithril.md",source:"@site/blog/2023-08-10-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-08-10T00:00:00.000Z",formattedDate:"August 10, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-08-10-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-11-performance-and-tracing"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-09-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...i}=e;return(0,a.kt)(m,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the ",(0,a.kt)("strong",{parentName:"p"},"Mithril protocol\u2019s mainnet beta")," launch: the ",(0,a.kt)("inlineCode",{parentName:"p"},"release-mainnet")," network is now consistently producing new certificates and snapshots! The team has released a new distribution ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2331.1"},(0,a.kt)("inlineCode",{parentName:"a"},"2331.1"))," which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the ",(0,a.kt)("inlineCode",{parentName:"p"},"mainnet")," infrastructure."),(0,a.kt)("p",null,"Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2331.1"},(0,a.kt)("inlineCode",{parentName:"a"},"2331.1"))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Release 'mainnet' Mithril network")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/918"},"#918")),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator - phase 1")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Post deployment 'mainnet' infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1091"},"#1091"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Create Production Infrastructure Runbook")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1085"},"#1085")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Ingest 'mainnet' metrics/logs in Grafana")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1122"},"#1122")))),(0,a.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add a 'clean' file to extracted database in client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1131"},"#1131")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Create explorer page with registered signers")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1097"},"#1097")))),(0,a.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor (de)serialization of crypto entities")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/668"},"#668")))),(0,a.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Client fails to unpack some snapshot archive")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1137"},"#1137")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"The 'release-preprod' network stopped producing certificates")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1114"},"#1114")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"The 'release-mainnet' network does not show up in the explorer")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1111"},"#1111")))),(0,a.kt)("li",{parentName:"ul"},"Worked on dependencies:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Upgrade Cardano node to '8.1.2'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1090"},"#1090")))),(0,a.kt)("li",{parentName:"ul"},"Worked on troubleshooting:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Signer can't sign with 'Invalid signature for party' error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1125"},"#1125"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3f64a4c5.7672a1fc.js b/assets/js/3f64a4c5.7672a1fc.js new file mode 100644 index 00000000000..12520e4fec1 --- /dev/null +++ b/assets/js/3f64a4c5.7672a1fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78397],{16233:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/53","page":53,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/52","nextPage":"/cardano-updates/page/54","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/3f9060c3.e4eac2b7.js b/assets/js/3f9060c3.e4eac2b7.js new file mode 100644 index 00000000000..58fbd97681b --- /dev/null +++ b/assets/js/3f9060c3.e4eac2b7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36398],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,s(s({ref:t},p),{},{components:n})):r.createElement(f,s({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-04-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-04-05-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-consensus.md",source:"@site/blog/2023-04-05-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-04-05T00:00:00.000Z",formattedDate:"April 5, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.66,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-04-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-06-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-05-node-cli-api"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2}],p={toc:c},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This week the consensus team finished the UTxO-HD prototype refactoring. We are\nnow working on improving the DB lock mechanism to improve performance. We also\nintroduced several improvements to the file system abstraction and simulation\nlayer (",(0,a.kt)("inlineCode",{parentName:"p"},"fs-sim"),"), which culminated in the release of ",(0,a.kt)("inlineCode",{parentName:"p"},"fs-sim-0.1.0.0")," and\n",(0,a.kt)("inlineCode",{parentName:"p"},"fs-api-0.1.0.0")," to ",(0,a.kt)("inlineCode",{parentName:"p"},"CHaP"),"."),(0,a.kt)("p",null,"On the Genesis front we distributed the updated Genesis design document,\nsoliciting feedback from Networking Team and IOG Researchers. We also opened up\na PR for the adversarial leader schedule ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," generator, which is being\nreviewed."),(0,a.kt)("p",null,"On the support front, we got a new Consensus version that can use different\nfundamental VRF crypto primitives for Babbage and Conway eras."),(0,a.kt)("p",null,"On the tech debt front we fixed an bug in the followers logic, which was\ndiscovered by our ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," property tests."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/40367786.801454be.js b/assets/js/40367786.801454be.js new file mode 100644 index 00000000000..d7a6c2edeee --- /dev/null +++ b/assets/js/40367786.801454be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47406],{88444:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/40718b14.5ad5937f.js b/assets/js/40718b14.5ad5937f.js new file mode 100644 index 00000000000..291620e2a31 --- /dev/null +++ b/assets/js/40718b14.5ad5937f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43980],{71967:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/tags/sre","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/40a4cbba.c44c73f4.js b/assets/js/40a4cbba.c44c73f4.js new file mode 100644 index 00000000000..722b429377c --- /dev/null +++ b/assets/js/40a4cbba.c44c73f4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[66458],{43602:a=>{a.exports=JSON.parse('{"label":"embedding-quality","permalink":"/cardano-updates/tags/embedding-quality","allTagsPath":"/cardano-updates/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/40e498fa.7e0d2b44.js b/assets/js/40e498fa.7e0d2b44.js new file mode 100644 index 00000000000..5e54327f447 --- /dev/null +++ b/assets/js/40e498fa.7e0d2b44.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23092],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},d=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},c="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,p=t.parentName,d=i(t,["components","mdxType","originalType","parentName"]),c=u(a),m=r,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||o;return a?n.createElement(h,l(l({ref:e},d),{},{components:a})):n.createElement(h,l({ref:e},d))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[c]="string"==typeof t?t:r,l[1]=i;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-11-02-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-11-02-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-node-cli-api.md",source:"@site/blog/2022-11-02-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.265,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-11-02-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-02-ledger"},nextItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2022-11-02-release"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],d={toc:u},c="wrapper";function s(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-11-02---2022-11-15"},"2022-11-02 - 2022-11-15"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Documentation improvments"),(0,r.kt)("li",{parentName:"ul"},"Merged community contributions"),(0,r.kt)("li",{parentName:"ul"},"Exposing types from cardano-api requested by the community/other teamss"),(0,r.kt)("li",{parentName:"ul"},"Test output has been improved so diagnosing failures is now easier"),(0,r.kt)("li",{parentName:"ul"},"Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)"),(0,r.kt)("li",{parentName:"ul"},"Refactoring of cardano-testnet making it more useable as a library (ongoing)"),(0,r.kt)("li",{parentName:"ul"},"Release 1.35.4 was merged & released")),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4567"},"Community contributions - doc fixes and spelling errors"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4546"},"Reduce exposed modules in cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4587"},"Add Ord instance for AddressInEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4496"},"Export TxTotalAndReturnCollateralSupportedInEra from Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4635"},"Expose TextEnvelopeCddl from Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4628"},"Expose txScriptValidityToScriptValidity in Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4599"},"export RawBytesHexError"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/2883"},"Add Plutus minting script doc")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4575/files"},"Improve test output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4586"},"Enable stale bot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4557"},"Add link to troubleshooting page in the wiki")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4550"},"Use environment files in Github Actions"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4544"},"Add single entrypoint for starting testnets")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4575"},"Improve cardano-testnet test output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4595"},"Reorder module hierarchy"))),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/41244b80.81b0a059.js b/assets/js/41244b80.81b0a059.js new file mode 100644 index 00000000000..acedb1c1120 --- /dev/null +++ b/assets/js/41244b80.81b0a059.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22496],{43985:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/ledger","page":1,"postsPerPage":5,"totalPages":6,"totalCount":30,"nextPage":"/cardano-updates/tags/ledger/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/415f2cd9.064a1e9b.js b/assets/js/415f2cd9.064a1e9b.js new file mode 100644 index 00000000000..d529e1213cd --- /dev/null +++ b/assets/js/415f2cd9.064a1e9b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21198],{62989:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/42","page":42,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/41","nextPage":"/cardano-updates/page/43","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/41606842.90043f12.js b/assets/js/41606842.90043f12.js new file mode 100644 index 00000000000..d642fc50f06 --- /dev/null +++ b/assets/js/41606842.90043f12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88101],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),s=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,d=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(a),c=n,m=p["".concat(d,".").concat(c)]||p[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-12-02-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-02-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-02-hydra.md",source:"@site/blog/2022-12-02-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-12-02T00:00:00.000Z",formattedDate:"December 2, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.965,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-12-02-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-12-09-ledger"},nextItem:{title:"DB sync Team Update",permalink:"/cardano-updates/2022-12-01-db-sync"}},d={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:s},p="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has worked on cleaning up several things in progress\nafter last week's summit. They have extended their model-based testing (MBT)\napproach with transaction creation & observation\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/410"},"#410"),", solved\n",(0,n.kt)("inlineCode",{parentName:"p"},"AcquirePointTooOld")," problems of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," with by changing the wallet\ninitialization ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/439"},"#439"),".\nAlso, the Hydra researchers updated the security proofs of the Coordinated Hydra\nHead, which are bound to be included in the Hydra HeadV1 specification."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review & report - will also be published on our website ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/644"},"#644")),(0,n.kt)("li",{parentName:"ul"},"Extended the model-based testing (MBT) with transaction creation/observation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/410"},"#410")),(0,n.kt)("li",{parentName:"ul"},"Solve ",(0,n.kt)("inlineCode",{parentName:"li"},"AcquirePointTooOld")," problems with new wallet initialization ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/439"},"#439")),(0,n.kt)("li",{parentName:"ul"},"Fixed our hydraw deployments (EC2 instances)"),(0,n.kt)("li",{parentName:"ul"},"Created & discussed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," within tx validity work"),(0,n.kt)("li",{parentName:"ul"},"Received & discussed security proofs of Coordinated Hydra Head (requires more work)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Get ADR21 accepted & close tx validity gap in our implementation"),(0,n.kt)("li",{parentName:"ul"},"Complete review & integrate the Hydra tutorial"),(0,n.kt)("li",{parentName:"ul"},"Review latest hydra-pay work"),(0,n.kt)("li",{parentName:"ul"},"Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec"),(0,n.kt)("li",{parentName:"ul"},"Get Cicero (new CI) working")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/417fc4b4.4f4a2695.js b/assets/js/417fc4b4.4f4a2695.js new file mode 100644 index 00000000000..63466ff6fe1 --- /dev/null +++ b/assets/js/417fc4b4.4f4a2695.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[57271],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),h=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=h(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=h(a),c=n,m=s["".concat(p,".").concat(c)]||s[c]||d[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var h=2;h{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>h});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-01-20-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-20-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-hydra.md",source:"@site/blog/2023-01-20-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.13,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-01-20-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-20-crypto"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-01-20-network"}},p={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:h},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1\nspecification. Of which a first version has been aggregated and is currently\nunder review. They aligned the on-chain scripts of reimbursing funds on abort\nlike defined in the specification, improved the mutation test framework to have\nmore control when testing plutus scripts. The added HeadId in the API and the\nTUI example client make ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," easier to use and a first experiment of a\nHydra Head explorer was showing the utility of this - see what Heads exist on\nthe ",(0,n.kt)("inlineCode",{parentName:"p"},"preview")," network ",(0,n.kt)("a",{parentName:"p",href:"http://explorer.hydra.family"},"here"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"HeadId to API and display in the TUI ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/678"},"#678")),(0,n.kt)("li",{parentName:"ul"},"Experiment of creating a hydra explorer, first result hosted ",(0,n.kt)("a",{parentName:"li",href:"http://explorer.hydra.family"},"here")),(0,n.kt)("li",{parentName:"ul"},"Improved mutation framework allowing to fail for the right reason ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/679"},"#679")),(0,n.kt)("li",{parentName:"ul"},"Correctly reimburse funds in abort (matching the spec) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/670"},"#670")),(0,n.kt)("li",{parentName:"ul"},"Finished a first write-up of the Hydra HeadV1 spec: ",(0,n.kt)("a",{parentName:"li",href:"https://www.overleaf.com/read/bbqzmptcxryj"},"Read it on overleaf")," (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/master/SUPPORT.md"},"Communication channels")," for feedback)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting with a broader audience"),(0,n.kt)("li",{parentName:"ul"},"Groom & plan actions required for a maintainable Head explorer"),(0,n.kt)("li",{parentName:"ul"},"Break \u201calign gaps\u201d feature into smaller chunks (at least on- /off-chain) and groom it"),(0,n.kt)("li",{parentName:"ul"},"Review the spec & discuss individual aborts with researchers (a bigger open question)")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/41d087d7.f106b6c0.js b/assets/js/41d087d7.f106b6c0.js new file mode 100644 index 00000000000..b9a93f68e2c --- /dev/null +++ b/assets/js/41d087d7.f106b6c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[71972],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-11-18-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-11-18-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-18-hydra.md",source:"@site/blog/2022-11-18-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-11-18T00:00:00.000Z",formattedDate:"November 18, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.085,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-18-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-23-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-18-mithril"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},u="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version ",(0,n.kt)("inlineCode",{parentName:"p"},"0.8.1"),", which includes several fixes and a user-wished extension of the persistence introduced by ",(0,n.kt)("inlineCode",{parentName:"p"},"0.8.0")," of replaying server outputs to make clients like the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-tui")," be aware of the latest ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-poc")," to ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra"},(0,n.kt)("inlineCode",{parentName:"a"},"hydra")),"!"),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implemented replaying of server outputs to address ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Released version 0.8.1 containing this and other fixes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.8.1"},"Release notes")),(0,n.kt)("li",{parentName:"ul"},"Worked on the bounded tx validity as one of the on-chain script fixes, but couldn","\u2019","t finish it just yet ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/615"},"#615")),(0,n.kt)("li",{parentName:"ul"},"Collaborated with the education team on a Hydra tutorial."),(0,n.kt)("li",{parentName:"ul"},"Discovered and discussed issues with the ","\u201c","seen ledger","\u201d","."),(0,n.kt)("li",{parentName:"ul"},"Renamed the Hydra repository ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-poc")," -> ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Create and discuss an ADR about handling tx validity correctly."),(0,n.kt)("li",{parentName:"ul"},"Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: ",(0,n.kt)("strong",{parentName:"li"},'"Developing Hydra" on Day 2, Nov 21st, 13:50 CET')),(0,n.kt)("li",{parentName:"ul"},"Have a team workshop / hackathon after the summit:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Retrospective"),(0,n.kt)("li",{parentName:"ul"},"Roadmapping session"),(0,n.kt)("li",{parentName:"ul"},"Hack on something complex or useful")))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/425dfc0f.51e517b1.js b/assets/js/425dfc0f.51e517b1.js new file mode 100644 index 00000000000..24b3ae67bb2 --- /dev/null +++ b/assets/js/425dfc0f.51e517b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85349],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=p(r),d=n,h=m["".concat(u,".").concat(d)]||m[d]||c[d]||i;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=d;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[m]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-08-04-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-08-04-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-crypto.md",source:"@site/blog/2023-08-04-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.495,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-08-04-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-09-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-04-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"MuSig2",id:"musig2",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},m="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation"),(0,n.kt)("li",{parentName:"ul"},"mithril: Full node verifier"),(0,n.kt)("li",{parentName:"ul"},"musig2: Finalised the missing fuzz tests"),(0,n.kt)("li",{parentName:"ul"},"kes_agent: engineer on PTO. Work halted ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work on a mithril flaky test ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/1105"},"#1105")),(0,n.kt)("li",{parentName:"ul"},"Keep working on Full Node Verifier ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"),".\nShould be merged in the coming week.")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finalised the fuzz tests ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/43"},"#43"))),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/42ad0ca4.784088d6.js b/assets/js/42ad0ca4.784088d6.js new file mode 100644 index 00000000000..4cf43674e7d --- /dev/null +++ b/assets/js/42ad0ca4.784088d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80309],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(a),c=n,h=d["".concat(u,".").concat(c)]||d[c]||m[c]||o;return a?r.createElement(h,i(i({ref:t},p),{},{components:a})):r.createElement(h,i({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-31-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-31-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-hydra.md",source:"@site/blog/2023-03-31-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.82,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-31-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-31-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-31-ledger"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},d="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra continued work on finishing mainnet compatibility. The\nsemi-automated smoke tests and some missing documentation is still preventing\nfrom calling that fully done. They fixed smaller issues and made a step in the\nHead protocol more robust. Besides development, they met with interested people\nfrom the community who want to get started collaborating on communication and\nmarketing materials."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Groomed and followed-up on ",(0,n.kt)("inlineCode",{parentName:"li"},"GetUTxO")," user request discussion ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/discussions/797"},"#797")),(0,n.kt)("li",{parentName:"ul"},"Fixed ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")," crashes after forks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/560"},"#560")),(0,n.kt)("li",{parentName:"ul"},"Made ",(0,n.kt)("inlineCode",{parentName:"li"},"collectCom")," more robust and aligned with spec ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/786"},"#786")),(0,n.kt)("li",{parentName:"ul"},"Completed configurable API feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/380"},"#380")),(0,n.kt)("li",{parentName:"ul"},"Met potential contributors about Hydra communication and marketing materials"),(0,n.kt)("li",{parentName:"ul"},"Versioned documentation: we have a ",(0,n.kt)("inlineCode",{parentName:"li"},"unstable")," bleeding edge version available as well now, seperate from the last released version")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Follow-up backlog and roadmap clean-up"),(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713")," (documentation updates)"),(0,n.kt)("li",{parentName:"ul"},"Integrate Hydra specification into repository ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/43289e4d.c91734fc.js b/assets/js/43289e4d.c91734fc.js new file mode 100644 index 00000000000..68ccde06357 --- /dev/null +++ b/assets/js/43289e4d.c91734fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[458],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(a),h=n,m=p["".concat(s,".").concat(h)]||p[h]||u[h]||o;return a?r.createElement(m,i(i({ref:t},c),{},{components:a})):r.createElement(m,i({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-18-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-18-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-hydra.md",source:"@site/blog/2023-08-18-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.13,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-18-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-18-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-18-ledger"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],c={toc:d},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version 0.12.0, a significant update that\nbrings support for cardano-node 8.1.2, along with performance enhancements and\nvarious API improvements. Additionally, the team successfully onboarded a new\ncontributor who is now actively participating in operating a Hydra Head. They\ntook part in a meeting of the Intersect open source committee and prepared the\nHydra master-class for RareEvo, an educational initiative for the community."),(0,n.kt)("p",null,"If you happen to be at RareEvo, register for the Hydra master-class ",(0,n.kt)("a",{parentName:"p",href:"https://docs.google.com/forms/d/1Q9KIxwKeyZeNrKDBiYWceYjnbxIxaEwC8Eo5LWxSa2g/viewform?edit_requested=true"},"using this\nform"),".\nWe hope to make it possible to follow along on-line as well and will announce\ndetails on the Hydra announcements channel on the ",(0,n.kt)("a",{parentName:"p",href:"https://discord.gg/Qq5vNTg9PT"},"IOG discord\nserver"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released version 0.12.0 which adds support for cardano-node 8.1.2, performance\nand several API improvements. ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.12.0"},"Release notes")),(0,n.kt)("li",{parentName:"ul"},"Replaced commit via websocket with external draft + submit. ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/954"},"#954")),(0,n.kt)("li",{parentName:"ul"},"Onboarded new contributor to the point where he actively participates in operating a Head now."),(0,n.kt)("li",{parentName:"ul"},"Joined a first meeting of the Intersect open source committee"),(0,n.kt)("li",{parentName:"ul"},"Prepared the Hydra master-class for RareEvo.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting"),(0,n.kt)("li",{parentName:"ul"},"Run the Hydra master-class at RareEvo!"),(0,n.kt)("li",{parentName:"ul"},"Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff"),(0,n.kt)("li",{parentName:"ul"},"Clear out red bin items (technical debt)"),(0,n.kt)("li",{parentName:"ul"},"Groom network resilience and explorer features")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/435d8b4c.89bf5b70.js b/assets/js/435d8b4c.89bf5b70.js new file mode 100644 index 00000000000..886170fe5ca --- /dev/null +++ b/assets/js/435d8b4c.89bf5b70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88697],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=d(a),c=n,m=p["".concat(s,".").concat(c)]||p[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-04-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-04-27-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-27-hydra.md",source:"@site/blog/2023-04-27-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-27T00:00:00.000Z",formattedDate:"April 27, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.11,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-04-28-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-21-hydra"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:d},p="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team held their Monthly review meeting and drafted the\nreport which likely is published next week. They put the spec into the\nrepository and website, addressed a user issue and fixed the TUI peer list.\nFurthermore, they updated dependencies, conducted a Twitter space on Auctions\nuse cases, covered the rollback bug with tests and implemented a solution.\nLooking ahead, their goals for next week include releasing 0.10.0, implementing\ntimed transactions support, writing a Query API ADR, and grooming work items\nlike off-chain benchmarks."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Held the Monthly review meeting and drafted the report (to be published next week)"),(0,n.kt)("li",{parentName:"ul"},"Added the spec into the repository\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693")," and published on\n",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/core-concepts/specification"},"the\nwebsite")),(0,n.kt)("li",{parentName:"ul"},"Groom and addressed user issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/823"},"#823")),(0,n.kt)("li",{parentName:"ul"},"Covered the rollback bug with tests and implemented a solution (to be reviewed) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Fixed the TUI peer list"),(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to match ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node")," master"),(0,n.kt)("li",{parentName:"ul"},"Conducted a twitter space on Auctions use cases")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Release 0.10.0"),(0,n.kt)("li",{parentName:"ul"},"Support timed transactions solution drafted and validated API with users"),(0,n.kt)("li",{parentName:"ul"},"Write Query API ADR and groom a concrete step"),(0,n.kt)("li",{parentName:"ul"},"Groom and solve ",(0,n.kt)("inlineCode",{parentName:"li"},"PostTxOnChainFailed")," UX problem ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/832"},"#832")),(0,n.kt)("li",{parentName:"ul"},"Groom off-chain benchmarks idea ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186")," and turn it into a ","\u201c","feature","\u201d")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/437db4bf.f20821a1.js b/assets/js/437db4bf.f20821a1.js new file mode 100644 index 00000000000..09ad904ee0d --- /dev/null +++ b/assets/js/437db4bf.f20821a1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[81587],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),u=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(r),m=n,d=p["".concat(s,".").concat(m)]||p[m]||h[m]||i;return r?a.createElement(d,o(o({ref:t},c),{},{components:r})):a.createElement(d,o({ref:t},c))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-02-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-03-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-crypto.md",source:"@site/blog/2023-02-03-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-02-03T00:00:00.000Z",formattedDate:"February 3, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:2.47,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-02-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-08-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-03-goedel"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"MuSig2",id:"musig2",level:3}],c={toc:u},p="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril. "),(0,n.kt)("li",{parentName:"ul"},"cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: using snockets and making things testable in IOSim "),(0,n.kt)("li",{parentName:"ul"},"MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/722"},"PR#722")),(0,n.kt)("li",{parentName:"ul"},"We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper."),(0,n.kt)("li",{parentName:"ul"},"We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381. "),(0,n.kt)("li",{parentName:"ul"},"The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner."),(0,n.kt)("li",{parentName:"ul"},"The update VRF ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#341")," is finally merged, and we are ready to merge ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/344"},"PR#344"),", which implements conversion functions from the compatible types between Praos and PraosBatchCompat.")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Use of snockets to send the data directly from the socket to secure memory. "),(0,n.kt)("li",{parentName:"ul"},"We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives"),(0,n.kt)("li",{parentName:"ul"},"Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("p",null,"The GitHub Action ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/fernandrone/linelint"},"linelint")," is used to check the files."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A new job for linting is added to the file ",(0,n.kt)("inlineCode",{parentName:"li"},"/.github/workflows/ci.yml"),". The rules are configured in the file ",(0,n.kt)("inlineCode",{parentName:"li"},"/.github/workflows/.linelint.yml"),". Some files from the configuration of ",(0,n.kt)("inlineCode",{parentName:"li"},"libsecp")," were failing, so in the rules in ",(0,n.kt)("inlineCode",{parentName:"li"},".linelint.yml")," the failing files are denoted to be ignored by the linter."),(0,n.kt)("li",{parentName:"ul"},"Folders are reorganized. We created a folder to handle the example. This folder includes the ",(0,n.kt)("inlineCode",{parentName:"li"},"examplemusig2.c"),", a distinct ",(0,n.kt)("inlineCode",{parentName:"li"},"config.h"),", and ",(0,n.kt)("inlineCode",{parentName:"li"},"helper.c"),". The example is enhanced by implementing the functions in the helper for the configuration given in ",(0,n.kt)("inlineCode",{parentName:"li"},"config.h"),". The number of messages is different than the tests. The example is made more generic to run with a loop.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/439b9a57.c4abecba.js b/assets/js/439b9a57.c4abecba.js new file mode 100644 index 00000000000..97732e717d1 --- /dev/null +++ b/assets/js/439b9a57.c4abecba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96121],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(r),m=n,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||o;return r?a.createElement(h,l(l({ref:t},u),{},{components:r})):a.createElement(h,l({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Node Release Team Update",slug:"2022-11-02-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-11-02-release",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-release.md",source:"@site/blog/2022-11-02-release.md",title:"Node Release Team Update",description:"Node Reelease Update",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:.445,hasTruncateMarker:!1,authors:[{name:"Samuel Leathers",title:"Service Reliability Manager",url:"https://github.com/disassembler",imageURL:"https://github.com/disassembler.png",key:"disassembler"}],frontMatter:{title:"Node Release Team Update",slug:"2022-11-02-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-02-node-cli-api"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-11-02-system-test"}},s={authorsImageUrls:[void 0]},p=[{value:"Node Reelease Update",id:"node-reelease-update",level:2},{value:"2022-10-19 - 2022-11-02",id:"2022-10-19---2022-11-02",level:2},{value:"Executive Summary",id:"executive-summary",level:3},{value:"Completed",id:"completed",level:3},{value:"In Progress",id:"in-progress",level:3}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"node-reelease-update"},"Node Reelease Update"),(0,n.kt)("h2",{id:"2022-10-19---2022-11-02"},"2022-10-19 - 2022-11-02"),(0,n.kt)("h3",{id:"executive-summary"},"Executive Summary"),(0,n.kt)("p",null,"The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset,\na temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8."),(0,n.kt)("p",null,"1.35.4 release candidates have been created and are being tested internally and externally."),(0,n.kt)("h3",{id:"completed"},"Completed"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/commits/1.35.4-rc1"},"1.35.4-rc1 tag")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/commits/1.35.4-rc1"},"1.35.4-rc2 tag (config changes only for preview)")),(0,n.kt)("li",{parentName:"ul"},"[CHaP Migration]"," (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4540"},"https://github.com/input-output-hk/cardano-node/pull/4540"),")")),(0,n.kt)("h3",{id:"in-progress"},"In Progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/commits/release/1.35"},"Release 1.35.4")),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.4_rc1/src_docs/source/test_results/node/tag_1_35_4_rc1.rst"},"Test Status")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-updates/2022-08-12-sre"},"Cicero CI Migration")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/43aa4824.940228f0.js b/assets/js/43aa4824.940228f0.js new file mode 100644 index 00000000000..89b0e06e8e8 --- /dev/null +++ b/assets/js/43aa4824.940228f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98347],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(r),m=n,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||l;return r?a.createElement(h,o(o({ref:t},d),{},{components:r})):a.createElement(h,o({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:n,o[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-03-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-03-17-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-ledger.md",source:"@site/blog/2023-03-17-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-03-17T00:00:00.000Z",formattedDate:"March 17, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.415,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-03-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-17-hydra"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-16-goedel"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Expanded ledger API",id:"expanded-ledger-api",level:3},{value:"Conway ledger rules",id:"conway-ledger-rules",level:3},{value:"Incremental SPO/DRep stake distribution computation",id:"incremental-spodrep-stake-distribution-computation",level:3},{value:"Technical debt",id:"technical-debt",level:3}],d={toc:u},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We made further progress on the conway ledger era.\nIn particular, we expanded the ledger API significantly, including lots of governance features.\nWe also made progress on the specification and corresponding work in the Haskell implementation."),(0,n.kt)("p",null,"We also continued to integrate the latest ledger packages into cardano node and addressed\ntechnical debt."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"expanded-ledger-api"},"Expanded ledger API"),(0,n.kt)("p",null,"The ledger API was significantly expanded to include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"a lot of protocol parameter support"),(0,n.kt)("li",{parentName:"ul"},"versioning support (type level ledger eras and protocol versions)"),(0,n.kt)("li",{parentName:"ul"},"auxiliary data support"),(0,n.kt)("li",{parentName:"ul"},"many new lenses"),(0,n.kt)("li",{parentName:"ul"},"support for witnesses"),(0,n.kt)("li",{parentName:"ul"},"support for conway governance")),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3328"},"pull-3328"),"."),(0,n.kt)("h3",{id:"conway-ledger-rules"},"Conway ledger rules"),(0,n.kt)("p",null,"We have made progress on the formal ledger specification for the Conway era.\nMoreover, the corresponding Haskell updates were also completed:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3339"},"pull-3339")),(0,n.kt)("li",{parentName:"ul"},"See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3326"},"pull-3326")),(0,n.kt)("li",{parentName:"ul"},"See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3330"},"pull-3330"))),(0,n.kt)("h3",{id:"incremental-spodrep-stake-distribution-computation"},"Incremental SPO/DRep stake distribution computation"),(0,n.kt)("p",null,"We have a working (and correct) proof of concept for how to use the incremental lambda calculus\nto maintain several of the stake distributions incrementally.\nFor the per-SPO distribution, this is a performance improvement.\nFor the (conway) per-DRep distribution, this is will allow those who have delegated their votes\nto a DRep to have time to react to any votes that they disapprove of.\n(Sorry, no code to share just yet, more to come.)"),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improved CBOR testing facilities ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3332"},"pull-3332")),(0,n.kt)("li",{parentName:"ul"},"GitHub actions improvement ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3320"},"pull-3320")),(0,n.kt)("li",{parentName:"ul"},"Move ToJSON orphans from cardano-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3338"},"pull-3323")),(0,n.kt)("li",{parentName:"ul"},"Minor OCert improvements ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3327"},"pull-3327")),(0,n.kt)("li",{parentName:"ul"},"Remove duplication ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3341"},"pull-3341")),(0,n.kt)("li",{parentName:"ul"},"Enforce unique elements in CBOR sets ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3331"},"pull-3331")," ")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/43ab8474.0e965728.js b/assets/js/43ab8474.0e965728.js new file mode 100644 index 00000000000..2caadf14c8a --- /dev/null +++ b/assets/js/43ab8474.0e965728.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[5106],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function p(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),s=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):p(p({},t),e)),r},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=s(r),h=n,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||a;return r?o.createElement(m,p(p({ref:t},u),{},{components:r})):o.createElement(m,p({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,p=new Array(a);p[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:n,p[1]=i;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>p,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var o=r(87462),n=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-10-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},p=void 0,i={permalink:"/cardano-updates/2023-10-15-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-15-network.md",source:"@site/blog/2023-10-15-network.md",title:"Network Team Update",description:"High-level overview of sprint 46",date:"2023-10-15T00:00:00.000Z",formattedDate:"October 15, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.59,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-10-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-18-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-13-hydra"}},l={authorsImageUrls:[void 0]},s=[{value:"High-level overview of sprint 46",id:"high-level-overview-of-sprint-46",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"Towards Typed Protocols 0.2.0.0",id:"towards-typed-protocols-0200",level:3},{value:"Peer Sharing",id:"peer-sharing",level:3},{value:"Tech Debt",id:"tech-debt",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,o.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-46"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+46%22"},"sprint 46")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We continued reviewing of bootstrap peers, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4555"},"ouroboros-network#4555"),"."),(0,n.kt)("h3",{id:"towards-typed-protocols-0200"},"Towards Typed Protocols 0.2.0.0"),(0,n.kt)("p",null,"We diagnosed the performance regression of the new design. The work on\n",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols")," will be postponed. For more details see the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/3"},"typed-protocols#3"),". As an outcome of the performance debugging we prepared\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4691"},"PR")," which updates the ",(0,n.kt)("inlineCode",{parentName:"p"},"demo-ping-pong")," and\n",(0,n.kt)("inlineCode",{parentName:"p"},"demo-chain-sync")," applications."),(0,n.kt)("h3",{id:"peer-sharing"},"Peer Sharing"),(0,n.kt)("p",null,"We made progress in review of ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4644"},"ouroboros-network#4644"),", which simplifies the\npeer sharing and fixes the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4642"},"ouroboros-network#4642")," issue."),(0,n.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,n.kt)("p",null,"We reviewed the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3836"},"ouroboros-network#3836")," PR which inspects all the uses of\n",(0,n.kt)("inlineCode",{parentName:"p"},"error")," in ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),". The PR was prepared by Galois."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/43bbbae7.8ce14775.js b/assets/js/43bbbae7.8ce14775.js new file mode 100644 index 00000000000..fda01920319 --- /dev/null +++ b/assets/js/43bbbae7.8ce14775.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24310],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var i=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=i.createContext({}),p=function(e){var t=i.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=p(e.components);return i.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),c=p(a),m=n,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||r;return a?i.createElement(h,l(l({ref:t},s),{},{components:a})):i.createElement(h,l({ref:t},s))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,l=new Array(r);l[0]=m;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>p});var i=a(87462),n=(a(67294),a(3905));const r={title:"SRE Team Update",slug:"2022-08-12-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2022-08-12-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-sre.md",source:"@site/blog/2022-10-28-sre.md",title:"SRE Team Update",description:"High level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:3.04,hasTruncateMarker:!1,authors:[{name:"Michael Fellinger",title:"SRE Team Lead",url:"https://github.com/manveru",imageURL:"https://github.com/manveru.png",key:"manveru"}],frontMatter:{title:"SRE Team Update",slug:"2022-08-12-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Team Update",permalink:"/cardano-updates/2022-10-28-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-10-27-crypto"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"OpenZiti",id:"openziti",level:3},{value:"Cicero & Tullia Integrations",id:"cicero--tullia-integrations",level:3},{value:"Cicero & Tullia Features",id:"cicero--tullia-features",level:3},{value:"Spongix",id:"spongix",level:3},{value:"Bugs",id:"bugs",level:3}],s={toc:p},c="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,i.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team is heavily working on the Equinix Metal migration, replacing Hydra\nwith Cicero, and a new version of Spongix."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"openziti"},"OpenZiti"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work is ongoing on our OpenZiti integration into Bitte in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte/compare/zt"},"bitte-zt"),"]."),(0,n.kt)("li",{parentName:"ul"},"CI-World deployment of Darwin CI Ziti service in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/commit/d40f4d19187a2128b6f0d63bde7e3f9a33071994"},"ci-world-commit-d40f4d"),"]."),(0,n.kt)("li",{parentName:"ul"},"Multiple issues filed, and a lot of discussion with the OpenZiti developers,\nwe're making pretty rapid progress thanks to them."),(0,n.kt)("li",{parentName:"ul"},"Work on getting Equinix baremetal machines integrated into AWS World Bitte\nclusters utilizing a Ziti ZTNA network overlay to bridge the networking of\nthe two environments and get IAM extension to Equinix machine for Nomad\nclient onboarding."),(0,n.kt)("li",{parentName:"ul"},"A Nix Flake for most of our OpenZiti dependencies including the Console,\nController, Edge Tunnel, and Router is now at [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/johnalotoski/openziti-bins"},"openziti-bins"),"]."),(0,n.kt)("li",{parentName:"ul"},"The Flake also includes a WiP NixOS modules for these components."),(0,n.kt)("li",{parentName:"ul"},"Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with\nno issues seen so far"),(0,n.kt)("li",{parentName:"ul"},"Moved the console to traefik routing service (",(0,n.kt)("inlineCode",{parentName:"li"},"zac.$DOMAIN"),") and\ncontroller/edge router stay at ",(0,n.kt)("inlineCode",{parentName:"li"},"zt.$DOMAIN"),", but have registered consul\nservices")),(0,n.kt)("h3",{id:"cicero--tullia-integrations"},"Cicero & Tullia Integrations"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Added webhook for [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/haskell.nix"},"haskell.nix"),"]."),(0,n.kt)("li",{parentName:"ul"},"Finished Cicero CI action for [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-addresses/pull/205"},"cardano-addresses-pull-205"),"]."),(0,n.kt)("li",{parentName:"ul"},"Fixed cardano-prelude cicero action in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-prelude/pull/176#issuecomment-1280947946"},"cardano-prelude-pull-176"),"]."),(0,n.kt)("li",{parentName:"ul"},"Fixed the ",(0,n.kt)("inlineCode",{parentName:"li"},"abcird-stdlib/publish")," action [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc/pull/104"},"abcirdc-pull-104"),"]"),(0,n.kt)("li",{parentName:"ul"},"fix error on vm-bigdisk flake configs [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cicero/pull/66"},"cicero-pull-66"),"]."),(0,n.kt)("li",{parentName:"ul"},"Helped with Cicero actions and answered questions for [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus"},"plutus"),"]\n[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-prelude"},"cardano-prelude"),"], and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc"},"abcirdc"),"]."),(0,n.kt)("li",{parentName:"ul"},"Merged [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/323"},"cardano-base-pull-323"),"] for Tullia on cardano-base."),(0,n.kt)("li",{parentName:"ul"},"Merged Cicero action in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ogmios/pull/5"},"cardano-ogmios-pull-5"),"]."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-explorer-app/pull/427"},"cardano-explorer-app-pull-427"),"] to add Tullia and Cicero."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3097"},"cardano-ledger-pull-3097"),"] to add Cicero CI action."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4489"},"cardano-node-pull-4489"),"] to add Tullia and Cicero, including\nOS-agnostic jobs."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4108"},"ouroboros-network-pull-4108"),"] to add Cicero action."),(0,n.kt)("li",{parentName:"ul"},"Reviewed [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus/pull/4918"},"plutus-pull-4918"),"] and helped test it."),(0,n.kt)("li",{parentName:"ul"},"Update Tullia in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc/pull/97"},"abcirdc-pull-97"),"] to build if a tag is given.")),(0,n.kt)("h3",{id:"cicero--tullia-features"},"Cicero & Tullia Features"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improvements to Tullia task aggregation to make [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-addresses"},"cardano-addresses"),"] build\ncorrectly."),(0,n.kt)("li",{parentName:"ul"},"Better tullia CUE lib default for tags [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/tullia/commit/4df3c5d956f1b062b950643da12768ae71acf245"},"tullia-commit-4df3c5d"),"]."),(0,n.kt)("li",{parentName:"ul"},"Put ",(0,n.kt)("inlineCode",{parentName:"li"},"cache.nixos.org")," back in ",(0,n.kt)("inlineCode",{parentName:"li"},"cache.iog.io"),"'s upstreams. This is now\nconsidered a public cache again, and without it some Cicero evaluations had\nto build huge packages."),(0,n.kt)("li",{parentName:"ul"},"Started working on a flake-parts module for Tullia."),(0,n.kt)("li",{parentName:"ul"},"Started working on cutting down Tullia task build time by putting facts in\nJSON files."),(0,n.kt)("li",{parentName:"ul"},"Fixed running into kernel arg limit by reading tullia's DAG from a file"),(0,n.kt)("li",{parentName:"ul"},"Merged [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/tullia/pull/9"},"tullia-pull-9"),"] that fixes several issues related to error reporting.\nand escaping."),(0,n.kt)("li",{parentName:"ul"},"Added Mac builders in Cicero on CI-World."),(0,n.kt)("li",{parentName:"ul"},"Started work on Tullia invocation caching.")),(0,n.kt)("h3",{id:"spongix"},"Spongix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A lot of progress on an SQlite backed version of Spongix, it already supports\nthe full HTTP binary cache protocol but still lacks comprehensive testing and\nsome tuning, as well as recursive lookups."),(0,n.kt)("li",{parentName:"ul"},"First steps in the implementation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"nix-daemon")," ",(0,n.kt)("inlineCode",{parentName:"li"},"ssh-ng")," protocol so\nSpongix can be used via SSH and we can get rid of basic auth.")),(0,n.kt)("h3",{id:"bugs"},"Bugs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Discovered Cicero bug where Nomad reschedules cause the Github commit status\nto get stuck in ",(0,n.kt)("inlineCode",{parentName:"li"},"pending")),(0,n.kt)("li",{parentName:"ul"},"Discovered Cicero race condition bug around concurrent transactions for\ncodependent actions."),(0,n.kt)("li",{parentName:"ul"},"Fixed tullia task order bug in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-addresses"},"cardano-addresses"),"]"),(0,n.kt)("li",{parentName:"ul"},"Diagnose Cicero action not triggered in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc"},"abcirdc"),"]"),(0,n.kt)("li",{parentName:"ul"},"Fixed meta/description of the Tullia package in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/tullia/pull/7"},"tullia-pull-7"),"]"),(0,n.kt)("li",{parentName:"ul"},"Add Vault token loop alerts in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte-cells/pull/40"},"bitte-cells-pull-40"),"]"),(0,n.kt)("li",{parentName:"ul"},"Ongoing investigation on recurring Patroni and nomad-follower issues related\nto token rotation.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/444dad87.29aa76a0.js b/assets/js/444dad87.29aa76a0.js new file mode 100644 index 00000000000..f003c8d9dcd --- /dev/null +++ b/assets/js/444dad87.29aa76a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33815],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>h});var l=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=l.createContext({}),p=function(e){var t=l.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=p(e.components);return l.createElement(u.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},c=l.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,u=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=p(a),c=r,h=d["".concat(u,".").concat(c)]||d[c]||s[c]||n;return a?l.createElement(h,i(i({ref:t},m),{},{components:a})):l.createElement(h,i({ref:t},m))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,i=new Array(n);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:r,i[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>s,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var l=a(87462),r=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-08-04-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-08-04-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-ledger.md",source:"@site/blog/2023-08-04-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.915,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-08-04-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-04-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-04-network"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway progress",id:"conway-progress",level:3},{value:"Testing",id:"testing",level:3},{value:"Bugfixes",id:"bugfixes",level:3},{value:"Plutus integration",id:"plutus-integration",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],m={toc:p},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,l.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The ledger team was working almost exclusively on the Conway era implementation. In\nparticular, the main focus was directed towards solidifying transaction related types and\ntheir binary representation. We also directed some effort into unblocking Plutus team with\nrespect to PlutusV3 integration."),(0,r.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,r.kt)("h3",{id:"conway-progress"},"Conway progress"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3552"},"pull-3552")," - Allow Constitutional Committee Hot Key to be ScriptHash"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3581"},"pull-3581")," - Make Constitutional Committee Cold Key to be ScriptHash"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3571"},"pull-3571")," - Implement a portion of the TICKF rule."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3556"},"pull-3556")," - Add Script to Constitution"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3576"},"pull-3576")," - Add optional Anchor to ConwayRegDRep certificate"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3495"},"pull-3495")," - Implement refund logic for Proposal deposits"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3579"},"pull-3579")," - Change voting procedure in the transaction to a nested Map"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3585"},"pull-3585")," - Rename ",(0,r.kt)("inlineCode",{parentName:"li"},"CommitteeCert")," into a ",(0,r.kt)("inlineCode",{parentName:"li"},"GovCert")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3587"},"pull-3587")," - Remove ",(0,r.kt)("inlineCode",{parentName:"li"},"DelegStakeTxCert")," from the ",(0,r.kt)("inlineCode",{parentName:"li"},"COMPLETE")," pragma for ",(0,r.kt)("inlineCode",{parentName:"li"},"TxCert")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3586"},"pull-3586")," - Add ",(0,r.kt)("inlineCode",{parentName:"li"},"CurrentTreasuryValue")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"TxBody")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3588"},"pull-3588")," - Rename key roles"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3557"},"pull-3557")," - Update ",(0,r.kt)("inlineCode",{parentName:"li"},"NewCommittee")," action to use ",(0,r.kt)("inlineCode",{parentName:"li"},"RewardAcnt")," and add more info"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3595"},"pull-3595")," - Add ",(0,r.kt)("inlineCode",{parentName:"li"},"ConwayUpdateDRep")," constructor to ConwayTxCertGov type"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3600"},"pull-3600")," - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3597"},"pull-3597")," - Update ",(0,r.kt)("inlineCode",{parentName:"li"},"ProposalProcedure")," return address to be a ",(0,r.kt)("inlineCode",{parentName:"li"},"RewardAcnt"))),(0,r.kt)("h3",{id:"testing"},"Testing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3374"},"pull-3374")," - New features for generation subject to constraints"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3519"},"pull-3519")," - Basic Conway features test")),(0,r.kt)("h3",{id:"bugfixes"},"Bugfixes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3566"},"pull-3566")," - Mint field translation bugfix.")),(0,r.kt)("h3",{id:"plutus-integration"},"Plutus integration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3538"},"issue-3538")," - A fairly complete specification was created for the PlutusV3 context"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3593"},"pull-3593")," - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality")),(0,r.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3574"},"pull-3574")," - Improve clarity and performance of collateral Non-ADA validation:"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3573"},"pull-3573")," - Update top-level ",(0,r.kt)("inlineCode",{parentName:"li"},"CHANGELOG.md")," with cardano-node relevant changes"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3555"},"pull-3555")," - Bump pygments from 2.12.0 to 2.15.0 in /doc"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3575"},"pull-3575")," - Bump certifi from 2022.12.7 to 2023.7.22 in /doc"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3567"},"pull-3567")," - Backport mint field translation bugfix"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3568"},"pull-3568")," - Fixed typo in byron ledger spec"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3572"},"pull-3572")," - Release/backport tickf bugfix")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/44642b2f.9ca08045.js b/assets/js/44642b2f.9ca08045.js new file mode 100644 index 00000000000..1c64432df82 --- /dev/null +++ b/assets/js/44642b2f.9ca08045.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43108],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>d});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=p(a),m=n,d=h["".concat(u,".").concat(m)]||h[m]||c[m]||i;return a?r.createElement(d,o(o({ref:t},s),{},{components:a})):r.createElement(d,o({ref:t},s))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-02-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-10-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-10-hydra.md",source:"@site/blog/2023-02-10-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-10T00:00:00.000Z",formattedDate:"February 10, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.14,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-02-17-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-09-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team closed several gaps to align the Hydra scripts\nimplementation further with the specification. This also resulted in a slight\nimprovement on Hydra script size and costs. They consequently analysed the\nasymptotic complexity of collect and fanout and how they relate. Also plutus-tx\nprofiling toolchain was evaluated and set up for future improvements on Hydra\non-chain performance. In discussions with researchers and internal auditors,\nthey also uncovered next steps on further securing the Head protocl using a\n"full" minting policy.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Closed several gaps to align script implementation with specification ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/452"},"#452"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Allow contest only once ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/680"},"#680")),(0,n.kt)("li",{parentName:"ul"},"Optimization through head output at index 0 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/700"},"#700")),(0,n.kt)("li",{parentName:"ul"},"Value is preserved ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/702"},"#702")," + optimized exact value equality ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/709"},"#709")))),(0,n.kt)("li",{parentName:"ul"},"Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/721"},"#721"),(0,n.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/2621189/218124686-7a85b40d-12f7-4b00-ad16-128c99f5b707.png",alt:null})),(0,n.kt)("li",{parentName:"ul"},"Fixed our tooling around the Haskell language server"),(0,n.kt)("li",{parentName:"ul"},"Discussed full minting policy with researchers"),(0,n.kt)("li",{parentName:"ul"},"Started grooming \u201cwhat we need for mainnet\u201d on ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"this")," idea ticket and ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/milestone/8"},"milestone"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement full minting policy"),(0,n.kt)("li",{parentName:"ul"},"All remaining protocol discrepancies are implemented or groomed as individual features"),(0,n.kt)("li",{parentName:"ul"},"Ideally release 0.9.0 with updated scripts"),(0,n.kt)("li",{parentName:"ul"},"Discuss what we need for mainnet (milestone planning)"),(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs for specification (upon feedback)")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/44e33f80.842bca3f.js b/assets/js/44e33f80.842bca3f.js new file mode 100644 index 00000000000..9a8edcb6f99 --- /dev/null +++ b/assets/js/44e33f80.842bca3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31636],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(r),m=i,d=c["".concat(s,".").concat(m)]||c[m]||h[m]||a;return r?n.createElement(d,o(o({ref:t},u),{},{components:r})):n.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var n=r(87462),i=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-11-08-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-08-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-08-mithril.md",source:"@site/blog/2023-11-08-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-08T00:00:00.000Z",formattedDate:"November 8, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.805,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-08-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-08-ledger"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-01-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},c="wrapper";function h(e){let{components:t,...r}=e;return(0,i.kt)(c,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files."),(0,i.kt)("p",null,"Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Prototype a P2P relay with ",(0,i.kt)("inlineCode",{parentName:"strong"},"libp2p"))," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,i.kt)("inlineCode",{parentName:"strong"},"mithril-client")," library")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1311"},"#1311")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Client Docker package is incorrect")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1322"},"#1322"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/459dd1ef.7604d487.js b/assets/js/459dd1ef.7604d487.js new file mode 100644 index 00000000000..61792a86f7a --- /dev/null +++ b/assets/js/459dd1ef.7604d487.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67825],{41867:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/tags/consensus","allTagsPath":"/cardano-updates/tags","count":32}')}}]); \ No newline at end of file diff --git a/assets/js/45a10ae8.de178977.js b/assets/js/45a10ae8.de178977.js new file mode 100644 index 00000000000..8a24165e21b --- /dev/null +++ b/assets/js/45a10ae8.de178977.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22206],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(r),m=n,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||o;return r?a.createElement(h,l(l({ref:t},d),{},{components:r})):a.createElement(h,l({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"SRE Team Update",slug:"2023-07-07-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-07-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-sre.md",source:"@site/blog/2023-07-07-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.815,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-07-07-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-07-hydra"},nextItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-07-06-developer-experience"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ogmios",id:"cardano-ogmios",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-rosetta",id:"cardano-rosetta",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Spongix",id:"spongix",level:3}],d={toc:u},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment"),(0,n.kt)("li",{parentName:"ul"},"Explorer component updates"),(0,n.kt)("li",{parentName:"ul"},"Spongix caching server rewrite for R2 Cloudflare support and various performance improvements")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nixos service update to enable non-systemd socket activation multi-node relays: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5360"},"cardano-node-pull-5360"))),(0,n.kt)("h3",{id:"cardano-ogmios"},"Cardano-ogmios"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano ogmios bump to 5.6.0 for nixos service: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ogmios/pull/6"},"cardano-ogmios-pull-6"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/88a17c9...dfde751"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-rosetta"},"Cardano-rosetta"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-rosetta nixos modifications for rosetta 2.1.0 service: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/cardano-rosetta/pull/532"},"cardano-rosetta-pull-532"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-node entrypoint improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/99"},"cardano-world-pull-99")),(0,n.kt)("li",{parentName:"ul"},"Further automate pool performance SQL query: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/100"},"cardano-world-pull-100")),(0,n.kt)("li",{parentName:"ul"},"Performance and benchmark job related tweaks: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/02f1ba424d3e36bd114df6f53b769d2cd25301c3"},"cardano-world-commit")),(0,n.kt)("li",{parentName:"ul"},"Explorer related component version bumps and traefik definition handline: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/101"},"cardano-world-pull-101"))),(0,n.kt)("h3",{id:"spongix"},"Spongix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/spongix/compare/afd77728f5823d61732425df52a363949096e163...4890ff93308f45584bea8443cc13fbc16c8ce911"},"spongix-simple-branch"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/469935bd.daaef810.js b/assets/js/469935bd.daaef810.js new file mode 100644 index 00000000000..c46a0916139 --- /dev/null +++ b/assets/js/469935bd.daaef810.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47605],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(n),c=o,m=d["".concat(l,".").concat(c)]||d[c]||h[c]||a;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=n(87462),o=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-09-01-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-09-01-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-network.md",source:"@site/blog/2023-09-01-network.md",title:"Network Team Update",description:"High-level overview of sprint 43",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.765,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-09-01-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-01-ledger"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-01-sre"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level overview of sprint 43",id:"high-level-overview-of-sprint-43",level:2},{value:"Progress on P2P addoption",id:"progress-on-p2p-addoption",level:3},{value:"SPO relays",id:"spo-relays",level:4},{value:"IOG relays",id:"iog-relays",level:4},{value:"Detailed description",id:"detailed-description",level:2},{value:"Peer Sharing",id:"peer-sharing",level:2},{value:"Async Demotion Test Fix",id:"async-demotion-test-fix",level:2}],u={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,o.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-overview-of-sprint-43"},"High-level overview of ",(0,o.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+43%22"},"sprint 43")),(0,o.kt)("p",null,"In this sprint, we received contributions from ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF")," & ",(0,o.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois"),". Karl Knutsson\n(",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF"),") has addressed various issues regarding peer churning in P2P, timeouts\nand our ",(0,o.kt)("inlineCode",{parentName:"p"},"WireShark")," dissector. While the ",(0,o.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois")," developers focused on\naddressing issues from their review last year. See below for more details."),(0,o.kt)("p",null,"We continued working on bootstrap peers ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661"),"."),(0,o.kt)("p",null,"We refactored our test suites: they are split into ",(0,o.kt)("inlineCode",{parentName:"p"},"io-tests")," which require to\nbe run natively on all platforms (these tests mostly contain tests that\nrequire ",(0,o.kt)("inlineCode",{parentName:"p"},"IO")," system calls) and ",(0,o.kt)("inlineCode",{parentName:"p"},"sim-tests")," which are platform independent. We\nrun ",(0,o.kt)("inlineCode",{parentName:"p"},"io-tests")," on all supported platforms (e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"x86_64-linux"),",\n",(0,o.kt)("inlineCode",{parentName:"p"},"x86-64-darwin"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"aarch64-darwin")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"x86_64-w64-mingw32")," (Windows)) natively.\nThe ",(0,o.kt)("inlineCode",{parentName:"p"},"sim-tests")," are not executed on ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows")," due to memory limitations on\nGitHub Actions runners. ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4653"},"ouroboros-network-#4653")),(0,o.kt)("p",null,"We also started rebasing ",(0,o.kt)("inlineCode",{parentName:"p"},"typed-protocols")," refactoring branches."),(0,o.kt)("p",null,"Marcin was appointed as the ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," release engineer for the ",(0,o.kt)("inlineCode",{parentName:"p"},"8.4.0-pre"),"\nversion. So far he integrated ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger-conway-1.8")," and\n",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.9.1.0")," to ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli")," and\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-api"),". Once we will have an integration branch for ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node"),",\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger-conway-1.8")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," packages can be released\nto ",(0,o.kt)("inlineCode",{parentName:"p"},"CHaP")," and PRs can be merged once they go through review & CI."),(0,o.kt)("p",null,"We also fixed some smaller issues regarding peer sharing (both were discovered\nby Karl from ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF"),"). More details are included below."),(0,o.kt)("h3",{id:"progress-on-p2p-addoption"},"Progress on P2P addoption"),(0,o.kt)("h4",{id:"spo-relays"},"SPO relays"),(0,o.kt)("p",null,"There are currently ~2000 relays running P2P\nenabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On\n16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil\nAda."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"P2P relays",src:n(86597).Z,width:"2034",height:"1588"})),(0,o.kt)("p",null,"The following graphs show several different versions of relays running on the mainnet. The\ngreen line ",(0,o.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionV10.True")," denotes P2P relays, which slowly\nincrease over time. The ",(0,o.kt)("inlineCode",{parentName:"p"},"V9")," and earlier versions of the ",(0,o.kt)("inlineCode",{parentName:"p"},"node-to-node"),"\nthe protocol indicates nodes version ",(0,o.kt)("inlineCode",{parentName:"p"},"1.35.x")," or earlier.\n",(0,o.kt)("img",{alt:"node versions",src:n(31567).Z,width:"2038",height:"1594"})),(0,o.kt)("p",null,"Data has been kindly provided by ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF")," and their mainnet monitoring\ninfrastructure."),(0,o.kt)("h4",{id:"iog-relays"},"IOG relays"),(0,o.kt)("p",null,"As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all\nIOG relays will be running P2P."),(0,o.kt)("h2",{id:"detailed-description"},"Detailed description"),(0,o.kt)("p",null,"In this sprint, we got a few contributions from ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Karl made peer churning mechanism less aggressive ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4656"},"ouroboros-network-#4656"),"; and"),(0,o.kt)("li",{parentName:"ul"},"he added timeouts for idle states in ",(0,o.kt)("inlineCode",{parentName:"li"},"ChainSync")," & ",(0,o.kt)("inlineCode",{parentName:"li"},"KeepAlive"),"\nminiprotocols. These timeouts help a node remove idle connections from the\nresponder (server) side ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4648"},"ouroboros-network-#4648"),"."),(0,o.kt)("li",{parentName:"ul"},"he improved the ",(0,o.kt)("inlineCode",{parentName:"li"},"WireShark")," dissector by adding support for the ",(0,o.kt)("inlineCode",{parentName:"li"},"peer-sharing")," mini-protocol ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4656"},"ouroboros-network-#4656"),".")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois")," has been making progress in addressing some of the issues they raised in their review (last year):"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Mark Tullsen (",(0,o.kt)("a",{parentName:"li",href:"https://galois.com/"},"Galois"),") has been working on refactoring the main entry function of P2P ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661")," (in review);"),(0,o.kt)("li",{parentName:"ul"},"Sam Cowger (",(0,o.kt)("a",{parentName:"li",href:"https://galois.com/"},"Galois"),") has been reviewing all use cases of ",(0,o.kt)("inlineCode",{parentName:"li"},"error")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"unsafe")," calls\n",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661")," (in review).")),(0,o.kt)("h2",{id:"peer-sharing"},"Peer Sharing"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Light peer sharing is only enabled when peer sharing is turned on ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4652"},"ouroboros-network-#4652"),";"),(0,o.kt)("li",{parentName:"ul"},"Handshake incorrectly reports peer sharing value. It's supposed to relay the\nremote value, but instead, it returns the local value. ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4642"},"ouroboros-network-#4642")," (in review).")),(0,o.kt)("h2",{id:"async-demotion-test-fix"},"Async Demotion Test Fix"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We fixed an async demotion test failure which turned out to be a weakness of\nthe test itself rather than a bug in the connection manager. ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4655"},"ouroboros-network-#4655"))))}h.isMDXComponent=!0},86597:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/2023-08-31-p2p-relays-8e5be189ad8437375c5067026c003556.png"},31567:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/2023-08-31-relay-versions-0a8d445e1b0f3a793ccdd94f4aacd421.png"}}]); \ No newline at end of file diff --git a/assets/js/46c51ef6.7652a0cc.js b/assets/js/46c51ef6.7652a0cc.js new file mode 100644 index 00000000000..2dadcc43dca --- /dev/null +++ b/assets/js/46c51ef6.7652a0cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[28298],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(n),c=a,h=m["".concat(s,".").concat(c)]||m[c]||d[c]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"Network Team Update",slug:"2022-11-09-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2022-11-09-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-09-network.md",source:"@site/quarterly/2022-11-09-network.md",title:"Network Team Update",description:"Network Quarterly Update",date:"2022-11-09T00:00:00.000Z",formattedDate:"November 9, 2022",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:3.87,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-11-09-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2022-11-15-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2022-11-07-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"Network Quarterly Update",id:"network-quarterly-update",level:2},{value:"2022-09 - 2022-11",id:"2022-09---2022-11",level:2},{value:"Summary of most important improvements",id:"summary-of-most-important-improvements",level:3},{value:"Detailed log",id:"detailed-log",level:3},{value:"Next quarter",id:"next-quarter",level:2}],u={toc:p},m="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"network-quarterly-update"},"Network Quarterly Update"),(0,a.kt)("h2",{id:"2022-09---2022-11"},"2022-09 - 2022-11"),(0,a.kt)("h3",{id:"summary-of-most-important-improvements"},"Summary of most important improvements"),(0,a.kt)("p",null,"During this quarter the networking team delivered low level specification of\npeer sharing & eclipse evasion. We held a session with the consensus & the\nscientists; we got a positive feedback on the design."),(0,a.kt)("p",null,"Further we focused on implementation of peer sharing. We produced a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/wiki/Peer-Sharing-Implementation-Plan"},"detail\ndesign")," and an ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"early implementation"),"."),(0,a.kt)("p",null,"We prepared the ",(0,a.kt)("em",{parentName:"p"},"P2P Single Relay Release")," (",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node-1.35.5"),"). It\nincludes over ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4120"},"130 patches")," of network stack improvements over the\nprevious version ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.4"),", which were accomplished over a longer period of\ntime. Among them are both bug fixes and UX improvements for stake pool\noperators like simplified format of the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4563"},"topology file"),", or\nimprovements in the logged messages:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4015"},"tracing of early consensus exceptions")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4127"},"tracing of demotion of local root peers")," (traced with\n",(0,a.kt)("inlineCode",{parentName:"li"},"Warning")," severity), the trace is called ",(0,a.kt)("inlineCode",{parentName:"li"},"TraceDemoteLocalAsynchronous"),", in\n",(0,a.kt)("inlineCode",{parentName:"li"},"json")," format it is encoded as ",(0,a.kt)("inlineCode",{parentName:"li"},"DemoteLocalAsynchronous"),". For an SPO\ntracking these demotion is vital (such demotion could indicate that a block\nproducer is no longer connected to its relays or vice versa)")),(0,a.kt)("p",null,"We also provide better integration with ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3979"},"systemd")," (socket\nactivation improvements) or improvements in the networking stack:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3785"},"exit policies"),","),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3915"},"peer metrics improvements"),","),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4106"},"DNS TTL")," improvements (which make it harder to misconfigure the\nsystem, an issue discovered by the performance & monitoring team),"),(0,a.kt)("li",{parentName:"ul"},"do not trigger inbound idle timeout for ",(0,a.kt)("inlineCode",{parentName:"li"},"node-to-client")," connections (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3844"},"pr\n#3844"),"), an issue reported to us by Matthias Benkort from\nCardano Foundation.")),(0,a.kt)("p",null,"Duncan has been making progress with the input endorsers demo. His simulation\nprovides a useful animated visualisation and live quantification of behaviour\nof the modeled design."),(0,a.kt)("p",null,"We also improved our e2e diffusion simulation by implementing header-body\nsplit, similar to what the real implementation does."),(0,a.kt)("p",null,"We also made some advances towards our future goals of P2P release for block\nproducer nodes (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3800"},"pr #3800")," - in review) & for Daedalus users\n(",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3968"},"pr #3690")," - merged)."),(0,a.kt)("h3",{id:"detailed-log"},"Detailed log"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We expanded diffusion simulation with block-fetch protocol bringing it closer\nto the production system.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We addressed some additional technical depth in diffusion simulation")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We slightly improved documentation & CI of io-sim and typed-protocols\nrepositories for open-source contributors.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We closed a number of issues towards publishing io-sim on Hackage (only two\nessential issues are left open).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We pushed a branch of typed-protocols which captures one of the developer UX\nproblems in the API which we need to solve.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified and fixed an issue related to systemd sockets.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified and fixed an issue in consensus initialisation not giving\nfeedback on early errors.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We deployed RT View, identified a number of issues which were communicated to\nthe performance & monitoring team.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We finished high level & detailed design of peer sharing, very early\nimplementation of peer sharing is done (note that peer sharing cannot be\nsafely deployed without eclipse evasion & genesis).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We finished high level design of eclipse evasion, and started working on\na detailed design.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We were assigned the role of release engineer for 1.35.5 release (the P2P\nsingle relay release); we prepared a cardano-node for 1.35.5 release which\ncontains more than 130 patches of just network stack improvements done over\nlast few months.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We diagnosed and fixed an tricky bug in the peer state actions (a component\nwhich sits between outbound governor and connection manager). That bug was\nintroduced earlier this year and never released. It was caught by the QA\ntesting framework. We expanded our diffusion simulation to cover such case and\nalso mitigated a chance for reintroducing such a bug in future.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified and quite likely mitigated a misconfiguration in the\nbenchmarking cluster (next benchmarking run will confirm our hypothesis).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We simplified the format of p2p topology file, we got positive feedback from\nSPOs.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We raised severities of some of the logging messages, which is an important\nimprovement for SPOs, exchanges and other users of the system.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We worked on input endorsers simulation which gives both animated and\nquantified live feedback on network operation, using a simplified model of\na TCP/IP network. "))),(0,a.kt)("h2",{id:"next-quarter"},"Next quarter"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Release the Single Relay P2P Release ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.5"),".")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Carry on with Peer Sharing (review, testing).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Deliver a talk at ",(0,a.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/"},"Conference on Principles of Distributed Systems 2022")," in Brussels, Belgium.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Present Detailed Design of Eclipse Evasion and start implementation phase.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Work on P2P Block Producer release.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Carry on with publishing of ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," on ",(0,a.kt)("inlineCode",{parentName:"p"},"Hackage"),"."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/46d9aab0.40f77729.js b/assets/js/46d9aab0.40f77729.js new file mode 100644 index 00000000000..fb115a51274 --- /dev/null +++ b/assets/js/46d9aab0.40f77729.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40373],{25545:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/4735cd81.21fed183.js b/assets/js/4735cd81.21fed183.js new file mode 100644 index 00000000000..5cf992280f1 --- /dev/null +++ b/assets/js/4735cd81.21fed183.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15529],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=a,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return r?n.createElement(h,i(i({ref:t},s),{},{components:r})):n.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Network Team Update",slug:"2023-01-20-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-01-20-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-network.md",source:"@site/blog/2023-01-20-network.md",title:"Network Team Update",description:"High level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"},{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:1.045,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-01-20-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-20-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-01-20-sre"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have been working towards ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node-1.35.5")," release. QA & benchmarking\nteams gave a green light for the release, and we made decent progress with some\nCI problem which we encountered on the way (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4612"},"PR #4612"),"). We are also working on\npeer sharing, making improvements in our testing infrastructure, reducing\ntechnical debt and making progress towards ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim-1.0.0.0"),". Galois is making\nprogress on Handshake improvements."),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("p",null,"Our diffusion simulation network now includes a mixed network of ",(0,a.kt)("inlineCode",{parentName:"p"},"initiator\nonly")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"initiator and responder")," nodes. ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4222"},"issue #4222")),(0,a.kt)("p",null,"We are now reviewing the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"peer sharing pull request"),"."),(0,a.kt)("p",null,"We are also reviewing pull request which introduces handshake query flag. ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"PR #4256")),(0,a.kt)("p",null,"We fixed a bug in our network simulator. The bug was triggered when a node\ndied when performing a simultaneous TCP open (a corner case of a corner case!). ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4265"},"PR #4265")),(0,a.kt)("p",null,"We also refactored ",(0,a.kt)("inlineCode",{parentName:"p"},"Snocket")," interface and removed the bearer construction from\nits methods. ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4260"},"PR #4260")),(0,a.kt)("p",null,"We are working towards releasing ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim-1.0.0.0")," on Hackage, which includes\nreviewing two PRs: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"PR #57")," and ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/60"},"PR #60")," as well as writing an announcement\nblog post. "))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/47658b82.e1d6cb38.js b/assets/js/47658b82.e1d6cb38.js new file mode 100644 index 00000000000..e32e0440bc8 --- /dev/null +++ b/assets/js/47658b82.e1d6cb38.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60263],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,g=p["".concat(s,".").concat(m)]||p[m]||d[m]||i;return n?r.createElement(g,o(o({ref:t},u),{},{components:n})):r.createElement(g,o({ref:t},u))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-04-05-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-04-05-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-performance-and-tracing.md",source:"@site/blog/2023-04-05-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.",date:"2023-04-05T00:00:00.000Z",formattedDate:"April 5, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.33,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-04-05-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-05-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-31-crypto"}},s={authorsImageUrls:[void 0]},c=[{value:"General",id:"general",level:3},{value:"Plutus library",id:"plutus-library",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We worked on adjusting our infrastructure to the new ",(0,a.kt)("inlineCode",{parentName:"li"},"8.0")," release branch and performed a (very) early run."),(0,a.kt)("li",{parentName:"ul"},"New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.")),(0,a.kt)("h1",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"We have adapted our benchmarking cluster to the requirements of the ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0")," release branch. Testing runs of a very early feature branch for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0"),"\nhelped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0")," soon."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very\ndetailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing\nthe highest possible throughput of data for forwarding to ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer"),". "),(0,a.kt)("p",null,"Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions\nfor tunneling trace forwarding from a node to ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," via an easy to manage system service, which will match the production setup of most users."),(0,a.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,a.kt)("h3",{id:"general"},"General"),(0,a.kt)("p",null,"Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance\nanalysis can be fed back and serve as an additional point of comparison."),(0,a.kt)("p",null,"Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations."),(0,a.kt)("h3",{id:"plutus-library"},"Plutus library"),(0,a.kt)("p",null,"We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles.\nThis will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile.\nIt is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is\nbeing improved to minimize any friction for the backend user."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/47cae651.5e63cd4e.js b/assets/js/47cae651.5e63cd4e.js new file mode 100644 index 00000000000..3b35033c3a3 --- /dev/null +++ b/assets/js/47cae651.5e63cd4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68352],{81765:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/2","page":2,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/","nextPage":"/cardano-updates/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/47da279e.0dc7a732.js b/assets/js/47da279e.0dc7a732.js new file mode 100644 index 00000000000..172dc8cc27d --- /dev/null +++ b/assets/js/47da279e.0dc7a732.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6236],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(r),m=n,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||o;return r?a.createElement(h,i(i({ref:t},d),{},{components:r})):a.createElement(h,i({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"SRE Team Update",slug:"2023-06-23-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-23-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-sre.md",source:"@site/blog/2023-06-23-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.98,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-06-23-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-23-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-16-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Ci-ops",id:"ci-ops",level:3},{value:"Ci-world",id:"ci-world",level:3},{value:"Devx-ci",id:"devx-ci",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3}],d={toc:u},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality"),(0,n.kt)("li",{parentName:"ul"},"Cardano Sanchonet environment was stood up to test Conway era functionality"),(0,n.kt)("li",{parentName:"ul"},"Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case"),(0,n.kt)("li",{parentName:"ul"},"Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5318"},"cardano-node-pull-5318"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates required for node 8.1.1 nixos service: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/pull/414"},"cardano-ops-pull-414")),(0,n.kt)("li",{parentName:"ul"},"Work in progress continues on mixed legacy and p2p topology clusters in cardano-ops: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/tree/ops-local"},"cardano-ops-ops-local"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/tree/mn-mixed-p2p"},"cardano-ops-mn-mixed-p2p"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add Sanchonet environment: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/96"},"cardano-world-pull-96"))),(0,n.kt)("h3",{id:"ci-ops"},"Ci-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add devx-ci cluster integration for legacy darwin ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-ops/compare/b158b17...ed875b9"},"ci-ops-compare"))),(0,n.kt)("h3",{id:"ci-world"},"Ci-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/compare/840cdb6...b08c250"},"ci-world-compare"))),(0,n.kt)("h3",{id:"devx-ci"},"Devx-ci"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/devx-ci"},"devx-ci-repo"))),(0,n.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add Sanchonet environment: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/545"},"iohk-nix-pull-545"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/48292e37.4e1a58d5.js b/assets/js/48292e37.4e1a58d5.js new file mode 100644 index 00000000000..31f71b517cf --- /dev/null +++ b/assets/js/48292e37.4e1a58d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18367],{8448:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/ledger/page/5","page":5,"postsPerPage":5,"totalPages":6,"totalCount":30,"previousPage":"/cardano-updates/tags/ledger/page/4","nextPage":"/cardano-updates/tags/ledger/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/485c7377.08d81db4.js b/assets/js/485c7377.08d81db4.js new file mode 100644 index 00000000000..9ef89500153 --- /dev/null +++ b/assets/js/485c7377.08d81db4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7322],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),l=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=l(r),m=n,d=c["".concat(p,".").concat(m)]||c[m]||h[m]||o;return r?a.createElement(d,i(i({ref:t},u),{},{components:r})):a.createElement(d,i({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=r(87462),n=(r(67294),r(3905));const o={title:"Open-Source Team",slug:"2022-10-31-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-10-31-open-source",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-open-source.md",source:"@site/blog/2022-11-04-open-source.md",title:"Open-Source Team",description:"High Level Summary",date:"2022-11-04T00:00:00.000Z",formattedDate:"November 4, 2022",tags:[{label:"open-source",permalink:"/cardano-updates/tags/open-source"}],readingTime:1.465,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Open-Source Team",slug:"2022-10-31-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-04-mithril"},nextItem:{title:"Embedding Quality Workstream",permalink:"/cardano-updates/2022-11-03-embedding-quality"}},p={authorsImageUrls:[void 0]},l=[{value:"High Level Summary",id:"high-level-summary",level:2},{value:"Detailed description",id:"detailed-description",level:2}],u={toc:l},c="wrapper";function h(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High Level Summary"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We've been working toward publishing ",(0,n.kt)("em",{parentName:"li"},"Cardano Backlog"),", currently its in\nreview by the IOG communication team."),(0,n.kt)("li",{parentName:"ul"},"We identified a number of libraries which can be published."),(0,n.kt)("li",{parentName:"ul"},"We setup and enhanced ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-updates"},"cardano-updates"),".")),(0,n.kt)("h2",{id:"detailed-description"},"Detailed description"),(0,n.kt)("p",null,"I am glad to announce that I was given the role of open-source advocate for\ncardano project. In last few weeks we were making steps towards publishing our\nbacklog. It's currently under review by the communication team, although most\nof the issues are already visible across various repositories."),(0,n.kt)("p",null,"The open-source initiatives have their own\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/60"},"project"),". It is set up\nto help us track our major open-source activities. Right now there are two\nwork streams:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"the work on ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},(0,n.kt)("em",{parentName:"a"},"Cardano Engineering Handbook")),";"),(0,n.kt)("li",{parentName:"ul"},"libraries to be release on ",(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/"},"Hackage")," or ",(0,n.kt)("a",{parentName:"li",href:"https://crates.io"},"crates.io"),".")),(0,n.kt)("p",null,"We identifies a number of libraries across all the teams which contribute to\n",(0,n.kt)("em",{parentName:"p"},"Cardano")," which we would like publish to publish, see the following\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/60/views/3"},"link"),". Arnauld Bailly recently published\n",(0,n.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/quickcheck-dynamic"},(0,n.kt)("inlineCode",{parentName:"a"},"quickcheck-dynamic")),"\nlibrary on Hackage. The networking team is slowly progressing towards\npublishing ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim"},"io-sim")," and related packages, checkout the progress\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/19/views/24"},"here"),"."),(0,n.kt)("p",null,"Thanks to Arnaud Bailly our ",(0,n.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-updates"},"Cardano Updates")," website has\na new look & feel! It's using ",(0,n.kt)("a",{parentName:"p",href:"https://docusaurus.io"},"docusaurus.io"),"."),(0,n.kt)("p",null,"Christian Taylor carried recently a detailed analysis of our open-source\nrepositories. He collected many interesting metrics, which allows us to see\nwhere we need to improve as an open-source project to make the Cardano project\nand many smaller related libraries which we maintain be more open and available\nfor open-source contributors."),(0,n.kt)("p",null,"The graph below shows which documents the 55 most important Cardano\nrepositories are missing the most:\n",(0,n.kt)("img",{alt:"Documentation Adoption",src:r(59380).Z,width:"1493",height:"716"}),"\nYou can expect we will improve in these metrics in the coming weeks."))}h.isMDXComponent=!0},59380:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/doc-adoption-cd944582f02809777c58be53e13453c5.png"}}]); \ No newline at end of file diff --git a/assets/js/4883d618.0d6007b2.js b/assets/js/4883d618.0d6007b2.js new file mode 100644 index 00000000000..27efc08d0a4 --- /dev/null +++ b/assets/js/4883d618.0d6007b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[5337],{3757:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/db-sync/page/3","page":3,"postsPerPage":5,"totalPages":3,"totalCount":14,"previousPage":"/cardano-updates/tags/db-sync/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/4906b8e6.48c4df9c.js b/assets/js/4906b8e6.48c4df9c.js new file mode 100644 index 00000000000..941ac12384d --- /dev/null +++ b/assets/js/4906b8e6.48c4df9c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[34070],{77544:a=>{a.exports=JSON.parse('{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api","allTagsPath":"/cardano-updates/tags","count":27}')}}]); \ No newline at end of file diff --git a/assets/js/492dc159.444114ca.js b/assets/js/492dc159.444114ca.js new file mode 100644 index 00000000000..8ebc61fa18c --- /dev/null +++ b/assets/js/492dc159.444114ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75748],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=u(r),m=a,h=d["".concat(p,".").concat(m)]||d[m]||c[m]||o;return r?n.createElement(h,i(i({ref:t},s),{},{components:r})):n.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"Developer Experience Update",slug:"2023-07-06-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-06-developer-experience",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-06-developer-experience.md",source:"@site/blog/2023-07-06-developer-experience.md",title:"Developer Experience Update",description:"High level summary",date:"2023-07-06T00:00:00.000Z",formattedDate:"July 6, 2023",tags:[{label:"devx",permalink:"/cardano-updates/tags/devx"}],readingTime:1.145,hasTruncateMarker:!1,authors:[{name:"Moritz Angermann",title:"Head of Developer Experience",url:"https://github.com/angerman",imageURL:"https://github.com/angerman.png",key:"angerman"}],frontMatter:{title:"Developer Experience Update",slug:"2023-07-06-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-07-sre"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-07-04-db-sync"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"build support & maintainance",id:"build-support--maintainance",level:3},{value:"compiler upgrades",id:"compiler-upgrades",level:3},{value:"Hydra Tools",id:"hydra-tools",level:3},{value:"haskell.nix",id:"haskellnix",level:3},{value:"devx",id:"devx",level:3},{value:"upstream tooling",id:"upstream-tooling",level:3}],s={toc:u},d="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("h3",{id:"build-support--maintainance"},"build support & maintainance"),(0,a.kt)("p",null,"The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions."),(0,a.kt)("h3",{id:"compiler-upgrades"},"compiler upgrades"),(0,a.kt)("p",null,"Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests."),(0,a.kt)("h3",{id:"hydra-tools"},"Hydra Tools"),(0,a.kt)("p",null,"Our repository, ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-tools"},"input-output-hk/actions"),", has seen quite some improvements to facility the hydra <-> github integration."),(0,a.kt)("h3",{id:"haskellnix"},"haskell.nix"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/haskell.nix"},"Haskell.nix")," has been maintained and updated with the addition of preliminary GHC 9.8 support."),(0,a.kt)("h3",{id:"devx"},"devx"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/devx"},"devx")," repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/actions"},"actions/devx")," GitHub Actions, we have a consistent set of tooling for"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"nix develop shells"),(0,a.kt)("li",{parentName:"ul"},"GitHub CodeSpaces integration"),(0,a.kt)("li",{parentName:"ul"},"VSCode DevContainer support"),(0,a.kt)("li",{parentName:"ul"},"GitHub Actions integration")),(0,a.kt)("h3",{id:"upstream-tooling"},"upstream tooling"),(0,a.kt)("p",null,"Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/496cb9ef.aaee1128.js b/assets/js/496cb9ef.aaee1128.js new file mode 100644 index 00000000000..f50a56f7394 --- /dev/null +++ b/assets/js/496cb9ef.aaee1128.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60852],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=l(n),m=a,f=p["".concat(c,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(f,s(s({ref:t},u),{},{components:n})):r.createElement(f,s({ref:t},u))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-04-19-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-04-19-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-19-consensus.md",source:"@site/blog/2023-04-19-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-04-19T00:00:00.000Z",formattedDate:"April 19, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.77,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-04-19-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-20-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-19-performance-and-tracing"}},c={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This week the consensus team continued working on the improved DB lock mechanism\nfor UTxO-HD, and modifications to the mempool benchmarks that this prototype\nrequires."),(0,a.kt)("p",null,"On the Genesis front we validated that the fragment size calculation in\n",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch")," is a major performance sink for ChainSync Jumping. By removing it\nwe will get performance that is acceptably close to that of the baseline. We\nalso started investigating a performance fix that does not alter the existing\nbaseline behavior too much. In addition we reviewed our Genesis attack vector\ncalculations."),(0,a.kt)("p",null,"On the support front we released Consensus 0.4, and we are working on improving\nour release process, to support the Cardano-wide efforts in this area. We also\nperformed an analysis on the number of file descriptors that consensus use. This\ninformation can be used by the node operators to check if the number of file\ndescriptors they want to support are enough."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4972.a20ea76a.js b/assets/js/4972.a20ea76a.js new file mode 100644 index 00000000000..ee4342630e2 --- /dev/null +++ b/assets/js/4972.a20ea76a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4972],{4972:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var n=a(67294),l=a(95999),o=a(1944),r=a(93285);function c(){return n.createElement(n.Fragment,null,n.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),n.createElement(r.Z,null,n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]); \ No newline at end of file diff --git a/assets/js/49d642c9.3891d7a8.js b/assets/js/49d642c9.3891d7a8.js new file mode 100644 index 00000000000..696af30bbfc --- /dev/null +++ b/assets/js/49d642c9.3891d7a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80575],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),h=a,m=p["".concat(l,".").concat(h)]||p[h]||d[h]||o;return n?r.createElement(m,s(s({ref:t},u),{},{components:n})):r.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-11-15-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-15-consensus.md",source:"@site/blog/2023-11-15-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-11-15T00:00:00.000Z",formattedDate:"November 15, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.34,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-11-16-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-15-mithril"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"Over the last two weeks, we managed to run a UTxO-HD capable node in ",(0,a.kt)("em",{parentName:"p"},"legacy mode"),", which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does).\nThis ",(0,a.kt)("em",{parentName:"p"},"legacy mode")," could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not.\nHowever, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter.\nOn the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node.\nTherefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend."),(0,a.kt)("p",null,"On the Genesis front, we reviewed the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/434"},"peer simulator")," for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team."),(0,a.kt)("p",null,"We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos."),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/jasagredo"},"Javier Sagredo")," continues his cycle as release engineer, and he is working on version 8.7 of Cardano node."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/49d88be4.57145c14.js b/assets/js/49d88be4.57145c14.js new file mode 100644 index 00000000000..290547c271f --- /dev/null +++ b/assets/js/49d88be4.57145c14.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73343],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=p(r),h=n,m=d["".concat(u,".").concat(h)]||d[h]||c[h]||o;return r?a.createElement(m,i(i({ref:t},s),{},{components:r})):a.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Hydra Team Update",slug:"2023-10-13-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-10-13-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-hydra.md",source:"@site/blog/2023-10-13-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-13T00:00:00.000Z",formattedDate:"October 13, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.745,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-13-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-15-network"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-10-13-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity."),(0,n.kt)("p",null,"They also completed the exploration of potentially moving the Plutus validator scripts to Aiken."),(0,n.kt)("p",null,"Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Network Resilience Persistence (#1101)","[https://github.com/input-output-hk/hydra/pull/1101]","."),(0,n.kt)("li",{parentName:"ul"},"Upgrade brick on TUI (#1103)","[https://github.com/input-output-hk/hydra/pull/1103]","."),(0,n.kt)("li",{parentName:"ul"},"Aiken commit validator translation (#1072)","[https://github.com/input-output-hk/hydra/pull/1072]","."),(0,n.kt)("li",{parentName:"ul"},"Fixed some bugs in our TUI client.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Prepare presentation and workshop for Cardano Summit."),(0,n.kt)("li",{parentName:"ul"},"Work on hydra-poll dApp for Cardano summit."),(0,n.kt)("li",{parentName:"ul"},"Start the work on packaging hydra-node and related services.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/49db7061.7d2045e9.js b/assets/js/49db7061.7d2045e9.js new file mode 100644 index 00000000000..bce5ddd91ad --- /dev/null +++ b/assets/js/49db7061.7d2045e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60183],{853:a=>{a.exports=JSON.parse('{"label":"ledger","permalink":"/cardano-updates/tags/ledger","allTagsPath":"/cardano-updates/tags","count":30}')}}]); \ No newline at end of file diff --git a/assets/js/4aaac366.4801cea2.js b/assets/js/4aaac366.4801cea2.js new file mode 100644 index 00000000000..3a4419fefac --- /dev/null +++ b/assets/js/4aaac366.4801cea2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97535],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(r),d=a,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||o;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2022-11-30-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-30-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-performance-and-tracing.md",source:"@site/blog/2022-11-30-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2022-11-30T00:00:00.000Z",formattedDate:"November 30, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.95,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2022-11-30-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-30-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-28-network"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},u="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release."),(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them.\nThe idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time."),(0,a.kt)("p",null,"To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation."),(0,a.kt)("p",null,"In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model."),(0,a.kt)("p",null,"The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged.\nWe are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration."),(0,a.kt)("p",null,"We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability."),(0,a.kt)("p",null,"We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP."),(0,a.kt)("p",null,"As usual, a number of smaller workbench, data analysis & reporting improvements have been made."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4ab012ff.891d7eda.js b/assets/js/4ab012ff.891d7eda.js new file mode 100644 index 00000000000..01fbe0dbe8e --- /dev/null +++ b/assets/js/4ab012ff.891d7eda.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7555],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),d=r,h=p["".concat(l,".").concat(d)]||p[d]||m[d]||o;return n?a.createElement(h,s(s({ref:t},u),{},{components:n})):a.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:r,s[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-06-28-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-06-28-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-28-consensus.md",source:"@site/blog/2023-06-28-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-06-28T00:00:00.000Z",formattedDate:"June 28, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.85,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-06-28-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-29-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-28-performance-and-tracing"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:3},{value:"UTxO-HD",id:"utxo-hd",level:3}],u={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team. "),(0,r.kt)("p",null,"The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components."),(0,r.kt)("p",null,"Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node. "),(0,r.kt)("h3",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/101#issuecomment-1607767722"},"decided on an approach")," of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team."))),(0,r.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We merged the last of the PRs that were part of UTxO-HD improvements for version ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/149"},"0.1"),": expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size."),(0,r.kt)("li",{parentName:"ul"},"We ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/87"},"added"),' a new "legacy" cardano block in a new ',(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus-cardano-legacy-block")," package that should ease the transition for some downstream packages to UTxO-HD, like ",(0,r.kt)("inlineCode",{parentName:"li"},"db-sync"),". This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block."),(0,r.kt)("li",{parentName:"ul"},"We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4b62dc40.f3efb060.js b/assets/js/4b62dc40.f3efb060.js new file mode 100644 index 00000000000..2980e12fa74 --- /dev/null +++ b/assets/js/4b62dc40.f3efb060.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[10335],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-02-21-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-02-21-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-21-db-sync.md",source:"@site/blog/2023-02-21-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-02-21T00:00:00.000Z",formattedDate:"February 21, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.75,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-02-21-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-22-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-17-crypto"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The db-sync team created a new tag ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.2")," which is ready to release.\nWe also investigated and had the first working UTxO-HD integration which is one\nof the potential future risks for db-sync."),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Integrated the UTxO-HD feauture branch in ",(0,a.kt)("inlineCode",{parentName:"li"},"kderme/utxo-hd-1"),". This doesn't\nuse the full on disk storage but keeps things in memory and the plan is to keep\nit this way for the first iteration. The integration still has some performance\nissues which we investigate"),(0,a.kt)("li",{parentName:"ul"},"Created tag ",(0,a.kt)("inlineCode",{parentName:"li"},"13.1.0.2")," which upgrades the dependencies of db-sync"),(0,a.kt)("li",{parentName:"ul"},"Fixed an issue related to errors appearing in SMASH\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1353"},"#1353")),(0,a.kt)("li",{parentName:"ul"},"Continued with ghc-9.2 integration\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1339"},"#1339")),(0,a.kt)("li",{parentName:"ul"},"Worked on an new fixing procedure for\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1348"},"#1348"),".\nWe try to make these procedures work also on older schema version, without the\nneed to migrate to newer schema, which can be very useful for fixing existing\nsnapshots.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4b90674f.c49340db.js b/assets/js/4b90674f.c49340db.js new file mode 100644 index 00000000000..7956bf38457 --- /dev/null +++ b/assets/js/4b90674f.c49340db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92308],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),m=s(n),u=a,f=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return n?r.createElement(f,l(l({ref:t},c),{},{components:n})):r.createElement(f,l({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-09-01-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-01-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-goedel.md",source:"@site/blog/2023-09-01-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.43,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-09-01-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-06-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-01-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},m="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"finalising a presenting performance analysis internship work to the\nformal methods team")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"developed a new Isabelle mini-protocol framework and examples")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"planning an extended version of the ICE DeltaQ paper")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"working on algebraic rules for properisation of any-to-finish"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4b996e44.f9c2f0cd.js b/assets/js/4b996e44.f9c2f0cd.js new file mode 100644 index 00000000000..f97d4bfee09 --- /dev/null +++ b/assets/js/4b996e44.f9c2f0cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7897],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),s=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(n),m=r,h=c["".concat(l,".").concat(m)]||c[m]||d[m]||a;return n?o.createElement(h,i(i({ref:t},u),{},{components:n})):o.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:r,i[1]=p;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>p,toc:()=>s});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-06-23-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-06-23-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-network.md",source:"@site/blog/2023-06-23-network.md",title:"Network Team Update",description:"Network Update",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-06-23-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-23-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-23-sre"}},l={authorsImageUrls:[void 0]},s=[{value:"Network Update",id:"network-update",level:2},{value:"Key contributions",id:"key-contributions",level:3},{value:"Other smaller changes",id:"other-smaller-changes",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"network-update"},"Network Update"),(0,r.kt)("h3",{id:"key-contributions"},"Key contributions"),(0,r.kt)("p",null,"We held a series of session to review the implementation of big ledger peers\n(eclipse evasion). See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"#4462"),"."),(0,r.kt)("p",null,"We get a request from a 3rd party to clarify an inconsistency between CDDL spec\nand protocol implementation. We worked out a nice solution which takes\nadvantage of the ",(0,r.kt)("inlineCode",{parentName:"p"},"any")," notion available in ",(0,r.kt)("inlineCode",{parentName:"p"},"CDDL"),". On the Haskell side we\nprovide ",(0,r.kt)("inlineCode",{parentName:"p"},"Any")," type which gen generate almost any CBOR term (some are excluded\nonly because they are not decoded back to the same form, and we relay on that\nproperty). See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4580"},"#4580"),"."),(0,r.kt)("p",null,"We fixed a bunch of problems of the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," command. It also now has\na limited support of ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," mini-protocol (the ",(0,r.kt)("inlineCode",{parentName:"p"},"-c")," option is\nignored, as it cannot be supported by ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol). Note that\nthe format of messages has changed, timestamps are printed in ISO8601 format.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4601"},"#4601"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5326"},"#5326"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"#5313"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30"},"#30")),(0,r.kt)("p",null,"In order to provide a new flag in the topology file which enables ledger peers\nwhen the chain is close to the tip, we continued to work on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"#4530"),". This is\ncurrently in review, the consensus team will need to provide us with the new\napi. This feature is useful for two reasons: makes it easier to maintain\na topology file, it will also limit the traffic on public roots generated by\nfor example full node wallets and distribute it to ledger peers."),(0,r.kt)("p",null,"We also continued to work on a blog post which describes the journey of design\n& implementation of the dynamic P2P network layer. Too be announced soon :). "),(0,r.kt)("h3",{id:"other-smaller-changes"},"Other smaller changes"),(0,r.kt)("p",null,"We limit the concurrency of resolving dns names. Up to 8 root peers or ledger\npeers DNS names are resolved concurrently, and at most 2 local root peer DNS\nnames. See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4596"},"#4596"),"."),(0,r.kt)("p",null,"We fixed handshake query timeout in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4603"},"#4603"),"."),(0,r.kt)("p",null,"We renamed one of the block-fetch decision constructors as requested by the\nconsensus team, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4608"},"#4608"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4be9a3a6.9e933a24.js b/assets/js/4be9a3a6.9e933a24.js new file mode 100644 index 00000000000..01121ddcced --- /dev/null +++ b/assets/js/4be9a3a6.9e933a24.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25480],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=p(r),h=n,m=d["".concat(u,".").concat(h)]||d[h]||c[h]||l;return r?a.createElement(m,o(o({ref:t},s),{},{components:r})):a.createElement(m,o({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=h;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-03-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-03-03-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-ledger.md",source:"@site/blog/2023-03-03-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.57,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-03-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-03-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-02-network"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway rules",id:"conway-rules",level:3},{value:"Constraint based generators",id:"constraint-based-generators",level:3},{value:"Preparing a release, now with proper versioning",id:"preparing-a-release-now-with-proper-versioning",level:3},{value:"Technical debt",id:"technical-debt",level:3}],s={toc:p},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We have focused the last two weeks on CIP-1694, integration of the last several months of ledger\nwork into consensus and node, and testing infrastrutcture that we will use in the conway ledger era."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-rules"},"Conway rules"),(0,n.kt)("p",null,"We made a major update to the conway era so that the implementation is now in sync with the spec\nwith respect to the ratification and enactment logic."),(0,n.kt)("p",null,"See the notes in ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3291"},"pull-3291")," for more details."),(0,n.kt)("h3",{id:"constraint-based-generators"},"Constraint based generators"),(0,n.kt)("p",null,"This week we hit a major milestone in our efforts to build out better property based testing\nsupport for the main ledger properties.\nThe new constraint based generators can now generate full ledger states with what is probably\nvery close to the real constraints (if anything, it is under constrained).\nNext we will work on generating a transaction in the context of a ledger state, which would allow\nus to actually start using these generators for real tests."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"),"."),(0,n.kt)("h3",{id:"preparing-a-release-now-with-proper-versioning"},"Preparing a release, now with proper versioning"),(0,n.kt)("p",null,"After quite some time, we are ready to release a version of ledger that will work with a new\nversion of consensus, using CHaPs."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3308"},"pull-3308"),"."),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We cleaned up the redeemer serialization code (to prevent future mistakes). See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3269"},"pull-3269"),"."),(0,n.kt)("li",{parentName:"ul"},"We added a note to the Alonzo spec, specifying that the transaction inputs are\nlexicographically ordered in the Plutus script context. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3306"},"pull-3306"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with the address deserialiazation\n(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway).\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3307"},"pull-3307"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with our nix build. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3311"},"pull-3311"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with our ",(0,n.kt)("inlineCode",{parentName:"li"},"NoThunks")," tests. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3310"},"pull-3310"),"."),(0,n.kt)("li",{parentName:"ul"},"We improved our nightly tests. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3316"},"pull-3316"),".")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4bed0e48.0ec05e19.js b/assets/js/4bed0e48.0ec05e19.js new file mode 100644 index 00000000000..8653867457b --- /dev/null +++ b/assets/js/4bed0e48.0ec05e19.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[34631],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=s(r),d=i,g=c["".concat(u,".").concat(d)]||c[d]||m[d]||n;return r?a.createElement(g,o(o({ref:t},p),{},{components:r})):a.createElement(g,o({ref:t},p))}));function g(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Crypto Team Update",slug:"2023-02-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-17-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-crypto.md",source:"@site/blog/2023-02-17-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.43,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-02-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-02-21-db-sync"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-17-goedel"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"MuSig2",id:"musig2",level:3}],p={toc:s},c="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,i.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration."),(0,i.kt)("li",{parentName:"ul"},"cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus."),(0,i.kt)("li",{parentName:"ul"},"KES agent: using snockets and making things testable in IOSim"),(0,i.kt)("li",{parentName:"ul"},"MuSig2: started implementation in rust.")),(0,i.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,i.kt)("h3",{id:"mithril"},"Mithril"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Transmute helpers merged ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/722"},"PR#722")),(0,i.kt)("li",{parentName:"ul"},"We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope. "),(0,i.kt)("li",{parentName:"ul"},"We are working in a modification of KES to require caller to allocate the secret key buffer."),(0,i.kt)("li",{parentName:"ul"},"Proposed a solution for signer registration of ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/wiki/Mithril-registration-procedure#cost"},"Mithril"),".")),(0,i.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus/tree/kwxm/BLS12_381/prototype/plutus-benchmark/bls-benchmarks"},"proof"),".",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Results are promising, with using only 23% of the execution budget to verify a realistic proof. "),(0,i.kt)("li",{parentName:"ul"},"Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril."))),(0,i.kt)("li",{parentName:"ul"},"KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this."),(0,i.kt)("li",{parentName:"ul"},"Conversion finally merged ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/344"},"PR#344"),".")),(0,i.kt)("h3",{id:"kes-agent"},"KES agent"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation"),(0,i.kt)("li",{parentName:"ul"},"Figuring out how to go from fake file descriptor to write the raw bytes")),(0,i.kt)("h3",{id:"musig2"},"MuSig2"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4c4f8ee1.35fd4774.js b/assets/js/4c4f8ee1.35fd4774.js new file mode 100644 index 00000000000..9076cfeb398 --- /dev/null +++ b/assets/js/4c4f8ee1.35fd4774.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80113],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(a),s=r,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},d),{},{components:a})):n.createElement(h,i({ref:t},d))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-10-04-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-04-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-04-node-cli-api.md",source:"@site/blog/2022-10-04-node-cli-api.md",title:"Node API & CLI Team Update",description:"Node-Api-Cli Update",date:"2022-10-04T00:00:00.000Z",formattedDate:"October 4, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.98,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-10-04-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-10-04-db-sync"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-30-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"Node-Api-Cli Update",id:"node-api-cli-update",level:2},{value:"2022-10-04 - 2022-10-18",id:"2022-10-04---2022-10-18",level:2},{value:"Executive Summary",id:"executive-summary",level:3},{value:"Completed",id:"completed",level:3},{value:"cardano-cli",id:"cardano-cli",level:4},{value:"cardano-api",id:"cardano-api",level:4},{value:"cardano-node",id:"cardano-node",level:4},{value:"In Progress",id:"in-progress",level:3},{value:"cardano-cli",id:"cardano-cli-1",level:4},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"node-api-cli-update"},"Node-Api-Cli Update"),(0,r.kt)("h2",{id:"2022-10-04---2022-10-18"},"2022-10-04 - 2022-10-18"),(0,r.kt)("h3",{id:"executive-summary"},"Executive Summary"),(0,r.kt)("p",null,"The majority of the team's time was spent between getting ",(0,r.kt)("inlineCode",{parentName:"p"},"1.34.4")," ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli"),"."),(0,r.kt)("h3",{id:"completed"},"Completed"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4504"},"GHC 9.2.4 preparations"))),(0,r.kt)("h4",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[Serenity]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4491"},"Separate IO from txBuild and txBuildRaw functions"))),(0,r.kt)("h4",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4501"},"TxWitness text envelope format does not roundtrip in Shelley era"))),(0,r.kt)("h4",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4526"},"Fix MacOS GHA CI"))),(0,r.kt)("h3",{id:"in-progress"},"In Progress"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4508"},"Release 1.34.4"))),(0,r.kt)("h4",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4538"},"Fix query era mismatch bug in transaction build command")),(0,r.kt)("li",{parentName:"ul"},"[Serenity]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4516"},"Condense Read and Validation modules in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4276"},"Add tx-mempool command to CLI"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4482"},"Return Lovelace for calculateMinimumUTxO")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4c7d0c08.57bb3429.js b/assets/js/4c7d0c08.57bb3429.js new file mode 100644 index 00000000000..c9204f72b60 --- /dev/null +++ b/assets/js/4c7d0c08.57bb3429.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40682],{52595:a=>{a.exports=JSON.parse('{"label":"security","permalink":"/cardano-updates/tags/security","allTagsPath":"/cardano-updates/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/4c91b9ee.800884f9.js b/assets/js/4c91b9ee.800884f9.js new file mode 100644 index 00000000000..9cc43562577 --- /dev/null +++ b/assets/js/4c91b9ee.800884f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76705],{5324:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/6","page":6,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/5","nextPage":"/cardano-updates/page/7","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/4ce06e64.8c5577b4.js b/assets/js/4ce06e64.8c5577b4.js new file mode 100644 index 00000000000..c388899e027 --- /dev/null +++ b/assets/js/4ce06e64.8c5577b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46318],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),c=p(a),u=n,m=c["".concat(s,".").concat(u)]||c[u]||d[u]||o;return a?r.createElement(m,i(i({ref:t},h),{},{components:a})):r.createElement(m,i({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-01-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-01-27-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-27-hydra.md",source:"@site/blog/2023-01-27-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-01-27T00:00:00.000Z",formattedDate:"January 27, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.945,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-01-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-02-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-26-mithril"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},c="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team had a monthly review meeting with their stakeholders,\ncontributors and interested people from the community. The monthly repot for\n",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2023-01"},"January 2023")," is a digest\nof the things presented and also includes a summary of the meeting. The Hydra\nspecification was getting discussed and the team is incorporating suggested\nchanges of reviewers. Last but not least, they compute and publish script\ninformation on every PR and also on the\n",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/benchmarks/transaction-cost/#script-summary"},"website"),"\nnow."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Had the monthly review meeting with a broader audience"),(0,n.kt)("li",{parentName:"ul"},"Published the monthly report for ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-01"},"January 2023")),(0,n.kt)("li",{parentName:"ul"},"Reviewed the spec and discussed individual aborts with researchers"),(0,n.kt)("li",{parentName:"ul"},"Compute and publish script information along benchmarks on every PR and ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/benchmarks/transaction-cost/#script-summary"},"website"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add rollback section to Hydra spec, update pictures and publish it as part of repository"),(0,n.kt)("li",{parentName:"ul"},"Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository."),(0,n.kt)("li",{parentName:"ul"},"Groom & plan actions required for a maintainable Head explorer + break down ","\u201c","align gaps","\u201d"," feature.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4cecd320.50a66533.js b/assets/js/4cecd320.50a66533.js new file mode 100644 index 00000000000..1977e39fe74 --- /dev/null +++ b/assets/js/4cecd320.50a66533.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72311],{77048:a=>{a.exports=JSON.parse('{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api","allTagsPath":"/cardano-updates/tags","count":27}')}}]); \ No newline at end of file diff --git a/assets/js/4d3eb7e7.deb360a8.js b/assets/js/4d3eb7e7.deb360a8.js new file mode 100644 index 00000000000..039f6d50676 --- /dev/null +++ b/assets/js/4d3eb7e7.deb360a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64827],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=c(n),d=r,f=u["".concat(p,".").concat(d)]||u[d]||m[d]||o;return n?a.createElement(f,i(i({ref:t},s),{},{components:n})):a.createElement(f,i({ref:t},s))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-07-07-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-07-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-goedel.md",source:"@site/blog/2023-07-07-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.42,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-07-07-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-07-07-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-07-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},u="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint the teams have been working on finalising their ICE papers\nfor publication in EPTCS, formalising concensus, and investigating chain\nsync."),(0,r.kt)("h2",{id:"details"},"Details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing final versions of ICE papers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Reviewing the chain sync design and documentation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Refactoring the thorn calculus")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"First draft of Praos specification")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Developing bounding factors on timeouts"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4d7c8e78.a7f8c06f.js b/assets/js/4d7c8e78.a7f8c06f.js new file mode 100644 index 00000000000..433245b6426 --- /dev/null +++ b/assets/js/4d7c8e78.a7f8c06f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45389],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-03-24-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-24-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-24-hydra.md",source:"@site/blog/2023-03-24-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-24T00:00:00.000Z",formattedDate:"March 24, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.95,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-24-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-03-27-system-test"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-03-23-db-sync"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},u="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra had a team workshop and conducted the monthly review\nmeeting for March. They demonstrated a Hydra Head on mainnet, which was running\nthe hydraw demo application. While this marks an important milestone, they also\nemphasized that more features are still to be added as needed for applications\nto run on Hydra. Besides this, the roadmap is getting cleaned up to encourage\ndiscussions and provide more space for user requests."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting ",(0,n.kt)("a",{parentName:"li",href:"https://docs.google.com/presentation/d/1yZ4AqUQ8OBMG9ARMYvj3IOjaIAqglf7kZei4vsLMrbs/edit#slide=id.g1f87a7454a5_0_1392"},"slides"),"/",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/1krzM8VN-gpKTtpVdC2JQx-lGti-4gKQS/view?ts=641b3c1c"},"recording"),", full report of March next week",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Opened a head on mainnet with hydraw demonstration"),(0,n.kt)("li",{parentName:"ul"},"Hydra pay updates"))),(0,n.kt)("li",{parentName:"ul"},"Team workshop in Austria",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Hydra presentation at the Cardano Foundation in Zurich"),(0,n.kt)("li",{parentName:"ul"},"In-person grooming session, marked many items as candidates to be rather :idea: dicussions"),(0,n.kt)("li",{parentName:"ul"},"Improved head protocol ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/786"},"#786")," and investigated a potential bug in rollback handling ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Team building and retrospective")))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Follow-up on backlog and roadmap clean-up"),(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature (documentation updates)"),(0,n.kt)("li",{parentName:"ul"},"Make API more configurable ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/380"},"#380")),(0,n.kt)("li",{parentName:"ul"},"Integrate Hydra specification into repository ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4da01d42.55b2a465.js b/assets/js/4da01d42.55b2a465.js new file mode 100644 index 00000000000..155da2f06ca --- /dev/null +++ b/assets/js/4da01d42.55b2a465.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17903],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=a.createContext({}),u=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),m=u(n),d=o,h=m["".concat(p,".").concat(d)]||m[d]||c[d]||r;return n?a.createElement(h,i(i({ref:t},s),{},{components:n})):a.createElement(h,i({ref:t},s))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:o,i[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var a=n(87462),o=(n(67294),n(3905));const r={title:"Network Q1 2023 Update",slug:"2023-04-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2023-04-04-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-04-network.md",source:"@site/quarterly/2023-04-04-network.md",title:"Network Q1 2023 Update",description:"2023-01 - 2023-03",date:"2023-04-04T00:00:00.000Z",formattedDate:"April 4, 2023",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:2.62,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Q1 2023 Update",slug:"2023-04-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-04-25-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2023-04-03-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"2023-01 - 2023-03",id:"2023-01---2023-03",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Gradual dynamic P2P release on mainnet",id:"gradual-dynamic-p2p-release-on-mainnet",level:4},{value:"Peer Sharing",id:"peer-sharing",level:4},{value:"Eclipse Evasion",id:"eclipse-evasion",level:4},{value:"Cardano Network Service Assurance",id:"cardano-network-service-assurance",level:4},{value:"Cardano-Node",id:"cardano-node",level:4},{value:"Testing improvements",id:"testing-improvements",level:4},{value:"Technical Debt",id:"technical-debt",level:4},{value:"Documentation",id:"documentation",level:4},{value:"IO-Sim",id:"io-sim",level:4},{value:"NoThunks",id:"nothunks",level:4},{value:"Next steps",id:"next-steps",level:3}],s={toc:u},m="wrapper";function c(e){let{components:t,...n}=e;return(0,o.kt)(m,(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"2023-01---2023-03"},"2023-01 - 2023-03"),(0,o.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,o.kt)("h4",{id:"gradual-dynamic-p2p-release-on-mainnet"},"Gradual dynamic P2P release on mainnet"),(0,o.kt)("p",null,"We released two version of ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," with dynamic P2P capabilities:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/1.35.6"},(0,o.kt)("inlineCode",{parentName:"a"},"1.35.6")),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"we found and fixed a bug in exception handling in ",(0,o.kt)("inlineCode",{parentName:"li"},"peer-state-actions"),(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4357"},"pull-4357")),(0,o.kt)("li",{parentName:"ul"},"we found and fixed a busy loop when demoting a peer from hot to warm ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"pull-4385")," "))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/1.35.7"},(0,o.kt)("inlineCode",{parentName:"a"},"1.35.7")),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"includes interoperability in the legacy non-p2p network stack ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/outoboros-network/pull/4467"},"pull-4467")))),(0,o.kt)("li",{parentName:"ul"},"we fixed a busy loop of demotion & promotions: ",(0,o.kt)("inlineCode",{parentName:"li"},"warm -> hot -> warm"),"[pull-4485]"," /it will be included in ",(0,o.kt)("inlineCode",{parentName:"li"},"cardano-node-8.0.0")," release/.")),(0,o.kt)("p",null,"Currently there are more than 200 P2P relays on mainnet."),(0,o.kt)("h4",{id:"peer-sharing"},"Peer Sharing"),(0,o.kt)("p",null,"We implemented /peer sharing/ ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"pull-4019")," which will be available as an\nexperimental feature in one of the future ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," releases."),(0,o.kt)("p",null,"We implemented /light peer sharing/, e.g. adding inbound connections to the set\nof known peers of the outbound governor, which allows to bootstrap relays not\nregistered on chain. This complements peer sharing. The ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4277"},"pull-4277")," is in\nlate review stages."),(0,o.kt)("h4",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,o.kt)("p",null,"We finalised design of eclipse evasion and we started implementing it. We\nhave an initial implementation (not merged). We are in the process of extending\nour test suite to cover new implementation details: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"issue-3886"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/outoboros-network/pull/4462"},"pull-4462"),"."),(0,o.kt)("h4",{id:"cardano-network-service-assurance"},"Cardano Network Service Assurance"),(0,o.kt)("p",null,"Galois has been making progress on ",(0,o.kt)("em",{parentName:"p"},"Cardano Network Service Assurance")," project."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"In cardano-node, they have developed a ",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint")," abstraction that creates\na queue of (existing) log events, they now have two such ",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint"),"s (of log\nevents) implemented.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"They have developed a ",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint"),' client executable that can connect to a node\nwhich serves the "new tracing".')),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"They have been exploring approaches for the consolidation and analysis of\n",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint")," data to extract actionable network health status."))),(0,o.kt)("h4",{id:"cardano-node"},"Cardano-Node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We made it possible to configure accepted connections limit ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"pull-4902"),".")),(0,o.kt)("h4",{id:"testing-improvements"},"Testing improvements"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We fixed a bug in network simulation implementation of TCP simultaneous open ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4265"},"pull-4265"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We introduced header-body split in the diffusion simulation ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/outoboros-network/pull/4419"},"pull-4419")," (in review).")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We introduced initiator only nodes in the diffusion simulation ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4280"},"pull-4280"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We fixed a connection-manager test failure ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4370"},"issue-4370"),"."))),(0,o.kt)("h4",{id:"technical-debt"},"Technical Debt"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We refactored ",(0,o.kt)("inlineCode",{parentName:"p"},"Snocket")," interface decoupling it from the multiplexer\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4260"},"pull-4260"),". This simplified some aspects of the KES agent implementation.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We introduces a record for CBOR codecs which are used for various data\nstructures by mini-protocol codecs ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/outoboros-network/pull/4430"},"pull-4430"),"."))),(0,o.kt)("h4",{id:"documentation"},"Documentation"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We explained some limitations of CDDL in our technical report ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4351"},"pull-4351"),".")),(0,o.kt)("h4",{id:"io-sim"},"IO-Sim"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We fixed implementation of ",(0,o.kt)("inlineCode",{parentName:"li"},"MVar"),"'s ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/70"},"pull-70"),".")),(0,o.kt)("h4",{id:"nothunks"},"NoThunks"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We published a new version of ",(0,o.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/nothunks"},(0,o.kt)("inlineCode",{parentName:"a"},"nothunks"))," library to Hackage.")),(0,o.kt)("h3",{id:"next-steps"},"Next steps"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Finish implementation & testing of eclipse evasion ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"issue-3886"),"."),(0,o.kt)("li",{parentName:"ul"},"Optimise connectivity to peers behind firewall ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4381"},"issue-4381"),"."),(0,o.kt)("li",{parentName:"ul"},"Finish the work on enabling block production dynamically to allow using P2P\non block producers ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"issue-3159"),"."),(0,o.kt)("li",{parentName:"ul"},"If time permits we would like also to reserve some time for finishing\npublication of ",(0,o.kt)("inlineCode",{parentName:"li"},"io-sim")," to Hackage.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4dc3be72.1b8e67d2.js b/assets/js/4dc3be72.1b8e67d2.js new file mode 100644 index 00000000000..4442bc11341 --- /dev/null +++ b/assets/js/4dc3be72.1b8e67d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76074],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>d});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),s=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(i),c=r,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||n;return i?a.createElement(d,o(o({ref:t},u),{},{components:i})):a.createElement(d,o({ref:t},u))}));function d(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-01-26-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-26-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-26-mithril.md",source:"@site/blog/2023-01-26-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-01-26T00:00:00.000Z",formattedDate:"January 26, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.175,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-01-26-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-27-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-25-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team released a new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2302.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2302.0"))," distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes."),(0,r.kt)("p",null,"Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2302.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2302.0"))),(0,r.kt)("li",{parentName:"ul"},"Implemented a backward/forward compatibility mechanism for API messages ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/688"},"#688"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for the signer registration ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/689"},"#689")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for the signature registration ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/693"},"#693")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for epoch settings ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/695"},"#695")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for certificate pending ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/696"},"#696")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for certificate ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/697"},"#697")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for snapshots list ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/698"},"#698")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for snapshot ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/699"},"#699")),(0,r.kt)("li",{parentName:"ul"},"Update enforcement of API version with Semver ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/705"},"#705")))),(0,r.kt)("li",{parentName:"ul"},"Completed the PoC implementation of backward compatibility with ",(0,r.kt)("inlineCode",{parentName:"li"},"protobuf")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/677"},"#677")),(0,r.kt)("li",{parentName:"ul"},"Completed the PoC implementation of backward compatibility with ",(0,r.kt)("inlineCode",{parentName:"li"},"avro")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/678"},"#678")),(0,r.kt)("li",{parentName:"ul"},"Completed the PoC to Read/Write transaction on chain for Era activations ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/672"},"#672")),(0,r.kt)("li",{parentName:"ul"},"Completed the upgrade Cardano devnet to 1.35.4 ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/523"},"#523"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4de4e659.cb788841.js b/assets/js/4de4e659.cb788841.js new file mode 100644 index 00000000000..07d53ff8bbf --- /dev/null +++ b/assets/js/4de4e659.cb788841.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53662],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),h=p(r),c=a,d=h["".concat(s,".").concat(c)]||h[c]||m[c]||n;return r?i.createElement(d,l(l({ref:t},u),{},{components:r})):i.createElement(d,l({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,l=new Array(n);l[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[h]="string"==typeof e?e:a,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var i=r(87462),a=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-11-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-11-29-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-29-mithril.md",source:"@site/blog/2023-11-29-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-29T00:00:00.000Z",formattedDate:"November 29, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.415,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-29-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-24-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"This week, the Mithril team released the initial version of the ",(0,a.kt)("a",{parentName:"p",href:"https://crates.io/crates/mithril-client"},"Mithril client library"),", enabling developers to integrate core Mithril features into their applications. They also released a new distribution, ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2347.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2347.0")),", which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements."),(0,a.kt)("p",null,"The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance. "),(0,a.kt)("p",null,"Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Release of the ",(0,a.kt)("a",{parentName:"li",href:"https://crates.io/crates/mithril-client"},(0,a.kt)("inlineCode",{parentName:"a"},"mithril-client"))," library crate"),(0,a.kt)("li",{parentName:"ul"},"Publication of a ",(0,a.kt)("a",{parentName:"li",href:"https://mithril.network/doc/dev-blog/2023/11/27/mithril-client-library-released"},"dev blog post")," about the released Mithril library"),(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2347.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2347.0"))),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,a.kt)("inlineCode",{parentName:"strong"},"mithril-client")," WASM library")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1336"},"#1336")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Enhance Mithril/Cardano node communication")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1315"},"#1315")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"P2P threat modeling and risk analysis")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1350"},"#1350")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Support P2P relay in infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1361"},"#1361")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Make Cardano node version custom in CI/CD")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1355"},"#1355")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Manually deploy a test Mithril network")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1356"},"#1356")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"mithril-client verbosity not following usage menu")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1325"},"#1325")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Error message for mithril-client snapshot download")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1375"},"#1375"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4df30499.579d0d55.js b/assets/js/4df30499.579d0d55.js new file mode 100644 index 00000000000..bfe5cd5f0a3 --- /dev/null +++ b/assets/js/4df30499.579d0d55.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51951],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=s(n),d=a,h=m["".concat(l,".").concat(d)]||m[d]||u[d]||o;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-01-11-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-01-11-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-11-performance-and-tracing.md",source:"@site/blog/2023-01-11-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-01-11T00:00:00.000Z",formattedDate:"January 11, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.865,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2023-01-11-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-11-consensus"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-06-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},m="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks."),(0,a.kt)("li",{parentName:"ol"},"New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs."),(0,a.kt)("li",{parentName:"ol"},"Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components."),(0,a.kt)("p",null,"On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters.\nWe now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes."),(0,a.kt)("p",null,"We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development.\nOnce this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4e45b006.d8b869ce.js b/assets/js/4e45b006.d8b869ce.js new file mode 100644 index 00000000000..8d2ccd5a183 --- /dev/null +++ b/assets/js/4e45b006.d8b869ce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[63089],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=p(a),c=n,h=m["".concat(u,".").concat(c)]||m[c]||d[c]||l;return a?r.createElement(h,i(i({ref:t},s),{},{components:a})):r.createElement(h,i({ref:t},s))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[m]="string"==typeof e?e:n,i[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-09-15-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-09-15-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-ledger.md",source:"@site/blog/2023-09-15-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.645,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-09-15-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-15-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-15-network"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3},{value:"Testing",id:"testing",level:3}],s={toc:p},m="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(m,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The Ledger team's focus is still mainly on the Conway era implementation."),(0,n.kt)("p",null,"We were able to add ability to specify initial Constitutional Comittee and the initial\nversion of Constitution. Priority in which Governance Action are now enacted matches the\nspecification. DRep's deposits are now properly accounted for. Governance actions that are\nnot allowed to be voted on by Stake Pool operators and Constitutional Committee members\nare prevented by transaction submission failure, rather than simply being ignored. There\nwas a few important CDDL fixes as well as a lot of new round trip serialization\ntests. Constraint based testing framework has also received a lot of improvements."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-era"},"Conway era"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3681"},"pull-3681")," - Conway Genesis additions"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3690"},"pull-3690")," - Preserve the order of ProposalProcedures"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3705"},"pull-3705")," - Removed ProtVer from EnactState"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3700"},"pull-3700")," - Add conway-specific certs to deposit/refunds"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3704"},"pull-3704")," - Add comments on deprecating certs to Conway CDDL"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3698"},"pull-3698")," - Reordering of governance actions"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3712"},"pull-3712")," - Disallow empty fields in ConwayTxBodyRaw"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3716"},"pull-3716")," - Abstract threshold calculation"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3725"},"pull-3725")," - Fix mistaken use of dollar sign in cddl files"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3718"},"pull-3718")," - Predicate failure for mismatched Voter GovAction"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3721"},"pull-3721")," - Committee expiration, validation and modification")),(0,n.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3629"},"pull-3629")," - Add rule-transition diagrams in dot syntax"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3680"},"pull-3680")," - Bump Plutus deps to 1.11"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3708"},"pull-3708")," - Post release changes")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3730"},"pull-3730")," - Implement ",(0,n.kt)("inlineCode",{parentName:"li"},"Show")," instance for ",(0,n.kt)("inlineCode",{parentName:"li"},"Rep")," using ",(0,n.kt)("inlineCode",{parentName:"li"},"IsTypeable")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3697"},"pull-3697")," - Rewrite testEql using Typeable to make it impossible to forget cases"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3709"},"pull-3709")," - Add many new features to the Constrained modues in cardano-ledger-test"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3726"},"pull-3726")," - Conway and other eras serialization roundtrip tests"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3713"},"pull-3713")," - Improve CI resiliency against GitHub issues")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4ed83391.31eb1d59.js b/assets/js/4ed83391.31eb1d59.js new file mode 100644 index 00000000000..be80c4cc41e --- /dev/null +++ b/assets/js/4ed83391.31eb1d59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22838],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(n),p=a,h=d["".concat(c,".").concat(p)]||d[p]||m[p]||i;return n?r.createElement(h,o(o({ref:t},u),{},{components:n})):r.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-09-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-22-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-22-performance-and-tracing.md",source:"@site/blog/2023-09-22-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-09-22T00:00:00.000Z",formattedDate:"September 22, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.445,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-09-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-22-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-20-consensus"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"New team member",id:"new-team-member",level:3}],u={toc:s},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Work on machine-readable tracing of tracer configuration is ongoing."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster."),(0,a.kt)("li",{parentName:"ul"},"Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Bl\xf6ndal!")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking\nbackend with means to measure and document network latency for each run. Furthermore we've implemented means to\ncapture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences\nin the behaviour of the underlying networking stack at OS level. "),(0,a.kt)("p",null,"Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided\nto compare standard deviations instead to validate the measurements from nomad."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline\nhave been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis. "),(0,a.kt)("p",null,"Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for ",(0,a.kt)("inlineCode",{parentName:"p"},"trace-dispatcher")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"tx-generator")," we were able to address those issues."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"After various steps in constructing a configuration upon node startup, it is vital to document\nwhich runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML\ntrace message for that purpose. "),(0,a.kt)("p",null,"This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node. "),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it\nproduces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an\nimpact on our measurements, as we'd be basically using two different instruments to take them. "),(0,a.kt)("p",null,"Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service\nor the slightly different system architecture of the new cluster."),(0,a.kt)("h3",{id:"new-team-member"},"New team member"),(0,a.kt)("p",null,"Baldur Bl\xf6ndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team.\nSo I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer"),", the component receiving, processing and making available node traces and metrics."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4ef71b5f.e4f1978f.js b/assets/js/4ef71b5f.e4f1978f.js new file mode 100644 index 00000000000..c8890bb795d --- /dev/null +++ b/assets/js/4ef71b5f.e4f1978f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59749],{28331:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":15,"previousPage":"/cardano-updates/quarterly","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/4fb1471a.876221eb.js b/assets/js/4fb1471a.876221eb.js new file mode 100644 index 00000000000..7c04df559c6 --- /dev/null +++ b/assets/js/4fb1471a.876221eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42347],{16186:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/tags/consensus","allTagsPath":"/cardano-updates/tags","count":32}')}}]); \ No newline at end of file diff --git a/assets/js/4fd8c72a.6da59da0.js b/assets/js/4fd8c72a.6da59da0.js new file mode 100644 index 00000000000..a0a79dac26b --- /dev/null +++ b/assets/js/4fd8c72a.6da59da0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76294],{8513:a=>{a.exports=JSON.parse('{"label":"network","permalink":"/cardano-updates/tags/network","allTagsPath":"/cardano-updates/tags","count":24}')}}]); \ No newline at end of file diff --git a/assets/js/4fe12b4b.941e6176.js b/assets/js/4fe12b4b.941e6176.js new file mode 100644 index 00000000000..61e9bb8d3c4 --- /dev/null +++ b/assets/js/4fe12b4b.941e6176.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48837],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=s(n),u=a,f=d["".concat(p,".").concat(u)]||d[u]||m[u]||o;return n?r.createElement(f,l(l({ref:t},c),{},{components:n})):r.createElement(f,l({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:a,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-03-31-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-31-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-goedel.md",source:"@site/blog/2023-03-31-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.455,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-03-31-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-31-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-31-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This sprint the team has been working on final drafts of two papers\nfor internal review and planning next steps of analysis of consensus\ndesign refiniments."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Preparing final draft of DeltaQSD algebra paper for internal review")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Preparing final draft of verifying design refinements for\ndistributed system design for internal review")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Planning next phase of consensus design refinement analysis"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4fe88e48.fa1e775a.js b/assets/js/4fe88e48.fa1e775a.js new file mode 100644 index 00000000000..56eb7d4d48d --- /dev/null +++ b/assets/js/4fe88e48.fa1e775a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[82214],{17849:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/db-sync","page":1,"postsPerPage":5,"totalPages":3,"totalCount":14,"nextPage":"/cardano-updates/tags/db-sync/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/4febca42.f94e02ae.js b/assets/js/4febca42.f94e02ae.js new file mode 100644 index 00000000000..1e7fc36041a --- /dev/null +++ b/assets/js/4febca42.f94e02ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16349],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(a),s=r,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||i;return a?n.createElement(h,o(o({ref:t},d),{},{components:a})):n.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-05-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-05-05-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-05-node-cli-api.md",source:"@site/blog/2023-05-05-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-05-05T00:00:00.000Z",formattedDate:"May 5, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.81,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-05-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-05-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-04-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-05-05---2023-05-23"},"2023-05-05 - 2023-05-23"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Golden tests for cardano-cli command help output were added."),(0,r.kt)("li",{parentName:"ul"},"Documentation was updated with new libsodium installation instructions."),(0,r.kt)("li",{parentName:"ul"},"There were several updates for the cardano-cli:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Deletion of the deprecated shelley command group."),(0,r.kt)("li",{parentName:"ul"},"Addition of golden tests for CLI help."),(0,r.kt)("li",{parentName:"ul"},"An improvement to avoid bare IO in tests, allowing better error reporting in failed tests."),(0,r.kt)("li",{parentName:"ul"},"Generation of UTCTime test values without leap seconds (avoids erroneous test failures)"),(0,r.kt)("li",{parentName:"ul"},"Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32."))),(0,r.kt)("li",{parentName:"ul"},"The cardano-api underwent multiple refinements:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Implementing deposit handling when balancing transactions (necessary for Conway)"),(0,r.kt)("li",{parentName:"ul"},"Cleaning up socket file path code."))),(0,r.kt)("li",{parentName:"ul"},"Several changes were made to the cardano-testnet:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Adding golden tests for cardano-testnet help."),(0,r.kt)("li",{parentName:"ul"},"Removing all hardcoded yaml files in cardano-testnet"),(0,r.kt)("li",{parentName:"ul"},"Improving cardano-testnet help output."),(0,r.kt)("li",{parentName:"ul"},"Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.")))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5181"},"Update libsodium installation instructions")," ")),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5264"},"Delete deprecated ",(0,r.kt)("inlineCode",{parentName:"a"},"shelley")," command group")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5206"},"Add golden tests for CLI help")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5201"},"Avoid bare IO in tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5200"},"Split ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli")," test files into separate directories")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5198"},"Make UTCTime test generator generate values without leap seconds")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5189"},"Add support with signing transactions with ",(0,r.kt)("inlineCode",{parentName:"a"},"GenesisDelegateSigningKey_ed25519_bip32"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5184"},"Rename --signed-tx-file argument to --tx-file argument in verify-poll command")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5120"},"Simplify socket path code")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5221"},"refactor: make renderScriptWitnessIndex output more explicit")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5218"},"Implement deposit handling when balancing transactions")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5217"},"Replace remaining ",(0,r.kt)("inlineCode",{parentName:"a"},"FilePath")," use in ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5215"},"Cleanup socket file path code")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5207"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"readEnvSocketPath")," function")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5194"},"IO functions for reading. Remove PoolMetadataFile type")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5191"},"Expose config reader")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5188"},"Golden tests for ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api")," errors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5175"},"Fix ",(0,r.kt)("inlineCode",{parentName:"a"},"toEraInMode")," for conway")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5168"},"Use machine readable output for ToJSON ScriptWitnessIndex")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5096"},"Expose LocalTxSubmissionClient data constructor")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5047"},"Use cardano-api from separate repository")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4684"},"[cardano-api] Export fromConsensusPointHF")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5022"},"Provide orphan ",(0,r.kt)("inlineCode",{parentName:"a"},"ToJSON")," instances for ",(0,r.kt)("inlineCode",{parentName:"a"},"HardForkNodeToClientVersion")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"HardForkNodeToNodeVersion"))," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5254"},"Add golden test for ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-testnet")," help")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5242"},"Remove all hardcoded yaml files from cardano-testnet")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5234"},"Fix cardano-testnet help")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5211"},"Parameterize default yaml configuration value in cardano-testnet")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5165"},"Freeze callstack in integration and integrationRetryWorkspace functions")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5128"},"Create defaultYamlValue for cardano-testnet"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/50135b75.e3faee2b.js b/assets/js/50135b75.e3faee2b.js new file mode 100644 index 00000000000..559e9822bc9 --- /dev/null +++ b/assets/js/50135b75.e3faee2b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54176],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var n=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function l(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=n.createContext({}),u=function(e){var t=n.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=u(i),d=a,c=m["".concat(p,".").concat(d)]||m[d]||h[d]||r;return i?n.createElement(c,l(l({ref:t},s),{},{components:i})):n.createElement(c,l({ref:t},s))}));function c(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=i.length,l=new Array(r);l[0]=d;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[m]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>u});var n=i(87462),a=(i(67294),i(3905));const r={title:"Mithril Team Update",slug:"2023-06-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-06-15-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-15-mithril.md",source:"@site/blog/2023-06-15-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-06-15T00:00:00.000Z",formattedDate:"June 15, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.795,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-06-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-16-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-14-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},m="wrapper";function h(e){let{components:t,...i}=e;return(0,a.kt)(m,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client\u2019s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet."),(0,a.kt)("p",null,"Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Completed on the epic that designs and implements generic signing/verification of entity services ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Create the sub-command for 'Mithril Stake Distribution' in client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/896"},"#896")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Adapt end to end tests to handle new types of data")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/899"},"#899")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update client documentation")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/897"},"#897")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update architecture documentations for new types of data")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/898"},"#898")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactoring client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/960"},"#960")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Enhance terraform infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/930"},"#930")))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic that implements the computation of the stake distribution for ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/880"},"#880"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Check performance impact of new stake distribution command on the 'mainnet'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/962"},"#962")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Prepare Mithril Signer deployment model for SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/862"},"#862"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/961"},"#961")))),(0,a.kt)("li",{parentName:"ul"},"Worked on bugs and optimizations:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Aggregator does not always detect new immutable file")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/953"},"#953")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"CI tests fail with Rust '1.70.0'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/958"},"#958")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"End to end tests are flaky")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/954"},"#954")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Certificate dates in metadata are not on the same timezone")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/946"},"#946")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor 'MithrilStakeDistribution' entity")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/967"},"#967")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Fix 'Mithril Client multi-platform test' with new client interface")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/956"},"#956")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Enhance 'ImmutableDigesterError::NotEnoughImmutable' error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/969"},"#969")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Client 'snapshot download' command fails with option '--download-dir'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/979"},"#979"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/50d0e663.0674ac23.js b/assets/js/50d0e663.0674ac23.js new file mode 100644 index 00000000000..1c8bd5c564f --- /dev/null +++ b/assets/js/50d0e663.0674ac23.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30670],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),u=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(r),d=n,h=c["".concat(s,".").concat(d)]||c[d]||m[d]||i;return r?a.createElement(h,o(o({ref:t},p),{},{components:r})):a.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-03-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-17-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-crypto.md",source:"@site/blog/2023-03-17-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-03-17T00:00:00.000Z",formattedDate:"March 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.255,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-03-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-21-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-17-hydra"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3}],p={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: RFP finished. Code ready for audit."),(0,n.kt)("li",{parentName:"ul"},"cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams."),(0,n.kt)("li",{parentName:"ul"},"KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing."),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Preparing proving system to use the curves needed for main-net PoC. ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/783"},"PR#783")),(0,n.kt)("li",{parentName:"ul"},"RFP for crypto audit ready.")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"BLS12-381 branch approved ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"),". Blocker is Windown's CI. Working on it"),(0,n.kt)("li",{parentName:"ul"},"Testing strategy for BLS bindings:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Preparing test-vectors for Groth16, and simple BLS signatures"),(0,n.kt)("li",{parentName:"ul"},"Finding community projects to help write their use cases"),(0,n.kt)("li",{parentName:"ul"},"Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)"))),(0,n.kt)("li",{parentName:"ul"},"Wrote ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/blogpost_breaking_ed25519_vrf/blob/main/blog.md"},"blogpost")," on how using the same key for ed25519 and VRF completely breaks the security of both systems ")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started integration of sockets interface used in consensus"),(0,n.kt)("li",{parentName:"ul"},"Use that for de/ser"),(0,n.kt)("li",{parentName:"ul"},"Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim"),(0,n.kt)("li",{parentName:"ul"},"Results in having to parametrise for IOSim in KES and DSIGN for testing")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages."),(0,n.kt)("li",{parentName:"ul"},"Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS."),(0,n.kt)("li",{parentName:"ul"},"EdDSA over JubJub ready")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/51068.b4d6108e.js b/assets/js/51068.b4d6108e.js new file mode 100644 index 00000000000..5f4f5e04246 --- /dev/null +++ b/assets/js/51068.b4d6108e.js @@ -0,0 +1 @@ +(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51068],{3905:(e,t,r)=>{"use strict";r.d(t,{Zo:()=>s,kt:()=>d});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},f="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),f=c(r),y=o,d=f["".concat(l,".").concat(y)]||f[y]||p[y]||a;return r?n.createElement(d,i(i({ref:t},s),{},{components:r})):n.createElement(d,i({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=y;var u={};for(var l in t)hasOwnProperty.call(t,l)&&(u[l]=t[l]);u.originalType=e,u[f]="string"==typeof e?e:o,i[1]=u;for(var c=2;c{"use strict";var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((r=e,Array.isArray(r)?[]:{}),e,t):e;var r}function o(e,t,r){return e.concat(t).map((function(e){return n(e,r)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function i(e,t){try{return t in e}catch(r){return!1}}function u(e,t,r){var o={};return r.isMergeableObject(e)&&a(e).forEach((function(t){o[t]=n(e[t],r)})),a(t).forEach((function(a){(function(e,t){return i(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,a)||(i(e,a)&&r.isMergeableObject(t[a])?o[a]=function(e,t){if(!t.customMerge)return l;var r=t.customMerge(e);return"function"==typeof r?r:l}(a,r)(e[a],t[a],r):o[a]=n(t[a],r))})),o}function l(e,r,a){(a=a||{}).arrayMerge=a.arrayMerge||o,a.isMergeableObject=a.isMergeableObject||t,a.cloneUnlessOtherwiseSpecified=n;var i=Array.isArray(r);return i===Array.isArray(e)?i?a.arrayMerge(e,r,a):u(e,r,a):n(r,a)}l.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,r){return l(e,r,t)}),{})};var c=l;e.exports=c},49090:e=>{function t(e,t){e.onload=function(){this.onerror=this.onload=null,t(null,e)},e.onerror=function(){this.onerror=this.onload=null,t(new Error("Failed to load "+this.src),e)}}function r(e,t){e.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||(this.onreadystatechange=null,t(null,e))}}e.exports=function(e,n,o){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("script");"function"==typeof n&&(o=n,n={}),n=n||{},o=o||function(){},i.type=n.type||"text/javascript",i.charset=n.charset||"utf8",i.async=!("async"in n)||!!n.async,i.src=e,n.attrs&&function(e,t){for(var r in t)e.setAttribute(r,t[r])}(i,n.attrs),n.text&&(i.text=""+n.text),("onload"in i?t:r)(i,o),i.onload||t(i,o),a.appendChild(i)}},30845:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=Number.isNaN||function(e){return"number"==typeof e&&e!=e};function o(e,t){if(e.length!==t.length)return!1;for(var r=0;r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=c();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),i=(o=r(69590))&&o.__esModule?o:{default:o},u=r(85741),l=r(38045);function c(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return c=function(){return e},e}function s(){return s=Object.assign||function(e){for(var t=1;t0&&e<1){var n=this.player.getDuration();return n?void this.player.seekTo(n*e):void console.warn("ReactPlayer: could not seek using fraction \u2013\xa0duration not yet available")}this.player.seekTo(e)}else 0!==e&&(this.seekOnPlay=e,setTimeout((function(){r.seekOnPlay=null}),5e3))}},{key:"render",value:function(){var e=this.props.activePlayer;return e?a.default.createElement(e,s({},this.props,{onMount:this.handlePlayerMount,onReady:this.handleReady,onPlay:this.handlePlay,onPause:this.handlePause,onEnded:this.handleEnded,onLoaded:this.handleLoaded,onError:this.handleError})):null}}],r&&f(t.prototype,r),n&&f(t,n),u}(a.Component);t.default=v,b(v,"displayName","Player"),b(v,"propTypes",u.propTypes),b(v,"defaultProps",u.defaultProps)},83855:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var u=o?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(r,i,u):r[i]=e[i]}r.default=e,t&&t.set(e,r);return r}(r(67294));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createReactPlayer=void 0;var n=k(r(67294)),o=s(r(9996)),a=s(r(30845)),i=s(r(69590)),u=r(85741),l=r(38045),c=s(r(60722));function s(e){return e&&e.__esModule?e:{default:e}}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:"player";return r.player?r.player.getInternalPlayer(e):null})),w(g(r),"seekTo",(function(e,t){if(!r.player)return null;r.player.seekTo(e,t)})),w(g(r),"handleReady",(function(){r.props.onReady(g(r))})),w(g(r),"getActivePlayer",(0,a.default)((function(r){for(var n=0,o=[].concat(T,h(e));n{"use strict";t.Z=void 0;var n,o=(n=r(86497))&&n.__esModule?n:{default:n},a=r(70390);var i=o.default[o.default.length-1],u=(0,a.createReactPlayer)(o.default,i);t.Z=u},71776:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.canPlay=t.FLV_EXTENSIONS=t.DASH_EXTENSIONS=t.HLS_EXTENSIONS=t.VIDEO_EXTENSIONS=t.AUDIO_EXTENSIONS=t.MATCH_URL_KALTURA=t.MATCH_URL_VIDYARD=t.MATCH_URL_MIXCLOUD=t.MATCH_URL_DAILYMOTION=t.MATCH_URL_TWITCH_CHANNEL=t.MATCH_URL_TWITCH_VIDEO=t.MATCH_URL_WISTIA=t.MATCH_URL_STREAMABLE=t.MATCH_URL_FACEBOOK_WATCH=t.MATCH_URL_FACEBOOK=t.MATCH_URL_VIMEO=t.MATCH_URL_SOUNDCLOUD=t.MATCH_URL_YOUTUBE=void 0;var n=r(38045);function o(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return u=e.done,e},e:function(e){l=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(){return l=Object.assign||function(e){for(var t=1;t{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(){return l=Object.assign||function(e){for(var t=1;t1,v=h&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||b)&&!window.MSStream,m=h&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&!window.MSStream,P=/www\.dropbox\.com\/.+/,g=/https:\/\/watch\.cloudflarestream\.com\/([a-z0-9]+)/,O=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&s(e,t)}(y,e);var t,r,n,u=f(y);function y(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y);for(var t=arguments.length,r=new Array(t),n=0;n0?r.end(r.length-1):t}},{key:"getCurrentTime",value:function(){return this.player?this.player.currentTime:null}},{key:"getSecondsLoaded",value:function(){if(!this.player)return null;var e=this.player.buffered;if(0===e.length)return 0;var t=e.end(e.length-1),r=this.getDuration();return t>r?r:t}},{key:"getSource",value:function(e){var t=this.shouldUseHLS(e),r=this.shouldUseDASH(e),n=this.shouldUseFLV(e);if(!(e instanceof Array||(0,a.isMediaStream)(e)||t||r||n))return P.test(e)?e.replace("www.dropbox.com","dl.dropboxusercontent.com"):e}},{key:"render",value:function(){var e=this.props,t=e.url,r=e.playing,n=e.loop,a=e.controls,i=e.muted,u=e.config,c=e.width,s=e.height,f=this.shouldUseAudio(this.props)?"audio":"video",p={width:"auto"===c?c:"100%",height:"auto"===s?s:"100%"};return o.default.createElement(f,l({ref:this.ref,src:this.getSource(t),style:p,preload:"auto",autoPlay:r||void 0,controls:a,muted:i,loop:n},u.attributes),t instanceof Array&&t.map(this.renderSourceElement),u.tracks.map(this.renderTrack))}}])&&c(t.prototype,r),n&&c(t,n),y}(o.Component);t.default=O,d(O,"displayName","FilePlayer"),d(O,"canPlay",i.canPlay.file)},73911:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){for(var r=0;r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){for(var r=0;r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e,t){for(var r=0;r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e,t){for(var r=0;r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e,t){for(var r=0;r{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,t&&t.set(e,r);return r}(r(67294)),a=r(38045),i=r(71776);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(67294),o=r(38045),a=r(71776);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function l(e){if(e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var t=u();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=n?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}return r.default=e,t&&t.set(e,r),r}var c=[{key:"youtube",name:"YouTube",canPlay:a.canPlay.youtube,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(60356))}))}))},{key:"soundcloud",name:"SoundCloud",canPlay:a.canPlay.soundcloud,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(72648))}))}))},{key:"vimeo",name:"Vimeo",canPlay:a.canPlay.vimeo,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(80868))}))}))},{key:"facebook",name:"Facebook",canPlay:a.canPlay.facebook,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(31972))}))}))},{key:"streamable",name:"Streamable",canPlay:a.canPlay.streamable,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(50993))}))}))},{key:"wistia",name:"Wistia",canPlay:a.canPlay.wistia,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(8018))}))}))},{key:"twitch",name:"Twitch",canPlay:a.canPlay.twitch,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(29482))}))}))},{key:"dailymotion",name:"DailyMotion",canPlay:a.canPlay.dailymotion,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(36807))}))}))},{key:"mixcloud",name:"Mixcloud",canPlay:a.canPlay.mixcloud,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(50143))}))}))},{key:"vidyard",name:"Vidyard",canPlay:a.canPlay.vidyard,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(36596))}))}))},{key:"kaltura",name:"Kaltura",canPlay:a.canPlay.kaltura,lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(73911))}))}))},{key:"file",name:"FilePlayer",canPlay:a.canPlay.file,canEnablePIP:function(e){return a.canPlay.file(e)&&(document.pictureInPictureEnabled||(0,o.supportsWebKitPresentationMode)())&&!a.AUDIO_EXTENSIONS.test(e)},lazyPlayer:(0,n.lazy)((function(){return Promise.resolve().then((function(){return l(r(14926))}))}))}];t.default=c},85741:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultProps=t.propTypes=void 0;var n,o=(n=r(45697))&&n.__esModule?n:{default:n};var a=o.default.string,i=o.default.bool,u=o.default.number,l=o.default.array,c=o.default.oneOfType,s=o.default.shape,f=o.default.object,p=o.default.func,y=o.default.node,d={url:c([a,l,f]),playing:i,loop:i,controls:i,volume:u,muted:i,playbackRate:u,width:c([a,u]),height:c([a,u]),style:f,progressInterval:u,playsinline:i,pip:i,stopOnUnmount:i,light:c([i,a,f]),playIcon:y,previewTabIndex:u,fallback:y,oEmbedUrl:a,wrapper:c([a,p,s({render:p.isRequired})]),config:s({soundcloud:s({options:f}),youtube:s({playerVars:f,embedOptions:f,onUnstarted:p}),facebook:s({appId:a,version:a,playerId:a,attributes:f}),dailymotion:s({params:f}),vimeo:s({playerOptions:f,title:a}),file:s({attributes:f,tracks:l,forceVideo:i,forceAudio:i,forceHLS:i,forceSafariHLS:i,forceDASH:i,forceFLV:i,hlsOptions:f,hlsVersion:a,dashVersion:a,flvVersion:a}),wistia:s({options:f,playerId:a,customControls:l}),mixcloud:s({options:f}),twitch:s({options:f,playerId:a}),vidyard:s({options:f})}),onReady:p,onStart:p,onPlay:p,onPause:p,onBuffer:p,onBufferEnd:p,onEnded:p,onError:p,onDuration:p,onSeek:p,onPlaybackRateChange:p,onProgress:p,onClickPreview:p,onEnablePIP:p,onDisablePIP:p};t.propTypes=d;var h=function(){},b={playing:!1,loop:!1,controls:!1,volume:null,muted:!1,playbackRate:1,width:"640px",height:"360px",style:{},progressInterval:1e3,playsinline:!1,pip:!1,stopOnUnmount:!0,light:!1,fallback:null,wrapper:"div",previewTabIndex:0,oEmbedUrl:"https://noembed.com/embed?url={url}",config:{soundcloud:{options:{visual:!0,buying:!1,liking:!1,download:!1,sharing:!1,show_comments:!1,show_playcount:!1}},youtube:{playerVars:{playsinline:1,showinfo:0,rel:0,iv_load_policy:3,modestbranding:1},embedOptions:{},onUnstarted:h},facebook:{appId:"1309697205772819",version:"v3.3",playerId:null,attributes:{}},dailymotion:{params:{api:1,"endscreen-enable":!1}},vimeo:{playerOptions:{autopause:!1,byline:!1,portrait:!1,title:!1},title:null},file:{attributes:{},tracks:[],forceVideo:!1,forceAudio:!1,forceHLS:!1,forceDASH:!1,forceFLV:!1,hlsOptions:{},hlsVersion:"1.1.4",dashVersion:"3.1.3",flvVersion:"1.5.0"},wistia:{options:{},playerId:null,customControls:null},mixcloud:{options:{hide_cover:1}},twitch:{options:{},playerId:null},vidyard:{options:{}}},onReady:h,onStart:h,onPlay:h,onPause:h,onBuffer:h,onBufferEnd:h,onEnded:h,onError:h,onDuration:h,onSeek:h,onPlaybackRateChange:h,onProgress:h,onClickPreview:h,onEnablePIP:h,onDisablePIP:h};t.defaultProps=b},38045:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseStartTime=function(e){return p(e,l)},t.parseEndTime=function(e){return p(e,c)},t.randomString=function(){return Math.random().toString(36).substr(2,5)},t.queryString=function(e){return Object.keys(e).map((function(t){return"".concat(t,"=").concat(e[t])})).join("&")},t.getSDK=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){return!0},a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:n.default,i=y(t);if(i&&o(i))return Promise.resolve(i);return new Promise((function(n,o){if(d[e])d[e].push({resolve:n,reject:o});else{d[e]=[{resolve:n,reject:o}];var i=function(t){d[e].forEach((function(e){return e.resolve(t)}))};if(r){var u=window[r];window[r]=function(){u&&u(),i(y(t))}}a(e,(function(n){n?(d[e].forEach((function(e){return e.reject(n)})),d[e]=null):r||i(y(t))}))}}))},t.getConfig=function(e,t){return(0,o.default)(t.config,e.config)},t.omit=function(e){for(var t,r=arguments.length,n=new Array(r>1?r-1:0),o=1;o1?n-1:0),a=1;a0&&void 0!==arguments[0]?arguments[0]:document.createElement("video"),t=!1===/iPhone|iPod/.test(navigator.userAgent);return e.webkitSupportsPresentationMode&&"function"==typeof e.webkitSetPresentationMode&&t};var n=a(r(49090)),o=a(r(9996));function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var r=[],n=!0,o=!1,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(n=(i=u.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(l){o=!0,a=l}finally{try{n||null==u.return||u.return()}finally{if(o)throw a}}return r}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/5","page":5,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/4","nextPage":"/cardano-updates/tags/hydra/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/51bf60d9.2a2866d6.js b/assets/js/51bf60d9.2a2866d6.js new file mode 100644 index 00000000000..901ababee7c --- /dev/null +++ b/assets/js/51bf60d9.2a2866d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62901],{3905:(e,t,o)=>{o.d(t,{Zo:()=>l,kt:()=>h});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},l=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,u=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),c=p(o),m=n,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||a;return o?r.createElement(h,i(i({ref:t},l),{},{components:o})):r.createElement(h,i({ref:t},l))}));function h(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,i=new Array(a);i[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var p=2;p{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=o(87462),n=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-05-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-05-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-network.md",source:"@site/blog/2023-05-12-network.md",title:"Network Team Update",description:"High level summary",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.79,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-05-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-12-hydra"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-05-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed summary",id:"detailed-summary",level:2}],l={toc:p},c="wrapper";function d(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,r.Z)({},l,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We started working on a new way to switch between root & ledger peers (see\nbelow). We continued to work on ",(0,n.kt)("inlineCode",{parentName:"p"},"eclipse-evasion"),". We merged changes to\nHandshake contributed by Galois Inc. We made improvements to our tests (fixed\na flaky test, added cddl specs for ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionData")," and\n",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToClientVersionData"),"). We improved our CI and automated the process of\nreleasing new package version to ",(0,n.kt)("inlineCode",{parentName:"p"},"CHaP"),"."),(0,n.kt)("h2",{id:"detailed-summary"},"Detailed summary"),(0,n.kt)("p",null,"We continued to work on testing ",(0,n.kt)("inlineCode",{parentName:"p"},"eclipse-evasion"),"."),(0,n.kt)("p",null,"We came up with an idea to limit how full node wallets relay on root peers\n(currently operated by IOG, in future also CF and Emurgo). We designed\na switch to use ledger peers if the node tip is close enough to the current\ntime. For more details see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"#4530"),"."),(0,n.kt)("p",null,"We merged changes to the handshake mini-protocol which allow one to query\nserver's ",(0,n.kt)("inlineCode",{parentName:"p"},"node-to-node")," / ",(0,n.kt)("inlineCode",{parentName:"p"},"node-to-client")," parameters. We are grateful to\nGalois Inc. for implementing it, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4256"},"#4256")," and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4538"},"#4538"),". We published new version\nof packages to CHaP ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/253"},"chap-#253"),"."),(0,n.kt)("p",null,"We added ",(0,n.kt)("inlineCode",{parentName:"p"},"DiffusionError")," wrapper. Thanks to it, ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," will\nnot duplicate diffusion errors messages in the log, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4537"},"#4537"),"."),(0,n.kt)("p",null,"We fixed an issue which caused one of our tests to be flaky, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4515"},"#4515"),"."),(0,n.kt)("p",null,"We added cddl tests for ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionData")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToClientVersionData"),":\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4540"},"#4540"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4544"},"#4544")," (in review)."),(0,n.kt)("p",null,"We wrote scripts which will help us release packages as well as verify that we\nreleased all the package necessary to build the newest set of packages,\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4542"},"#4542"),"."),(0,n.kt)("p",null,"We renamed the consensus startup tracer and make sure it doesn't log\n",(0,n.kt)("inlineCode",{parentName:"p"},"ExitSuccess")," exceptions, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pulls/71"},"consensus-#71"),"."),(0,n.kt)("p",null,"We reviewed PR which adds ",(0,n.kt)("inlineCode",{parentName:"p"},"RawBearer")," API, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4395"},"#4395"),"."),(0,n.kt)("p",null,"We made series of improvements to our CI:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4539"},"#4539"),": we don't need to install cryptographic libraries in CI;"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4545"},"#4545"),": Javier Sagredo (consensus) cleaned up CI after ",(0,n.kt)("inlineCode",{parentName:"li"},"consensus")," moved\nto a new repo;"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4546"},"#4546"),": we switched to use ",(0,n.kt)("a",{parentName:"li",href:"https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue"},"GitHub merge queues"),";"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4549"},"#4549"),": we made it possible to trigger building haddocks manually;"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4553"},"#4553"),": we fixed and enhanced caching of building dependencies.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/51cf8946.e4f02867.js b/assets/js/51cf8946.e4f02867.js new file mode 100644 index 00000000000..5a51ea26a49 --- /dev/null +++ b/assets/js/51cf8946.e4f02867.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6324],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(a),m=n,h=c["".concat(s,".").concat(m)]||c[m]||u[m]||o;return a?r.createElement(h,i(i({ref:t},p),{},{components:a})):r.createElement(h,i({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-11-25-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-25-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-25-hydra.md",source:"@site/blog/2022-11-25-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-11-25T00:00:00.000Z",formattedDate:"November 25, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.73,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-25-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-25-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-23-ledger"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:d},c="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a ",(0,n.kt)("a",{parentName:"p",href:"https://summit.cardano.org/agenda-day-2/cardano-ballot-speaker-winner-presentation-6/"},"presentation")," about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Attended the Cardano Summit in Lausanne. Hydra was topic of one talk: ",(0,n.kt)("a",{parentName:"li",href:"https://summit.cardano.org/agenda-day-2/cardano-ballot-speaker-winner-presentation-6/"},"https://summit.cardano.org/agenda-day-2/cardano-ballot-speaker-winner-presentation-6/")),(0,n.kt)("li",{parentName:"ul"},"Had a team workshop / hackathon after the summit:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Retrospective"),(0,n.kt)("li",{parentName:"ul"},"Impact mapping session"),(0,n.kt)("li",{parentName:"ul"},"Hacked on smaller things"))),(0,n.kt)("li",{parentName:"ul"},"Got a PR for tullia/cicero things by @kdermetfan")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting"),(0,n.kt)("li",{parentName:"ul"},"Tie up several loose ends / branches."),(0,n.kt)("li",{parentName:"ul"},"Resolve Tx validity discussions & PRs."),(0,n.kt)("li",{parentName:"ul"},"Review cicero PR & try it out.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5226ad4f.b1d14706.js b/assets/js/5226ad4f.b1d14706.js new file mode 100644 index 00000000000..fdfe3fa0cb1 --- /dev/null +++ b/assets/js/5226ad4f.b1d14706.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17214],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=u(a),h=n,c=m["".concat(p,".").concat(h)]||m[h]||d[h]||l;return a?r.createElement(c,i(i({ref:t},s),{},{components:a})):r.createElement(c,i({ref:t},s))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=h;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[m]="string"==typeof e?e:n,i[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-08-18-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-08-18-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-ledger.md",source:"@site/blog/2023-08-18-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-08-18-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-18-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-18-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway progress",id:"conway-progress",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],s={toc:u},m="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(m,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The ledger team made great progress in advancing Conway era forward. In particular, voting\nfor DRep and Stake Pool Operators is now at the state that can be used by downstream\ncomponents. Addition of new ledger state queries makes it possible to verify changes to\nthe governance state, such as placement of votes, submission of governance proposals,\ninspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the\nability to enact all of the governance actions, except for the hard fork initiation."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-progress"},"Conway progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3577"},"pull-3577")," - Move ",(0,n.kt)("inlineCode",{parentName:"li"},"PParams")," to ",(0,n.kt)("inlineCode",{parentName:"li"},"GovState")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3609"},"pull-3609")," - Adjust thresholds for sanchonet"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3604"},"pull-3604")," - README: update CIP-1694 link"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3616"},"pull-3616")," - Switch ",(0,n.kt)("inlineCode",{parentName:"li"},"TreasuryWithdrawals")," to use ",(0,n.kt)("inlineCode",{parentName:"li"},"RewardAcnt")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3599"},"pull-3599")," - Add governance action well-formedness check"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3607"},"pull-3607")," - Rename governance to gov"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3601"},"pull-3601")," - Added ",(0,n.kt)("inlineCode",{parentName:"li"},"DRep")," anchors"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3615"},"pull-3615")," - Add optional previous ",(0,n.kt)("inlineCode",{parentName:"li"},"GovActionId")," in some ",(0,n.kt)("inlineCode",{parentName:"li"},"ProposalProcedures")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3596"},"pull-3596")," - Upgradeable families"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3625"},"pull-3625")," - Change constitution to use ",(0,n.kt)("inlineCode",{parentName:"li"},"Anchor")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3592"},"pull-3592")," - Added pulsing incremental computation of the DRep distribution"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3523"},"pull-3523")," - Treasury donations"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3633"},"pull-3633")," - Prevent state changes on phase2 failure"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3634"},"pull-3634")," - Disable serialization of protocolVersion param update"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3630"},"pull-3630")," - Implemented DRep refreshing"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3640"},"pull-3640")," - Remove crypto parameterization from ",(0,n.kt)("inlineCode",{parentName:"li"},"AnchorData")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3636"},"pull-3636"),' - Implement DRep ratification with an "always passing"; threshold'),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3648"},"pull-3648")," - Governance queries"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3650"},"pull-3650")," - Change environment for ",(0,n.kt)("inlineCode",{parentName:"li"},"ShelleyPOOLREAP")," rule"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3658"},"pull-3658")," - Set ",(0,n.kt)("inlineCode",{parentName:"li"},"DRep")," ratify threshold to 51%"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3628"},"pull-3628")," - ",(0,n.kt)("inlineCode",{parentName:"li"},"DELEG"),", ",(0,n.kt)("inlineCode",{parentName:"li"},"POOL"),", ",(0,n.kt)("inlineCode",{parentName:"li"},"GOVCERT")," conformance with Spec v0.8")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3619"},"pull-3619")," - Disabled a broken test")),(0,n.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3660"},"pull-3660")," - Fix bounds and versions"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3661"},"pull-3661")," - Adjust versions, bounds and CHANGELOGs to account for the latest release")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5296f864.dabe31b3.js b/assets/js/5296f864.dabe31b3.js new file mode 100644 index 00000000000..57b6f9772b1 --- /dev/null +++ b/assets/js/5296f864.dabe31b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6255],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,i(i({ref:t},c),{},{components:n})):r.createElement(f,i({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"SRE Q2 2023 Update",slug:"2023-Q2-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2023-Q2-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-sre.md",source:"@site/quarterly/2023-Q2-sre.md",title:"SRE Q2 2023 Update",description:"2023-04 - 2023-06",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"sre",permalink:"/cardano-updates/quarterly/tags/sre"}],readingTime:.68,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Q2 2023 Update",slug:"2023-Q2-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-network"},nextItem:{title:"Performance & Tracing Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"2023-04 - 2023-06",id:"2023-04---2023-06",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Next steps",id:"next-steps",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"2023-04---2023-06"},"2023-04 - 2023-06"),(0,a.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,a.kt)("p",null,"In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Expanding the darwin CI cluster and adding aarch64 builder support"),(0,a.kt)("li",{parentName:"ul"},"Adding bare metal capability to bitte clusters"),(0,a.kt)("li",{parentName:"ul"},"Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality"),(0,a.kt)("li",{parentName:"ul"},"Creation of pool performance analysis queries and scripting"),(0,a.kt)("li",{parentName:"ul"},"Migration of testnet metadata server to cardano-world"),(0,a.kt)("li",{parentName:"ul"},"Cardano shelley qa migration to cardano-world"),(0,a.kt)("li",{parentName:"ul"},"Cardano sanchonet environment spin up to test Conway era functionality"),(0,a.kt)("li",{parentName:"ul"},"Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature")),(0,a.kt)("h3",{id:"next-steps"},"Next steps"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Continue with the conversion of mainnet to using p2p topology")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/52b8fa8a.b3e53016.js b/assets/js/52b8fa8a.b3e53016.js new file mode 100644 index 00000000000..c1acf0af0a9 --- /dev/null +++ b/assets/js/52b8fa8a.b3e53016.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[19516],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(a),h=n,m=d["".concat(u,".").concat(h)]||d[h]||c[h]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-25-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-25-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-25-hydra.md",source:"@site/blog/2023-08-25-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-25T00:00:00.000Z",formattedDate:"August 25, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.875,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-25-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-28-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-24-performance-and-tracing"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},d="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team conducted the monthly review meeting for Agust,which\ncontinously ensures transparent communication and project evaluation."),(0,n.kt)("p",null,"In terms of community engagement, the Hydra team gave a Hydra master-class at\nRareEvo workshop as an educational initiative for the community.\nAdditionally, the team updated the Hydra demo and tutorial to include Mithril\nand latest release changes."),(0,n.kt)("p",null,"They also focused on exploring the Hydra network resiliance in order to improve\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," availability, as it becomes stuck very easily and that leads to a\nbad user experience."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Hydra master-class at RareEvo workshop!"),(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting"),(0,n.kt)("li",{parentName:"ul"},"Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff"),(0,n.kt)("li",{parentName:"ul"},"Groomed network resilience and explorer features ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"New ADR for \u201cResourced based API\u201d ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1028"},"#1028"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Have a poc on network resilience working ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"Fix issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/931"},"#931"),": \u201cChain state in head state not updated on replayed observation\u201d"),(0,n.kt)("li",{parentName:"ul"},"Fix issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1039"},"#1039"),': "Close transaction dropped from cardano-node"')))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/533a09ca.3d88b763.js b/assets/js/533a09ca.3d88b763.js new file mode 100644 index 00000000000..7fb2a6fd89a --- /dev/null +++ b/assets/js/533a09ca.3d88b763.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54607],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},b=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(r),b=n,d=p["".concat(l,".").concat(b)]||p[b]||g[b]||o;return r?a.createElement(d,s(s({ref:t},u),{},{components:r})):a.createElement(d,s({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,s=new Array(o);s[0]=b;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:n,s[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>g,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={sidebar_position:3},s="Create a Blog Post",i={unversionedId:"tutorial-basics/create-a-blog-post",id:"tutorial-basics/create-a-blog-post",title:"Create a Blog Post",description:"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...",source:"@site/docs/tutorial-basics/create-a-blog-post.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-blog-post",permalink:"/cardano-updates/docs/tutorial-basics/create-a-blog-post",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"defaultSidebar",previous:{title:"Create a Document",permalink:"/cardano-updates/docs/tutorial-basics/create-a-document"},next:{title:"Markdown Features",permalink:"/cardano-updates/docs/tutorial-basics/markdown-features"}},l={},c=[{value:"Create your first Post",id:"create-your-first-post",level:2}],u={toc:c},p="wrapper";function g(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"create-a-blog-post"},"Create a Blog Post"),(0,n.kt)("p",null,"Docusaurus creates a ",(0,n.kt)("strong",{parentName:"p"},"page for each blog post"),", but also a ",(0,n.kt)("strong",{parentName:"p"},"blog index page"),", a ",(0,n.kt)("strong",{parentName:"p"},"tag system"),", an ",(0,n.kt)("strong",{parentName:"p"},"RSS")," feed..."),(0,n.kt)("h2",{id:"create-your-first-post"},"Create your first Post"),(0,n.kt)("p",null,"Create a file at ",(0,n.kt)("inlineCode",{parentName:"p"},"blog/2021-02-28-greetings.md"),":"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-md",metastring:'title="blog/2021-02-28-greetings.md"',title:'"blog/2021-02-28-greetings.md"'},"---\nslug: greetings\ntitle: Greetings!\nauthors:\n - name: Joel Marcey\n title: Co-creator of Docusaurus 1\n url: https://github.com/JoelMarcey\n image_url: https://github.com/JoelMarcey.png\n - name: S\xe9bastien Lorber\n title: Docusaurus maintainer\n url: https://sebastienlorber.com\n image_url: https://github.com/slorber.png\ntags: [greetings]\n---\n\nCongratulations, you have made your first post!\n\nFeel free to play around and edit this post as much you like.\n")),(0,n.kt)("p",null,"A new blog post is now available at ",(0,n.kt)("a",{parentName:"p",href:"http://localhost:3000/blog/greetings"},"http://localhost:3000/blog/greetings"),"."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/533bb9dc.b96dad64.js b/assets/js/533bb9dc.b96dad64.js new file mode 100644 index 00000000000..1d3b795ca13 --- /dev/null +++ b/assets/js/533bb9dc.b96dad64.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70022],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(n),m=o,h=c["".concat(l,".").concat(m)]||c[m]||d[m]||r;return n?a.createElement(h,i(i({ref:t},u),{},{components:n})):a.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={title:"Network Team Update",slug:"2022-11-28-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-11-28-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-28-network.md",source:"@site/blog/2022-11-28-network.md",title:"Network Team Update",description:"Stake-Driven Data Diffusion Release for Relays",date:"2022-11-28T00:00:00.000Z",formattedDate:"November 28, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"},{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:3.675,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-11-28-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-30-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-25-crypto"}},l={authorsImageUrls:[void 0]},p=[{value:"Stake-Driven Data Diffusion Release for Relays",id:"stake-driven-data-diffusion-release-for-relays",level:2},{value:"Peer Sharing",id:"peer-sharing",level:3},{value:"DeltaQ",id:"deltaq",level:3},{value:"What have we achieve last sprint",id:"what-have-we-achieve-last-sprint",level:2},{value:"DeltaQ",id:"deltaq-1",level:3}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"stake-driven-data-diffusion-release-for-relays"},"Stake-Driven Data Diffusion Release for Relays"),(0,o.kt)("p",null,"IOG networking team decided to release the ",(0,o.kt)("em",{parentName:"p"},"Stake-Driven Data Diffusion with\nRobust Optimised Peer Selection")," also more commonly known as ",(0,o.kt)("em",{parentName:"p"},"P2P"),". In the\nlast update, we informed about a performance regression, but it turns out it\nonly affects block producers, and thus we highly advise against running it on\nsuch nodes. Further investigation is required to find the cause of it."),(0,o.kt)("p",null,"On IOG's benchmarking cluster we have seen quite a good performance improvement\non block propagation itself. The cluster is running a static topology with\nvalency 6 (each node is connected to 6 other nodes). In which every of the 50\nnodes are block producers. The setup of this network is the same as mainnet.\nWe've seen 40-50% performance improvement on block propagation comparing to the\nsame cluster deployed with the same topology but using non-P2P nodes. We think\nthis performance improvement is caused by using full duplex connections. Quite\nlikely the transaction traffic floating in both directions on the same TCP\nconnection helps to keep the TCP window open. Note that in a cluster of 50\nnodes with valency 6 the probability of having at least one duplex connection\nis more than 50%. We don't expect the same improvement on mainnet because the\nnetwork is much wider and the transaction traffic is not as large."),(0,o.kt)("p",null,"Just before the release we squashed two small bugs:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4163"},"issue #4163")," - top level integration bug in ",(0,o.kt)("inlineCode",{parentName:"li"},"keep-alive"),";"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177")," - a bug in ",(0,o.kt)("inlineCode",{parentName:"li"},"outbound-governor"),";"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4165"},"PR #4165")," - a fix ",(0,o.kt)("inlineCode",{parentName:"li"},"cardano-ping")," support of ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToNodeV_10"),".")),(0,o.kt)("h3",{id:"peer-sharing"},"Peer Sharing"),(0,o.kt)("p",null,"We were carrying a review of ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"peer sharing PR"),"."),(0,o.kt)("h3",{id:"deltaq"},"DeltaQ"),(0,o.kt)("p",null,"Neil Davies was invited to give a guest lecture entitled ",(0,o.kt)("inlineCode",{parentName:"p"},"Avoiding System Catastrophes")," at ",(0,o.kt)("a",{parentName:"p",href:"https://uclouvain.be/en/index.html"},"UCLouvain"),"."),(0,o.kt)("h2",{id:"what-have-we-achieve-last-sprint"},"What have we achieve last sprint"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4163"},"issue #4163"),": we found out that a control message is not passed to the\n",(0,o.kt)("inlineCode",{parentName:"p"},"keep-alive")," mini-protocol, this results in every demotion executing demotion\ntimeout rather than a graceful termination. With the fix the node will no longer log:"),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{ "kind": "PeerStatusChangeFailure"\n, "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"\n, "reason": "TimeoutError"\n}\n'))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177"),": we fixed an assertion failure in the ",(0,o.kt)("inlineCode",{parentName:"p"},"outbound-governor"),"; now\nwe don't try demoted peers which are being demoted already.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4155"},"PR #4155"),": we refactored ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," packages. There's a top level\n",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-diffusion")," package which integrates ",(0,o.kt)("inlineCode",{parentName:"p"},"network"),"\n& ",(0,o.kt)("inlineCode",{parentName:"p"},"consensus")," code. We also introduced:"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ouroboros-network-api")," package which contains the API shared between\n",(0,o.kt)("inlineCode",{parentName:"li"},"network")," & ",(0,o.kt)("inlineCode",{parentName:"li"},"conensus"),";"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ouroboros-network-mock")," package which contains mock API used for testing\n(e.g. a mock chain & chain producer, etc.)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ouroboros-network-protocols")," package which contains implementation of all\n(but ",(0,o.kt)("inlineCode",{parentName:"li"},"handshake"),") mini-protocols, exposes a ",(0,o.kt)("inlineCode",{parentName:"li"},"testlib")," and contains ",(0,o.kt)("inlineCode",{parentName:"li"},"test"),"\nand ",(0,o.kt)("inlineCode",{parentName:"li"},"cddl")," components.")),(0,o.kt)("p",{parentName:"li"},"This made the dependency tree of ",(0,o.kt)("inlineCode",{parentName:"p"},"network")," & ",(0,o.kt)("inlineCode",{parentName:"p"},"consensus")," packages much\ncleaner.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4169"},"PR #4169"),": we described the usage of release branches in ",(0,o.kt)("inlineCode",{parentName:"p"},"CONTRIBUTING.md"),"\ndoc.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4165"},"PR #4165"),": we fixed ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ping")," support of ",(0,o.kt)("inlineCode",{parentName:"p"},"NodeToNodeV_10")," protocol."))),(0,o.kt)("h3",{id:"deltaq-1"},"DeltaQ"),(0,o.kt)("p",null,"The abstract of the talk:"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"An essential step to ensuring that distributed systems are fit for\npurpose."),(0,o.kt)("p",{parentName:"blockquote"},"Distributed systems have become an integral part of our society and\ndaily lives. We are, both implicitly and explicitly, individually as well as\ncollectively, placing ever more trust in them."),(0,o.kt)("p",{parentName:"blockquote"},"Are they worthy of this trust? Our need for them to be \u2018fit-for-purpose\u2019 goes\nwell beyond notions of functional correctness (i.e. never getting the wrong\nanswer). We need them to deliver the desired outcomes in a timely, robust,\nreliable, resilient fashion, at scale and in a sustainable way (both\neconomically and environmentally)."),(0,o.kt)("p",{parentName:"blockquote"},"This all sounds like a worthy aspiration, but what would be a practical\napproach to capturing and reasoning about these issues? How can we ensure that\nsystems can meet their fit-for-purpose objectives, not just in their design but\nas they are deployed, encounter the imperfect world, are scaled to become\neconomic, and proceed into ongoing maintenance?"),(0,o.kt)("p",{parentName:"blockquote"},"This talk will illustrate how the notions of Outcomes and Quality Attenuation\n(as captured by \u2018\u2206Q\u2019) are being used to both frame the necessary notions and\nprovide a basis for assuring the refinement and reification of such systems,\nfrom initial concept to operational infrastructure.")),(0,o.kt)("p",null,"You can download the slides from ",(0,o.kt)("a",{target:"_blank",href:n(98946).Z},"here"),"."))}d.isMDXComponent=!0},98946:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/files/2022-11-24-UCL-60c46564c5dee25b0060304c060ab1cf.pdf"}}]); \ No newline at end of file diff --git a/assets/js/53f26dca.4f1881f6.js b/assets/js/53f26dca.4f1881f6.js new file mode 100644 index 00000000000..44557d0b4f4 --- /dev/null +++ b/assets/js/53f26dca.4f1881f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4775],{92006:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/44","page":44,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/43","nextPage":"/cardano-updates/page/45","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/54597942.94ae773b.js b/assets/js/54597942.94ae773b.js new file mode 100644 index 00000000000..68d6880d639 --- /dev/null +++ b/assets/js/54597942.94ae773b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33596],{64660:a=>{a.exports=JSON.parse('{"label":"network","permalink":"/cardano-updates/tags/network","allTagsPath":"/cardano-updates/tags","count":24}')}}]); \ No newline at end of file diff --git a/assets/js/548ef7ca.87502d26.js b/assets/js/548ef7ca.87502d26.js new file mode 100644 index 00000000000..38bb57d12dc --- /dev/null +++ b/assets/js/548ef7ca.87502d26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25578],{8960:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/21","page":21,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/20","nextPage":"/cardano-updates/page/22","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/54a7c81e.d059c59c.js b/assets/js/54a7c81e.d059c59c.js new file mode 100644 index 00000000000..0d9dac7ac8d --- /dev/null +++ b/assets/js/54a7c81e.d059c59c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16878],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),d=u(a),h=r,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||i;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=h;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[d]="string"==typeof t?t:r,l[1]=o;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-10-24-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-10-24-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-24-node-cli-api.md",source:"@site/blog/2023-10-24-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-10-24T00:00:00.000Z",formattedDate:"October 24, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.68,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-10-24-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-25-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-20-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},d="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-10-11---2023-10-24"},"2023-10-11 - 2023-10-24"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CARDANO-CLI"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"stake-address-info")," now shows deposits balance."),(0,r.kt)("li",{parentName:"ul"},"Added ",(0,r.kt)("inlineCode",{parentName:"li"},"conway governance action view")," to allow to inspect governance action files before submitting them on a transaction."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"build-raw")," support for ",(0,r.kt)("inlineCode",{parentName:"li"},"--vote-file")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"--proposal-file"))),(0,r.kt)("p",null,"CARDANO-API"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Support DRep extended keys"),(0,r.kt)("li",{parentName:"ul"},"Support Plutus V1 in Conway")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/394"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.28.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/393"},"Simplify ",(0,r.kt)("inlineCode",{parentName:"a"},"toTxOutInAnyEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/390"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.27.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/389"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.26.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/380"},"Check that poll answer index is not negative, to avoid a Prelude.!! error")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/379"},"drep registration-certificate: add a golden test")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/378"},"Disambiguate treasury withdrawal flags")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/375"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"stake-address-info")," query also return deposit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/374"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"conway governance action view"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/372"},"Ch/clearer anchor flags")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/371"},"Command argument types for ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/370"},"Remove eras' constitution-hash")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/368"},"Shelley to Alonzo: add create-genesis-key-delegation-certificate to governance")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/367"},"Enable reading of Conway ",(0,r.kt)("inlineCode",{parentName:"a"},"TxWitness"),"es")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/366"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"governance action create-protocol-parameters-update")," Conway onwards only")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/365"},(0,r.kt)("inlineCode",{parentName:"a"},"transaction build-raw")," support for ",(0,r.kt)("inlineCode",{parentName:"a"},"--vote-file")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"--proposal-file"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/364"},"Command argument types for governance key commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/363"},"Add test of voting using a cc hot key"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/338"},"Add Show instance for FoldBlocksError")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/336"},"Upgrade typed-protocols to 1.1.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/332"},"Improved validity range handling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/331"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.28.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/330"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"AlonzoEraOnly"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/329"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyToAlonzoEraToShelleyToBabbageEra")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/327"},"DRep extended key: add CastVerificationKeyRole")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/326"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardadno-api-8.27.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/325"},"Delete unnecessary calls to ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraints"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/324"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardadno-api-8.27.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/323"},"Support Plutus V1 in Conway")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/322"},"Parameterize GovernanceAction on era ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/320"},"Support DRep extended keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/317"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.26.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/314"},"Haddock document the case functions, so that their behavior is easier to understand when calling them")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/313"},"Avoid ",(0,r.kt)("inlineCode",{parentName:"a"},"IsShelleyBasedEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"IsCardanoEra")," where possible")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/312"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"MaryEraOnly")," eon. Disjoint functions"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5515"},"Factor out file creation for SPO"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5504"},"Tracer documentation generation enhacements "))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/550cdc1d.5c224350.js b/assets/js/550cdc1d.5c224350.js new file mode 100644 index 00000000000..029a3a47c84 --- /dev/null +++ b/assets/js/550cdc1d.5c224350.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75730],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,g=d["".concat(p,".").concat(m)]||d[m]||u[m]||o;return r?n.createElement(g,i(i({ref:t},c),{},{components:r})):n.createElement(g,i({ref:t},c))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-02-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-03-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-goedel.md",source:"@site/blog/2023-02-03-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-02-03T00:00:00.000Z",formattedDate:"February 3, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.57,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-02-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-03-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-03-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This sprint the team has been preparing several papers for peer review\nand knowledge sharing and consulting within IO and the community."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"R&D Seminar on experience participating in a member based organisation"),(0,a.kt)("li",{parentName:"ul"},"Full day tutorial on performance engineering presented at HiPEAC\n2023 conference"),(0,a.kt)("li",{parentName:"ul"},"Finished preparing and submitted a paper on performance engineering\nto an ACM workshop"),(0,a.kt)("li",{parentName:"ul"},"Preparing a draft paper for future submission about verifying design\nrefinements for distributed system design"),(0,a.kt)("li",{parentName:"ul"},"Consulting on performance design of other IO projects")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/551db1ac.ee42f66f.js b/assets/js/551db1ac.ee42f66f.js new file mode 100644 index 00000000000..53e1fab62a7 --- /dev/null +++ b/assets/js/551db1ac.ee42f66f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86074],{62085:a=>{a.exports=JSON.parse('{"label":"mithril","permalink":"/cardano-updates/tags/mithril","allTagsPath":"/cardano-updates/tags","count":34}')}}]); \ No newline at end of file diff --git a/assets/js/55b9667a.9fc9a6eb.js b/assets/js/55b9667a.9fc9a6eb.js new file mode 100644 index 00000000000..aa2806547cb --- /dev/null +++ b/assets/js/55b9667a.9fc9a6eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75506],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),l=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),h=l(o),d=r,m=h["".concat(s,".").concat(d)]||h[d]||c[d]||a;return o?n.createElement(m,i(i({ref:t},u),{},{components:o})):n.createElement(m,i({ref:t},u))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=d;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[h]="string"==typeof e?e:r,i[1]=p;for(var l=2;l{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>p,toc:()=>l});var n=o(87462),r=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-03-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-03-02-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-02-network.md",source:"@site/blog/2023-03-02-network.md",title:"Network Team Update",description:"High level summary",date:"2023-03-02T00:00:00.000Z",formattedDate:"March 2, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.85,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-03-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-03-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-24-hydra"}},s={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed work log",id:"detailed-work-log",level:2}],u={toc:l},h="wrapper";function c(e){let{components:t,...o}=e;return(0,r.kt)(h,(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"In the current sprint the networking team focused on fixing bugs and pushing\nforward implementation of eclipse evasion. We also found a bug in our\nsimulation testing setup (in integration of test node). We also overviewed the\nwork on extending handshake protocol which is delivered by Galois Inc."),(0,r.kt)("p",null,"We published ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.4.0.1")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network-protocols-0.3.0.0")," to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/147"},"CHaP"),"."),(0,r.kt)("p",null,"We also fixed a bug in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," which results in not being able to\nconfigure inbound connection limits, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"PR #4902"),"."),(0,r.kt)("p",null,"Together with Karl Knutsson (CF) we realised an issue in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli"),": it's\nvalidation of DNS names, IP address & ports when registering a stake pool\nshould be more strict to protect against common mistakes which we identified on\nthe chain. See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4929"},"issue #4929"),"."),(0,r.kt)("h2",{id:"detailed-work-log"},"Detailed work log"),(0,r.kt)("p",null,"In ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," we fixed two bugs in peer state actions. First one results in\na busy loop if demotion from hot to warm times outs. This busy loop is\neventually exited when mux exits (we reported this in our previous report).\nThis fix made it to ",(0,r.kt)("inlineCode",{parentName:"p"},"1.35.6")," release as well."),(0,r.kt)("p",null,"In addition the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," also fixes another bug which results in ",(0,r.kt)("inlineCode",{parentName:"p"},"hot -> warm\n-> hot")," demotion / promotion busy loop."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," also fixed a bug in a node only used in simulation which\nresulted in not using ",(0,r.kt)("inlineCode",{parentName:"p"},"chain-sync")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"block-fetch")," mini-protocols. In the\nreview process, we realised that the header-body split in the simulated node\nrequires further work (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4419"},"PR #4419"),", which is under review)."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," also extend our generators, which together with the above fix,\ncover the ",(0,r.kt)("inlineCode",{parentName:"p"},"hot -> warm -> hot")," demotion / promotion busy loop."),(0,r.kt)("p",null,"In ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4419"},"PR #4419")," we introduce a ",(0,r.kt)("inlineCode",{parentName:"p"},"ChainDB")," for our simulation node, which plays\nsimilar role to ",(0,r.kt)("inlineCode",{parentName:"p"},"ChainDB")," in the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),": a persistent (across\nsimulated restarts) store of blocks which does chain selection. This ensures\nthat the simulated node is using ",(0,r.kt)("inlineCode",{parentName:"p"},"block-fetch")," to download blocks announced by\n",(0,r.kt)("inlineCode",{parentName:"p"},"chain-sync")," mini-protocol."),(0,r.kt)("p",null,"We also made progress with reviewing ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"PR #4019")," - peer sharing."),(0,r.kt)("p",null,"We also fixed ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4370"},"issue #4370")," - a connection manager test failure, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4384"},"PR #4384"),"."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/55e35eab.f696c438.js b/assets/js/55e35eab.f696c438.js new file mode 100644 index 00000000000..ff5fc5f71ad --- /dev/null +++ b/assets/js/55e35eab.f696c438.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6249],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),c=n,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-12-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-12-06-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-06-mithril.md",source:"@site/blog/2023-12-06-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-12-06T00:00:00.000Z",formattedDate:"December 6, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.01,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-12-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-12-06-ledger"},nextItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-12-04-performance-and-tracing"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking."),(0,n.kt)("p",null,"Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," WASM library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1336"},"#1336")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P threat modeling and risk analysis")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1350"},"#1350")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Create a test network on ",(0,n.kt)("inlineCode",{parentName:"strong"},"Sanchonet"))," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1173"},"#1173")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Upgrade breaking changes crates")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1357"},"#1357")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Enhance Mithril/Cardano node communication")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1315"},"#1315")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," examples full crates")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1385"},"#1385")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Manual publication to crates.io with GitHub action")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1380"},"#1380")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Remove ",(0,n.kt)("inlineCode",{parentName:"strong"},"sqlite")," dependency from ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1390"},"#1390"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/563fcf2e.dc6fb4c7.js b/assets/js/563fcf2e.dc6fb4c7.js new file mode 100644 index 00000000000..67039a6fc42 --- /dev/null +++ b/assets/js/563fcf2e.dc6fb4c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94560],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=u(a),c=r,m=d["".concat(p,".").concat(c)]||d[c]||h[c]||l;return a?n.createElement(m,i(i({ref:t},s),{},{components:a})):n.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[d]="string"==typeof e?e:r,i[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-01-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-01-05-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-05-ledger.md",source:"@site/blog/2023-01-05-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-01-05T00:00:00.000Z",formattedDate:"January 5, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:4.44,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-01-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-06-crypto"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-28-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Finishing the deposit tracking",id:"finishing-the-deposit-tracking",level:3},{value:"New Conway era transaction",id:"new-conway-era-transaction",level:3},{value:"Optimizing the TICKF transition",id:"optimizing-the-tickf-transition",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Improved ledger event",id:"improved-ledger-event",level:4},{value:"Improved type saftey",id:"improved-type-saftey",level:4},{value:"Code/Module organization",id:"codemodule-organization",level:4},{value:"Revert pointer address deprecation",id:"revert-pointer-address-deprecation",level:4},{value:"Miscellaneous",id:"miscellaneous",level:4}],s={toc:u},d="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The ledger team finished up the remaining work for tracking individual depots,\nbuilt out the new Conway era transaction body (in line with CIP-1694),\ngreatly reduce some problematically large calculations on the epoch boundary,\nand addressed technical debt."),(0,r.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,r.kt)("h3",{id:"finishing-the-deposit-tracking"},"Finishing the deposit tracking"),(0,r.kt)("p",null,"The initial work on the individual deposit tracking project focused only on correctness.\nAs this is a large data structure\n(since its size is linear with respect to the number of registered stake credentials),\nit is very important that we also reduce the memory overhead as much as possible.\nFortunately, we were able to add very little overhead for the deposits by using existing\nefficient data structures. The extra tracking now only incurs one word (8 bytes)\nper registered stake credential."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3195"},"pull-3195")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3202"},"pull-3202")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3217"},"pull-3217"))),(0,r.kt)("h3",{id:"new-conway-era-transaction"},"New Conway era transaction"),(0,r.kt)("p",null,'We implemented the Conway era transaction body, which is in line with CIP-1694.\nNote that the Conway era implements, losing speaking, the parts of CIP-1694 that are not\nrelated to the liquid democracy (the "DReps").\nThe new transaction body adds the new governance actions and votes,\nwhile also deprecating the old governance structures\n(i.e. the old protocol parameter updates and MIR certificates).'),(0,r.kt)("p",null,"We also now have the wire specification (CDDL file) and serialization code in place.\nThe wire specification is still subject to change while we work on the Conway era,\nbut it is now usable and has proper testing support\n(so that, for example, the serialization round-trips, etc)."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3176"},"pull-3176")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3226"},"pull-3226"))),(0,r.kt)("h3",{id:"optimizing-the-tickf-transition"},"Optimizing the ",(0,r.kt)("inlineCode",{parentName:"h3"},"TICKF")," transition"),(0,r.kt)("p",null,"Every since the release of the Shelley era, we have been working to reduce the computational load\nplaced on the node by the ledger at the epoch boundary.\nWhile still not perfect, we believe that we have removed one of the final problematically long\nepoch boundary computations that exacerbate situations like\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4421"},"this"),".\nIn particular, the problem involved the way in which the consensus layer obtains a view of the\nledger for the purposes of checking the leadership schedule in a new epoch.\nWe implemented a stopgap measure which now only incurs a single multi-second cost once per epoch\ninstead of potentially several multi-second costs while the networks waits for the first block\nof a new epoch to be minted."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"An ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/blob/ea48d4815946c4f35239eb41815fe06cd6ffec2e/docs/adr/2022-12-12_007-optimize-ledger-view.md"},"ADR")," about the decision."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3209"},"pull-3209"))),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"We closed the year out with a lot of reduction to the technical debt!"),(0,r.kt)("h4",{id:"improved-ledger-event"},"Improved ledger event"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3212"},"pull-3212")," - The ledger events are not guaranteed to appear in any given order within a block.\nFor this reason, motivated by the use case in db-sync, the ",(0,r.kt)("inlineCode",{parentName:"li"},"TotalDeposits")," event now\nincludes a transaction ID and emits the ",(0,r.kt)("em",{parentName:"li"},"change")," in deposits instead of the value.")),(0,r.kt)("h4",{id:"improved-type-saftey"},"Improved type saftey"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3208"},"pull-3208")," - We replaced ",(0,r.kt)("inlineCode",{parentName:"li"},"NominalDiffTime")," with a newtype wrapper. The problem was that our CBOR\nencoders and decoders were using the wrong level of precision, having to due with with\nthe Shelley genesis file. We removed the potential problem with a newtype wrapper."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3167"},"pull-3167")," - We now use a GADT to ensure consistency of the Plutus language in the types\nfor ",(0,r.kt)("inlineCode",{parentName:"li"},"TransactionScriptFailure")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"PlutusDebug"),".")),(0,r.kt)("h4",{id:"codemodule-organization"},"Code/Module organization"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3175"},"pull-3175")," - The Allegra and Mary eras had an unusual relationship in our codebase,\ndue to the uncertainly of release dates while we were implementing them.\nIn particular, they were coupled in way that is different from the rest of the code base.\nWith hindsight on our side, we split the combined ",(0,r.kt)("inlineCode",{parentName:"li"},"shelley-ma")," Haskell package into two\nseparate ledger era packages, which is now consistent with the rest of the repository\nand module structure."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3184"},"pull-3184")," - We created a core test sub-library, cleaning up a lot of our property test\ngenerator code."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3210"},"pull-3210")," - We moved the ",(0,r.kt)("inlineCode",{parentName:"li"},"KeyPair")," type to the test library. Outside of testing,\nthe ledger does not need to deal with signing keys, and since this is a topic that\ndeserves the utmost care, it is best to make it clear that our use of signing keys\nis only for testing."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3229"},"pull-3229")," - We split the ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardano.Ledger.Alonzo.Data")," module, which is more consistent with the rest\nof the codebase.")),(0,r.kt)("h4",{id:"revert-pointer-address-deprecation"},"Revert pointer address deprecation"),(0,r.kt)("p",null,"Thanks to one of our excellent internal auditors,\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/jmhrpr"},"@jmhrpr"),",\nwe now have a better plan for deprecating pointer addresses.\nThis meant that we had to revert the previous work to deprecate them."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3161"},"issue-3161")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3215"},"pull-3215"))),(0,r.kt)("h4",{id:"miscellaneous"},"Miscellaneous"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3205"},"pull-3205")," - We removed deprecated type synonyms."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3218"},"pull-3218")," - We cleaned up the address deserialization."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3223"},"pull-3223")," - We fixed faulty address deserialization tests."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3222"},"pull-3222")," - We switched to a general type family ",(0,r.kt)("inlineCode",{parentName:"li"},"TxOut")," from concrete ones,\nreducing many constraints."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3224"},"pull-3224")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"ShelleyGenesis")," is now parameterized by crypto instead of by era."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3170"},"pull-3170")," - We set the cabal-version to 3.0 in our projects."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3172"},"pull-3172")," - We removed the now useless ",(0,r.kt)("inlineCode",{parentName:"li"},"EncodeMint"),"/",(0,r.kt)("inlineCode",{parentName:"li"},"DecodeMint")," classes."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3225"},"pull-3225")," - We switch from ",(0,r.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/ormolu"},"ormolu")," to\n",(0,r.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/fourmolu"},"fourmolu"),".\nThe reason was to be able to finally have more diff friendly code!")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/565f686e.5a6ec3a7.js b/assets/js/565f686e.5a6ec3a7.js new file mode 100644 index 00000000000..dd298032c24 --- /dev/null +++ b/assets/js/565f686e.5a6ec3a7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3445],{18618:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/quarterly/tags/consensus","allTagsPath":"/cardano-updates/quarterly/tags","count":4}')}}]); \ No newline at end of file diff --git a/assets/js/5668eccd.20b5304f.js b/assets/js/5668eccd.20b5304f.js new file mode 100644 index 00000000000..cd599773496 --- /dev/null +++ b/assets/js/5668eccd.20b5304f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3918],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),d=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=d(a),c=n,m=s["".concat(u,".").concat(c)]||s[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var d=2;d{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-12-09-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-09-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-hydra.md",source:"@site/blog/2022-12-09-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-12-09T00:00:00.000Z",formattedDate:"December 9, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.62,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-12-09-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-12-09-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-12-09-ledger"}},u={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:d},s="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team has worked on completing to "Validate coordinated head protocol against formal model", this is a huge step to verify the implementation is secure. They also worked on implementing ',(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," related to bounded tx validity which is now under review. ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/obsidiansystems/hydra-pay"},"HydraPay")," project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/obsidiansystems/hydra-pay/issues?q=is%3Aissue"},"issues")," they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Document model based testing ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/194"},"#194")," & ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/641"},"#641")),(0,n.kt)("li",{parentName:"ul"},"Got ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21"),", reducing gaps between implementation and specification, under review."),(0,n.kt)("li",{parentName:"ul"},"Complete review on ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete first round of review on ",(0,n.kt)("inlineCode",{parentName:"li"},"HydraPay")," work ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/634"},"#634")),(0,n.kt)("li",{parentName:"ul"},"Meeting with ",(0,n.kt)("inlineCode",{parentName:"li"},"Director of CyberSecurity")," frio ",(0,n.kt)("inlineCode",{parentName:"li"},"IOG"),' to unblock "the RFP prepared for the external audit" ',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/606"},"#606")),(0,n.kt)("li",{parentName:"ul"},"Remove ",(0,n.kt)("inlineCode",{parentName:"li"},"vasil-dev")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"testnet")," from ",(0,n.kt)("inlineCode",{parentName:"li"},"smoke-test")," because they were not working ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/630"},"#630")),(0,n.kt)("li",{parentName:"ul"},"Fix flaky ",(0,n.kt)("inlineCode",{parentName:"li"},"plutus-merkle-tree")," test ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/642"},"#642")),(0,n.kt)("li",{parentName:"ul"},"Refactor ",(0,n.kt)("inlineCode",{parentName:"li"},"NetworkSpec")," to improve legilibility."),(0,n.kt)("li",{parentName:"ul"},"Fix benchmark cost for ",(0,n.kt)("inlineCode",{parentName:"li"},"abortTx")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/631"},"#631")),(0,n.kt)("li",{parentName:"ul"},"Adapt ",(0,n.kt)("inlineCode",{parentName:"li"},"nix.conf")," to the recent hydra-ci nix cache migration.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Get ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," accepted & close tx validity gap in our implementation."),(0,n.kt)("li",{parentName:"ul"},"Integrate the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial"),"."),(0,n.kt)("li",{parentName:"ul"},"Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec."),(0,n.kt)("li",{parentName:"ul"},"Get Cicero (new CI) working."),(0,n.kt)("li",{parentName:"ul"},"Use reference inputs to reduce the cost of the ",(0,n.kt)("inlineCode",{parentName:"li"},"commitTx"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5674f153.b4eb130b.js b/assets/js/5674f153.b4eb130b.js new file mode 100644 index 00000000000..64957b90440 --- /dev/null +++ b/assets/js/5674f153.b4eb130b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[14392],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),u=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(i.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),s=u(a),m=n,h=s["".concat(i,".").concat(m)]||s[m]||c[m]||o;return a?r.createElement(h,l(l({ref:t},d),{},{components:a})):r.createElement(h,l({ref:t},d))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p[s]="string"==typeof e?e:n,l[1]=p;for(var u=2;u{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>p,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-09-15-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-09-15-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-sre.md",source:"@site/blog/2023-09-15-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.055,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-09-15-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-15-network"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-09-14-db-sync"}},i={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3}],d={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet environment was updated to 8.3.0-pre."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"Cardano-parts")," now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/blob/main/flake/colmena.nix#L89-L108"},"here"),".")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/f3dcffb...c2c7680"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Adjust mainnet p2p relays to ~100%, with a legacy canary: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/commit/d3cce2585fae6a52ff5833373137af3cddbc6710"},"cardano-ops-commit"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Utilize content addressed binaries to significantly improve eval, build and devShell performance: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/8"},"cardano-parts-pull-8")),(0,n.kt)("li",{parentName:"ul"},"Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/10"},"cardano-parts-pull-10")),(0,n.kt)("li",{parentName:"ul"},"Fix warns thrown during some builds and devShell usage: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/11"},"cardano-parts-pull-11")),(0,n.kt)("li",{parentName:"ul"},"Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/12"},"cardano-parts-pull-12")),(0,n.kt)("li",{parentName:"ul"},"Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/13"},"cardano-parts-pull-13"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf/compare/9f9917c...7fc1b4c"},"cardano-perf-compare"))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Define preliminary cardano-world networks on cardano-playground: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/1"},"cardano-playground"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Rotate KES on preview and preprod, purge unused subnets, adjust explorer rate limits: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/compare/306ef6c...e9b2ed2"},"cardano-world-compare")),(0,n.kt)("li",{parentName:"ul"},"Update sanchonet network to 8.3.0: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/compare/master...sanchonet-updated"},"cardano-world-compare"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/56b3fab8.8ae61492.js b/assets/js/56b3fab8.8ae61492.js new file mode 100644 index 00000000000..34ed504f2e7 --- /dev/null +++ b/assets/js/56b3fab8.8ae61492.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36434],{71645:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/goedel/page/3","page":3,"postsPerPage":5,"totalPages":4,"totalCount":18,"previousPage":"/cardano-updates/tags/goedel/page/2","nextPage":"/cardano-updates/tags/goedel/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/56f35d85.c3eab92c.js b/assets/js/56f35d85.c3eab92c.js new file mode 100644 index 00000000000..30c216f51a7 --- /dev/null +++ b/assets/js/56f35d85.c3eab92c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[5485],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=p(r),h=n,m=d["".concat(u,".").concat(h)]||d[h]||c[h]||l;return r?a.createElement(m,o(o({ref:t},s),{},{components:r})):a.createElement(m,o({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=h;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-03-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-03-03-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-ledger.md",source:"@site/blog/2023-03-03-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.57,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-03-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-03-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-02-network"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway rules",id:"conway-rules",level:3},{value:"Constraint based generators",id:"constraint-based-generators",level:3},{value:"Preparing a release, now with proper versioning",id:"preparing-a-release-now-with-proper-versioning",level:3},{value:"Technical debt",id:"technical-debt",level:3}],s={toc:p},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We have focused the last two weeks on CIP-1694, integration of the last several months of ledger\nwork into consensus and node, and testing infrastrutcture that we will use in the conway ledger era."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-rules"},"Conway rules"),(0,n.kt)("p",null,"We made a major update to the conway era so that the implementation is now in sync with the spec\nwith respect to the ratification and enactment logic."),(0,n.kt)("p",null,"See the notes in ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3291"},"pull-3291")," for more details."),(0,n.kt)("h3",{id:"constraint-based-generators"},"Constraint based generators"),(0,n.kt)("p",null,"This week we hit a major milestone in our efforts to build out better property based testing\nsupport for the main ledger properties.\nThe new constraint based generators can now generate full ledger states with what is probably\nvery close to the real constraints (if anything, it is under constrained).\nNext we will work on generating a transaction in the context of a ledger state, which would allow\nus to actually start using these generators for real tests."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"),"."),(0,n.kt)("h3",{id:"preparing-a-release-now-with-proper-versioning"},"Preparing a release, now with proper versioning"),(0,n.kt)("p",null,"After quite some time, we are ready to release a version of ledger that will work with a new\nversion of consensus, using CHaPs."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3308"},"pull-3308"),"."),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We cleaned up the redeemer serialization code (to prevent future mistakes). See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3269"},"pull-3269"),"."),(0,n.kt)("li",{parentName:"ul"},"We added a note to the Alonzo spec, specifying that the transaction inputs are\nlexicographically ordered in the Plutus script context. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3306"},"pull-3306"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with the address deserialiazation\n(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway).\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3307"},"pull-3307"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with our nix build. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3311"},"pull-3311"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with our ",(0,n.kt)("inlineCode",{parentName:"li"},"NoThunks")," tests. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3310"},"pull-3310"),"."),(0,n.kt)("li",{parentName:"ul"},"We improved our nightly tests. See ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3316"},"pull-3316"),".")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/57008883.11bb08cb.js b/assets/js/57008883.11bb08cb.js new file mode 100644 index 00000000000..501b7a8280e --- /dev/null +++ b/assets/js/57008883.11bb08cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33399],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var r=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=p(a),m=o,f=u["".concat(s,".").concat(m)]||u[m]||c[m]||n;return a?r.createElement(f,l(l({ref:t},d),{},{components:a})):r.createElement(f,l({ref:t},d))}));function f(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,l=new Array(n);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:o,l[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>n,metadata:()=>i,toc:()=>p});var r=a(87462),o=(a(67294),a(3905));const n={title:"SRE Team Update",slug:"2023-11-24-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-11-24-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-24-sre.md",source:"@site/blog/2023-11-24-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-11-24T00:00:00.000Z",formattedDate:"November 24, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:3.115,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-11-24-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-24-hydra"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-22-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Offchain-metadata-tools",id:"offchain-metadata-tools",level:3}],d={toc:p},u="wrapper";function c(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,o.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"The cardano-node nixos service now supports SIGHUP p2p topology reloading when the ",(0,o.kt)("inlineCode",{parentName:"li"},"useSystemdReload")," option is enabled")),(0,o.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,o.kt)("h3",{id:"capkgs"},"Capkgs"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Update cardano-db-sync and offchain-metadata-tools package paths and/or references: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/994696f...3ce364f"},"capkgs-compare"))),(0,o.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5537"},"cardano-node-pull-5537"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Creates a useSystemdReload bool option for the cardano-node nixos service"),(0,o.kt)("li",{parentName:"ul"},"This will move the topology file(s) to ",(0,o.kt)("inlineCode",{parentName:"li"},"/etc/cardano-node/topology-$i.yaml")," and inject systemd reload hooks for p2p configured cardano-node instances"),(0,o.kt)("li",{parentName:"ul"},"Moving topology files to ",(0,o.kt)("inlineCode",{parentName:"li"},"/etc")," also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired")))),(0,o.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Adds a metadata server profile and a number of other features and improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/20"},"cardano-parts-pull-20"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Adds a new metadata-service profile"),(0,o.kt)("li",{parentName:"ul"},"Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile"),(0,o.kt)("li",{parentName:"ul"},"Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish"),(0,o.kt)("li",{parentName:"ul"},"Adds extra node list producers and public producers for cardano-node-topology profile"),(0,o.kt)("li",{parentName:"ul"},"Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch"),(0,o.kt)("li",{parentName:"ul"},"Adds select systemd metrics reporting to grafana-agent profile"),(0,o.kt)("li",{parentName:"ul"},"Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS"),(0,o.kt)("li",{parentName:"ul"},"Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it"),(0,o.kt)("li",{parentName:"ul"},"Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo"),(0,o.kt)("li",{parentName:"ul"},"Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation"),(0,o.kt)("li",{parentName:"ul"},"Adds support for grafana recording rules in the template files"),(0,o.kt)("li",{parentName:"ul"},"Improves cardano-group profile handling of producers with respect to multiple instance nodes"),(0,o.kt)("li",{parentName:"ul"},"Improves grafana-agent profile metrics handling for multi-instance cardano-node servers"),(0,o.kt)("li",{parentName:"ul"},"Improves smash service preStart handling while waiting for a node socket"),(0,o.kt)("li",{parentName:"ul"},"Updates Justfile for ERA_CMD demo support"),(0,o.kt)("li",{parentName:"ul"},"Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates"),(0,o.kt)("li",{parentName:"ul"},"Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile"),(0,o.kt)("li",{parentName:"ul"},"Defaults cardano-postgres profile psqlrc use to false")))),(0,o.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Adds a new testnet metadata server, cluster webserver, and other improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/6"},"cardano-playground-pull-6"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Adds a new metadata server"),(0,o.kt)("li",{parentName:"ul"},"Adds a new webserver for the cluster's static virtualhost needs"),(0,o.kt)("li",{parentName:"ul"},"Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo"),(0,o.kt)("li",{parentName:"ul"},"Adds systemd metrics monitoring to the cluster"),(0,o.kt)("li",{parentName:"ul"},"Resizes sanchonet machines to support the growing chain"),(0,o.kt)("li",{parentName:"ul"},"Completes migration of preprod from world"),(0,o.kt)("li",{parentName:"ul"},"Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes"),(0,o.kt)("li",{parentName:"ul"},"Updates Justfile for ERA_CMD demo support"),(0,o.kt)("li",{parentName:"ul"},"Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile"),(0,o.kt)("li",{parentName:"ul"},"Migrates book static code to playground from world, with refactor, cleanup and updates"),(0,o.kt)("li",{parentName:"ul"},"Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules")))),(0,o.kt)("h3",{id:"offchain-metadata-tools"},"Offchain-metadata-tools"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Adds db password option with obfuscation plus misc improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/offchain-metadata-tools/pull/61"},"offchain-metadata-tools-pull-61"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services"),(0,o.kt)("li",{parentName:"ul"},"Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile"),(0,o.kt)("li",{parentName:"ul"},"Moves from std use in the nix flake to standard flake schema"),(0,o.kt)("li",{parentName:"ul"},"Fixes hydra CI failures"),(0,o.kt)("li",{parentName:"ul"},"Builds update-docs in hydra to avoid long local build times"),(0,o.kt)("li",{parentName:"ul"},"Removes deprecated tullia"),(0,o.kt)("li",{parentName:"ul"},"Removes deprecated check-hydra from pkgs"),(0,o.kt)("li",{parentName:"ul"},"Removes deprecated bors files and references")))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5733c82d.3d490188.js b/assets/js/5733c82d.3d490188.js new file mode 100644 index 00000000000..b33267fc0aa --- /dev/null +++ b/assets/js/5733c82d.3d490188.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94184],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),m=n,h=c["".concat(u,".").concat(m)]||c[m]||s[m]||o;return a?r.createElement(h,l(l({ref:t},d),{},{components:a})):r.createElement(h,l({ref:t},d))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-09-16-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-09-16-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-16-ledger.md",source:"@site/blog/2022-09-16-ledger.md",title:"Ledger Team Update",description:"Ledger Update",date:"2022-09-16T00:00:00.000Z",formattedDate:"September 16, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.625,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-09-16-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-09-19-db-sync"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-01-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"Ledger Update",id:"ledger-update",level:2}],d={toc:p},c="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"ledger-update"},"Ledger Update"),(0,n.kt)("p",null,"We have been focused nearly entirely on addressing technical debt."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We introduced more consistent naming across eras, this time for the auxiliary data.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3032"},"3032"),"."),(0,n.kt)("li",{parentName:"ul"},"We made clear how the ",(0,n.kt)("inlineCode",{parentName:"li"},"consumed")," functions differs between eras (which was a previous source of\nconfusion), and added some related support to the fledgling ledger API.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3016"},"3016"),"."),(0,n.kt)("li",{parentName:"ul"},"We added clarity and organizational consistency to the main ledger era type synonyms.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3017"},"3017"),"."),(0,n.kt)("li",{parentName:"ul"},"We removed code duplication related to the input data hashes.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3018"},"3018"),"."),(0,n.kt)("li",{parentName:"ul"},"We split up a large module into smaller components. The large module was actually causing our\nCI to time out.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3020"},"3020"),"."),(0,n.kt)("li",{parentName:"ul"},"We cleaned up stale information in our cabal files, and upgraded cabal 3.8.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3023"},"3023"),",\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3031"},"3031"),",\nand ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3028"},"3028"),"."),(0,n.kt)("li",{parentName:"ul"},"We made consistent, standalone ",(0,n.kt)("inlineCode",{parentName:"li"},"TxOut")," (transaction output) modules for every era.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3024"},"3024"),"."),(0,n.kt)("li",{parentName:"ul"},"We brought consistency to a maddening inconsistent use of type variables indicating the specific\nchoice of cryptographic primitives. In particular, all uses of ",(0,n.kt)("inlineCode",{parentName:"li"},"crypto")," have been renamed to ",(0,n.kt)("inlineCode",{parentName:"li"},"c"),".\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3027"},"3027"),"."),(0,n.kt)("li",{parentName:"ul"},"We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric\ntypes that will compose better in the future and which simplifies the constraints.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3029"},"3029"),"."),(0,n.kt)("li",{parentName:"ul"},"We consolidated some existing fragmented logic regarding how we gather the scripts needed for a\ngiven transaction. This is a much needed cleanup to prevent future mistakes.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3019"},"3019"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with our generators that was causing a fair number of our property tests to\nfail in CI.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3039"},"3039"),"."),(0,n.kt)("li",{parentName:"ul"},"We have started the work to update Plutus. This will bring support for SECP in the next major\nprotocol version, and also address a\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2902"},"problem"),"\nthat we current have evolving the cost models.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3030"},"3030"),"."),(0,n.kt)("li",{parentName:"ul"},"We addressed a small issue that came up when integrating the conway era downstream, namely\nthe lack of some serialization instances.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3022"},"3022"),".")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/57700755.3e57e6d9.js b/assets/js/57700755.3e57e6d9.js new file mode 100644 index 00000000000..fb68e3d22e2 --- /dev/null +++ b/assets/js/57700755.3e57e6d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[13276],{15745:a=>{a.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/5778ca6b.8bc37115.js b/assets/js/5778ca6b.8bc37115.js new file mode 100644 index 00000000000..1666b8bc014 --- /dev/null +++ b/assets/js/5778ca6b.8bc37115.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51727],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=p(a),m=n,f=s["".concat(u,".").concat(m)]||s[m]||d[m]||i;return a?r.createElement(f,o(o({ref:t},c),{},{components:a})):r.createElement(f,o({ref:t},c))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2022-10-07-node-cli-api",authors:"Jimbo4350",tags:["cli-api-quarterly"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/quarterly/2022-10-07-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-07-nod-api-cli.md",source:"@site/quarterly/2022-11-07-nod-api-cli.md",title:"Node API & CLI Team Update",description:"Node-Api-Cli Quarterly Update",date:"2022-11-07T00:00:00.000Z",formattedDate:"November 7, 2022",tags:[{label:"cli-api-quarterly",permalink:"/cardano-updates/quarterly/tags/cli-api-quarterly"}],readingTime:1.355,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-10-07-node-cli-api",authors:"Jimbo4350",tags:["cli-api-quarterly"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2022-11-07-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"Node-Api-Cli Quarterly Update",id:"node-api-cli-quarterly-update",level:2},{value:"2022-09 - 2022-11-04",id:"2022-09---2022-11-04",level:2}],c={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"node-api-cli-quarterly-update"},"Node-Api-Cli Quarterly Update"),(0,n.kt)("h2",{id:"2022-09---2022-11-04"},"2022-09 - 2022-11-04"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0"),(0,n.kt)("li",{parentName:"ul"},"Major clean up of stale iusses + PRs."),(0,n.kt)("li",{parentName:"ul"},"Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs"),(0,n.kt)("li",{parentName:"ul"},"cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node."),(0,n.kt)("li",{parentName:"ul"},"cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation."),(0,n.kt)("li",{parentName:"ul"},"General documentation updates and improvements"),(0,n.kt)("li",{parentName:"ul"},"Addition of tx-mempool command which allows users to:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Query the node about the current mempool's capacity and sizes"),(0,n.kt)("li",{parentName:"ul"},"Request the next transaction from the mempool's current list"),(0,n.kt)("li",{parentName:"ul"},"Query if a particular transaction exists in the mempool"))),(0,n.kt)("li",{parentName:"ul"},"Initial refactoring of cardano-testnet")),(0,n.kt)("p",null,"Next quarter"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-api",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately."))),(0,n.kt)("li",{parentName:"ul"},"cardano-testnet",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Working with Marc Fontaine to create an easy to use executable to deploy testnets locally - ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/4598"},"https://github.com/input-output-hk/cardano-node/issues/4598")))),(0,n.kt)("li",{parentName:"ul"},"Serenity",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above."))),(0,n.kt)("li",{parentName:"ul"},"General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/578d3f15.ece3e377.js b/assets/js/578d3f15.ece3e377.js new file mode 100644 index 00000000000..1e96fe86d8b --- /dev/null +++ b/assets/js/578d3f15.ece3e377.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26614],{7571:a=>{a.exports=JSON.parse('{"label":"goedel","permalink":"/cardano-updates/tags/goedel","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/57e0ab98.71940d4e.js b/assets/js/57e0ab98.71940d4e.js new file mode 100644 index 00000000000..620cf3b07ce --- /dev/null +++ b/assets/js/57e0ab98.71940d4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20779],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>k});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),l=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),m=l(o),c=r,k=m["".concat(s,".").concat(c)]||m[c]||h[c]||a;return o?n.createElement(k,i(i({ref:t},u),{},{components:o})):n.createElement(k,i({ref:t},u))}));function k(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=c;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[m]="string"==typeof e?e:r,i[1]=p;for(var l=2;l{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>p,toc:()=>l});var n=o(87462),r=(o(67294),o(3905));const a={title:"Network Q2 2023 Update",slug:"2023-Q2-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/quarterly/2023-Q2-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-network.md",source:"@site/quarterly/2023-Q2-network.md",title:"Network Q2 2023 Update",description:"2023-04 - 2023-06",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:5.145,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Q2 2023 Update",slug:"2023-Q2-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-consensus"},nextItem:{title:"SRE Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-sre"}},s={authorsImageUrls:[void 0]},l=[{value:"2023-04 - 2023-06",id:"2023-04---2023-06",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Eclipse Evasion",id:"eclipse-evasion",level:4},{value:"Ecosystem P2P Deployment Progress",id:"ecosystem-p2p-deployment-progress",level:4},{value:"Peer Sharing",id:"peer-sharing",level:4},{value:"Diffusion (P2P)",id:"diffusion-p2p",level:4},{value:"Other Improvements & Developments",id:"other-improvements--developments",level:3},{value:"CDDL",id:"cddl",level:4},{value:"Cardano Ping",id:"cardano-ping",level:4},{value:"IOSim",id:"iosim",level:4},{value:"Typed Protocols",id:"typed-protocols",level:4},{value:"Cardano Client",id:"cardano-client",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"CI improvements",id:"ci-improvements",level:4},{value:"GHC 9.4 & 9.6",id:"ghc-94--96",level:4},{value:"Next steps",id:"next-steps",level:3}],u={toc:l},m="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-04---2023-06"},"2023-04 - 2023-06"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,r.kt)("p",null,"We finalised the design of eclipse evasion and implemented its mechanism which\nrelays on connectivity to ",(0,r.kt)("em",{parentName:"p"},"big ledger peers"),". ",(0,r.kt)("em",{parentName:"p"},"Big ledger peers")," are the\nlargest ledger peers which accumulate 90% of stake (currently there are less\nthan 1000 of them). The outbound governor has new targets for ",(0,r.kt)("em",{parentName:"p"},"known"),",\n",(0,r.kt)("em",{parentName:"p"},"established")," and ",(0,r.kt)("em",{parentName:"p"},"active")," big ledger peers which work in a similar way that\nsuch targets work for ledger peers. The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4662"},"ouroboros-network#4662")," PR is\ncurrently in review."),(0,r.kt)("p",null,"As part of this work we also identified a bug which would prevent a node to\nconnect to itself. Such connections are not easily detectable and are expected\nto be dropped by the churn mechanism, nonetheless they should not be buggy.\nThe failure was discovered thanks to our e2e simulation of diffusion using\n",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim")," & property based testing."),(0,r.kt)("p",null,"The PR also refactors the heart of the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," interface reducing\ntechnical debt that would otherwise accumulate."),(0,r.kt)("p",null,"We also identified a possible improvement in the churn mechanism, which will be\nimplemented in Q3. Churn needs to await for peers to terminate, we can\nimprove the synchronisation. ","[ouroboros-network#4617]"),(0,r.kt)("h4",{id:"ecosystem-p2p-deployment-progress"},"Ecosystem P2P Deployment Progress"),(0,r.kt)("p",null,"We reached ",(0,r.kt)("strong",{parentName:"p"},"50% of stake in hands of SPOs who run at least on P2P relay"),". Now\nalso Emurgo and CF are running some P2P relays. Also 20% of IOG relays are\nrunning in P2P mode."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"P2P Progress",src:o(62597).Z,width:"1024",height:"768"})),(0,r.kt)("h4",{id:"peer-sharing"},"Peer Sharing"),(0,r.kt)("p",null,"We implemented ",(0,r.kt)("em",{parentName:"p"},"bootstrapping for peer sharing")," (also known as light peer\nsharing). New downstream (inbound) peers are now added to the ",(0,r.kt)("em",{parentName:"p"},"known peers")," of\nthe ",(0,r.kt)("em",{parentName:"p"},"outbound governor"),". Together with peer sharing this allows for non\nregistered relays to propagate through the network. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3596"},"ouroboros-network#3596")),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Please note that peer sharing is disabled by default and is not considered safe\nuntil Bootstrap Peers (see below) or Genesis is implemented.")),(0,r.kt)("h4",{id:"diffusion-p2p"},"Diffusion (P2P)"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We designed a feature which will reduce the load on IOG relays (in future\nalso run by CF & Emurgo). The feature consists of two parts. A new source\nof peers called ",(0,r.kt)("em",{parentName:"p"},"bootstrap peers")," (obtained from via an https request), the\nability to switch from bootstrap peers to ledger peers if the node is synced\n(we are collaborating with the consensus team on the interface ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/blob/fbb8c8ee97517809dec0d0c8ae3fae9b8d272caf/docs/website/docs/bootstrap-peers-IER.md"},"Bootstrap\nPeers IER"),"). This feature will be completed in Q3.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"ouroboros-network#4530"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We published a blog post about ",(0,r.kt)("a",{parentName:"p",href:"https://engineering.iog.io/2023-06-28-p2p"},"P2P design & implementation"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4559"},"ouroboros-network#4559"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We merged changes which allow the consensus layer to start / stop block\nforging thread. This will allow to deploy P2P block producing nodes which\nserve as a live backup node. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/140"},"ouroboros-consensus#140"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed a few bugs in local root peers DNS resolution service:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4583"},"ouroboros-network#4583"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4571"},"ouroboros-network#4571"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We limited concurrency of DNS name resolutions: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4596"},"ouroboros-network#4596"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Galois Inc implemented query option for Handshake: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"ouroboros-network#4256"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed handshake query timeout: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4608"},"ouroboros-network#4608"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented warm valency for local root peers. This can help when using\nDNS names in local root peers which resolve to many IP addresses. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4575"},"ouroboros-network#4575"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We merged handshake changes which allow query protocol versions. Thanks to\nJames Parker from Galois Inc.: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"ouroboros-network#4256"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30/"},"cardano-cli#30"),"."))),(0,r.kt)("h3",{id:"other-improvements--developments"},"Other Improvements & Developments"),(0,r.kt)("h4",{id:"cddl"},"CDDL"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We added ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-node")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," CDDL specs / tests for encoding\nof ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionData")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToClientVersionData"),". ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We clarified an inconsistency between CDDL spec and implementation which is\nhighly polymorphic. We designed and implemented a fix for ",(0,r.kt)("inlineCode",{parentName:"p"},"tx-submission"),"\nand ",(0,r.kt)("inlineCode",{parentName:"p"},"local-tx-submission")," mini-protocols. Specs for other mini-protocols will\nbe improved at a later stage. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4580"},"ouroboros-network#4580")))),(0,r.kt)("h4",{id:"cardano-ping"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/ouroboros-network/blob/master/cardano-ping"},"Cardano Ping")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"cardano-ping")," command was deprecated in favour of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," (the\ntransition was done by the ",(0,r.kt)("inlineCode",{parentName:"p"},"node")," team).")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Support for ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol using Unix sockets.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4601"},"ouroboros-network#4601"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Support for ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToNodeV_11")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToClientV_16"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4587"},"ouroboros-network#4587"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," is now using ",(0,r.kt)("em",{parentName:"p"},"ISO8601")," format for timestamps. Formatting of\nmessages was improved. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4593"},"ouroboros-network#4593"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," has a new ",(0,r.kt)("inlineCode",{parentName:"p"},"--query-versions")," flag which allows to query\nsupported versions by the remote node. This is supported by\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-8.1.0"),". ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4589"},"ouroboros-network#4589"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"cardano-node#5313"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30/"},"cardano-cli#30")))),(0,r.kt)("h4",{id:"iosim"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/io-sim"},"IOSim")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed timeouts & delays in ",(0,r.kt)("inlineCode",{parentName:"p"},"io-classes")," in a series of PRs: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/81"},"io-sim#81"),",\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/82"},"io-sim#82"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/86"},"io-sim#86"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/87"},"io-sim#87"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We released ",(0,r.kt)("inlineCode",{parentName:"p"},"strict-stm-1.1.0.1")," on Hackage which fixed a bug in package\ndescription file: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/101"},"io-sim#101"),"."))),(0,r.kt)("h4",{id:"typed-protocols"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/typed-protocols"},"Typed Protocols")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We published haddocks of ",(0,r.kt)("inlineCode",{parentName:"li"},"typed-protocols")," at\n",(0,r.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/typed-protocols"},"https://input-output-hk.github.io/typed-protocols"))),(0,r.kt)("h4",{id:"cardano-client"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/ouroboros-network/blob/master/cardano-client"},"Cardano Client")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We fixed a bug in ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-client-0.1.0.2")," release which results in clients\n(e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"db-sync"),") negotiate an experimental protocol version.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"After the split between consensus & network, we made ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-client"),"\nindependent of ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-diffusion"),": ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4526"},"ouroboros-network#4526"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We wrap all exceptions in ",(0,r.kt)("inlineCode",{parentName:"p"},"DiffusionError"),": ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4537"},"ouroboros-network#4537"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5356"},"cardano-node#5356"),"."))),(0,r.kt)("h4",{id:"ci-improvements"},"CI improvements"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We switched to use GitHub merge queues in ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols")," repositories; ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/30"},"typed-protocols#30"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4546"},"ouroboros-network#4546"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We cleaned & updated scripts which run on CI.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented a script to verify & release packages on CHaP; ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4542"},"ouroboros-network#4542"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4573"},"ouroboros-network#4573"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented a new CI script and cleaned existing ones:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4572"},"ouroboros-network#4572"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We don't install cryptographic libraries on CI anymore as none of our\npackages requires them; ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4539"},"ouroboros-network#4539"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Improved caching of dependencies: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4553"},"ouroboros-network#4553"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We made it possible to trigger building haddock manually:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4549"},"ouroboros-network#4549"),"."))),(0,r.kt)("h4",{id:"ghc-94--96"},"GHC 9.4 & 9.6"),(0,r.kt)("p",null,"We made all repositories under our control compile with ",(0,r.kt)("inlineCode",{parentName:"p"},"ghc-9.4")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"ghc-9.6"),"\nwhich includes ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"Win32-network"),"."),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("p",null,"We will continue towards our ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/39/views/30"},"aspirational roadmap"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We will continue reviewing eclipse evasion."),(0,r.kt)("li",{parentName:"ul"},"As ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/140"},"ouroboros-consensus#140")," was merged, we are making progress towards\nreleasing P2P on block production nodes. We hope to analyse performance\nregression on such nodes observed on the benchmarking cluster. ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/orgs/input-output-hk/projects/39/views/30?pane=issue&itemId=6875505"},"roadmap-3887")),(0,r.kt)("li",{parentName:"ul"},"We are also focused on ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/orgs/input-output-hk/projects/39/views/30?pane=issue&itemId=8920085"},"roadmap-3969"),". Note that it was expanded in Q2.")))}h.isMDXComponent=!0},62597:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/2023-07-06-p2p-progress-194a909569eebb016b1f24fb8941e2cc.png"}}]); \ No newline at end of file diff --git a/assets/js/5889a844.62933b70.js b/assets/js/5889a844.62933b70.js new file mode 100644 index 00000000000..0638f787a9d --- /dev/null +++ b/assets/js/5889a844.62933b70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68184],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=p(a),h=n,m=c["".concat(s,".").concat(h)]||c[h]||u[h]||o;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-10-28-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-28-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-hydra.md",source:"@site/blog/2022-10-28-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.795,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-10-28-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-11-01-db-sync"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-10-28-network"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},c="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team completed several user experience improvements to the\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-tui")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node"),", and delivered a first version of persisted head\nstates by publishing release version\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},(0,n.kt)("inlineCode",{parentName:"a"},"0.8.0")),".\nBesides this, they met with researchers on topic of the HeadV1 specification and\nkicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the UX improvements on the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tui")),(0,n.kt)("li",{parentName:"ul"},"Released version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},(0,n.kt)("inlineCode",{parentName:"a"},"0.8.0")),", which delivers a first version of persisted head states"),(0,n.kt)("li",{parentName:"ul"},"Met with researchers on the HeadV1 specification"),(0,n.kt)("li",{parentName:"ul"},"Started work on the RFP for our external audit")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete ADR18 implementation and get it merged"),(0,n.kt)("li",{parentName:"ul"},"Start work on event-sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Have a first plutus script gap closed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/588e4efd.70f41653.js b/assets/js/588e4efd.70f41653.js new file mode 100644 index 00000000000..cc4fd8e10e9 --- /dev/null +++ b/assets/js/588e4efd.70f41653.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[50097],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>k});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),c=u(r),d=o,k=c["".concat(p,".").concat(d)]||c[d]||m[d]||a;return r?n.createElement(k,l(l({ref:t},s),{},{components:r})):n.createElement(k,l({ref:t},s))}));function k(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:o,l[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var n=r(87462),o=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-05-26-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-26-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-network.md",source:"@site/blog/2023-05-26-network.md",title:"Network Team Update",description:"High level summary",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.515,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-05-26-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-26-ledger"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-24-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed summary",id:"detailed-summary",level:2}],s={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"We continued working on ",(0,o.kt)("inlineCode",{parentName:"p"},"eclipse-evasion"),". We also analysed and fixed a bug\nwhen using DNS names in local root peers. We continued working on engineering\nblog post about P2P. We released a new version of packages for\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node-8.1.0")," release."),(0,o.kt)("p",null,"We improved our CI, removed obsolete scripts add extra validation which checks\nif ",(0,o.kt)("inlineCode",{parentName:"p"},"CHANGELOG.md")," files were updated."),(0,o.kt)("p",null,"We also improved release scripts."),(0,o.kt)("h2",{id:"detailed-summary"},"Detailed summary"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Eclipse evasion: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"#4462")),(0,o.kt)("li",{parentName:"ul"},"Local root peers bug fix: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4559"},"#4559")),(0,o.kt)("li",{parentName:"ul"},"Release to CHaP: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4573"},"#4573")),(0,o.kt)("li",{parentName:"ul"},"CI improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4572"},"#4572")),(0,o.kt)("li",{parentName:"ul"},"Release script improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4573"},"#4573"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/59a262d5.9dd70cc0.js b/assets/js/59a262d5.9dd70cc0.js new file mode 100644 index 00000000000..0e874f8a434 --- /dev/null +++ b/assets/js/59a262d5.9dd70cc0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42198],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},c),{},{components:n})):r.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-05-17-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-05-17-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-consensus.md",source:"@site/blog/2023-05-17-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-05-17T00:00:00.000Z",formattedDate:"May 17, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.285,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-05-17-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-19-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-17-mithril"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the ","[Genesis][#genesis]"," section for more details."),(0,a.kt)("p",null,"Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our ",(0,a.kt)("inlineCode",{parentName:"p"},"main")," branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain."),(0,a.kt)("p",null,"We improved our tooling by releasing an ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/68"},"immutable DB server"),", which can be used for testing and benchmarking purposes, and a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/70"},(0,a.kt)("inlineCode",{parentName:"a"},"db-truncater"))," program, which can be used in disaster recovery and benchmarking scenarios."),(0,a.kt)("h2",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"The consensus team working on Genesis:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Improved the genesis selection rule as a result of our interaction with IO Research."),(0,a.kt)("li",{parentName:"ul"},"Studied how the hard-fork combinator handles forecasting at era transitions, and ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/89"},"improved our documentation"),"."),(0,a.kt)("li",{parentName:"ul"},"Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP."),(0,a.kt)("li",{parentName:"ul"},"Elaborated concrete proposal for the Genesis State Machine."),(0,a.kt)("li",{parentName:"ul"},"Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).")),(0,a.kt)("p",null,"The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5a843cd2.63c9493e.js b/assets/js/5a843cd2.63c9493e.js new file mode 100644 index 00000000000..6862b0b25d6 --- /dev/null +++ b/assets/js/5a843cd2.63c9493e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[37221],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>d});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),u=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(i),c=r,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||n;return i?a.createElement(d,o(o({ref:t},s),{},{components:i})):a.createElement(d,o({ref:t},s))}));function d(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-07-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-07-27-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-27-mithril.md",source:"@site/blog/2023-07-27-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-07-27T00:00:00.000Z",formattedDate:"July 27, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.715,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-07-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-28-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-26-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team launched ",(0,r.kt)("strong",{parentName:"p"},"Mithril protocol\u2019s mainnet beta"),": the ",(0,r.kt)("inlineCode",{parentName:"p"},"release-mainnet")," network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch. "),(0,r.kt)("p",null,"They have released a new distribution ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2329.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2329.0")),", which is running on the ",(0,r.kt)("inlineCode",{parentName:"p"},"release-mainnet")," network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator."),(0,r.kt)("p",null,"Finally, they have worked on enhancing the documentation for ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/doc/manual/getting-started/SPO-on-boarding-guide"},"onboarding SPOs")," and setting up a ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/doc/manual/getting-started/run-signer-node"},"Mithril signer"),", and fixing installation bugs of the binary artifacts produced in the CI."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Created the dev blog post ",(0,r.kt)("a",{parentName:"li",href:"https://mithril.network/doc/dev-blog/2023/07/21/mainnet-beta-launch"},"Mithril Protocol\u2019s Mainnet Beta Launch")),(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2329.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2329.0"))),(0,r.kt)("li",{parentName:"ul"},"Closed the epic that prepares the Mithril infrastructure for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Deploy 'mainnet' infrastructure")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/988"},"#988")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Handle Secrets management")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/989"},"#989")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,r.kt)("inlineCode",{parentName:"li"},"Release 'mainnet' Mithril network")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/918"},"#918"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Prepare SPO on-boarding guide")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1049"},"#1049")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,r.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,r.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance the configuration of Mithril relay")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1080"},"#1080")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Remove legacy store adapters from aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1053"},"#1053")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add a 'sign' sub-command to 'genesis' command in aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1081"},"#1081")))),(0,r.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Refactor (de)serialization of crypto entities")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/668"},"#668")))),(0,r.kt)("li",{parentName:"ul"},"Worked on documentation:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance 'Run a Mithril Signer node (SPO)' guide")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1055"},"#1055")))),(0,r.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Shared library error in CI binaries")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1073"},"#1073")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Debian package does not install cleanly on older ubuntu versions")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/834"},"#834")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Aggregator panics with new (de)serialization of 'ProtocolVerificationKey'")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1083"},"#1083"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5af0f4f9.98e85c8f.js b/assets/js/5af0f4f9.98e85c8f.js new file mode 100644 index 00000000000..8f03976b7c1 --- /dev/null +++ b/assets/js/5af0f4f9.98e85c8f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16165],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,h=d["".concat(i,".").concat(m)]||d[m]||c[m]||o;return a?r.createElement(h,l(l({ref:t},u),{},{components:a})):r.createElement(h,l({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p[d]="string"==typeof e?e:n,l[1]=p;for(var s=2;s{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>p,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-09-01-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-09-01-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-sre.md",source:"@site/blog/2023-09-01-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.075,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-09-01-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-01-network"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-29-node-cli-api"}},i={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Sanchonet-demo",id:"sanchonet-demo",level:3}],u={toc:s},d="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes"),(0,n.kt)("li",{parentName:"ul"},"Work on a new ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs"},"capkgs"),' repository started -- "Content Addressed Packages"',(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output"),(0,n.kt)("li",{parentName:"ul"},"These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do"),(0,n.kt)("li",{parentName:"ul"},"Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers")))),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Content addressed packages -- new repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs"},"capkgs"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/5a0eabe...03e8e42"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Flake devShell module improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/4"},"cardano-parts-pull-4")),(0,n.kt)("li",{parentName:"ul"},"Cardano-world entrypoints migrated to flake parts module: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/5"},"cardano-parts-pull-5")),(0,n.kt)("li",{parentName:"ul"},"Cardano-world jobs migrated to flake parts module: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/6"},"cardano-parts-pull-6")),(0,n.kt)("li",{parentName:"ul"},"Drep delegation fixups: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/7"},"cardano-parts-pull-7")),(0,n.kt)("li",{parentName:"ul"},"Utilize content addressed binaries, WIP: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/8"},"cardano-parts-pull-8")),(0,n.kt)("li",{parentName:"ul"},"Cardano-node module preparation branch, WIP: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/compare/capkgs...node-module"},"cardano-parts-compare"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Availability zone pinning and explorer mods: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf/compare/d3a8644...9f9917c"},"cardano-perf-compare"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Remove performance nodes for migration to cardano-perf: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/306ef6c6dd6c09d9b90b9768f2b84a1d05cded26"},"cardano-world-commit"))),(0,n.kt)("h3",{id:"sanchonet-demo"},"Sanchonet-demo"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet demonstration repository: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo"},"sanchonet-demo"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5c5c653f.17cac15c.js b/assets/js/5c5c653f.17cac15c.js new file mode 100644 index 00000000000..a99b973a401 --- /dev/null +++ b/assets/js/5c5c653f.17cac15c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[34828],{53028:a=>{a.exports=JSON.parse('{"label":"sre","permalink":"/cardano-updates/tags/sre","allTagsPath":"/cardano-updates/tags","count":15}')}}]); \ No newline at end of file diff --git a/assets/js/5c868d36.01487d90.js b/assets/js/5c868d36.01487d90.js new file mode 100644 index 00000000000..ea6c0979956 --- /dev/null +++ b/assets/js/5c868d36.01487d90.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15589],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),u=c(a),m=n,g=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return a?r.createElement(g,i(i({ref:t},s),{},{components:a})):r.createElement(g,i({ref:t},s))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[u]="string"==typeof e?e:n,i[1]=p;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>p,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={sidebar_position:1},i="Create a Page",p={unversionedId:"tutorial-basics/create-a-page",id:"tutorial-basics/create-a-page",title:"Create a Page",description:"Add Markdown or React files to src/pages to create a standalone page:",source:"@site/docs/tutorial-basics/create-a-page.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-page",permalink:"/cardano-updates/docs/tutorial-basics/create-a-page",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"defaultSidebar",previous:{title:"Tutorial - Basics",permalink:"/cardano-updates/docs/category/tutorial---basics"},next:{title:"Create a Document",permalink:"/cardano-updates/docs/tutorial-basics/create-a-document"}},l={},c=[{value:"Create your first React Page",id:"create-your-first-react-page",level:2},{value:"Create your first Markdown Page",id:"create-your-first-markdown-page",level:2}],s={toc:c},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"create-a-page"},"Create a Page"),(0,n.kt)("p",null,"Add ",(0,n.kt)("strong",{parentName:"p"},"Markdown or React")," files to ",(0,n.kt)("inlineCode",{parentName:"p"},"src/pages")," to create a ",(0,n.kt)("strong",{parentName:"p"},"standalone page"),":"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"src/pages/index.js")," \u2192 ",(0,n.kt)("inlineCode",{parentName:"li"},"localhost:3000/")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"src/pages/foo.md")," \u2192 ",(0,n.kt)("inlineCode",{parentName:"li"},"localhost:3000/foo")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"src/pages/foo/bar.js")," \u2192 ",(0,n.kt)("inlineCode",{parentName:"li"},"localhost:3000/foo/bar"))),(0,n.kt)("h2",{id:"create-your-first-react-page"},"Create your first React Page"),(0,n.kt)("p",null,"Create a file at ",(0,n.kt)("inlineCode",{parentName:"p"},"src/pages/my-react-page.js"),":"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-jsx",metastring:'title="src/pages/my-react-page.js"',title:'"src/pages/my-react-page.js"'},"import React from 'react';\nimport Layout from '@theme/Layout';\n\nexport default function MyReactPage() {\n return (\n \n

My React page

\n

This is a React page

\n
\n );\n}\n")),(0,n.kt)("p",null,"A new page is now available at ",(0,n.kt)("a",{parentName:"p",href:"http://localhost:3000/my-react-page"},"http://localhost:3000/my-react-page"),"."),(0,n.kt)("h2",{id:"create-your-first-markdown-page"},"Create your first Markdown Page"),(0,n.kt)("p",null,"Create a file at ",(0,n.kt)("inlineCode",{parentName:"p"},"src/pages/my-markdown-page.md"),":"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-mdx",metastring:'title="src/pages/my-markdown-page.md"',title:'"src/pages/my-markdown-page.md"'},"# My Markdown page\n\nThis is a Markdown page\n")),(0,n.kt)("p",null,"A new page is now available at ",(0,n.kt)("a",{parentName:"p",href:"http://localhost:3000/my-markdown-page"},"http://localhost:3000/my-markdown-page"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5c8fca76.d1a16dc0.js b/assets/js/5c8fca76.d1a16dc0.js new file mode 100644 index 00000000000..fcea63134dd --- /dev/null +++ b/assets/js/5c8fca76.d1a16dc0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[44003],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=s(a),d=n,g=c["".concat(p,".").concat(d)]||c[d]||m[d]||o;return a?r.createElement(g,l(l({ref:t},u),{},{components:a})):r.createElement(g,l({ref:t},u))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-10-27-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-10-27-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-sre.md",source:"@site/blog/2023-10-27-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-10-27T00:00:00.000Z",formattedDate:"October 27, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.405,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-10-27-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-27-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-25-mithril"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3}],u={toc:s},c="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground")," stack")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Adds offchain-metadata-tools, dbsync sanchonet updates: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/b197e22...b1f1cbd"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"General package updates, modules improvements and template recipes to support network migration from world to playground ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/17"},"cardano-parts-pull-17"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Bumps cardano-db-sync-ng to sancho-2-0-0 tag"),(0,n.kt)("li",{parentName:"ul"},"Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play"),(0,n.kt)("li",{parentName:"ul"},"Adds more machine system bins and devShell bins for scripting and debug purposes"),(0,n.kt)("li",{parentName:"ul"},"Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module"),(0,n.kt)("li",{parentName:"ul"},"Adds profile-cardano-node-topology module for a simplified interface to most common topology needs"),(0,n.kt)("li",{parentName:"ul"},"Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs"),(0,n.kt)("li",{parentName:"ul"},"Adds a topology function to filter self from group machines with an allowList for matching infixes"),(0,n.kt)("li",{parentName:"ul"},"Adds metadata-server and related offchain-metadata-tools bins from capkgs"),(0,n.kt)("li",{parentName:"ul"},"Updates justfile template with:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"a new query-all recipe for getting status of multiple concurrent running environments"),(0,n.kt)("li",{parentName:"ul"},"a new set-default-cardano-env recipe for fast switching between environments"),(0,n.kt)("li",{parentName:"ul"},"a new start-demo recipe for forking a custom env into conway"),(0,n.kt)("li",{parentName:"ul"},"a new start-node recipe for generic environment start"),(0,n.kt)("li",{parentName:"ul"},"a new stop-node recipe for generic environment stop"),(0,n.kt)("li",{parentName:"ul"},"updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions"),(0,n.kt)("li",{parentName:"ul"},"updated query-tip recipe to a generic query tip compatible with each environment")))))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migrates sanchonet from world, prepares further migration and support automation: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/4"},"cardano-playground-pull-4"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5cc32405.fd1def08.js b/assets/js/5cc32405.fd1def08.js new file mode 100644 index 00000000000..defde2dd8fe --- /dev/null +++ b/assets/js/5cc32405.fd1def08.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65562],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=p(r),h=n,m=d["".concat(u,".").concat(h)]||d[h]||c[h]||o;return r?a.createElement(m,i(i({ref:t},s),{},{components:r})):a.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Hydra Team Update",slug:"2023-10-13-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-10-13-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-hydra.md",source:"@site/blog/2023-10-13-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-13T00:00:00.000Z",formattedDate:"October 13, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.745,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-13-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-15-network"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-10-13-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity."),(0,n.kt)("p",null,"They also completed the exploration of potentially moving the Plutus validator scripts to Aiken."),(0,n.kt)("p",null,"Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Network Resilience Persistence (#1101)","[https://github.com/input-output-hk/hydra/pull/1101]","."),(0,n.kt)("li",{parentName:"ul"},"Upgrade brick on TUI (#1103)","[https://github.com/input-output-hk/hydra/pull/1103]","."),(0,n.kt)("li",{parentName:"ul"},"Aiken commit validator translation (#1072)","[https://github.com/input-output-hk/hydra/pull/1072]","."),(0,n.kt)("li",{parentName:"ul"},"Fixed some bugs in our TUI client.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Prepare presentation and workshop for Cardano Summit."),(0,n.kt)("li",{parentName:"ul"},"Work on hydra-poll dApp for Cardano summit."),(0,n.kt)("li",{parentName:"ul"},"Start the work on packaging hydra-node and related services.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5cf7c214.36586195.js b/assets/js/5cf7c214.36586195.js new file mode 100644 index 00000000000..6578ef2b408 --- /dev/null +++ b/assets/js/5cf7c214.36586195.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20681],{57654:a=>{a.exports=JSON.parse('{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync","allTagsPath":"/cardano-updates/tags","count":14}')}}]); \ No newline at end of file diff --git a/assets/js/5d0266be.e028d3f3.js b/assets/js/5d0266be.e028d3f3.js new file mode 100644 index 00000000000..144dca1a20c --- /dev/null +++ b/assets/js/5d0266be.e028d3f3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33671],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,g=d["".concat(u,".").concat(c)]||d[c]||m[c]||l;return a?r.createElement(g,i(i({ref:t},s),{},{components:a})):r.createElement(g,i({ref:t},s))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-10-13-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-10-13-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-ledger.md",source:"@site/blog/2023-10-13-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-10-13T00:00:00.000Z",formattedDate:"October 13, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:.965,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-10-13-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-13-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-13-sre"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Integration and releasing",id:"integration-and-releasing",level:3},{value:"Testing",id:"testing",level:3}],s={toc:p},d="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The Ledger team has been shifting focus from implementing Conway related features to\ntesting. For this reason there is a very little amount features that are reported this\ntime aorund. Notable Conway related changes are a specialized ledger query for getting\nConstitutional Committee state and prevention of submitting proposal procedures that have\nno valid path to enactment."),(0,n.kt)("p",null,"Testing related work was mainly on a constraint base system as well as on roundtrip\nserialization. As a result of this extra testing a bug in Conway Genesis serialization\nwas eliminated."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-era"},"Conway era"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3768"},"pull-3768")," - Fail proposal on invalid prevGovActionId"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3781"},"pull-3781")," - CommitteeState query")),(0,n.kt)("h3",{id:"integration-and-releasing"},"Integration and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3774"},"pull-3774")," - Bump urllib3 from 1.26.10 to 1.26.17 in /doc"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3770"},"pull-3770")," - cabal.project: Bump index states"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3778"},"pull-3778")," - Bump plutus to 1.14")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3769"},"pull-3769")," - Add roundtrip testing by validating FlatTerm"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3783"},"pull-3783")," - Update TranslationInstance.hs"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3775"},"pull-3775")," - Refactor and improve constraint based STS tests"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3793"},"pull-3793")," - Fix sums with negative RHS.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5d5964ec.d720c839.js b/assets/js/5d5964ec.d720c839.js new file mode 100644 index 00000000000..1599059ce6b --- /dev/null +++ b/assets/js/5d5964ec.d720c839.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53931],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,s(s({ref:t},p),{},{components:n})):r.createElement(f,s({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-04-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-04-05-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-consensus.md",source:"@site/blog/2023-04-05-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-04-05T00:00:00.000Z",formattedDate:"April 5, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.66,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-04-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-06-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-05-node-cli-api"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2}],p={toc:c},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This week the consensus team finished the UTxO-HD prototype refactoring. We are\nnow working on improving the DB lock mechanism to improve performance. We also\nintroduced several improvements to the file system abstraction and simulation\nlayer (",(0,a.kt)("inlineCode",{parentName:"p"},"fs-sim"),"), which culminated in the release of ",(0,a.kt)("inlineCode",{parentName:"p"},"fs-sim-0.1.0.0")," and\n",(0,a.kt)("inlineCode",{parentName:"p"},"fs-api-0.1.0.0")," to ",(0,a.kt)("inlineCode",{parentName:"p"},"CHaP"),"."),(0,a.kt)("p",null,"On the Genesis front we distributed the updated Genesis design document,\nsoliciting feedback from Networking Team and IOG Researchers. We also opened up\na PR for the adversarial leader schedule ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," generator, which is being\nreviewed."),(0,a.kt)("p",null,"On the support front, we got a new Consensus version that can use different\nfundamental VRF crypto primitives for Babbage and Conway eras."),(0,a.kt)("p",null,"On the tech debt front we fixed an bug in the followers logic, which was\ndiscovered by our ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," property tests."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5df8a536.f44554bd.js b/assets/js/5df8a536.f44554bd.js new file mode 100644 index 00000000000..815681d873a --- /dev/null +++ b/assets/js/5df8a536.f44554bd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30374],{92817:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/release","page":1,"postsPerPage":5,"totalPages":1,"totalCount":5,"blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/5e3dc99b.c7aa10e4.js b/assets/js/5e3dc99b.c7aa10e4.js new file mode 100644 index 00000000000..2b2319b0d8d --- /dev/null +++ b/assets/js/5e3dc99b.c7aa10e4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67272],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),s=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=s(a),u=n,m=h["".concat(d,".").concat(u)]||h[u]||c[u]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-12-16-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-12-16-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-16-hydra.md",source:"@site/blog/2022-12-16-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-12-16T00:00:00.000Z",formattedDate:"December 16, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.27,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-12-16-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-28-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-15-mithril"}},d={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/benchmarks/transaction-cost/"},"the website")," and reduced the cost for commit transactions by ~30% with the help of reference scripts."),(0,n.kt)("p",null,"The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Kicked-off Hydra Voting project with Catalyst, CF, and IO Research."),(0,n.kt)("li",{parentName:"ul"},"Reduce commit transaction costs by ~30% with reference scripts."),(0,n.kt)("li",{parentName:"ul"},"Prepared an RFP for external audit of the Hydra Head solution."),(0,n.kt)("li",{parentName:"ul"},"Fixed transaction cost benchmarks for abort tx ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/631"},"#631"),"."),(0,n.kt)("li",{parentName:"ul"},"Recorded decision to use model-based testing (",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/adr/22/"},"ADR22"),") and improved Model ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/haddock/hydra-node/tests/Hydra-Model.html"},"documentation"),".",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Concluding the first increment on ","\u201c","Validate coordinated Head protocol","\u201d"," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/194"},"#194"),"."),(0,n.kt)("li",{parentName:"ul"},"Formulated next step / follow-up on testing the Soundness property of our protocol ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/656"},"#656"),"."))),(0,n.kt)("li",{parentName:"ul"},"Switched to using nix flakes for development setup and CI build ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/646"},"#646"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Push ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," & tx validity gap over the finish line (smoke tests missing)."),(0,n.kt)("li",{parentName:"ul"},"Integrate the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial"),"."),(0,n.kt)("li",{parentName:"ul"},"Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec."),(0,n.kt)("li",{parentName:"ul"},"Close & recap on the year with another monthly report (+ blog post).")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5e730d4f.bf3e3989.js b/assets/js/5e730d4f.bf3e3989.js new file mode 100644 index 00000000000..0cfa2758855 --- /dev/null +++ b/assets/js/5e730d4f.bf3e3989.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76762],{3905:(e,t,o)=>{o.d(t,{Zo:()=>l,kt:()=>h});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},l=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,u=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),c=p(o),m=n,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||a;return o?r.createElement(h,i(i({ref:t},l),{},{components:o})):r.createElement(h,i({ref:t},l))}));function h(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,i=new Array(a);i[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var p=2;p{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=o(87462),n=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-05-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-05-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-network.md",source:"@site/blog/2023-05-12-network.md",title:"Network Team Update",description:"High level summary",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.79,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-05-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-12-hydra"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-05-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed summary",id:"detailed-summary",level:2}],l={toc:p},c="wrapper";function d(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,r.Z)({},l,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We started working on a new way to switch between root & ledger peers (see\nbelow). We continued to work on ",(0,n.kt)("inlineCode",{parentName:"p"},"eclipse-evasion"),". We merged changes to\nHandshake contributed by Galois Inc. We made improvements to our tests (fixed\na flaky test, added cddl specs for ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionData")," and\n",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToClientVersionData"),"). We improved our CI and automated the process of\nreleasing new package version to ",(0,n.kt)("inlineCode",{parentName:"p"},"CHaP"),"."),(0,n.kt)("h2",{id:"detailed-summary"},"Detailed summary"),(0,n.kt)("p",null,"We continued to work on testing ",(0,n.kt)("inlineCode",{parentName:"p"},"eclipse-evasion"),"."),(0,n.kt)("p",null,"We came up with an idea to limit how full node wallets relay on root peers\n(currently operated by IOG, in future also CF and Emurgo). We designed\na switch to use ledger peers if the node tip is close enough to the current\ntime. For more details see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"#4530"),"."),(0,n.kt)("p",null,"We merged changes to the handshake mini-protocol which allow one to query\nserver's ",(0,n.kt)("inlineCode",{parentName:"p"},"node-to-node")," / ",(0,n.kt)("inlineCode",{parentName:"p"},"node-to-client")," parameters. We are grateful to\nGalois Inc. for implementing it, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4256"},"#4256")," and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4538"},"#4538"),". We published new version\nof packages to CHaP ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/253"},"chap-#253"),"."),(0,n.kt)("p",null,"We added ",(0,n.kt)("inlineCode",{parentName:"p"},"DiffusionError")," wrapper. Thanks to it, ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," will\nnot duplicate diffusion errors messages in the log, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4537"},"#4537"),"."),(0,n.kt)("p",null,"We fixed an issue which caused one of our tests to be flaky, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4515"},"#4515"),"."),(0,n.kt)("p",null,"We added cddl tests for ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionData")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToClientVersionData"),":\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4540"},"#4540"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4544"},"#4544")," (in review)."),(0,n.kt)("p",null,"We wrote scripts which will help us release packages as well as verify that we\nreleased all the package necessary to build the newest set of packages,\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4542"},"#4542"),"."),(0,n.kt)("p",null,"We renamed the consensus startup tracer and make sure it doesn't log\n",(0,n.kt)("inlineCode",{parentName:"p"},"ExitSuccess")," exceptions, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pulls/71"},"consensus-#71"),"."),(0,n.kt)("p",null,"We reviewed PR which adds ",(0,n.kt)("inlineCode",{parentName:"p"},"RawBearer")," API, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4395"},"#4395"),"."),(0,n.kt)("p",null,"We made series of improvements to our CI:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4539"},"#4539"),": we don't need to install cryptographic libraries in CI;"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4545"},"#4545"),": Javier Sagredo (consensus) cleaned up CI after ",(0,n.kt)("inlineCode",{parentName:"li"},"consensus")," moved\nto a new repo;"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4546"},"#4546"),": we switched to use ",(0,n.kt)("a",{parentName:"li",href:"https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue"},"GitHub merge queues"),";"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4549"},"#4549"),": we made it possible to trigger building haddocks manually;"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4553"},"#4553"),": we fixed and enhanced caching of building dependencies.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5e9a4be9.9e7aea0b.js b/assets/js/5e9a4be9.9e7aea0b.js new file mode 100644 index 00000000000..2c5f6676884 --- /dev/null +++ b/assets/js/5e9a4be9.9e7aea0b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[11748],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=u(a),c=l,h=d["".concat(p,".").concat(c)]||d[c]||m[c]||n;return a?r.createElement(h,o(o({ref:t},s),{},{components:a})):r.createElement(h,o({ref:t},s))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,o=new Array(n);o[0]=c;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:l,o[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>i,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-11-22-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-11-22-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-22-ledger.md",source:"@site/blog/2023-11-22-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-11-22T00:00:00.000Z",formattedDate:"November 22, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.705,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-11-22-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-24-sre"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-22-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway",id:"conway",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],s={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of\nCDDL specification. Important bugfixes include:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Fix deserialization of ",(0,l.kt)("inlineCode",{parentName:"li"},"ValueNotConservedUTxO")," predicate failure that could not\npreviously report zero ADA."),(0,l.kt)("li",{parentName:"ul"},"Fix deserialization of ",(0,l.kt)("inlineCode",{parentName:"li"},"CostModels")," in the ",(0,l.kt)("inlineCode",{parentName:"li"},"PParamsUpdate"),". Invalid ",(0,l.kt)("inlineCode",{parentName:"li"},"CostModels")," are no\nlonger allowed, only ",(0,l.kt)("inlineCode",{parentName:"li"},"CostModels")," for unrecognized Plutus versions are allowed starting\nwith Conway"),(0,l.kt)("li",{parentName:"ul"},"Fix returning of Deposits for ProposalProcedures")),(0,l.kt)("p",null,"Testing tooling has been improved and new tests have been implemented for Conway era."),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway"},"Conway"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3858"},"pull-3858")," - Restructure computing Refunds and Deposits in a TxBody across all eras"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3860"},"pull-3860")," - Removed ",(0,l.kt)("inlineCode",{parentName:"li"},"mock/crypto.cddl"),", added optional tag to sets"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3864"},"pull-3864")," - Fix Proposal deposits and add deposit tests to imp tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3859"},"pull-3859")," - Rename ProposalsSnapshot to Proposals"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3867"},"pull-3867")," - ",(0,l.kt)("inlineCode",{parentName:"li"},"MaryValue")," fixes"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3869"},"pull-3869")," - Indicate that tag 258 is optional for OSet. Fix rational CDDL"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3863"},"pull-3863")," - Improve deposits refunds re-usability"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3861"},"pull-3861")," - Fail PParamsUpdate deserialization for invalid costmodels in Conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3875"},"pull-3875")," - Fix cddl spec for CostModels in Conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3876"},"pull-3876")," - Change 4 PParam fields from EpochNo to EpochInterval"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3884"},"pull-3884")," - Relax requirement on the Set tag 258 to be enforced in the next era")),(0,l.kt)("h3",{id:"testing"},"Testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3868"},"pull-3868")," - Improvements to support property tests on Traces with simple Tx with DRep related Certs"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3792"},"pull-3792")," - RATIFY and GOV constraint tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3885"},"pull-3885")," - Added a test for genTxAndNewEpoch"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3886"},"pull-3886")," - QuickCheck Imp integration")),(0,l.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3854"},"pull-3854")," - Integration work for node 8.7.0"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3872"},"pull-3872")," - Fixup ReadTheDocs build"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3871"},"pull-3871")," - Bump plutus dep to 1.16"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3874"},"pull-3874")," - Post release changes"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3880"},"pull-3880")," - Remove generic-monoid dependency"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3887"},"pull-3887")," - Add changelog for features that landed in cardano-node-8.7")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6004d2a4.ab1b5f3f.js b/assets/js/6004d2a4.ab1b5f3f.js new file mode 100644 index 00000000000..84dfa3b0cfb --- /dev/null +++ b/assets/js/6004d2a4.ab1b5f3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[57193],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),c=u(r),h=o,m=c["".concat(p,".").concat(h)]||c[h]||d[h]||a;return r?n.createElement(m,i(i({ref:t},l),{},{components:r})):n.createElement(m,i({ref:t},l))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=h;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>u});var n=r(87462),o=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-08-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-08-04-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-network.md",source:"@site/blog/2023-08-04-network.md",title:"Network Team Update",description:"High-level overview of sprint 41",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.515,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-08-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-04-ledger"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-04-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level overview of sprint 41",id:"high-level-overview-of-sprint-41",level:2},{value:"Other contributions",id:"other-contributions",level:2}],l={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-overview-of-sprint-41"},"High-level overview of ",(0,o.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+41%22"},"sprint 41")),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"24th July - 6th August 2023")),(0,o.kt)("p",null,"We started the implementation of ",(0,o.kt)("strong",{parentName:"p"},"bootstrap peers"),". Bootstrap peers are designed\nto provide a safety guarantee for nodes joining the network while still taking\nadvantage of the distributed network for nodes that are synced. This will be\nan intermediate step before Genesis which will allow for further distribute the\nsystem. The bootstrap peers will be run by some trusted partners like CF,\nEmurgo or IOG. They are primarily designed for leaf nodes (e.g. full node\nwallets), which often end up syncing and require access to the honest chain. See\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4615"},"ouroboros-network#4615")," for a more detailed implementation plan."),(0,o.kt)("h2",{id:"other-contributions"},"Other contributions"),(0,o.kt)("p",null,"We started to use ",(0,o.kt)("inlineCode",{parentName:"p"},"nothunks")," library to discover if we have any unevaluated\nthunks which can lead to memory leaks ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4633"},"ouroboros-network#4633"),". We found\na small one in the peer metric component of the P2P networking stack. Fixing\nit put us on a small detour of fixing the API of the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/tree/master/strict-checked-vars"},(0,o.kt)("inlineCode",{parentName:"a"},"strict-checked-vars")),"\npackage: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pulls/431"},"cardano-base#431"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pulls/432"},"cardano-base#432"),", as well as adding ",(0,o.kt)("inlineCode",{parentName:"p"},"NFData"),"\ninstance to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/110"},(0,o.kt)("inlineCode",{parentName:"a"},"io-classes")),". We also improved ",(0,o.kt)("inlineCode",{parentName:"p"},"nothunks"),"\nlibrary to make debugging easier and we provided a ",(0,o.kt)("inlineCode",{parentName:"p"},"NoThunks")," instance for\n",(0,o.kt)("inlineCode",{parentName:"p"},"ThreadId")," which we will need in the future (see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/nothunks/pull/33"},"nothunks#33"),")."),(0,o.kt)("p",null,"We released a new version of ",(0,o.kt)("inlineCode",{parentName:"p"},"io-classes")," (version ",(0,o.kt)("inlineCode",{parentName:"p"},"1.2.0.0"),") and related\npackages to ",(0,o.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/io-classes-1.2.0.0io-classes-1.2.0.0"},"Hackage"),"."),(0,o.kt)("p",null,"We addressed all review comments on the eclipse evasion PR which introduces big\nledger peers, ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"ouroboros-network#3886"),"."),(0,o.kt)("p",null,"We fixed how ",(0,o.kt)("inlineCode",{parentName:"p"},"SIGHUP")," signal handlers are registered, so it's not possible to\nshutdown a node which was starting while trying to update network topology,\nsee ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5421"},"cardano-node#5421"),"."),(0,o.kt)("p",null,"I didn't mention that in the previous update, so here it goes: in the previous\nsprint we released ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/blob/f84fcddce472d6cfc2b838b20a2ad085fe0896ed/ouroboros-network/CHANGELOG.md"},(0,o.kt)("inlineCode",{parentName:"a"},"ouroboros-network-0.8.2.0"))," and\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/blob/ouroboros-network-framework-0.7.0.0/ouroboros-network-framework/CHANGELOG.md"},(0,o.kt)("inlineCode",{parentName:"a"},"ouroboros-network-framework-0.7.0.0")),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/600e4190.0bee7b6c.js b/assets/js/600e4190.0bee7b6c.js new file mode 100644 index 00000000000..4773464c02a --- /dev/null +++ b/assets/js/600e4190.0bee7b6c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80599],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=a.createContext({}),u=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),m=u(n),d=o,h=m["".concat(p,".").concat(d)]||m[d]||c[d]||r;return n?a.createElement(h,i(i({ref:t},s),{},{components:n})):a.createElement(h,i({ref:t},s))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:o,i[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var a=n(87462),o=(n(67294),n(3905));const r={title:"Network Q1 2023 Update",slug:"2023-04-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2023-04-04-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-04-network.md",source:"@site/quarterly/2023-04-04-network.md",title:"Network Q1 2023 Update",description:"2023-01 - 2023-03",date:"2023-04-04T00:00:00.000Z",formattedDate:"April 4, 2023",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:2.62,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Q1 2023 Update",slug:"2023-04-04-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-04-25-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2023-04-03-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"2023-01 - 2023-03",id:"2023-01---2023-03",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Gradual dynamic P2P release on mainnet",id:"gradual-dynamic-p2p-release-on-mainnet",level:4},{value:"Peer Sharing",id:"peer-sharing",level:4},{value:"Eclipse Evasion",id:"eclipse-evasion",level:4},{value:"Cardano Network Service Assurance",id:"cardano-network-service-assurance",level:4},{value:"Cardano-Node",id:"cardano-node",level:4},{value:"Testing improvements",id:"testing-improvements",level:4},{value:"Technical Debt",id:"technical-debt",level:4},{value:"Documentation",id:"documentation",level:4},{value:"IO-Sim",id:"io-sim",level:4},{value:"NoThunks",id:"nothunks",level:4},{value:"Next steps",id:"next-steps",level:3}],s={toc:u},m="wrapper";function c(e){let{components:t,...n}=e;return(0,o.kt)(m,(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"2023-01---2023-03"},"2023-01 - 2023-03"),(0,o.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,o.kt)("h4",{id:"gradual-dynamic-p2p-release-on-mainnet"},"Gradual dynamic P2P release on mainnet"),(0,o.kt)("p",null,"We released two version of ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," with dynamic P2P capabilities:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/1.35.6"},(0,o.kt)("inlineCode",{parentName:"a"},"1.35.6")),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"we found and fixed a bug in exception handling in ",(0,o.kt)("inlineCode",{parentName:"li"},"peer-state-actions"),(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4357"},"pull-4357")),(0,o.kt)("li",{parentName:"ul"},"we found and fixed a busy loop when demoting a peer from hot to warm ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"pull-4385")," "))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/1.35.7"},(0,o.kt)("inlineCode",{parentName:"a"},"1.35.7")),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"includes interoperability in the legacy non-p2p network stack ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/outoboros-network/pull/4467"},"pull-4467")))),(0,o.kt)("li",{parentName:"ul"},"we fixed a busy loop of demotion & promotions: ",(0,o.kt)("inlineCode",{parentName:"li"},"warm -> hot -> warm"),"[pull-4485]"," /it will be included in ",(0,o.kt)("inlineCode",{parentName:"li"},"cardano-node-8.0.0")," release/.")),(0,o.kt)("p",null,"Currently there are more than 200 P2P relays on mainnet."),(0,o.kt)("h4",{id:"peer-sharing"},"Peer Sharing"),(0,o.kt)("p",null,"We implemented /peer sharing/ ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"pull-4019")," which will be available as an\nexperimental feature in one of the future ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," releases."),(0,o.kt)("p",null,"We implemented /light peer sharing/, e.g. adding inbound connections to the set\nof known peers of the outbound governor, which allows to bootstrap relays not\nregistered on chain. This complements peer sharing. The ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4277"},"pull-4277")," is in\nlate review stages."),(0,o.kt)("h4",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,o.kt)("p",null,"We finalised design of eclipse evasion and we started implementing it. We\nhave an initial implementation (not merged). We are in the process of extending\nour test suite to cover new implementation details: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"issue-3886"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/outoboros-network/pull/4462"},"pull-4462"),"."),(0,o.kt)("h4",{id:"cardano-network-service-assurance"},"Cardano Network Service Assurance"),(0,o.kt)("p",null,"Galois has been making progress on ",(0,o.kt)("em",{parentName:"p"},"Cardano Network Service Assurance")," project."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"In cardano-node, they have developed a ",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint")," abstraction that creates\na queue of (existing) log events, they now have two such ",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint"),"s (of log\nevents) implemented.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"They have developed a ",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint"),' client executable that can connect to a node\nwhich serves the "new tracing".')),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"They have been exploring approaches for the consolidation and analysis of\n",(0,o.kt)("inlineCode",{parentName:"p"},"datapoint")," data to extract actionable network health status."))),(0,o.kt)("h4",{id:"cardano-node"},"Cardano-Node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We made it possible to configure accepted connections limit ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"pull-4902"),".")),(0,o.kt)("h4",{id:"testing-improvements"},"Testing improvements"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We fixed a bug in network simulation implementation of TCP simultaneous open ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4265"},"pull-4265"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We introduced header-body split in the diffusion simulation ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/outoboros-network/pull/4419"},"pull-4419")," (in review).")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We introduced initiator only nodes in the diffusion simulation ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4280"},"pull-4280"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We fixed a connection-manager test failure ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4370"},"issue-4370"),"."))),(0,o.kt)("h4",{id:"technical-debt"},"Technical Debt"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We refactored ",(0,o.kt)("inlineCode",{parentName:"p"},"Snocket")," interface decoupling it from the multiplexer\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4260"},"pull-4260"),". This simplified some aspects of the KES agent implementation.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"We introduces a record for CBOR codecs which are used for various data\nstructures by mini-protocol codecs ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/outoboros-network/pull/4430"},"pull-4430"),"."))),(0,o.kt)("h4",{id:"documentation"},"Documentation"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We explained some limitations of CDDL in our technical report ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4351"},"pull-4351"),".")),(0,o.kt)("h4",{id:"io-sim"},"IO-Sim"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We fixed implementation of ",(0,o.kt)("inlineCode",{parentName:"li"},"MVar"),"'s ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/70"},"pull-70"),".")),(0,o.kt)("h4",{id:"nothunks"},"NoThunks"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We published a new version of ",(0,o.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/nothunks"},(0,o.kt)("inlineCode",{parentName:"a"},"nothunks"))," library to Hackage.")),(0,o.kt)("h3",{id:"next-steps"},"Next steps"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Finish implementation & testing of eclipse evasion ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"issue-3886"),"."),(0,o.kt)("li",{parentName:"ul"},"Optimise connectivity to peers behind firewall ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4381"},"issue-4381"),"."),(0,o.kt)("li",{parentName:"ul"},"Finish the work on enabling block production dynamically to allow using P2P\non block producers ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"issue-3159"),"."),(0,o.kt)("li",{parentName:"ul"},"If time permits we would like also to reserve some time for finishing\npublication of ",(0,o.kt)("inlineCode",{parentName:"li"},"io-sim")," to Hackage.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/60a77258.17d58a0f.js b/assets/js/60a77258.17d58a0f.js new file mode 100644 index 00000000000..afabbe2a0fe --- /dev/null +++ b/assets/js/60a77258.17d58a0f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83160],{72327:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/52","page":52,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/51","nextPage":"/cardano-updates/page/53","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/60c9cc01.8f5bc5c6.js b/assets/js/60c9cc01.8f5bc5c6.js new file mode 100644 index 00000000000..696f17fe84d --- /dev/null +++ b/assets/js/60c9cc01.8f5bc5c6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72744],{36901:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/4","page":4,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/3","nextPage":"/cardano-updates/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/60e1630c.96901eb9.js b/assets/js/60e1630c.96901eb9.js new file mode 100644 index 00000000000..2789217a237 --- /dev/null +++ b/assets/js/60e1630c.96901eb9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31831],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-02-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-02-08-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-node-cli-api.md",source:"@site/blog/2023-02-08-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-02-08T00:00:00.000Z",formattedDate:"February 8, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.095,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-02-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-08-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-08-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-02-08---2023-02-21"},"2023-02-08 - 2023-02-21"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"More maintenance and resolving raised issues."),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4889"},"Remove use of multiline literals")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4775"},"Markdown links CI check")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Date ranges for copyright"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4894"},"Re-add support for decoding GenesisExtendedKey text envelope")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4885"},"Disallow empty cost model for create update proposal")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4815"},"Refactor code using onLeft and onNothing"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4876"},"Simplify SerialiseAsRawBytes type class"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/60fae5f4.0a220c69.js b/assets/js/60fae5f4.0a220c69.js new file mode 100644 index 00000000000..a420a11abbe --- /dev/null +++ b/assets/js/60fae5f4.0a220c69.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40705],{75293:a=>{a.exports=JSON.parse('{"label":"ledger","permalink":"/cardano-updates/quarterly/tags/ledger","allTagsPath":"/cardano-updates/quarterly/tags","count":2}')}}]); \ No newline at end of file diff --git a/assets/js/611f3a9e.dc1be487.js b/assets/js/611f3a9e.dc1be487.js new file mode 100644 index 00000000000..0859092d565 --- /dev/null +++ b/assets/js/611f3a9e.dc1be487.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25351],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),u=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(i.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),s=u(a),m=n,h=s["".concat(i,".").concat(m)]||s[m]||c[m]||o;return a?r.createElement(h,l(l({ref:t},d),{},{components:a})):r.createElement(h,l({ref:t},d))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p[s]="string"==typeof e?e:n,l[1]=p;for(var u=2;u{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>p,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-09-15-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-09-15-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-sre.md",source:"@site/blog/2023-09-15-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.055,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-09-15-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-15-network"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-09-14-db-sync"}},i={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3}],d={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet environment was updated to 8.3.0-pre."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"Cardano-parts")," now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/blob/main/flake/colmena.nix#L89-L108"},"here"),".")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/f3dcffb...c2c7680"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Adjust mainnet p2p relays to ~100%, with a legacy canary: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/commit/d3cce2585fae6a52ff5833373137af3cddbc6710"},"cardano-ops-commit"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Utilize content addressed binaries to significantly improve eval, build and devShell performance: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/8"},"cardano-parts-pull-8")),(0,n.kt)("li",{parentName:"ul"},"Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/10"},"cardano-parts-pull-10")),(0,n.kt)("li",{parentName:"ul"},"Fix warns thrown during some builds and devShell usage: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/11"},"cardano-parts-pull-11")),(0,n.kt)("li",{parentName:"ul"},"Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/12"},"cardano-parts-pull-12")),(0,n.kt)("li",{parentName:"ul"},"Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/13"},"cardano-parts-pull-13"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf/compare/9f9917c...7fc1b4c"},"cardano-perf-compare"))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Define preliminary cardano-world networks on cardano-playground: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/1"},"cardano-playground"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Rotate KES on preview and preprod, purge unused subnets, adjust explorer rate limits: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/compare/306ef6c...e9b2ed2"},"cardano-world-compare")),(0,n.kt)("li",{parentName:"ul"},"Update sanchonet network to 8.3.0: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/compare/master...sanchonet-updated"},"cardano-world-compare"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6190b2fb.6cb691e4.js b/assets/js/6190b2fb.6cb691e4.js new file mode 100644 index 00000000000..13d08f20dee --- /dev/null +++ b/assets/js/6190b2fb.6cb691e4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48600],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),s=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=s(a),m=r,h=c["".concat(p,".").concat(m)]||c[m]||d[m]||i;return a?n.createElement(h,o(o({ref:t},u),{},{components:a})):n.createElement(h,o({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const i={title:"Developer Experience Update",slug:"2023-06-09-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-09-developer-experience",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-developer-experience.md",source:"@site/blog/2023-06-09-developer-experience.md",title:"Developer Experience Update",description:"High level summary",date:"2023-06-09T00:00:00.000Z",formattedDate:"June 9, 2023",tags:[{label:"devx",permalink:"/cardano-updates/tags/devx"}],readingTime:2.035,hasTruncateMarker:!1,authors:[{name:"Moritz Angermann",title:"Head of Developer Experience",url:"https://github.com/angerman",imageURL:"https://github.com/angerman.png",key:"angerman"}],frontMatter:{title:"Developer Experience Update",slug:"2023-06-09-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-06-09-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-09-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"build support & maintainance",id:"build-support--maintainance",level:3},{value:"compiler upgrades",id:"compiler-upgrades",level:3},{value:"CHaP (cardano-haskell-packages)",id:"chap-cardano-haskell-packages",level:3},{value:"GitHub Actions",id:"github-actions",level:3},{value:"iohk-nix",id:"iohk-nix",level:3},{value:"haskell.nix",id:"haskellnix",level:3},{value:"devx",id:"devx",level:3},{value:"upstream tooling",id:"upstream-tooling",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements."),(0,r.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,r.kt)("h3",{id:"build-support--maintainance"},"build support & maintainance"),(0,r.kt)("p",null,"Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure ",(0,r.kt)("inlineCode",{parentName:"p"},"LoadDLL")," errors to ",(0,r.kt)("inlineCode",{parentName:"p"},"blst")," integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base"},"cardano-base")," experiencing significant reductions in CI complexity."),(0,r.kt)("h3",{id:"compiler-upgrades"},"compiler upgrades"),(0,r.kt)("p",null,"After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility."),(0,r.kt)("h3",{id:"chap-cardano-haskell-packages"},"CHaP (cardano-haskell-packages)"),(0,r.kt)("p",null,"We relocated the underlying tooling, (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/foliage"},"foliage"),"), for ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP")," into the IOG organization. Furthermore, we have introduced ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/260"},"improved tooling to quickly add constraints to packages"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/issues/285"},"better error reporting for add-revision")," and ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/foliage/pull/63"},"better hackage url compatibility")," to facilitate easer usage of CHaP."),(0,r.kt)("h3",{id:"github-actions"},"GitHub Actions"),(0,r.kt)("p",null,"Our repository, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/actions"},"input-output-hk/actions"),", now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the ",(0,r.kt)("inlineCode",{parentName:"p"},"base")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"haskell")," install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking ",(0,r.kt)("inlineCode",{parentName:"p"},"cabal"),"."),(0,r.kt)("h3",{id:"iohk-nix"},"iohk-nix"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/iohk-nix"},"iohk-nix")," repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, ",(0,r.kt)("inlineCode",{parentName:"p"},"sodium"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"blst"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"secp256k1"),", are also fixed to certain revisions within the ",(0,r.kt)("inlineCode",{parentName:"p"},"iohk-nix")," repository."),(0,r.kt)("h3",{id:"haskellnix"},"haskell.nix"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/haskell.nix"},"Haskell.nix")," has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to ",(0,r.kt)("inlineCode",{parentName:"p"},"gmp"),"."),(0,r.kt)("h3",{id:"devx"},"devx"),(0,r.kt)("p",null,"The relatively new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/devx"},"devx")," repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The ",(0,r.kt)("inlineCode",{parentName:"p"},"devx")," repository's readme has been updated to reflect its purpose and usage guidelines."),(0,r.kt)("h3",{id:"upstream-tooling"},"upstream tooling"),(0,r.kt)("p",null,"Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/61d299e1.76807eb6.js b/assets/js/61d299e1.76807eb6.js new file mode 100644 index 00000000000..ce62d5730d3 --- /dev/null +++ b/assets/js/61d299e1.76807eb6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[5552],{88947:a=>{a.exports=JSON.parse('{"label":"release","permalink":"/cardano-updates/tags/release","allTagsPath":"/cardano-updates/tags","count":5}')}}]); \ No newline at end of file diff --git a/assets/js/61e62d68.b6c5bb67.js b/assets/js/61e62d68.b6c5bb67.js new file mode 100644 index 00000000000..a5ab7b6e7cf --- /dev/null +++ b/assets/js/61e62d68.b6c5bb67.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[81169],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),m=s(n),u=a,f=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return n?r.createElement(f,l(l({ref:t},c),{},{components:n})):r.createElement(f,l({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-09-01-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-01-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-goedel.md",source:"@site/blog/2023-09-01-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.43,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-09-01-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-06-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-01-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},m="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"finalising a presenting performance analysis internship work to the\nformal methods team")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"developed a new Isabelle mini-protocol framework and examples")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"planning an extended version of the ICE DeltaQ paper")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"working on algebraic rules for properisation of any-to-finish"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/61f1e7c8.3b0a1c29.js b/assets/js/61f1e7c8.3b0a1c29.js new file mode 100644 index 00000000000..830bc00310e --- /dev/null +++ b/assets/js/61f1e7c8.3b0a1c29.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70883],{63732:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/tags/consensus","allTagsPath":"/cardano-updates/tags","count":32}')}}]); \ No newline at end of file diff --git a/assets/js/6226ba71.40eb13ae.js b/assets/js/6226ba71.40eb13ae.js new file mode 100644 index 00000000000..2aac4e1f58d --- /dev/null +++ b/assets/js/6226ba71.40eb13ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70644],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(r),c=n,m=d["".concat(s,".").concat(c)]||d[c]||h[c]||o;return r?a.createElement(m,l(l({ref:t},u),{},{components:r})):a.createElement(m,l({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=c;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-11-23-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-11-23-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-23-ledger.md",source:"@site/blog/2022-11-23-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-11-23T00:00:00.000Z",formattedDate:"November 23, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.19,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-23-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-25-hydra"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-18-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"The Conway ledger era",id:"the-conway-ledger-era",level:3},{value:"Versioned CBOR",id:"versioned-cbor",level:3},{value:"Deposit tracking",id:"deposit-tracking",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Node release",id:"node-release",level:3}],u={toc:p},d="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We released ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694"),",\nour proposal for entering the ",(0,n.kt)("a",{parentName:"p",href:"https://roadmap.cardano.org/en/voltaire/"},"Voltaire phase"),".\n",(0,n.kt)("strong",{parentName:"p"},"Please come join the discussion"),", this will be an incredibly exciting transition for\nCardano and we want everyone to participate!"),(0,n.kt)("p",null,"We now have a sensible way to version all of the serialization schemes used in the ledger.\nThe draft pull request was polished, reviewed, and merged this week.\nThis solves many problems that have vexed us since the beginning of the Shelley ledger era."),(0,n.kt)("p",null,"Everyone working on the Cardano node is working together to improve our release process,\nand the ledger team in particular dedicated one engineer to help with these efforts\nfor the next release."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"the-conway-ledger-era"},"The Conway ledger era"),(0,n.kt)("p",null,"The current proposal in ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694")," encompasses two new ledger eras.\nThe first era will be called Conway, after the English mathematician John Horton Conway.\nThe community facing aspects of the Conway ledger era will be very minimal,\nbut it will pave the way for introducing liquid democracy.\nThe details can be viewed ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/4"},"here"),".\nWe do not yet have a formal specification for the Conway era.\nOur plan is to debut the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger model"),".\nBriefly, the Conway ledger era will:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"introduce SPO voting for hard forks (in the spirit of the now abandoned ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/318"},"CIP-47"),")"),(0,n.kt)("li",{parentName:"ul"},"provide an on-chain mechanism for rotating the governance keys"),(0,n.kt)("li",{parentName:"ul"},"re-plumb the ledger rules involving governance to be in line with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694"))),(0,n.kt)("h3",{id:"versioned-cbor"},"Versioned CBOR"),(0,n.kt)("p",null,"We now have the ability to easily tie our serialization schemes to the Cardano\nmajor protocol version.\nWe still aim to preserve backwards compatibility as much as possible, but we now have a principled\nplan for resolving problems (see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/372"},"CIP-ledger-cbor"),").\nIn particular, we can now address several long standing issues, such as\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/2444"},"issue-2444"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/2965"},"issue-2965"),", and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/3003"},"issue-3003"),". "),(0,n.kt)("p",null,"The final (and massive!) pull request which brought us the versioning is ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3138"},"pull-3138"),"."),(0,n.kt)("h3",{id:"deposit-tracking"},"Deposit tracking"),(0,n.kt)("p",null,"The draft pull request which was exploring how best to track individual deposits\nis much closer now to being ready to take out of draft (",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3127"},"pull-3127"),").\nFor background on the issue, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/3113"},"issue-3113"),".\nThis is quite an invasive change which effects many of our tests, which we are now addressing."),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("p",null,"As always, we keep working on technical debt.\nWe have deduplicated a some things: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3129"},"pull-3129"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3162"},"pull-3162"),".\nWe have memoized a problematic computation (though more due diligence is needed before we can\nmerge): ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3141"},"pull-3141"),"."),(0,n.kt)("h3",{id:"node-release"},"Node release"),(0,n.kt)("p",null,"We have been helping with the node release efforts. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4608"},"pull-4608"),"."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/622f92df.5ca5ec26.js b/assets/js/622f92df.5ca5ec26.js new file mode 100644 index 00000000000..7bd88c4f2e5 --- /dev/null +++ b/assets/js/622f92df.5ca5ec26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17923],{40294:a=>{a.exports=JSON.parse('{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api","allTagsPath":"/cardano-updates/tags","count":27}')}}]); \ No newline at end of file diff --git a/assets/js/62422ab6.648df983.js b/assets/js/62422ab6.648df983.js new file mode 100644 index 00000000000..248103acfdf --- /dev/null +++ b/assets/js/62422ab6.648df983.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55855],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),h=u(r),c=n,m=h["".concat(p,".").concat(c)]||h[c]||d[c]||l;return r?a.createElement(m,o(o({ref:t},s),{},{components:r})):a.createElement(m,o({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=c;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[h]="string"==typeof e?e:n,o[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-02-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-02-17-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-ledger.md",source:"@site/blog/2023-02-17-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.33,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-02-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-17-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-02-17-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Integration work",id:"integration-work",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Small documentation improvements",id:"small-documentation-improvements",level:3},{value:"Specifying CIP-1694",id:"specifying-cip-1694",level:3},{value:"Constraint based testing",id:"constraint-based-testing",level:3}],s={toc:u},h="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This past two weeks saw many months worth of ledger changes integrated with the ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-base"),"\nand ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," repositories.\nThe vast majority of the effort involved all the changes to the ledger serialization libraries\n(and the interplay with ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-base"),") which now support proper versioning.\nSupporting the conway ledger era, and in particular allowing the ledger state to transition\nto a whole new system of governance, also played a noticeable part in the integration."),(0,n.kt)("p",null,"Besides the integration work, the team continues to address technical debt, improve the\ndocumentation, make our testing infrastructure better (such as experimenting with better\nnightly tests), and formally specifying more parts of CIP-1694."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"integration-work"},"Integration work"),(0,n.kt)("p",null,"Below is all the integration work completed, which will enable a release to node from\nthe current ledger master. Many thanks to\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/lehins"},"Alexey")," for this colossal undertaking!"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3303"},"pull-3303")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3302"},"pull-3302")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3300"},"pull-3300")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3299"},"pull-3299")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3298"},"pull-3298")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3297"},"pull-3297")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3292"},"pull-3292")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3289"},"pull-3289")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3288"},"pull-3288")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3279"},"pull-3279")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3282"},"pull-3282")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4349"},"pull-4349"))),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("p",null,"Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted\nin the CBOR specification. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3241"},"pull-3241"),"."),(0,n.kt)("p",null,"We now have our ",(0,n.kt)("inlineCode",{parentName:"p"},".cabal")," files being checked for a consistent formatting given by\n",(0,n.kt)("inlineCode",{parentName:"p"},"cabal format")," in our CI. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3286"},"pull-3286"),"."),(0,n.kt)("p",null,"We are still experimenting with better nightly tests for our long running\nproperty based tests. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3276"},"pull-3276")," and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3296"},"pull-3296"),"."),(0,n.kt)("h3",{id:"small-documentation-improvements"},"Small documentation improvements"),(0,n.kt)("p",null,"The hand proofs of the preservation ADA property have been added back to the\nShelley ledger specification. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3295"},"pull-3295"),"."),(0,n.kt)("p",null,"We have clarified how the script integrity hash is computed in the CDDL description.\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3290"},"pull-3290"),"."),(0,n.kt)("h3",{id:"specifying-cip-1694"},"Specifying CIP-1694"),(0,n.kt)("p",null,"Our new formal specifications backed by Agda have seen a lot of progress!\nUpgrading to Agda 2.6.3 fixed our main build infrastructure problems,\nand we no longer have to rely on our custom fork. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/50"},"pull-50"),"."),(0,n.kt)("p",null,"Our progress on formally specifying CIP-1694 can be followed here:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"in Agda: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/40"},"pull-40")),(0,n.kt)("li",{parentName:"ul"},"the corresponding Haskell: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3291"},"pull-3291"))),(0,n.kt)("h3",{id:"constraint-based-testing"},"Constraint based testing"),(0,n.kt)("p",null,"We are still actively working on our new constraint based property testing framework.\nWe have nearly all of the constraints for an entire ledger state\nhooked into generators, and tests that the generators do indeed obey the constraints.\nThe variable count in the constraints is over 100!\nThere is still much work to do on shrinking, making the generators faster,\nand writing actual property tests for the ledger, but the approach still seems viable and\nwe are hopeful that it could replace our trace generators.\nThe WIP can be followed here: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/62a53033.08859e4a.js b/assets/js/62a53033.08859e4a.js new file mode 100644 index 00000000000..d4440752bfb --- /dev/null +++ b/assets/js/62a53033.08859e4a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24215],{39252:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/39","page":39,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/38","nextPage":"/cardano-updates/page/40","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/62dc90a1.3f3d2412.js b/assets/js/62dc90a1.3f3d2412.js new file mode 100644 index 00000000000..b13a1ef61ad --- /dev/null +++ b/assets/js/62dc90a1.3f3d2412.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86003],{31371:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/consensus/page/3","page":3,"postsPerPage":5,"totalPages":7,"totalCount":32,"previousPage":"/cardano-updates/tags/consensus/page/2","nextPage":"/cardano-updates/tags/consensus/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/62ec9f43.b063b2d8.js b/assets/js/62ec9f43.b063b2d8.js new file mode 100644 index 00000000000..dd979c27a1a --- /dev/null +++ b/assets/js/62ec9f43.b063b2d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[8694],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),u=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(i),d=r,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return i?a.createElement(c,o(o({ref:t},s),{},{components:i})):a.createElement(c,o({ref:t},s))}));function c(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-06-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-01-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-01-mithril.md",source:"@site/blog/2023-06-01-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-06-01T00:00:00.000Z",formattedDate:"June 1, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.415,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-06-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-02-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-31-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team released a new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2321.1"},(0,r.kt)("inlineCode",{parentName:"a"},"2321.1"))," distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots."),(0,r.kt)("p",null,"Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2321.1"},(0,r.kt)("inlineCode",{parentName:"a"},"2321.1"))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implements generic signing/verification of entity services ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance MessageAdapter for Artifact in aggregator REST API")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/925"},"#925")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Create the sub-command for 'Cardano Immutable Files Full' in client")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/895"},"#895")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance state machines Aggregator/Signer")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/933"},"#933")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Adapt the aggregator REST API to list certificates")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/892"},"#892")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Adapt end to end tests to handle new types of data")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/899"},"#899")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Update client documentation")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/897"},"#897")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Update architecture documentations for new types of data")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/898"},"#898")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance terraform infrastructure")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/930"},"#930")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that implements the computation of the stake distribution for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/880"},"#880"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Upgrade Cardano node to '8.0.0'")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/920"},"#920")))),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add export path in Client CLI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/512"},"#512"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/62f46a38.200c43f2.js b/assets/js/62f46a38.200c43f2.js new file mode 100644 index 00000000000..4a1e0f9a4b7 --- /dev/null +++ b/assets/js/62f46a38.200c43f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2681],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=s(r),u=a,g=d["".concat(p,".").concat(u)]||d[u]||m[u]||o;return r?n.createElement(g,i(i({ref:t},c),{},{components:r})):n.createElement(g,i({ref:t},c))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=u;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-02-17-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-17-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-goedel.md",source:"@site/blog/2023-02-17-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.53,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-02-17-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-17-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-17-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},d="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This sprint the team has been working on drafts of two papers and one\ntechnical report, distributivity properties of deltaQ, and consulting\non performance design with the Marlowe team."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Processing reviews on performance engineering paper and planning\npaper revisions accordingly")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Investigating distributivity properties of DeltaQ")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Preparing sections on the thorn calculus and idempotency laws for\ndraft paper about verifying design refinements for distributed\nsystem design")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Consulting on performance design with Marlowe team"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/632979e8.1945c14a.js b/assets/js/632979e8.1945c14a.js new file mode 100644 index 00000000000..8ef49627345 --- /dev/null +++ b/assets/js/632979e8.1945c14a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32831],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),m=u(i),d=a,c=m["".concat(p,".").concat(d)]||m[d]||h[d]||n;return i?r.createElement(c,o(o({ref:t},s),{},{components:i})):r.createElement(c,o({ref:t},s))}));function c(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var u=2;u{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-06-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-29-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-29-mithril.md",source:"@site/blog/2023-06-29-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-06-29T00:00:00.000Z",formattedDate:"June 29, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:2.205,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-06-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-30-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-28-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},m="wrapper";function h(e){let{components:t,...i}=e;return(0,a.kt)(m,(0,r.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano ",(0,a.kt)("inlineCode",{parentName:"p"},"mainnet")," infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator."),(0,a.kt)("p",null,"Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add infrastructure monitoring")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/987"},"#987")))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Prepare Mithril Signer deployment model for SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/862"},"#862"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/961"},"#961")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Adapt infrastructure to use Mithril Relay")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1018"},"#1018")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Announce the new signer deployment model in a dev blog post")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1017"},"#1017")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,a.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Aggregator does not exit on critical error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/993"},"#993")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Computation of master certificate of an epoch is incorrect")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1006"},"#1006")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"End to end tests are flaky")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/954"},"#954")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"'testing-preview' network does not create certificates")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1015"},"#1015")))),(0,a.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Dates format is not standardized")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/946"},"#946")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add 'recompute-certificates-hash' command to aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1001"},"#1001")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add a retry mechanism for artifact creation in aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/984"},"#984")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Log node version at startup in Aggregator/Signer")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/944"},"#944")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Reactivate Publish Results job in CI")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/978"},"#978")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Clean 'pending_snapshot' directory of aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/983"},"#983")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update OpenAPI spec examples")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1000"},"#1000")))),(0,a.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor 'MithrilStakeDistribution' entity")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/967"},"#967")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactoring client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/982"},"#982")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor download code in client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1010"},"#1010")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Factorize protocol crypto operations")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/669"},"#669")))),(0,a.kt)("li",{parentName:"ul"},"Worked on dependencies:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Upgrade Cardano node to '8.1.1'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/973"},"#973"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/637356df.030a1e3f.js b/assets/js/637356df.030a1e3f.js new file mode 100644 index 00000000000..8b23ec0cf96 --- /dev/null +++ b/assets/js/637356df.030a1e3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95979],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},l=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,l=i(e,["components","mdxType","originalType","parentName"]),d=c(n),h=r,m=d["".concat(p,".").concat(h)]||d[h]||u[h]||o;return n?a.createElement(m,s(s({ref:t},l),{},{components:n})):a.createElement(m,s({ref:t},l))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=h;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,s[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"DB Sync Team Update",slug:"2022-09-19-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-09-19-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-19-db-sync.md",source:"@site/blog/2022-09-19-db-sync.md",title:"DB Sync Team Update",description:"DBSync Update",date:"2022-09-19T00:00:00.000Z",formattedDate:"September 19, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:1.525,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB Sync Team Update",slug:"2022-09-19-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-09-20-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-16-ledger"}},p={authorsImageUrls:[void 0]},c=[{value:"DBSync Update",id:"dbsync-update",level:2},{value:"New Tag",id:"new-tag",level:3},{value:"Open source",id:"open-source",level:3},{value:"Progress on tech debt and new features",id:"progress-on-tech-debt-and-new-features",level:3}],l={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"dbsync-update"},"DBSync Update"),(0,r.kt)("h3",{id:"new-tag"},"New Tag"),(0,r.kt)("p",null,"We created a new db-sync tag 13.0.5 which addresses shortcomings of the last\nrelease 13.0.4. It is currently under testing.\nThe Changelog is\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/blob/8ad98d48e0068f3768d48e18fdcbe254037cba3b/cardano-db-sync/CHANGELOG.md#1305"},"here")," and in more details:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed fees for tx with phase 2 failure that didn't include a total collateral field.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1248"},"1248"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed an issue that could cause db-sync to crash if a specific rollback occured.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1247"},"1247"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but\ncould result in the wrong CBOR encoding being inserted.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1217"},"1217"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"All the fixes above come with unit tests which validates the fix.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Added support for preprod and preview from docker. DBSync no longer needs to include the configs\nfor different networks, these are directly fetched from the cardano world.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1254"},"1254"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We added better support from docker for the new disable options and the overall documentation.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1260"},"1260")))),(0,r.kt)("p",null,"All the above were also backported to the master branch"),(0,r.kt)("h3",{id:"open-source"},"Open source"),(0,r.kt)("p",null,"We made the db-sync ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/52/views/1"},"board public"),", so\neveryone can have access on the issues we prioritise.\nWe also added new tasks to the board, some of them could be approachable to newcomers or people who\nwant to contribute."),(0,r.kt)("h3",{id:"progress-on-tech-debt-and-new-features"},"Progress on tech debt and new features"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1223"},"1223")," was merged, which removes the\nforeign keys from the db schema. This opens the road to a number of optimizations.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"An additional fix on top of the previous work was added\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1250"},"1250"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"An initial version where DBSync does not rollback on restart is done here\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1266"},"1266"),".\nThis allows db-sync to restart much faster, without the need to delete data and reinsert them. In\nthe future it can also facilitate migrations in cases where the ledger snapshots have a breaking\nchange, without the need to resync everything from genesis."))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/63fae4f0.c9242707.js b/assets/js/63fae4f0.c9242707.js new file mode 100644 index 00000000000..9cab6a1790e --- /dev/null +++ b/assets/js/63fae4f0.c9242707.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39898],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),s=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(n),m=r,h=c["".concat(l,".").concat(m)]||c[m]||d[m]||a;return n?o.createElement(h,i(i({ref:t},u),{},{components:n})):o.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:r,i[1]=p;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>p,toc:()=>s});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-03-21-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-03-21-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-21-network.md",source:"@site/blog/2023-03-21-network.md",title:"Network Team Update",description:"High level summary",date:"2023-03-21T00:00:00.000Z",formattedDate:"March 21, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.315,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-03-21-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-22-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-17-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:s},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"In the last spring we released ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-1.35.6")," with dynamic P2P\nfunctionality."),(0,r.kt)("p",null,"We received reports from some SPOs who encountered problems with their non\nP2P block producing nodes not being able to connect to their P2P relay. Karl\nKnutsson (from Cardano Foundation) reproduced this issue between two nodes (a\nnon P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed\nit and found a bug in the legacy non p2p code. The bug is only possible to\ntrigger with a P2P node which is binding its outbound connection port to\na fixed IP address and port (default in p2p). A possible solution was found.\nFor more information see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4465"},"#4465"),"."),(0,r.kt)("p",null,"We released ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-ping-0.1.0.0")," package to ",(0,r.kt)("inlineCode",{parentName:"p"},"CHaP"),". ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-ping")," is no\nlonger available as a standalone binary, but instead it will become part of\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli")," (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"#4664"),")"),(0,r.kt)("p",null,"We are testing ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," with peer sharing functionality (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"#4019"),")."),(0,r.kt)("p",null,"We are working on ",(0,r.kt)("em",{parentName:"p"},"eclipse evasion"),". We added new class of peers: big ledger\npeers to the outbound governor, implemented tests and fixed found issues\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"#4462"),"). We also made the information if a given peer plays the role of\na big ledger peer to the mini-protocols. This will allow to modify\nmini-protocol applications for such peers. As part of this functionality we\nrefactored some core types in the network code which simplifies exposed API."),(0,r.kt)("p",null,"Together with Moritz Angerman we started to update ",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"ghc-9.6.1")," (see\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/73"},"#73"),")."),(0,r.kt)("p",null,"We merged a fix of configuration of accepted connections limit in\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"#4902"),")."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/65d0391b.cf9502af.js b/assets/js/65d0391b.cf9502af.js new file mode 100644 index 00000000000..0d29b516fcf --- /dev/null +++ b/assets/js/65d0391b.cf9502af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88572],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),c=p(r),d=n,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||i;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=d;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-08-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-08-17-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-crypto.md",source:"@site/blog/2023-08-17-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-08-17T00:00:00.000Z",formattedDate:"August 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.65,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-08-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-18-sre"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-08-17-db-sync"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"MuSig2",id:"musig2",level:3},{value:"Sidechains",id:"sidechains",level:3},{value:"KES agent",id:"kes-agent",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation"),(0,n.kt)("li",{parentName:"ul"},"mithril: Full node verifier"),(0,n.kt)("li",{parentName:"ul"},"musig2: Include MuSig2 description in cryptography handbook"),(0,n.kt)("li",{parentName:"ul"},"kes_agent: Finilising test and CI. Working on KES binary")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Full Node Verifier merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"),".")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started describing MuSig2 to include it as part of the cryptography handbook ")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/alexandroszacharakis8/halo2/tree/iquerejeta"},"this")," fork.")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"KES agent is ready:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"CI ready ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/19"},"#19")),(0,n.kt)("li",{parentName:"ul"},"Receipt confirmation message ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/20"},"#20")),(0,n.kt)("li",{parentName:"ul"},"KES agent binary ready ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/21"},"#21")),(0,n.kt)("li",{parentName:"ul"},"Control client implemented ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/11"},"#11"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/65ecf6d5.9b390ce8.js b/assets/js/65ecf6d5.9b390ce8.js new file mode 100644 index 00000000000..598e9649f7a --- /dev/null +++ b/assets/js/65ecf6d5.9b390ce8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64112],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(r),m=n,f=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return r?a.createElement(f,l(l({ref:t},c),{},{components:r})):a.createElement(f,l({ref:t},c))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var u=2;u{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"SRE Team Update",slug:"2023-08-04-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-04-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-sre.md",source:"@site/blog/2023-08-04-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.64,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-08-04-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-04-performance-and-tracing"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-01-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-world",id:"cardano-world",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Preprod and preview envionments were updated to 8.1.2."),(0,n.kt)("li",{parentName:"ul"},"Sanchonet and shelley-qa environments were updated to 8.2.0-pre."),(0,n.kt)("li",{parentName:"ul"},"Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Deploy cardano-node 8.1.2, merge p2p modifications, script fixes and cleanup: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/pull/416"},"cardano-ops-pull-416"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf"},"cardano-perf-repo"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Deploy cardano-node 8.1.2, emurgo p2p config, optimize faucet resources: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/104"},"cardano-world-pull-104")),(0,n.kt)("li",{parentName:"ul"},"Resolve nomad segfaults via nix versioning and fixup dbSync metal job for iohkNix env update: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/105"},"cardano-world-pull-105")),(0,n.kt)("li",{parentName:"ul"},"Add nomad dbSync fix for iohkNix env update: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/106"},"cardano-world-pull-106"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6610396c.3cf94bee.js b/assets/js/6610396c.3cf94bee.js new file mode 100644 index 00000000000..5fa7ae68000 --- /dev/null +++ b/assets/js/6610396c.3cf94bee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[84340],{30594:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/31","page":31,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/30","nextPage":"/cardano-updates/page/32","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/66326f4e.78fd62e9.js b/assets/js/66326f4e.78fd62e9.js new file mode 100644 index 00000000000..aa1f5a7c32d --- /dev/null +++ b/assets/js/66326f4e.78fd62e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17837],{16524:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/8","page":8,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/7","nextPage":"/cardano-updates/page/9","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/66345e96.e312da06.js b/assets/js/66345e96.e312da06.js new file mode 100644 index 00000000000..0a9f2fdd9d0 --- /dev/null +++ b/assets/js/66345e96.e312da06.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48983],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),u=n,h=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-06-23-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-06-23-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-goedel.md",source:"@site/blog/2023-06-23-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.335,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-06-23-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-28-performance-and-tracing"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-23-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the teams presented two papers at ICE 2023."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Presented two papers at ICE 2023: ",(0,n.kt)("a",{parentName:"p",href:"https://www.discotec.org/2023/ice"},"https://www.discotec.org/2023/ice"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Analysing and implementing chain synchronization mini protocol")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/66be9998.833c32ac.js b/assets/js/66be9998.833c32ac.js new file mode 100644 index 00000000000..1f34aee78ad --- /dev/null +++ b/assets/js/66be9998.833c32ac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36186],{19894:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/security","page":1,"postsPerPage":5,"totalPages":1,"totalCount":1,"blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/67ce4884.ec575d6b.js b/assets/js/67ce4884.ec575d6b.js new file mode 100644 index 00000000000..52d6392107e --- /dev/null +++ b/assets/js/67ce4884.ec575d6b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86830],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),u=n,h=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-05-12-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-12-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-goedel.md",source:"@site/blog/2023-05-12-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.445,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-05-12-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-05-12-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-12-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team had two paper accepted for ICE 2023\n(",(0,n.kt)("a",{parentName:"p",href:"https://www.discotec.org/2023/ice"},"https://www.discotec.org/2023/ice"),"). The event will be held in Lisbon\non 19th June 2023. The papers will be published in EPTCS."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Application layer for Praos formalisation in review.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Participating in interactive peer review process for ICE 2023.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/684a796f.c08bc3c2.js b/assets/js/684a796f.c08bc3c2.js new file mode 100644 index 00000000000..80dab5fc610 --- /dev/null +++ b/assets/js/684a796f.c08bc3c2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32871],{83127:a=>{a.exports=JSON.parse('{"label":"open-source","permalink":"/cardano-updates/tags/open-source","allTagsPath":"/cardano-updates/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/68585f67.eb9cce0f.js b/assets/js/68585f67.eb9cce0f.js new file mode 100644 index 00000000000..cea27461e0c --- /dev/null +++ b/assets/js/68585f67.eb9cce0f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[14274],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?r.createElement(h,l(l({ref:t},c),{},{components:a})):r.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-07-21-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-21-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-sre.md",source:"@site/blog/2023-07-21-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-07-21T00:00:00.000Z",formattedDate:"July 21, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.685,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-07-21-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-07-21-ledger"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-20-goedel"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Re-spin sanchonet for testing a new node version followed by fork to Conway"),(0,n.kt)("li",{parentName:"ul"},"Deploying a sanchonet compatible faucet to sanchonet"),(0,n.kt)("li",{parentName:"ul"},"Migrate shelley qa legacy environment to cardano-world")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Bump iohk-nix for sanchonet and shelley qa environment updates: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5406"},"cardano-node-pull-5406"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/31cce1a...496f085"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-node p2p all local roots entrypoint option was added: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/102"},"cardano-world-pull-102")),(0,n.kt)("li",{parentName:"ul"},"Migrate shelley qa legacy environment to cardano-world: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/103"},"cardano-world-pull-103")),(0,n.kt)("li",{parentName:"ul"},"Create a sanchonet compatible faucet: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/91"},"cardano-world-pull-91"))),(0,n.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migrate shelley qa legacy environment to cardano-world: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/549"},"iohk-nix-pull-549")),(0,n.kt)("li",{parentName:"ul"},"Drop legacy byron environment parameters: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/550"},"iohk-nix-pull-550"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6875c492.16502a56.js b/assets/js/6875c492.16502a56.js new file mode 100644 index 00000000000..d12db186622 --- /dev/null +++ b/assets/js/6875c492.16502a56.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48610],{99703:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(67294),l=a(95999),r=a(32244);function s(e){const{metadata:t}=e,{previousPage:a,nextPage:s}=t;return n.createElement("nav",{className:"pagination-nav","aria-label":(0,l.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},a&&n.createElement(r.Z,{permalink:a,title:n.createElement(l.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")}),s&&n.createElement(r.Z,{permalink:s,title:n.createElement(l.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries"),isNext:!0}))}},79985:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(67294),l=a(9460),r=a(30390);function s(e){let{items:t,component:a=r.Z}=e;return n.createElement(n.Fragment,null,t.map((e=>{let{content:t}=e;return n.createElement(l.n,{key:t.metadata.permalink,content:t},n.createElement(a,null,n.createElement(t,null)))})))}},41714:(e,t,a)=>{a.r(t),a.d(t,{default:()=>E});var n=a(67294),l=a(86010),r=a(95999),s=a(88824),o=a(1944),i=a(35281),g=a(39960),c=a(39058),m=a(99703),p=a(90197),u=a(79985);function d(e){const t=function(){const{selectMessage:e}=(0,s.c)();return t=>e(t,(0,r.I)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}();return(0,r.I)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function h(e){let{tag:t}=e;const a=d(t);return n.createElement(n.Fragment,null,n.createElement(o.d,{title:a}),n.createElement(p.Z,{tag:"blog_tags_posts"}))}function b(e){let{tag:t,items:a,sidebar:l,listMetadata:s}=e;const o=d(t);return n.createElement(c.Z,{sidebar:l},n.createElement("header",{className:"margin-bottom--xl"},n.createElement("h1",null,o),n.createElement(g.Z,{href:t.allTagsPath},n.createElement(r.Z,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page"},"View All Tags"))),n.createElement(u.Z,{items:a}),n.createElement(m.Z,{metadata:s}))}function E(e){return n.createElement(o.FG,{className:(0,l.Z)(i.k.wrapper.blogPages,i.k.page.blogTagPostListPage)},n.createElement(h,e),n.createElement(b,e))}}}]); \ No newline at end of file diff --git a/assets/js/68fb9d2f.2531ccaa.js b/assets/js/68fb9d2f.2531ccaa.js new file mode 100644 index 00000000000..13dcc46f443 --- /dev/null +++ b/assets/js/68fb9d2f.2531ccaa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80048],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),m=n,h=c["".concat(u,".").concat(m)]||c[m]||s[m]||o;return a?r.createElement(h,l(l({ref:t},d),{},{components:a})):r.createElement(h,l({ref:t},d))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-09-16-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-09-16-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-16-ledger.md",source:"@site/blog/2022-09-16-ledger.md",title:"Ledger Team Update",description:"Ledger Update",date:"2022-09-16T00:00:00.000Z",formattedDate:"September 16, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.625,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-09-16-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-09-19-db-sync"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-01-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"Ledger Update",id:"ledger-update",level:2}],d={toc:p},c="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"ledger-update"},"Ledger Update"),(0,n.kt)("p",null,"We have been focused nearly entirely on addressing technical debt."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We introduced more consistent naming across eras, this time for the auxiliary data.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3032"},"3032"),"."),(0,n.kt)("li",{parentName:"ul"},"We made clear how the ",(0,n.kt)("inlineCode",{parentName:"li"},"consumed")," functions differs between eras (which was a previous source of\nconfusion), and added some related support to the fledgling ledger API.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3016"},"3016"),"."),(0,n.kt)("li",{parentName:"ul"},"We added clarity and organizational consistency to the main ledger era type synonyms.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3017"},"3017"),"."),(0,n.kt)("li",{parentName:"ul"},"We removed code duplication related to the input data hashes.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3018"},"3018"),"."),(0,n.kt)("li",{parentName:"ul"},"We split up a large module into smaller components. The large module was actually causing our\nCI to time out.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3020"},"3020"),"."),(0,n.kt)("li",{parentName:"ul"},"We cleaned up stale information in our cabal files, and upgraded cabal 3.8.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3023"},"3023"),",\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3031"},"3031"),",\nand ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3028"},"3028"),"."),(0,n.kt)("li",{parentName:"ul"},"We made consistent, standalone ",(0,n.kt)("inlineCode",{parentName:"li"},"TxOut")," (transaction output) modules for every era.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3024"},"3024"),"."),(0,n.kt)("li",{parentName:"ul"},"We brought consistency to a maddening inconsistent use of type variables indicating the specific\nchoice of cryptographic primitives. In particular, all uses of ",(0,n.kt)("inlineCode",{parentName:"li"},"crypto")," have been renamed to ",(0,n.kt)("inlineCode",{parentName:"li"},"c"),".\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3027"},"3027"),"."),(0,n.kt)("li",{parentName:"ul"},"We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric\ntypes that will compose better in the future and which simplifies the constraints.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3029"},"3029"),"."),(0,n.kt)("li",{parentName:"ul"},"We consolidated some existing fragmented logic regarding how we gather the scripts needed for a\ngiven transaction. This is a much needed cleanup to prevent future mistakes.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3019"},"3019"),"."),(0,n.kt)("li",{parentName:"ul"},"We fixed a problem with our generators that was causing a fair number of our property tests to\nfail in CI.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3039"},"3039"),"."),(0,n.kt)("li",{parentName:"ul"},"We have started the work to update Plutus. This will bring support for SECP in the next major\nprotocol version, and also address a\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2902"},"problem"),"\nthat we current have evolving the cost models.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3030"},"3030"),"."),(0,n.kt)("li",{parentName:"ul"},"We addressed a small issue that came up when integrating the conway era downstream, namely\nthe lack of some serialization instances.\nSee ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3022"},"3022"),".")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/691b1ed7.406ee554.js b/assets/js/691b1ed7.406ee554.js new file mode 100644 index 00000000000..e576b5f2fef --- /dev/null +++ b/assets/js/691b1ed7.406ee554.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4944],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(n),c=o,m=d["".concat(l,".").concat(c)]||d[c]||h[c]||r;return n?a.createElement(m,s(s({ref:t},u),{},{components:n})):a.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,s=new Array(r);s[0]=c;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:o,s[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2023-01-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-01-25-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-25-consensus.md",source:"@site/blog/2023-01-25-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-01-25T00:00:00.000Z",formattedDate:"January 25, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.27,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-01-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-26-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-01-25-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Support",id:"support",level:3}],u={toc:p},d="wrapper";function h(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"During the past two weeks, the consensus team finished the testing activities\naround the UTxO-HD prototype. This is a very important milestone which will\nenable us to run system-level tests and benchmarks, as well as start refactoring\nand cleaning the prototype. Regarding our Genesis workstream, we elaborated a\nroadmap that gives an indication of the remaining work. We also continued our\nwork on benchmarking chain-sync-jumping. We also continued working on improving\nthe way we handle blocks from the future, and advancing the integration of the\nnew VRF and KES crypto."),(0,o.kt)("h2",{id:"workstreams"},"Workstreams"),(0,o.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,o.kt)("p",null,"As the prototype is nearing its completion, it was important to have enough\nconfidence that we will be able to move additional parts of the ledger state\nonto disk. We worked together with the Ledger team to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4296"},"elaborate a\nsketch")," on how the UTxO-HD design would accommodate the migration of\nadditional data from memory to disk. This gave us enough confidence that the\ncurrent architecture will be extensible in the future."),(0,o.kt)("p",null,"On the testing front, we ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4274"},"added")," property-based tests for the UTxO-HD\ntype classes. "),(0,o.kt)("p",null,"We also ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4289"},"enabled disabled components"),", and addressed several\ntechnical debt issues:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Implement ",(0,o.kt)("inlineCode",{parentName:"li"},"splitSized")," anti-diff split (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4269"},"#4269"),"), and integrate it\ninto consensus (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4273"},"#4273"),")."),(0,o.kt)("li",{parentName:"ul"},"Renaming of ",(0,o.kt)("inlineCode",{parentName:"li"},"peekVal")," to ",(0,o.kt)("inlineCode",{parentName:"li"},"peekMDBVal")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/7"},"#7"),").")),(0,o.kt)("p",null,"We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We\nfound a race condition in the LMDB backing store, which ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4283"},"we fixed"),".\nAfter the fix we were able to successfully run these benchmarks. The results\nwere published by ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4295"},"this pull request"),"."),(0,o.kt)("p",null,"We used our ",(0,o.kt)("inlineCode",{parentName:"p"},"db-analyser")," tool to benchmark the cost of reading keys and\nflushing values to disk. The following plot shows the duration of these disk\noperation in relation to the main ledger operations, where we can see that the\ncost of the former are comparatively low. The spike at the beginning of the\ngraph is when, at the start of the Shelley era, the ",(0,o.kt)("em",{parentName:"p"},"entire")," UTxO set is flushed\nto disk."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"UTxO-HD read and flush benchmarks",src:n(90595).Z,width:"1600",height:"800"})),(0,o.kt)("p",null,"After months of hard work adding tests for the prototype, we are ready to run\nend-to-end tests on the node, and system level benchmarks. This signals a very\nimportant milestone for the UTxO-HD workstream \ud83c\udf89."),(0,o.kt)("h3",{id:"genesis"},"Genesis"),(0,o.kt)("p",null,"We elaborated a ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/blob/a626c84f6df585dd27d735eb7eec73904a1f570e/ouroboros-consensus/docs/2023-Jan-Genesis-roadmap.md"},"high-level decomposition")," of the remaining\nwork for Genesis. We also continued benchmarking the chain-sync-jumping\nhappy-path."),(0,o.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,o.kt)("p",null,"We continued working on improving the way we handle blocks from the future."),(0,o.kt)("h3",{id:"support"},"Support"),(0,o.kt)("p",null,"We completed the mapping of ",(0,o.kt)("inlineCode",{parentName:"p"},"Crypto")," to ",(0,o.kt)("inlineCode",{parentName:"p"},"HeaderCrypto")," and body ",(0,o.kt)("inlineCode",{parentName:"p"},"Crypto"),".\n",(0,o.kt)("inlineCode",{parentName:"p"},"HeaderCrypto")," is moved to ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-protocol-tpraos"),". We created a draft ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3262"},"pull\nrequest")," to facilitate compiling consensus."))}h.isMDXComponent=!0},90595:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks-6b129a1acaa4bb48443ee81add51fd39.png"}}]); \ No newline at end of file diff --git a/assets/js/692497e1.a2ed0b7c.js b/assets/js/692497e1.a2ed0b7c.js new file mode 100644 index 00000000000..e82ebf5be3b --- /dev/null +++ b/assets/js/692497e1.a2ed0b7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92214],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?a.createElement(h,s(s({ref:t},c),{},{components:n})):a.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:r,s[1]=i;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-08-09-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-08-09-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-09-consensus.md",source:"@site/blog/2023-08-09-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-08-09T00:00:00.000Z",formattedDate:"August 9, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.46,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-08-09-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-10-mithril"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-04-crypto"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Genesis",id:"genesis",level:2},{value:"Fostering collaboration",id:"fostering-collaboration",level:2},{value:"Support",id:"support",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-sim")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-api"),", and released ",(0,r.kt)("inlineCode",{parentName:"p"},"strict-checked-vars"),"."),(0,r.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Rebased UTxO-HD on top of node 8.2 (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/256"},"issue"),")"),(0,r.kt)("li",{parentName:"ul"},"Address new ",(0,r.kt)("inlineCode",{parentName:"li"},"Maybe")," translations for UTxOs in Conway 1.6. (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/261"},"PR"),")."),(0,r.kt)("li",{parentName:"ul"},"Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/compare/96e92351ad35cfce1b0c2c47c4ed05792bf81fad..90d4c93af0846c9b027d530c042180c51aeee4fd"},"Fixed")," an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully."),(0,r.kt)("li",{parentName:"ul"},"Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running ",(0,r.kt)("inlineCode",{parentName:"li"},"QueryUTxOByAddress")," (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/273"},"PR"),")."),(0,r.kt)("li",{parentName:"ul"},"Measured the speed of ",(0,r.kt)("inlineCode",{parentName:"li"},"QueryUTxOByAddress")," under different ",(0,r.kt)("inlineCode",{parentName:"li"},"queryBatchSize")," values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution."),(0,r.kt)("li",{parentName:"ul"},"Refactored and implemented ledgertable-related classes for the general ",(0,r.kt)("inlineCode",{parentName:"li"},"HardforkBlock"),".")),(0,r.kt)("h2",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Frisby")," and ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/amesgen"},"Esgen")," continue to engage with the Researchers on grinding against the Genesis design.")),(0,r.kt)("h2",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Drafted a document explaining versioning of local state queries ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/273"},"#273"),".")),(0,r.kt)("h2",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Frisby")," is the release engineer this cycle."),(0,r.kt)("li",{parentName:"ul"},"Successfully created work-in-progress ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-api")," commits that integrate the 2023 Aug 7 tip of ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-ledger"),". This will require a release of ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus"),", which hasn't happened yet.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6927f7c4.bee27a35.js b/assets/js/6927f7c4.bee27a35.js new file mode 100644 index 00000000000..53a5808bc10 --- /dev/null +++ b/assets/js/6927f7c4.bee27a35.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60019],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),c=n,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-10-25-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-25-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-25-mithril.md",source:"@site/blog/2023-10-25-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-25T00:00:00.000Z",formattedDate:"October 25, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.125,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-25-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-27-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-24-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team released a new distribution ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2342.0"},(0,n.kt)("inlineCode",{parentName:"a"},"2342.0")),". This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes."),(0,n.kt)("p",null,"They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files. "),(0,n.kt)("p",null,"Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the ",(0,n.kt)("inlineCode",{parentName:"p"},"release-mainnet")," aggregator, and enhanced the Mithril explorer UI."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P Networking - Proof of Concept")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate a library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1141"},"#1141")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano UTxO set PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"ProtocolKeyRegistration")," creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1187"},"#1187")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Fix ",(0,n.kt)("inlineCode",{parentName:"strong"},"devnet")," Mithril Docker images")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1272"},"#1272")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Build ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-common")," and ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," in WASM PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1284"},"#1284")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Display a summary of signers before the full list in explorer")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1133"},"#1133")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Add certificates list in explorer")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1184"},"#1184")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"CoreVerifier")," setup does not compute ",(0,n.kt)("inlineCode",{parentName:"strong"},"total_stake")," correctly")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1306"},"#1306"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/69c7a5a7.4519d82c.js b/assets/js/69c7a5a7.4519d82c.js new file mode 100644 index 00000000000..ea46a98cac9 --- /dev/null +++ b/assets/js/69c7a5a7.4519d82c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56950],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(n),p=a,h=d["".concat(c,".").concat(p)]||d[p]||m[p]||i;return n?r.createElement(h,o(o({ref:t},u),{},{components:n})):r.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-09-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-22-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-22-performance-and-tracing.md",source:"@site/blog/2023-09-22-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-09-22T00:00:00.000Z",formattedDate:"September 22, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.445,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-09-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-22-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-20-consensus"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"New team member",id:"new-team-member",level:3}],u={toc:s},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Work on machine-readable tracing of tracer configuration is ongoing."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster."),(0,a.kt)("li",{parentName:"ul"},"Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Bl\xf6ndal!")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking\nbackend with means to measure and document network latency for each run. Furthermore we've implemented means to\ncapture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences\nin the behaviour of the underlying networking stack at OS level. "),(0,a.kt)("p",null,"Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided\nto compare standard deviations instead to validate the measurements from nomad."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline\nhave been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis. "),(0,a.kt)("p",null,"Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for ",(0,a.kt)("inlineCode",{parentName:"p"},"trace-dispatcher")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"tx-generator")," we were able to address those issues."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"After various steps in constructing a configuration upon node startup, it is vital to document\nwhich runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML\ntrace message for that purpose. "),(0,a.kt)("p",null,"This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node. "),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it\nproduces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an\nimpact on our measurements, as we'd be basically using two different instruments to take them. "),(0,a.kt)("p",null,"Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service\nor the slightly different system architecture of the new cluster."),(0,a.kt)("h3",{id:"new-team-member"},"New team member"),(0,a.kt)("p",null,"Baldur Bl\xf6ndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team.\nSo I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer"),", the component receiving, processing and making available node traces and metrics."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6a2140b3.b4a88233.js b/assets/js/6a2140b3.b4a88233.js new file mode 100644 index 00000000000..57e7d8869dd --- /dev/null +++ b/assets/js/6a2140b3.b4a88233.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88845],{18702:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/mithril/page/6","page":6,"postsPerPage":5,"totalPages":7,"totalCount":34,"previousPage":"/cardano-updates/tags/mithril/page/5","nextPage":"/cardano-updates/tags/mithril/page/7","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/6a75c57a.f8e5de89.js b/assets/js/6a75c57a.f8e5de89.js new file mode 100644 index 00000000000..49b1fbd48bc --- /dev/null +++ b/assets/js/6a75c57a.f8e5de89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88592],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=s(n),p=a,h=d["".concat(l,".").concat(p)]||d[p]||m[p]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-08-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-08-04-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-performance-and-tracing.md",source:"@site/blog/2023-08-04-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.76,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-08-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-04-network"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-04-sre"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:s},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version ",(0,a.kt)("inlineCode",{parentName:"li"},"8.2.0"),"."),(0,a.kt)("li",{parentName:"ul"},"Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"8.2.0")," version of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," required adjustment of some of the sanity checks that are part of our benchmarking\ncluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint\nwhen using it as default for a running node. "),(0,a.kt)("p",null,"A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any\ninconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node.\nThis feature adds another layer of robustness to the whole system."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler\nversions. We've future-proofed our benchmarking code."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend\naccordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant. "),(0,a.kt)("p",null,"The validation phase is ongoing. We were able to perform successful runs and analyses for various ",(0,a.kt)("inlineCode",{parentName:"p"},"8.x")," node versions, including ",(0,a.kt)("inlineCode",{parentName:"p"},"8.2.0-pre"),". With parallel runs on the current cluster, we hope to measure the same effects we've observed with the\nnomad backend - which will be a big step towards production use."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6b16e156.2e2f483e.js b/assets/js/6b16e156.2e2f483e.js new file mode 100644 index 00000000000..7b1041d81c4 --- /dev/null +++ b/assets/js/6b16e156.2e2f483e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[52650],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),c=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=c(r),d=a,h=s["".concat(u,".").concat(d)]||s[d]||m[d]||o;return r?n.createElement(h,l(l({ref:t},p),{},{components:r})):n.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"DB-sync Team Update",slug:"2023-05-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-01-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-01-db-sync.md",source:"@site/blog/2023-05-01-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-05-01T00:00:00.000Z",formattedDate:"May 1, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.515,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-05-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-03-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-04-28-crypto"}},u={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:c},s="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Prepared a schema change which is expected to speed up queries and help clients\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1389"},"#1389"),"."),(0,a.kt)("li",{parentName:"ul"},"Ran a big number of benchmarks on the above to evaluate if this change is reasonable."),(0,a.kt)("li",{parentName:"ul"},"Performance optimization related to rewards\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1382"},"#1382")),(0,a.kt)("li",{parentName:"ul"},"Using the cache in more places to reduce recourses usage\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1380"},"#1380")),(0,a.kt)("li",{parentName:"ul"},"Evaluated risks related to UTXO-HD integration"),(0,a.kt)("li",{parentName:"ul"},"Worked on a feauture request to split the ",(0,a.kt)("inlineCode",{parentName:"li"},"tx_out")," to an address table\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1396"},"#1396")),(0,a.kt)("li",{parentName:"ul"},"Worked on another feauture request to prune the consumed entries from the ",(0,a.kt)("inlineCode",{parentName:"li"},"tx_out")," table\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1398"},"#1398")),(0,a.kt)("li",{parentName:"ul"},"Prepared for CIP-1694 integration")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6b51f988.6976254a.js b/assets/js/6b51f988.6976254a.js new file mode 100644 index 00000000000..e7fa95190b0 --- /dev/null +++ b/assets/js/6b51f988.6976254a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24384],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>d});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,d=p["".concat(l,".").concat(m)]||p[m]||h[m]||o;return n?a.createElement(d,i(i({ref:t},c),{},{components:n})):a.createElement(d,i({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Q2 2023 Update",slug:"2023-Q2-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/quarterly/2023-Q2-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-consensus.md",source:"@site/quarterly/2023-Q2-consensus.md",title:"Consensus Q2 2023 Update",description:"2023-04 -- 2023-06",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:4.47,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Q2 2023 Update",slug:"2023-Q2-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},nextItem:{title:"Network Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-network"}},l={authorsImageUrls:[void 0]},u=[{value:"2023-04 -- 2023-06",id:"2023-04----2023-06",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Support",id:"support",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4}],c={toc:u},p="wrapper";function h(e){let{components:t,...o}=e;return(0,r.kt)(p,(0,a.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-04----2023-06"},"2023-04 -- 2023-06"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We finished a major prototype refactoring, which includes:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"A better and finer grained DB lock mechanism."),(0,r.kt)("li",{parentName:"ul"},"Elimination of race conditions."),(0,r.kt)("li",{parentName:"ul"},"Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance."),(0,r.kt)("li",{parentName:"ul"},"Architectural simplifications and performance improvements."))),(0,r.kt)("li",{parentName:"ul"},"We implemented a new package to support db-sync integration with UTxO-HD."),(0,r.kt)("li",{parentName:"ul"},"We ran another set of ad-hoc benchmarks:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We uncovered a performance regression on the Network component when using ",(0,r.kt)("inlineCode",{parentName:"li"},"GHC-9.2/9.4"),"."),(0,r.kt)("li",{parentName:"ul"},"The synchronization and replay speed are as expected."),(0,r.kt)("li",{parentName:"ul"},"However, we uncovered memory consumption issues (see figure below).",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The in-memory backend is consuming more memory than the baseline."),(0,r.kt)("li",{parentName:"ul"},"The LMDB backend shows an unexpected memory usage peak."),(0,r.kt)("li",{parentName:"ul"},"Investigation on these issues is ongoing."))))),(0,r.kt)("li",{parentName:"ul"},"We integrated the latest changes in ",(0,r.kt)("inlineCode",{parentName:"li"},"main")," branch.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"This required a re-design of the mempool to include the mempool fairness\nimprovement.")))),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(49718).Z,width:"2500",height:"1700"})),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The Genesis work for this PI focused on an high-priority issue from the IOG Researchers' feedback on the proposal.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"This particular question was not anticipated when the Q2 PI was planned."),(0,r.kt)("li",{parentName:"ul"},"As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized."),(0,r.kt)("li",{parentName:"ul"},"That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package."))),(0,r.kt)("li",{parentName:"ul"},"The IOG Researchers' feedback on the design was very valuable. It had two primary effects."),(0,r.kt)("li",{parentName:"ul"},'Outcome 1: We re-introduced distinct behaviors when the node is "syncing" versus when it is "caught up".',(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated."),(0,r.kt)("li",{parentName:"ul"},"The additional design complexity is relatively small."))),(0,r.kt)("li",{parentName:"ul"},"Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era."),(0,r.kt)("li",{parentName:"ul"},"All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras."),(0,r.kt)("li",{parentName:"ul"},"Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later."),(0,r.kt)("li",{parentName:"ul"},"The primary invention was a model for bounding how much benefit the adversary's long-range attack could possibly gain from Praos's natural short forks."))),(0,r.kt)("li",{parentName:"ul"},"Relevant questions that the IOG Researchers are still assessing.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"These do not block the Genesis implementation, but do affect the ultimate values of specific parameters."),(0,r.kt)("li",{parentName:"ul"},"Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?"),(0,r.kt)("li",{parentName:"ul"},"Question 2: what is the upper bound on how much grinding can improve the adversary's leader schedule within some Genesis window?")))),(0,r.kt)("h4",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We performed an analysis on number of file descriptors used by Consensus, this\ninformation can be used by the node operators to check if the number of file\ndescriptors they want to support are enough, thus improving the user (eg node\noperator) experience."),(0,r.kt)("li",{parentName:"ul"},"We implemented a mempool fairness improvement, by which transactions are\nguaranteed to be processed irrespective of their size.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We fixed a bug in followers logic, which was discovered by our ",(0,r.kt)("inlineCode",{parentName:"li"},"QuickCheck"),"\nproperty tests."),(0,r.kt)("li",{parentName:"ul"},"We created an ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/68"},"immutable DB\nserver"),". This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results."),(0,r.kt)("li",{parentName:"ul"},"We created a ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/70"},(0,r.kt)("inlineCode",{parentName:"a"},"db-truncater"))," tool, which can be used in disaster recovery and benchmarking scenarios."),(0,r.kt)("li",{parentName:"ul"},"We created a ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/161"},"benchmarks comparison tool")," that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance ",(0,r.kt)("em",{parentName:"li"},"improvements")," introduced by the Ledger team in version ",(0,r.kt)("inlineCode",{parentName:"li"},"0.6.0.0")," of Consensus wrt version ",(0,r.kt)("inlineCode",{parentName:"li"},"0.5.0.0"),".")),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(23425).Z,width:"1840",height:"1372"})),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We released ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim")," as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project."),(0,r.kt)("li",{parentName:"ul"},"We migrated the consensus code to a ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus"},"new repository"),", splitting\nit from the ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-network")," repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases)."),(0,r.kt)("li",{parentName:"ul"},"We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users)."),(0,r.kt)("li",{parentName:"ul"},"We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We will ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/28"},"get UTxO-HD ready for handover"),".")),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work.")))}h.isMDXComponent=!0},23425:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2023-Q2-beacon-graph-ded65e814bfe6d927faa1c5c66bbbfad.png"},49718:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks-74f9d76c2602f09652f584cc4d6a0962.png"}}]); \ No newline at end of file diff --git a/assets/js/6b553c5c.fe679aa9.js b/assets/js/6b553c5c.fe679aa9.js new file mode 100644 index 00000000000..b7f722f21f0 --- /dev/null +++ b/assets/js/6b553c5c.fe679aa9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93784],{90804:a=>{a.exports=JSON.parse('{"label":"mithril","permalink":"/cardano-updates/tags/mithril","allTagsPath":"/cardano-updates/tags","count":34}')}}]); \ No newline at end of file diff --git a/assets/js/6b6054d2.1032f2af.js b/assets/js/6b6054d2.1032f2af.js new file mode 100644 index 00000000000..81231d3825d --- /dev/null +++ b/assets/js/6b6054d2.1032f2af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30584],{75433:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/34","page":34,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/33","nextPage":"/cardano-updates/page/35","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/6bae8700.1896d76a.js b/assets/js/6bae8700.1896d76a.js new file mode 100644 index 00000000000..ce4a3bb2025 --- /dev/null +++ b/assets/js/6bae8700.1896d76a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35703],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),c=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},u="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(a),h=n,m=u["".concat(d,".").concat(h)]||u[h]||s[h]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-11-hydra",authors:["ffakenz","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-11-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-11-hydra.md",source:"@site/blog/2023-08-11-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-11T00:00:00.000Z",formattedDate:"August 11, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.8,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-11-hydra",authors:["ffakenz","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-15-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-11-performance-and-tracing"}},d={authorsImageUrls:[void 0,void 0]},c=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:c},u="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team updated ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," to support ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node"),' version\n8.1.2, ensuring compatibility with the latest mainnet release. The team also\nparticipated in discussions about a "cardanonical" JSON schema and added it as a\nsubmodule to the project, contributing to improved data modeling and\ninteroperability.'),(0,n.kt)("p",null,"In terms of community engagement, the team successfully onboarded a new\ncontributor, also participated in a RareEvo Twitter space, and continued\npreparations for the Hydra master-class."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to support cardano-node 8.1.2 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1007"},"#1007")),(0,n.kt)("li",{parentName:"ul"},"Engaged in discussions about a ","\u201c","cardanonical","\u201d"," json schema and\nadd it as submodule to the project\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1013"},"#1013")),(0,n.kt)("li",{parentName:"ul"},"Onboarded a new contributor to the hydra project (@locallycompact)"),(0,n.kt)("li",{parentName:"ul"},"Joined RareEvo twitter space and continued preparation of hydra master-class")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update & streamline tutorial to work with latest version of hydra-node"),(0,n.kt)("li",{parentName:"ul"},"Remove the internal commit functionality ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/954"},"#954")),(0,n.kt)("li",{parentName:"ul"},"Release 0.12.0")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6c658908.1afc9614.js b/assets/js/6c658908.1afc9614.js new file mode 100644 index 00000000000..a15906e71ee --- /dev/null +++ b/assets/js/6c658908.1afc9614.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73875],{18860:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/sre","page":1,"postsPerPage":5,"totalPages":3,"totalCount":15,"nextPage":"/cardano-updates/tags/sre/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/6c8b7ad4.3b4a3f73.js b/assets/js/6c8b7ad4.3b4a3f73.js new file mode 100644 index 00000000000..aa16ff8cc54 --- /dev/null +++ b/assets/js/6c8b7ad4.3b4a3f73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[28577],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=s(n),d=r,h=c["".concat(p,".").concat(d)]||c[d]||m[d]||o;return n?a.createElement(h,i(i({ref:t},u),{},{components:n})):a.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const o={title:"SRE Q3 2023 Update",slug:"2023-Q3-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2023-Q3-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q3-sre.md",source:"@site/quarterly/2023-Q3-sre.md",title:"SRE Q3 2023 Update",description:"2023-07 - 2023-09",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"sre",permalink:"/cardano-updates/quarterly/tags/sre"}],readingTime:.905,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Q3 2023 Update",slug:"2023-Q3-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-performance-and-tracing"},nextItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-04-25-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"2023-07 - 2023-09",id:"2023-07---2023-09",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Next steps",id:"next-steps",level:3}],u={toc:s},c="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-07---2023-09"},"2023-07 - 2023-09"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("p",null,"In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completion of mainnet relay networking conversion to p2p topology"),(0,r.kt)("li",{parentName:"ul"},"Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality"),(0,r.kt)("li",{parentName:"ul"},"Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines"),(0,r.kt)("li",{parentName:"ul"},"Creation of a nix content addressed packages repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs"},"capkgs"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a cardano performance benchmarking cluster, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf"},"cardano-perf"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"To replace legacy cluster benchmark tooling"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a cardano cluster composition repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"cardano-parts"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"For enabling multi-cluster, multi-role cardano network deployments"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a cardano testnets repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Utilizing cardano-parts for testnet deployments"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a sanchonet demo repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo"},"sanchonet-demo"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Utilizing cardano-parts for fast sanchonet test environment and demo purposes")))),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Continue with migration of cardano-world testnets to cardano-playground"),(0,r.kt)("li",{parentName:"ul"},"Proceed with spinup of mainnet p2p bootstrap cluster"),(0,r.kt)("li",{parentName:"ul"},"Scale down mainnet non-p2p legacy cluster at the appropriate time")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d22e028.a5fcbc6b.js b/assets/js/6d22e028.a5fcbc6b.js new file mode 100644 index 00000000000..52365339b9e --- /dev/null +++ b/assets/js/6d22e028.a5fcbc6b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29750],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),s=u(a),d=r,h=s["".concat(p,".").concat(d)]||s[d]||m[d]||l;return a?n.createElement(h,o(o({ref:t},c),{},{components:a})):n.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:r,o[1]=i;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const l={title:"Node API & CLI Team Update",slug:"2023-11-14-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-11-14-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-14-node-cli-api.md",source:"@site/blog/2023-11-14-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-11-14T00:00:00.000Z",formattedDate:"November 14, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.155,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-11-14-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-15-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-10-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},s="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(s,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-11-01---2023-11-14"},"2023-11-01 - 2023-11-14"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CARDANO-NODE"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.6.0-pre"},"Pre-release of Cardano Node 8.6.0-pre"))),(0,r.kt)("p",null,"CARDANO-CLI"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Improve golden tests"),(0,r.kt)("li",{parentName:"ul"},"Clean-up of conway era commands")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/451"},"Replace usages of assertFileOccurences (6/6)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/448"},"Replace usages of assertFileOccurences (5/6)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/444"},"Replace usages of assertFileOccurences by usage of new functions \u2728 (4/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/443"},"put n shelley/byron key witnesses arguments in correct order")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/441"},"Replace usages of assertFileOccurences by comparisons with golden files (3/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/436"},"Replace usages of assertFileOccurences by comparisons with golden files (2/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/435"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-8.31.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/434"},"Remove remaining uses of ",(0,r.kt)("inlineCode",{parentName:"a"},"IsCardanoEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/432"},"Release 8.14.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/430"},"Upgrade cardano-api to 8.30")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/428"},"Command types for ",(0,r.kt)("inlineCode",{parentName:"a"},"node")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/427"},"Split governance ",(0,r.kt)("inlineCode",{parentName:"a"},"MIRTransferConstructor"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/426"},"Replace usages of assertFileOccurences by comparisons with golden files (1/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/425"},"Command argument types for ",(0,r.kt)("inlineCode",{parentName:"a"},"drep")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/421"},"Add golden test for ",(0,r.kt)("inlineCode",{parentName:"a"},"governance action create-no-confidence"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/419"},"Command arguments types for stake-pool commands"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/364"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.31.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/360"},"Use ledger presentation of multi-asset values directly. Lens to make this uniform over ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/358"},"Protocol version change is not common to all versions anymore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/355"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"ByronAndAllegraEraOnwards"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/354"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"IsCardanoEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"IsShelleyBasedEra")," contraints in GADT constructors with ",(0,r.kt)("inlineCode",{parentName:"a"},"Typeable"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/353"},"Modify foldBlocks to recurse on ledger events ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/352"},"Add generators for ",(0,r.kt)("inlineCode",{parentName:"a"},"EraBasedProtocolParametersUpdate"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/351"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.30.0.0")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.6.0-pre"},"Pre-release of Cardano Node 8.6.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5525"},"cardano-node: use ouroboros-network-protocols-0.5.2"))))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d25229c.2394cdc6.js b/assets/js/6d25229c.2394cdc6.js new file mode 100644 index 00000000000..d041bc1516f --- /dev/null +++ b/assets/js/6d25229c.2394cdc6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91879],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),s=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=s(a),u=r,h=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-06-08-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-08-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-goedel.md",source:"@site/blog/2023-06-08-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.605,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-06-08-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-06-08-db-sync"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-08-sre"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint the team has been working on giving and preparing public\ntalks, also on preparing final versions of their ICE 2023 papers, and\non analysing chain selection."),(0,r.kt)("p",null,"This sprint the team has been working on final revisions for the\npre-proceedings versions of two ICE 2023 papers."),(0,r.kt)("h2",{id:"details"},"Details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Lambda Days keynote by Kevin Hammond:\n",(0,r.kt)("a",{parentName:"p",href:"https://www.lambdadays.org/lambdadays2023"},"https://www.lambdadays.org/lambdadays2023"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Codebeam keynote by Peter Van Roy: ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"},"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"),"; ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"},"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing talks and final versions for two ICE 2023 contributions:\n",(0,r.kt)("a",{parentName:"p",href:"https://www.discotec.org/2023/ice"},"https://www.discotec.org/2023/ice"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Analysing chain selection.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,r.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d371395.59984cd7.js b/assets/js/6d371395.59984cd7.js new file mode 100644 index 00000000000..e9c4d0240b3 --- /dev/null +++ b/assets/js/6d371395.59984cd7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97730],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var d=n.createContext({}),s=function(e){var t=n.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=s(e.components);return n.createElement(d.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,d=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=s(a),m=r,h=c["".concat(d,".").concat(m)]||c[m]||p[m]||o;return a?n.createElement(h,i(i({ref:t},u),{},{components:a})):n.createElement(h,i({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-09-01-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-09-01-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-01-ledger.md",source:"@site/blog/2022-09-01-ledger.md",title:"Ledger Team Update",description:"Ledger Update",date:"2022-09-01T00:00:00.000Z",formattedDate:"September 1, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.94,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-09-01-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-16-ledger"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-08-31-consensus"}},d={authorsImageUrls:[void 0]},s=[{value:"Ledger Update",id:"ledger-update",level:2},{value:"New minimal ledger era",id:"new-minimal-ledger-era",level:3},{value:"Addressing technical debt",id:"addressing-technical-debt",level:3}],u={toc:s},c="wrapper";function p(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"ledger-update"},"Ledger Update"),(0,r.kt)("p",null,"Since finishing up support for the Vasil Hardfork, the ledger team has been\nfocused on two main things: a new ledger era and technical debt."),(0,r.kt)("h3",{id:"new-minimal-ledger-era"},"New minimal ledger era"),(0,r.kt)("p",null,"We have implemented a new ledger era named ",(0,r.kt)("inlineCode",{parentName:"p"},"conway")," which is nearly identical\nto the ",(0,r.kt)("inlineCode",{parentName:"p"},"babbage")," era. This has been the first time that we have been able to see\nwhat a minimal ledger era looks like. We have finished this task, modulo any\nintegration issues that might come up. The only thing that the ",(0,r.kt)("inlineCode",{parentName:"p"},"conway")," era\ndoes differently from the ",(0,r.kt)("inlineCode",{parentName:"p"},"babbage")," era is provide support for rotating\nthe master keys using the hardfork combinator's state translation.\nWe may end up adding features to the ",(0,r.kt)("inlineCode",{parentName:"p"},"conway")," era, but it is a nice exercise\nseeing what it looks like to get a minimal ledger era supported in all the\ndownstream components."),(0,r.kt)("h3",{id:"addressing-technical-debt"},"Addressing technical debt"),(0,r.kt)("p",null,"We have been addressing technical debt, mostly in an effort to make the\nrepository a more friendly code base to work in."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We have begun work on a ledger API, called ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-ledger-api"),"."),(0,r.kt)("li",{parentName:"ul"},"We have done a big re-design of the major type classes used in the ledger.\nWith hindsight on our side, we now have something much more organized and\neasier to use."),(0,r.kt)("li",{parentName:"ul"},"We have done a lot of re-naming. The names across eras are now much more\nuniform, avoid certain confusions that plagued us, and are clearer in where\nthey are from."),(0,r.kt)("li",{parentName:"ul"},"We have reduced a lot of code duplication that could lead to bugs if you\ndo not have the whole code base in your head."),(0,r.kt)("li",{parentName:"ul"},"We have added a handful of performance improvements."),(0,r.kt)("li",{parentName:"ul"},"We added type safety in a number of locations. In particular, the type of\nvalues that can be minted in a transaction no longer allow for Lovelace\nin the type, and some functions which used to handle both timelock scripts\nand plutus script now correctly enoforce at the type level that only one of\nthem can be used."),(0,r.kt)("li",{parentName:"ul"},"We made our generators so that they now produce a much richer set of\nvalid serializations. There is room within CBOR to serialize the same\ndata structure in multiple ways, and it is helpful to have the generators\nuse a wide variety."),(0,r.kt)("li",{parentName:"ul"},"We have begun re-organizing our test suites.")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d826f51.2c78b028.js b/assets/js/6d826f51.2c78b028.js new file mode 100644 index 00000000000..c9b7438e3ef --- /dev/null +++ b/assets/js/6d826f51.2c78b028.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7729],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),h=p(n),c=a,d=h["".concat(l,".").concat(c)]||h[c]||m[c]||o;return n?r.createElement(d,s(s({ref:t},u),{},{components:n})):r.createElement(d,s({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=c;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[h]="string"==typeof e?e:a,s[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-10-18-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-18-consensus.md",source:"@site/blog/2022-10-18-consensus.md",title:"Consensus Team Update",description:"High-level summary",date:"2022-10-18T00:00:00.000Z",formattedDate:"October 18, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:3.225,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-19-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-14-hydra"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"High-level status report",id:"high-level-status-report",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Finish the UTxO HD prototype",id:"finish-the-utxo-hd-prototype",level:3},{value:"Era transition property tests",id:"era-transition-property-tests",level:4},{value:"Mempool state-machine tests",id:"mempool-state-machine-tests",level:4},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"Benchmarking the CSJ prototype",id:"benchmarking-the-csj-prototype",level:3}],u={toc:p},h="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(h,(0,r.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,a.kt)("p",null,"During the past two weeks, the consensus team worked on adding property test for\ndifferent aspects of the UTxO HD prototype: era transitions, mempool, and\nbacking store. Thanks to these tests we were able to uncover a bug in the\nprototype. On the Genesis front, we benchmarked a different version of the\nChainSync jumping prototype to try to improve its performance, but this did not\nresult in any noticeable speedup."),(0,a.kt)("h2",{id:"high-level-status-report"},"High-level status report"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Finish the UTxO HD prototype: on track.",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We focused on increasing test coverage for the UTxO-HD prototype:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We started implementing Cadano-eras transition property-tests."),(0,a.kt)("li",{parentName:"ul"},"We started implementing state-machine property-tests for the mempool."),(0,a.kt)("li",{parentName:"ul"},"We merged the mempool rewrite."),(0,a.kt)("li",{parentName:"ul"},"We started working on state-machine tests for the backing store. This\nuncovered a bug in the range-read implementation of the LMDB backing\nstore."))))),(0,a.kt)("li",{parentName:"ul"},"Genesis: on track.",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We benchmarked a version of the Genesis ChainSync Jumping prototype that\nspreads out the ChainSync updates over a longer period of time. This did not\nresult in any noticeable speedup."),(0,a.kt)("li",{parentName:"ul"},"We investigated the overhead introduced by non-ChainSync components, but no\nconclusions could be drawn from the benchmarks we ran.")))),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"finish-the-utxo-hd-prototype"},"Finish the UTxO HD prototype"),(0,a.kt)("p",null,"We focused on increasing test coverage for the UTxO HD prototype. We also merged\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4049"},"mempool\nrewrite"),"."),(0,a.kt)("h4",{id:"era-transition-property-tests"},"Era transition property tests"),(0,a.kt)("p",null,"We started implementing ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4043"},"Cardano era transition property\ntests"),",\nwhich are needed for making sure that the ledger tables get updated in the\nright way when we move from one era to the next. There are at the moment two\nimportant transitions."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Byron to Shelley: where all the UTxO is transferred from in-memory Byron\nstate (which has no tables) to the ledger tables of the Shelley state."),(0,a.kt)("li",{parentName:"ul"},"Shelley to Allegra: where the AVVM addresses must be deleted.")),(0,a.kt)("p",null,"We have tests for the Byron to Shelley transitions. We are working on adding\nthe remaining ones."),(0,a.kt)("h4",{id:"mempool-state-machine-tests"},"Mempool state-machine tests"),(0,a.kt)("p",null,"We started implementing ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4044"},"state-machine property tests for the\nmempool"),".\nThe mempool is currently tested via pure property tests, and use a ledger\nstate without tables. With the introduction of UTxO HD, testing the concurrent\nbehavior of the mempool became of crucial importance (eg now we have to\nacquire locks to flush the backing store). In addition, we need to test a\nledger state with tables. These needs led to the creation of a new set of\nproperty tests. In particular we aim to run parallel state-machine tests that\nexercise the mempool in a way similar to how the node would make use of it."),(0,a.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,a.kt)("p",null,"We started working on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4081"},"state-machine tests for the backing\nstore")," that UTxO\nHD uses. The property tests uncovered errors in the range-reads implementation\nof the LMDB backing store. To facilitate fixing this bug, we made\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"changes")," to the Haskell\nLMDB bindings."),(0,a.kt)("h3",{id:"benchmarking-the-csj-prototype"},"Benchmarking the CSJ prototype"),(0,a.kt)("p",null,"Prompted by previous benchmarks showing significant improvements in sync time by\nusing more capabilities, we implemented a way to spread out the ChainSync\nupdates over a larger period instead of firing them all at the same time. This\ndidn't result in a noticeable speedup."),(0,a.kt)("p",null,"We also benchmarked the prototype with CSJ disabled (such that just the dynamo\npeer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule\nout/confirm overhead by non-ChainSync (mainly BlockFetch) related components.\nThis results in era-specific behavior (speed is like the prototype in Byron, but\nlike the baseline in Shelley). This deserves a closer look in the future."),(0,a.kt)("p",null,"This diagram shows the respective syncing progress, starting at Genesis and\ncontinuing a good part into Shelley (with the dashed line indicating the\nByron-to-Shelley transition)."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Red: baseline"),(0,a.kt)("li",{parentName:"ul"},"Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps."),(0,a.kt)("li",{parentName:"ul"},"Blue: like Green, jumps are spread out."),(0,a.kt)("li",{parentName:"ul"},"Orange: variant with no jumping, to measure unrelated overhead.")),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(35555).Z,width:"654",height:"459"})))}m.isMDXComponent=!0},35555:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/happy-path-csj-prototype-bench-2-e23d2986ddef0a187df9ce336b2db116.svg"}}]); \ No newline at end of file diff --git a/assets/js/6da0a796.a9cb8072.js b/assets/js/6da0a796.a9cb8072.js new file mode 100644 index 00000000000..273513e2093 --- /dev/null +++ b/assets/js/6da0a796.a9cb8072.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80567],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=s(r),h=n,d=c["".concat(u,".").concat(h)]||c[h]||m[h]||i;return r?a.createElement(d,l(l({ref:t},p),{},{components:r})):a.createElement(d,l({ref:t},p))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var s=2;s{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2022-11-25-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2022-11-25-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-25-crypto.md",source:"@site/blog/2022-11-25-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2022-11-25T00:00:00.000Z",formattedDate:"November 25, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.705,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-11-25-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-28-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-25-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"MuSig2",id:"musig2",level:3},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:2}],p={toc:s},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The four open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team. "),(0,n.kt)("li",{parentName:"ul"},"Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes"),(0,n.kt)("li",{parentName:"ul"},"cardano-base: The VRF and BLS branchs are still open and in progress"),(0,n.kt)("li",{parentName:"ul"},"KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent. ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/31"},"PR#31")),(0,n.kt)("li",{parentName:"ul"},"We are introducing a more granular error handling mechanism ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/33"},"PR#33")),(0,n.kt)("li",{parentName:"ul"},"We rethought the API and made it more consistent with the underlying secp256k1 library ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/35"},"PR#35"))),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The mithril crates in general will be published in crates.io, and we adapted the core library's README ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/616"},"PR#616")," "),(0,n.kt)("li",{parentName:"ul"},"We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/620"},"PR#620"))),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#341")),(0,n.kt)("li",{parentName:"ul"},"SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/344"},"PR#344")),(0,n.kt)("li",{parentName:"ul"},"Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"))),(0,n.kt)("h2",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We keep progressing in the secure forgetting PR and resolving some bugs on memory handling ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"PR#255")),(0,n.kt)("li",{parentName:"ul"},"Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6e43d302.e737c437.js b/assets/js/6e43d302.e737c437.js new file mode 100644 index 00000000000..36f8898d849 --- /dev/null +++ b/assets/js/6e43d302.e737c437.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59747],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var l=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=l.createContext({}),o=function(e){var t=l.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=o(e.components);return l.createElement(u.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},h=l.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,u=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),m=o(a),h=r,c=m["".concat(u,".").concat(h)]||m[h]||d[h]||n;return a?l.createElement(c,i(i({ref:t},s),{},{components:a})):l.createElement(c,i({ref:t},s))}));function c(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,i=new Array(n);i[0]=h;var p={};for(var u in t)hasOwnProperty.call(t,u)&&(p[u]=t[u]);p.originalType=e,p[m]="string"==typeof e?e:r,i[1]=p;for(var o=2;o{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>n,metadata:()=>p,toc:()=>o});var l=a(87462),r=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-09-29-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-09-29-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-ledger.md",source:"@site/blog/2023-09-29-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.465,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-09-29-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-29-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-29-sre"}},u={authorsImageUrls:[void 0]},o=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Performance",id:"performance",level:3},{value:"Releasing",id:"releasing",level:3},{value:"Testing",id:"testing",level:3}],s={toc:o},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,l.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"Few important Conway related features were completed in this two week period:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Constitutional Committee was the last missing Conway related entity that has now been\nfully implemented."),(0,r.kt)("li",{parentName:"ul"},"Treasury withdrawals governance actions have been fixed and now behave as expected."),(0,r.kt)("li",{parentName:"ul"},"Current treasury amount supplied in the transaction is now enforced by the rules."),(0,r.kt)("li",{parentName:"ul"},"DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no\nproposals to vote on."),(0,r.kt)("li",{parentName:"ul"},"Semantics of how CostModels are updated with Protocol Parameters have been changed to\nallow for individual Plutus language version updates, rather than requiring a complete\nreplacement of all CostModels")),(0,r.kt)("p",null,"Besides the new features there were also important performance and testing improvements:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"In particular stake distribution computation and native script handling received some\noptimizations."),(0,r.kt)("li",{parentName:"ul"},"New testing DSL has been implemented that drastically simplifies writing unit tests for\nledger rules."),(0,r.kt)("li",{parentName:"ul"},"Integration tests and benchmarks are now possible for Conway era because of the overhaul\nof functionality for initial funds and staking injection whenever node starts up in\nConway, while bypassing all previous eras.")),(0,r.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,r.kt)("h3",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3729"},"pull-3729")," - DRep expiry update after a contiguous set of epochs with no proposals to vote on"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3739"},"pull-3739")," - Rename some PParams to be consistent with Agda specification"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3743"},"pull-3743")," - Move DRepDistr from VState to ConwayGovState"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3746"},"pull-3746")," - Implement ",(0,r.kt)("inlineCode",{parentName:"li"},"tcTranslationContextL")," for Shelley"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3737"},"pull-3737")," - Implement EraTransition"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3749"},"pull-3749")," - Add predicate failure: current treasury value mismatch in LEDGER"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3748"},"pull-3748")," - Apply enacted treasury withdrawals"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3745"},"pull-3745")," - Constitutional Committee Ratification"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3763"},"pull-3763")," - Plutus interface improvements"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3771"},"pull-3771")," - Changed how costmodel updates are applied"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3766"},"pull-3766")," - Prevent updating protocol version with ",(0,r.kt)("inlineCode",{parentName:"li"},"PParamUpdate"))),(0,r.kt)("h3",{id:"performance"},"Performance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3765"},"pull-3765")," - Improve native script handling"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3747"},"pull-3747")," - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3758"},"pull-3758")," - Cardano-Perf regression: UMap.size regression fix"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3754"},"pull-3754")," - Use Alonzo-style TxOut encoder when possible")),(0,r.kt)("h3",{id:"releasing"},"Releasing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3742"},"pull-3742")," - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3744"},"pull-3744")," - Changelog 8.4"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3752"},"pull-3752")," - Patch release of cardano ledger conway 1.8.1.0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3753"},"pull-3753")," - Minor cleanup and changelog entries"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3760"},"pull-3760")," - Fixup issues for release"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3764"},"pull-3764")," - Bump plutus deps to 1.13")),(0,r.kt)("h3",{id:"testing"},"Testing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3734"},"pull-3734")," - Removed ",(0,r.kt)("inlineCode",{parentName:"li"},"Shaped")," instance for ",(0,r.kt)("inlineCode",{parentName:"li"},"Rep")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3735"},"pull-3735")," - Simplify the implementations of ",(0,r.kt)("inlineCode",{parentName:"li"},"hasOrd")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"hasEq")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3728"},"pull-3728")," - STS tests based on constraints"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3714"},"pull-3714")," - Implement the remaining upgradable families"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3733"},"pull-3733")," - Add some unit tests for Conway features"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3762"},"pull-3762")," - Update CDDL for praos headers.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6e743f1b.64602d6e.js b/assets/js/6e743f1b.64602d6e.js new file mode 100644 index 00000000000..6d1b878afc6 --- /dev/null +++ b/assets/js/6e743f1b.64602d6e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42686],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(n),h=a,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||o;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:a,i[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-01-11-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-01-11-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-11-consensus.md",source:"@site/blog/2023-01-11-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-01-11T00:00:00.000Z",formattedDate:"January 11, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.35,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-01-11-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-12-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-01-11-performance-and-tracing"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"New Conway era",id:"new-conway-era",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],p={toc:u},c="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The consensus team is resuming its activities after the Christmas break. During\nthese weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and\ndiscussing with the Ledger team the changes that might be required for the next\niterations. The pull request that adds the Conway era is waiting for a second\nreview round and we hope to merge it soon. On the technical debt side we are\nlooking into a property-test failure found in the iterators. We are\ninvestigating if this is an error in the model or in the implementation. We also\nimproved the documentation of our testing code."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,a.kt)("p",null,"We worked with the Ledger team to start preparing the next versions of UTxO-HD.\nThe Ledger team is concerned that for the remaining maps we might need the full\nledger state on epoch boundaries. Since the main consumer of the ledger rules is\nConsensus, the code that requires access to a full state could be moved from the\nledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take\nplace in such bridge, instead of querying the ledger for the values that are\nrequired in the epoch-transition computations."),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4234"},"relocated")," some UTxO-HD definitions, in preparation for merging\nthe prototype into ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."),(0,a.kt)("p",null,"We also completed updated local benchmarks comparing the replay time and memory\nconsumption of:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"the baseline node (",(0,a.kt)("inlineCode",{parentName:"li"},"f2fc76ef45647275c98634da1718290b976ff364"),") "),(0,a.kt)("li",{parentName:"ul"},"the UTxO-HD node with the in-memory backend "),(0,a.kt)("li",{parentName:"ul"},"the UTxO-HD node with the LMDB backend")),(0,a.kt)("p",null,"The following plot shows the results: we can see that the LMDB node barely\nreaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The\nin-memory backend is about 30 minutes faster, but still slower than the baseline\nversion. We are aware of this phenomenon and it is inherent to the problem of\nmaintaining sequences of differences of the last ",(0,a.kt)("inlineCode",{parentName:"p"},"k")," ledger states that allows\nus to perform rollback and roll-forward. We are in the process of measuring\nsyncing from scratch times."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(15253).Z,width:"2500",height:"1700"})),(0,a.kt)("p",null,"We also ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4263"},"added ",(0,a.kt)("inlineCode",{parentName:"a"},"StaticEither")," accessors")," that helped us to simplify\nthe UTxO-HD prototype."),(0,a.kt)("h3",{id:"new-conway-era"},"New Conway era"),(0,a.kt)("p",null,"We incorporated the feedback of the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3971"},"pull request"),", and rebased this\nbranch on top of ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". The PR is pending a second review round and we hope\nto merge this soon."),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("p",null,"We are investigating a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4183"},"property-testing failure")," involving\niterators. Solving this requires understanding the expected behavior of\niterators in the counterexample found by ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," to determine if the error\nis in the model or in the implementation."),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4248"},"moved")," the contents of ",(0,a.kt)("inlineCode",{parentName:"p"},"docs/Testing.md")," closer to the code, so that the\nexplanations about the tests are easier to find in the relevant modules, and the\ndocumentation is easier to keep up to date."))}d.isMDXComponent=!0},15253:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/2023-01-11-utxo-hd-replay-benchmarks-dcf6daaf5460de7591a60db1457d2e58.png"}}]); \ No newline at end of file diff --git a/assets/js/6e7b669d.61ef66f9.js b/assets/js/6e7b669d.61ef66f9.js new file mode 100644 index 00000000000..97e7f2b5eae --- /dev/null +++ b/assets/js/6e7b669d.61ef66f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96799],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=o.createContext({}),l=function(e){var t=o.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=l(e.components);return o.createElement(p.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(r),h=n,m=u["".concat(p,".").concat(h)]||u[h]||c[h]||a;return r?o.createElement(m,i(i({ref:t},d),{},{components:r})):o.createElement(m,i({ref:t},d))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=h;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[u]="string"==typeof e?e:n,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var o=r(87462),n=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-09-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-09-15-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-network.md",source:"@site/blog/2023-09-15-network.md",title:"Network Team Update",description:"High-level overview of sprint 44",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.41,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-09-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-15-ledger"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-15-sre"}},p={authorsImageUrls:[void 0]},l=[{value:"High-level overview of sprint 44",id:"high-level-overview-of-sprint-44",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"Cardano-Node-8.4.0 Release",id:"cardano-node-840-release",level:3},{value:"Towards Typed Protocols 0.2.0.0",id:"towards-typed-protocols-0200",level:3},{value:"Tech Debt",id:"tech-debt",level:3},{value:"P2P adoption",id:"p2p-adoption",level:3},{value:"Open Source",id:"open-source",level:3}],d={toc:l},u="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,o.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-44"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+44%22"},"sprint 44")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"In this sprint, we focused on developing bootstrap peers."),(0,n.kt)("p",null,"Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we\nidentified a possible improvement to bootstrap peers. A more detailed\ndescription is available ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4675"},"here"),"."),(0,n.kt)("h3",{id:"cardano-node-840-release"},"Cardano-Node-8.4.0 Release"),(0,n.kt)("p",null,"We also were responsible for the ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node-8.4.0-pre")," release. A final\nintegration ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5467"},"PR")," is currently being merged. We published\nnew versions of ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-api")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-cli"),"."),(0,n.kt)("h3",{id:"towards-typed-protocols-0200"},"Towards Typed Protocols 0.2.0.0"),(0,n.kt)("p",null,"We also updated the future ",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols-0.2.0.0")," and its integration with\n",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node"),". This is towards our goal which we planned for the next\nquarter. The identified tasks are to fix breaking tests, and then measure and\naddress possible performance regressions."),(0,n.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,n.kt)("p",null,"Mark Tullsen (Galois) submitted two more PRs: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4663"},"ouroboros-network-#4663"),",\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4664"},"ouroboros-network-#4664"),". We provided feedback on their other pull requests: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661")," and\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4660"},"ouroboros-network-#4660"),"."),(0,n.kt)("h3",{id:"p2p-adoption"},"P2P adoption"),(0,n.kt)("p",null,"In the last two weeks, there was a regression in P2P adoption concerning\nthe number of SPOs or stakes, although the number of overall P2P relays has\nincreased. Karl Knutsson (",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"Cardano Foundation"),") is investigating\nthis issue.\n",(0,n.kt)("img",{alt:"P2P relays",src:r(70480).Z,width:"2014",height:"1586"})),(0,n.kt)("p",null,"The following graphs show several different versions of relays running on the mainnet. The\ngreen line ",(0,n.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionV10.True")," denotes P2P relays, which slowly\nincrease over time. The ",(0,n.kt)("inlineCode",{parentName:"p"},"V9")," and earlier versions of the ",(0,n.kt)("inlineCode",{parentName:"p"},"node-to-node"),"\nthe protocol indicates nodes version ",(0,n.kt)("inlineCode",{parentName:"p"},"1.35.x")," or earlier.\n",(0,n.kt)("img",{alt:"node versions",src:r(20669).Z,width:"2016",height:"1576"})),(0,n.kt)("p",null,"Data has been kindly provided by ",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"Cardano Foundation")," and their mainnet\nmonitoring infrastructure."),(0,n.kt)("h3",{id:"open-source"},"Open Source"),(0,n.kt)("p",null,"We are in the process of upstreaming our ffi to Windows Named Pipes API to the ",(0,n.kt)("inlineCode",{parentName:"p"},"Win32")," package, see ","[win32-220]","."))}c.isMDXComponent=!0},70480:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/2023-09-14-p2p-relays-1b3da3da7ec3915f63ca8668bd38aff9.png"},20669:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/2023-09-14-relay-versions-a689a96e93e12ee1c78dfe14229f0ea9.png"}}]); \ No newline at end of file diff --git a/assets/js/6eecfaae.6cbf1fce.js b/assets/js/6eecfaae.6cbf1fce.js new file mode 100644 index 00000000000..ed55a6e0093 --- /dev/null +++ b/assets/js/6eecfaae.6cbf1fce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[84069],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=n,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return r?a.createElement(h,i(i({ref:t},s),{},{components:r})):a.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2023-06-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-09-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-crypto.md",source:"@site/blog/2023-06-09-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-06-09T00:00:00.000Z",formattedDate:"June 9, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.705,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-06-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-12-network"},nextItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-06-09-developer-experience"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"cardano-base",id:"cardano-base",level:3},{value:"Mithril",id:"mithril",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-base: E2E tests for BLS bindings and KES agent "),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Implement ECC chip and Rescue hash primitives for ATMS"),(0,n.kt)("li",{parentName:"ul"},"mithril: Full node verifier")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"RawBearer API in ouroboros-network-framework (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395)"},"https://github.com/input-output-hk/ouroboros-network/pull/4395)"),"; blocked due to issue with windows' localSnocket. Trying to resolve."),(0,n.kt)("li",{parentName:"ul"},"Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"#317"),"."),(0,n.kt)("li",{parentName:"ul"},"Above, blocked by the simplification of typeclasses ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/404"},"#404"),"."),(0,n.kt)("li",{parentName:"ul"},"Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings")),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implementation of Full Node Verifier ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"))),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sidechains-zk/tree/master/prover/src/ecc"},"ECC chip")," implemented for JubJub over BLS12-381"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sidechains-zk/tree/master/prover/src/rescue"},"Rescue chip")," implemented for hashing."),(0,n.kt)("li",{parentName:"ul"},"Currently working on Schnorr signature (which uses the above constraints)")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6f700e99.66ebd5a7.js b/assets/js/6f700e99.66ebd5a7.js new file mode 100644 index 00000000000..28c377ca367 --- /dev/null +++ b/assets/js/6f700e99.66ebd5a7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60459],{90442:a=>{a.exports=JSON.parse('{"label":"mithril","permalink":"/cardano-updates/tags/mithril","allTagsPath":"/cardano-updates/tags","count":34}')}}]); \ No newline at end of file diff --git a/assets/js/6fb45133.8780f9a7.js b/assets/js/6fb45133.8780f9a7.js new file mode 100644 index 00000000000..2ececf781a7 --- /dev/null +++ b/assets/js/6fb45133.8780f9a7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79260],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-03-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-03-08-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-node-cli-api.md",source:"@site/blog/2023-03-08-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-03-08T00:00:00.000Z",formattedDate:"March 8, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.795,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-03-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-08-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-08-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-03-08---2023-03-21"},"2023-03-08 - 2023-03-21"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"General bug fixes and some refactoring "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4958"},"Remove error calls in Cardano.CLI.Shelley.Run.Transaction")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4880"},"Detect invalid counter and certificate")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5003"},"Add missing imports")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5001"},"Add LedgerStateBabbage and LedgerStateConway pattern synonyms")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4967"},"Remove unnecessary functions")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4953"},"Remove duplicate scripts when building transaction body for Mary, Alonzo and Babbage")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4903"},"Reduce number of calls to toLedgerPParams")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4686"},"Add ToJSON/FromJSON instances for ChainPoint")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4683"},"Derive Eq instance for AcquiringFailure")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4682"},"Export ",(0,r.kt)("inlineCode",{parentName:"a"},"fromShelleyBasedScript")," from Cardano.Api")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4344"},"Remove unnecessary validation of Data")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3775"},'Remove hint of "string" support for ScriptData')," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4988"},"Conway hard forks on prot-ver 9")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4968"},"Reinstate -Werror for cardano-node and fix errors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4921"},"Take all dependencies from Hackage or CHaP")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4911"},"Less verbose node-to-client and node-to-node version logging")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"Get AcceptedConnectionsLimit from the configuration")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4729"},"fix cardano-testnet Babbage genesis.json"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7030fa2f.ac2104c3.js b/assets/js/7030fa2f.ac2104c3.js new file mode 100644 index 00000000000..42add491e15 --- /dev/null +++ b/assets/js/7030fa2f.ac2104c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39640],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>N});var n=a(67294);function l(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function r(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e=0||(l[a]=t[a]);return l}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(l[a]=t[a])}return l}var m=n.createContext({}),o=function(t){var e=n.useContext(m),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},u=function(t){var e=o(t.components);return n.createElement(m.Provider,{value:e},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,l=t.mdxType,r=t.originalType,m=t.parentName,u=p(t,["components","mdxType","originalType","parentName"]),s=o(a),k=l,N=s["".concat(m,".").concat(k)]||s[k]||d[k]||r;return a?n.createElement(N,i(i({ref:e},u),{},{components:a})):n.createElement(N,i({ref:e},u))}));function N(t,e){var a=arguments,l=e&&e.mdxType;if("string"==typeof t||l){var r=a.length,i=new Array(r);i[0]=k;var p={};for(var m in e)hasOwnProperty.call(e,m)&&(p[m]=e[m]);p.originalType=t,p[s]="string"==typeof t?t:l,i[1]=p;for(var o=2;o{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>p,toc:()=>o});var n=a(87462),l=(a(67294),a(3905));const r={title:"Consensus Team Update",slug:"2022-08-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2022-08-31-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-08-31-consensus.md",source:"@site/blog/2022-08-31-consensus.md",title:"Consensus Team Update",description:"Executive summary",date:"2022-08-31T00:00:00.000Z",formattedDate:"August 31, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:8.925,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-08-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-01-ledger"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-08-12-network"}},m={authorsImageUrls:[void 0]},o=[{value:"Executive summary",id:"executive-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Conway",id:"conway",level:3},{value:"UTxO HD",id:"utxo-hd",level:3},{value:"Only small rollbacks",id:"only-small-rollbacks",level:4},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3}],u={toc:o},s="wrapper";function d(t){let{components:e,...a}=t;return(0,l.kt)(s,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"executive-summary"},"Executive summary"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"We did most of the heavy lifting required to integrate the Conway era."),(0,l.kt)("li",{parentName:"ul"},"We have property tests for the UTxO HD backing store API implementations. A\npossible bug was identified. Work is ongoing to make sure the property-tests\ncover all the relevant cases."),(0,l.kt)("li",{parentName:"ul"},'We implemented and benchmarked the "anti-diff" prototype to speed up the UTxO\nHD functionality. Results show a rough speedup of ',(0,l.kt)("inlineCode",{parentName:"li"},"4x")," to ",(0,l.kt)("inlineCode",{parentName:"li"},"5.5x")," across\nseveral scenarios. Note that: ",(0,l.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/tasty-bench-0.3.2/docs/Test-Tasty-Bench.html"},'"Data reported by ',(0,l.kt)("inlineCode",{parentName:"a"},"tasty-bench"),' is only of\nindicative and comparative significance."'),'.\nWe are investigating additional performance improvements. The "anti-diff"\nprototype and benchmarks are still pending code review.'),(0,l.kt)("li",{parentName:"ul"},"We elaborated a draft specification for the Genesis implementation and\n",(0,l.kt)("inlineCode",{parentName:"li"},"ChainSync")," jumping optimization.")),(0,l.kt)("h2",{id:"workstreams"},"Workstreams"),(0,l.kt)("h3",{id:"conway"},"Conway"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Integration PR of the minimal Conway era (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3962"},"Issue #3963"),", ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3971"},"PR\n#3971"),")."),(0,l.kt)("li",{parentName:"ul"},"Discussions with Ledger revealed possible sources of confusion about which\ndata should be changed in the Conway era. As a result, a new technical debt\nissue was raised, which does not block the integration of the Conway era\n(",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3976"},"Issue #3976"),").")),(0,l.kt)("h3",{id:"utxo-hd"},"UTxO HD"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3954"},"Issue #3954"),", ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/tree/jdral/3954-backingstore-property-tests"},"branch"),": The functionality of a\nbacking store, which is the interface to the on-disk part of ledger state in\nUTxO-HD, is tested at a high level through the ",(0,l.kt)("inlineCode",{parentName:"p"},"OnDisk")," tests. However, some\nfunctionalities remain untested, e.g., reads of ranges of keys. As such, we\nhave implemented ",(0,l.kt)("inlineCode",{parentName:"p"},"quickcheck-state-machine")," tests that exercise backing stores\ndirectly. The tests are reusable for different backing store implementations\nbecause the tests are implementation-agnostic: Any backing store that conforms\nto the backing store interface can be plugged into the tests. Work is still\nongoing to label/monitor the tests, such that we can verify that interesting\ncases are being tested. Furthermore, a possible bug has been identified in the\nLMDB backing store with respect to range reads, though the bug has not been\nresolved yet.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3946"},"Issue #3946"),", ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/tree/jdral/CAD-4199-prototype-anti-diffs"},"branch"),", ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3882"},"PR #3882"),': The\n"anti-diff" prototype proposes an alternative approach to keeping track of\nsequences (more specifically, ',(0,l.kt)("inlineCode",{parentName:"p"},"FingerTree"),'s) of diffs. These diff sequences\nare a component of the in-memory parts of the ledger state in UTxO-HD. Since\nthe consensus code often requires the cumulative diff of a sequence of diffs,\nthe current implementation "caches" cumulative diffs of each subtree in the\ndiff sequence. This caching allows relatively fast reconstruction of the total\ncumulative diff, but this caching proved to incur a non-negligible cost: when\nwe manipulate diff sequences through splits and appends, we force re-computing\na logarithmic number of caches. This is problematic, since we often split and\nappend in consensus: we split when we flush diffs to a backing store or when\nwe roll back blocks, and we append when pushing blocks. The new approach\nshould reduce the overhead of this caching.'),(0,l.kt)("p",{parentName:"li"},'We implemented micro-benchmarks for the "anti-diff" prototype: we\nfirst generate a sequence of commands (',(0,l.kt)("inlineCode",{parentName:"p"},"Forward"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"Push"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"Flush"),", or\n",(0,l.kt)("inlineCode",{parentName:"p"},"Rollback"),") through a simulation, after which we measure the performance of\napplying the commands to a diff sequence. In this context, ",(0,l.kt)("inlineCode",{parentName:"p"},"Forward")," means\nforwarding of values through a diff, whereas ",(0,l.kt)("inlineCode",{parentName:"p"},"Rollback"),' means switching to\na different fork by rolling back diffs/blocks and pushing new ones.\nMoreover, we compare the performance for the two implementations: the\n"legacy" approach, and the anti-diff approach.'),(0,l.kt)("p",{parentName:"li"},"Some preliminary results were positive, but we needed to revisit the\nbenchmark's configuration to obtain more definitive results. After a\ndiscussion with @dcoutts and the consensus team about this configuration\n(e.g., number of commands generated, choice of the security parameter ",(0,l.kt)("inlineCode",{parentName:"p"},"k"),"),\nthe benchmarks should now be closer to the realistic setting. The following\nconfiguration specifies the default configuration that is used in the\nbenchmarking code:"),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Number of commands generated: ",(0,l.kt)("inlineCode",{parentName:"li"},"10_000")),(0,l.kt)("li",{parentName:"ul"},"Security parameter ",(0,l.kt)("inlineCode",{parentName:"li"},"k"),": ",(0,l.kt)("inlineCode",{parentName:"li"},"2160")),(0,l.kt)("li",{parentName:"ul"},"Number of initial backing values: ",(0,l.kt)("inlineCode",{parentName:"li"},"100")),(0,l.kt)("li",{parentName:"ul"},"Number of key-value pairs deleted by a push: ",(0,l.kt)("inlineCode",{parentName:"li"},"50")),(0,l.kt)("li",{parentName:"ul"},"Number of key-value pairs inserted by a push: ",(0,l.kt)("inlineCode",{parentName:"li"},"50")),(0,l.kt)("li",{parentName:"ul"},"Number of key-value pairs forwarded by a forward: ",(0,l.kt)("inlineCode",{parentName:"li"},"50")),(0,l.kt)("li",{parentName:"ul"},"Probability of a large (in the range ",(0,l.kt)("inlineCode",{parentName:"li"},"[1000, 2000]"),") rollback: ",(0,l.kt)("inlineCode",{parentName:"li"},"0.05")),(0,l.kt)("li",{parentName:"ul"},"Probability of a small (in the range ",(0,l.kt)("inlineCode",{parentName:"li"},"[1, 10]"),") rollback: ",(0,l.kt)("inlineCode",{parentName:"li"},"0.95")),(0,l.kt)("li",{parentName:"ul"},"Order of commands:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"An equal number of forward and pushes."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"1")," flush every ",(0,l.kt)("inlineCode",{parentName:"li"},"10")," pushes."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"1")," rollback every ",(0,l.kt)("inlineCode",{parentName:"li"},"100")," pushes")))),(0,l.kt)("p",{parentName:"li"},"Moreover, we run four benchmark scenarios:"),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Default configuration"),(0,l.kt)("li",{parentName:"ul"},"Without rollbacks"),(0,l.kt)("li",{parentName:"ul"},"With only small rollbacks"),(0,l.kt)("li",{parentName:"ul"},"Without rollbacks, larger flushes (",(0,l.kt)("inlineCode",{parentName:"li"},"1")," flush every ",(0,l.kt)("inlineCode",{parentName:"li"},"100")," pushes)")),(0,l.kt)("h3",{parentName:"li",id:"how-to-read-results"},"How to read results"),(0,l.kt)("p",{parentName:"li"},"Note: this section uses documentation from the\n",(0,l.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/tasty-bench"},"tasty-bench")," package to\nexplain how to read the results of running our benchmarks."),(0,l.kt)("p",{parentName:"li"},"Running a benchmark scenario gives us the following (curated) output:"),(0,l.kt)("pre",{parentName:"li"},(0,l.kt)("code",{parentName:"pre",className:"language-text"},"...\nAntiDiff: OK (18.27s)\n 2.527 s \xb1 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x\nLegacyDiff: OK (32.73s)\n 10.829 s \xb1 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory\n...\n")),(0,l.kt)("p",{parentName:"li"},"The output says that the first benchmark, which exercises the anti-diff\nprototype, was repeatedly executed for ",(0,l.kt)("inlineCode",{parentName:"p"},"18.27")," seconds (wall-clock time),\nits predicted mean CPU time was ",(0,l.kt)("inlineCode",{parentName:"p"},"2.527")," seconds and means of individual\nsamples do not often diverge from it further than ",(0,l.kt)("inlineCode",{parentName:"p"},"\xb1 47")," milliseconds\n(double standard deviation). We also configure the RTS to collect GC\nstatistics, which enables ",(0,l.kt)("inlineCode",{parentName:"p"},"tasty-bench")," to estimate and report memory usage.\nThis data is reported as per ",(0,l.kt)("inlineCode",{parentName:"p"},"RTSStats")," fields: ",(0,l.kt)("inlineCode",{parentName:"p"},"allocated_bytes"),",\n",(0,l.kt)("inlineCode",{parentName:"p"},"copied_bytes")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"max_mem_in_use_bytes"),". So, the output of the first\nbenchmark says that a total of ",(0,l.kt)("inlineCode",{parentName:"p"},"2.1 GB")," of memory was allocated, that a\ntotal of ",(0,l.kt)("inlineCode",{parentName:"p"},"544 MB")," of memory were copied, and that the peak memory in usage\nwas ",(0,l.kt)("inlineCode",{parentName:"p"},"2.2 GB"),". We read the output for the second benchmark in the same way."),(0,l.kt)("p",{parentName:"li"},"Furthermore, the benchmark compares the mean CPU times for\nboth the anti-diff and legacy approaches: In this case, the mean CPU time\nfor the anti-diff approach is ",(0,l.kt)("inlineCode",{parentName:"p"},"~0.23x")," the mean CPU time for the legacy\napproach. Conversely, the mean CPU time for the legacy approach is\n",(0,l.kt)("inlineCode",{parentName:"p"},"1 / 0.23 ~= 4.35x")," the mean CPU time for the anti-diff approach. We will\ncall ",(0,l.kt)("inlineCode",{parentName:"p"},"0.23x")," the ",(0,l.kt)("em",{parentName:"p"},"improvement factor"),". We will call ",(0,l.kt)("inlineCode",{parentName:"p"},"4.35x")," the ",(0,l.kt)("em",{parentName:"p"},"speedup"),"."),(0,l.kt)("p",{parentName:"li"},"Note that these improvement factors (and reported results) are subject to\nnoise, randomness, the specific configuration parameters, and the whims\nof statistics. Data reported by ",(0,l.kt)("inlineCode",{parentName:"p"},"tasty-bench")," is only of indicative and\ncomparative significance."),(0,l.kt)("h3",{parentName:"li",id:"results"},"Results"),(0,l.kt)("p",{parentName:"li"},"For each of the 4 scenarios, we list the results of running the anti-diff and\nlegacy approaches 5 times. We run the benchmarks 5 times to get an indication\nof whether the results are similar across multiple runs. Furthermore, we\ncalculate the accompanying ",(0,l.kt)("em",{parentName:"p"},"ranges")," (if applicable) of improvement factors and\nspeedups."),(0,l.kt)("p",{parentName:"li"},"Note also the decrease in total bytes allocated and total bytes copied for\nthe anti-diff approach compared to the legacy approach."),(0,l.kt)("h4",{parentName:"li",id:"default-configuration"},"Default configuration"),(0,l.kt)("table",{parentName:"li"},(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.533 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"4.7 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"557 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.792 s"),(0,l.kt)("td",{parentName:"tr",align:null},"162 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.508 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"245 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"515 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.850 s"),(0,l.kt)("td",{parentName:"tr",align:null},"30 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.9 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.562 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"5.0 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"552 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.993 s"),(0,l.kt)("td",{parentName:"tr",align:null},"149 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.9 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.168 s (0.22x)"),(0,l.kt)("td",{parentName:"tr",align:null},"5.3 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"434 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"9.976 s"),(0,l.kt)("td",{parentName:"tr",align:null},"39 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"2.527 s (0.23x)"),(0,l.kt)("td",{parentName:"tr",align:null},"47 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"2.1 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"544 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.829 s"),(0,l.kt)("td",{parentName:"tr",align:null},"148 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"6.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.3 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")))),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"li"},"[0.22, 0.23]")),(0,l.kt)("li",{parentName:"ul"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"li"},"[1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]"))),(0,l.kt)("h4",{parentName:"li",id:"no-rollbacks"},"No rollbacks"),(0,l.kt)("table",{parentName:"li"},(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.638 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"36 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.656 s"),(0,l.kt)("td",{parentName:"tr",align:null},"207 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.638 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"75 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.654 s"),(0,l.kt)("td",{parentName:"tr",align:null},"322 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.663 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"74 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.799 s"),(0,l.kt)("td",{parentName:"tr",align:null},"216 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.645 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"51 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.732 s"),(0,l.kt)("td",{parentName:"tr",align:null},"261 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.639 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"19 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"181 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.653 s"),(0,l.kt)("td",{parentName:"tr",align:null},"234 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.7 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")))),(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"li"},"0.19")),(0,l.kt)("li",{parentName:"ul"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"li"},"1 / 0.19 ~= 5.25"))))),(0,l.kt)("h4",{id:"only-small-rollbacks"},"Only small rollbacks"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.833 s (0.18x)"),(0,l.kt)("td",{parentName:"tr",align:null},"36 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"185 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"10.362 s"),(0,l.kt)("td",{parentName:"tr",align:null},"867 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.6 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.696 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"30 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"185 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.822 s"),(0,l.kt)("td",{parentName:"tr",align:null},"106 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.702 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"44 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"186 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.906 s"),(0,l.kt)("td",{parentName:"tr",align:null},"147 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.701 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"47 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"185 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.949 s"),(0,l.kt)("td",{parentName:"tr",align:null},"197 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.677 s (0.19x)"),(0,l.kt)("td",{parentName:"tr",align:null},"55 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"186 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"8.856 s"),(0,l.kt)("td",{parentName:"tr",align:null},"177 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"5.8 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")))),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"p"},"[0.18, 0.19]"))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"p"},"[1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]")),(0,l.kt)("h4",{parentName:"li",id:"no-rollbacks-larger-flushes-every-100-pushes"},"No rollbacks, larger flushes (every 100 pushes)"),(0,l.kt)("table",{parentName:"li"},(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Mean CPU time"),(0,l.kt)("th",{parentName:"tr",align:null},"2*Stdev (CPU time)"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes allocated"),(0,l.kt)("th",{parentName:"tr",align:null},"Total bytes copied"),(0,l.kt)("th",{parentName:"tr",align:null},"Peak memory"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.643 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"21 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 1: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.591 s"),(0,l.kt)("td",{parentName:"tr",align:null},"351 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.4 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.616 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"47 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 2: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.520 s"),(0,l.kt)("td",{parentName:"tr",align:null},"232 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.640 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"34 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 3: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.540 s"),(0,l.kt)("td",{parentName:"tr",align:null},"150 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.635 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"76 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 4: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.589 s"),(0,l.kt)("td",{parentName:"tr",align:null},"131 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.0 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: AntiDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"1.628 s (0.25x)"),(0,l.kt)("td",{parentName:"tr",align:null},"19 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"1.5 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"196 MB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Run 5: LegacyDiff"),(0,l.kt)("td",{parentName:"tr",align:null},"6.490 s"),(0,l.kt)("td",{parentName:"tr",align:null},"5.9 ms"),(0,l.kt)("td",{parentName:"tr",align:null},"4.0 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"1.4 GB"),(0,l.kt)("td",{parentName:"tr",align:null},"2.2 GB"))))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Improvement factor: ",(0,l.kt)("inlineCode",{parentName:"p"},"0.25"))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Speedup : ",(0,l.kt)("inlineCode",{parentName:"p"},"1 / 0.25 ~= 4")))),(0,l.kt)("h3",{id:"genesis"},"Genesis"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"We elaborated a draft of the specification of the Genesis implementation and\nthe ChainSync Jumping optimization. In particular, this includes a proof\nsketch that the latter preserves liveness and safety in all cases (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3964"},"Issue\n3964"),").",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@nfrisby's main realization during this sprint was that he had been\nfocusing so far on the case where the selected chain is an extension of\nthe intersection of our peers' ChainSync candidates."),(0,l.kt)("li",{parentName:"ul"},'This is the main case, ie an "absorbing" state, but it\'s not the only\ncase.'),(0,l.kt)("li",{parentName:"ul"},"The new proof sketch begins by case splitting on that predicate, and\nthat made the sketch quite a bit easier to follow."))),(0,l.kt)("li",{parentName:"ul"},'We continued working on the "happy path" ',(0,l.kt)("inlineCode",{parentName:"li"},"ChainSync")," Jumping prototype (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3960"},"Issue\n3960"),").")),(0,l.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"We started working on the issues required to re-enable nightly CI runs..\nNightly CI runs have far more lax time constraints, which gives the option to\nrun significantly more property tests than in our regular CI. To this end, we\nmerged a PR to easily adapt the number of tests globally (",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3947"},"PR\n#3947"),").")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/70372002.8347b491.js b/assets/js/70372002.8347b491.js new file mode 100644 index 00000000000..a2be70fdfc8 --- /dev/null +++ b/assets/js/70372002.8347b491.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[52703],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=c(n),p=a,h=d["".concat(l,".").concat(p)]||d[p]||u[p]||i;return n?r.createElement(h,o(o({ref:t},m),{},{components:n})):r.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-10-06-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2023-10-06-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-06-performance-and-tracing.md",source:"@site/blog/2023-10-06-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-10-06T00:00:00.000Z",formattedDate:"October 6, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.625,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-10-06-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-06-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-04-consensus"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Consensus QTAs",id:"consensus-qtas",level:3},{value:"Development",id:"development",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system."),(0,a.kt)("li",{parentName:"ul"},"Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7."),(0,a.kt)("li",{parentName:"ul"},"Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store."),(0,a.kt)("li",{parentName:"ul"},"Tracing: The machine-readable tracer configuration has been merged. Optimization of ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-tracer")," started."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Ongoing variance analysis and refined cluster topology.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the\nperformance of the in-memory backing store and evaluate possible optimizations (or regressions) for it. "),(0,a.kt)("p",null,"Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results\nshow all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," service."),(0,a.kt)("h3",{id:"consensus-qtas"},"Consensus QTAs"),(0,a.kt)("p",null,"The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The\nfeedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype."),(0,a.kt)("h3",{id:"development"},"Development"),(0,a.kt)("p",null,"Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort. "),(0,a.kt)("p",null,"PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time,\nwe'd like to validate the many improvements that have gone into the Plutus evaluator."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The focus for further optimization of the new tracing system has shifted to ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," - the service\nreceiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," is\nmore performance critical, the receiving service must still minimize its resource footprint. Moreover, it can\ngenerate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated\nthe same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/70396aa3.b3e5d301.js b/assets/js/70396aa3.b3e5d301.js new file mode 100644 index 00000000000..359a61ca241 --- /dev/null +++ b/assets/js/70396aa3.b3e5d301.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92517],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=i,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||n;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:i,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-10-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-04-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-04-mithril.md",source:"@site/blog/2023-10-04-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-04T00:00:00.000Z",formattedDate:"October 4, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.15,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-04-consensus"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-02-network"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/discussions/1273"},"on implementing Mithril in a light wallet")," to receive feedback and contributions from the community."),(0,i.kt)("p",null,"They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks."),(0,i.kt)("p",null,"Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Created the discussion ",(0,i.kt)("strong",{parentName:"li"},"Implement Mithril in a light wallet")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/discussions/1273"},"#1273")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Run client in browser WASM PoC")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1254"},"#1254")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Benchmark aggregator performances")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1220"},"#1220")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Add SPO tickers in explorer")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1185"},"#1185")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Add a non ",(0,i.kt)("inlineCode",{parentName:"strong"},"404")," status code on the aggregator endpoint")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1103"},"#1103")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Use source attribute in errors")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1265"},"#1265")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Create a SPO checklist for KES keys update")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1267"},"#1267")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Configure status page and alerting")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1277"},"#1277")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Upgrade dependencies")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1274"},"#1274"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/704e5bb8.fbbc39f4.js b/assets/js/704e5bb8.fbbc39f4.js new file mode 100644 index 00000000000..7bad30e2a9f --- /dev/null +++ b/assets/js/704e5bb8.fbbc39f4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56733],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>h});var l=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=l.createContext({}),p=function(e){var t=l.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=p(e.components);return l.createElement(u.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},c=l.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,u=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=p(a),c=r,h=d["".concat(u,".").concat(c)]||d[c]||s[c]||n;return a?l.createElement(h,i(i({ref:t},m),{},{components:a})):l.createElement(h,i({ref:t},m))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,i=new Array(n);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:r,i[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>s,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var l=a(87462),r=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-08-04-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-08-04-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-ledger.md",source:"@site/blog/2023-08-04-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.915,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-08-04-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-04-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-04-network"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway progress",id:"conway-progress",level:3},{value:"Testing",id:"testing",level:3},{value:"Bugfixes",id:"bugfixes",level:3},{value:"Plutus integration",id:"plutus-integration",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],m={toc:p},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,l.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The ledger team was working almost exclusively on the Conway era implementation. In\nparticular, the main focus was directed towards solidifying transaction related types and\ntheir binary representation. We also directed some effort into unblocking Plutus team with\nrespect to PlutusV3 integration."),(0,r.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,r.kt)("h3",{id:"conway-progress"},"Conway progress"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3552"},"pull-3552")," - Allow Constitutional Committee Hot Key to be ScriptHash"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3581"},"pull-3581")," - Make Constitutional Committee Cold Key to be ScriptHash"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3571"},"pull-3571")," - Implement a portion of the TICKF rule."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3556"},"pull-3556")," - Add Script to Constitution"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3576"},"pull-3576")," - Add optional Anchor to ConwayRegDRep certificate"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3495"},"pull-3495")," - Implement refund logic for Proposal deposits"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3579"},"pull-3579")," - Change voting procedure in the transaction to a nested Map"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3585"},"pull-3585")," - Rename ",(0,r.kt)("inlineCode",{parentName:"li"},"CommitteeCert")," into a ",(0,r.kt)("inlineCode",{parentName:"li"},"GovCert")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3587"},"pull-3587")," - Remove ",(0,r.kt)("inlineCode",{parentName:"li"},"DelegStakeTxCert")," from the ",(0,r.kt)("inlineCode",{parentName:"li"},"COMPLETE")," pragma for ",(0,r.kt)("inlineCode",{parentName:"li"},"TxCert")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3586"},"pull-3586")," - Add ",(0,r.kt)("inlineCode",{parentName:"li"},"CurrentTreasuryValue")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"TxBody")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3588"},"pull-3588")," - Rename key roles"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3557"},"pull-3557")," - Update ",(0,r.kt)("inlineCode",{parentName:"li"},"NewCommittee")," action to use ",(0,r.kt)("inlineCode",{parentName:"li"},"RewardAcnt")," and add more info"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3595"},"pull-3595")," - Add ",(0,r.kt)("inlineCode",{parentName:"li"},"ConwayUpdateDRep")," constructor to ConwayTxCertGov type"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3600"},"pull-3600")," - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3597"},"pull-3597")," - Update ",(0,r.kt)("inlineCode",{parentName:"li"},"ProposalProcedure")," return address to be a ",(0,r.kt)("inlineCode",{parentName:"li"},"RewardAcnt"))),(0,r.kt)("h3",{id:"testing"},"Testing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3374"},"pull-3374")," - New features for generation subject to constraints"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3519"},"pull-3519")," - Basic Conway features test")),(0,r.kt)("h3",{id:"bugfixes"},"Bugfixes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3566"},"pull-3566")," - Mint field translation bugfix.")),(0,r.kt)("h3",{id:"plutus-integration"},"Plutus integration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3538"},"issue-3538")," - A fairly complete specification was created for the PlutusV3 context"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3593"},"pull-3593")," - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality")),(0,r.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3574"},"pull-3574")," - Improve clarity and performance of collateral Non-ADA validation:"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3573"},"pull-3573")," - Update top-level ",(0,r.kt)("inlineCode",{parentName:"li"},"CHANGELOG.md")," with cardano-node relevant changes"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3555"},"pull-3555")," - Bump pygments from 2.12.0 to 2.15.0 in /doc"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3575"},"pull-3575")," - Bump certifi from 2022.12.7 to 2023.7.22 in /doc"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3567"},"pull-3567")," - Backport mint field translation bugfix"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3568"},"pull-3568")," - Fixed typo in byron ledger spec"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3572"},"pull-3572")," - Release/backport tickf bugfix")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/709abed9.708c231e.js b/assets/js/709abed9.708c231e.js new file mode 100644 index 00000000000..fc62ad93a0c --- /dev/null +++ b/assets/js/709abed9.708c231e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85362],{92776:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/55","page":55,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/54","nextPage":"/cardano-updates/page/56","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/71d215be.87d3dda2.js b/assets/js/71d215be.87d3dda2.js new file mode 100644 index 00000000000..cb51e0fe2fb --- /dev/null +++ b/assets/js/71d215be.87d3dda2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[74390],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=u(a),d=n,m=c["".concat(p,".").concat(d)]||c[d]||h[d]||i;return a?r.createElement(m,o(o({ref:t},s),{},{components:a})):r.createElement(m,o({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-07-14-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-07-14-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-14-hydra.md",source:"@site/blog/2023-07-14-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-14T00:00:00.000Z",formattedDate:"July 14, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.79,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-14-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-18-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-13-mithril"}},p={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:u},c="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week the team focused on exploring the event sourced persistence in order\nto improve ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," performance. Because of this work the team noticed we\nneed to refactor the emit snapshot emission logic and update the spec in the\nlight of new changes. They also took the time to revisit their goals and product\nplans for the next quarter as well as doing some security fixes related to\nmultisignatures."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finished spike about performance improvements of event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/963"},"#963"),"."),(0,n.kt)("li",{parentName:"ul"},"Refactor snapshot emission in protocol logic."),(0,n.kt)("li",{parentName:"ul"},"Revisited our roadmap and goals."),(0,n.kt)("li",{parentName:"ul"},"Prepared and conducated a learning session on lean-waste."),(0,n.kt)("li",{parentName:"ul"},"Improve security of multi-signature checks, see ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-c8qp-cv4h-vcc4"},"this Github security advisory"),"."),(0,n.kt)("li",{parentName:"ul"},"Implemented a cache friendly way to version our binaries ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/962"},"#962"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement Event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/913"},"#913"),"."),(0,n.kt)("li",{parentName:"ul"},"Remove deprecated internal commit ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/954"},"#954")," and close ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/728"},"#728"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/71e4641a.c575aa4b.js b/assets/js/71e4641a.c575aa4b.js new file mode 100644 index 00000000000..f31f734ec79 --- /dev/null +++ b/assets/js/71e4641a.c575aa4b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53940],{16528:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>s,contentTitle:()=>p,default:()=>d,frontMatter:()=>i,metadata:()=>u,toc:()=>l});var n=o(87462),a=(o(67294),o(3905)),r=o(22004);const i={title:"Network Team Update",slug:"2022-08-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},p=void 0,u={permalink:"/cardano-updates/2022-08-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-08-12-network.md",source:"@site/blog/2022-08-12-network.md",title:"Network Team Update",description:"The networking team took an active part in the project iteration (PI) planning",date:"2022-08-12T00:00:00.000Z",formattedDate:"August 12, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.88,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-08-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-08-31-consensus"}},s={authorsImageUrls:[void 0]},l=[],k={toc:l},h="wrapper";function d(t){let{components:e,...o}=t;return(0,a.kt)(h,(0,n.Z)({},k,o,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The networking team took an active part in the project iteration (PI) planning\nsession, see cardano-node ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/39"},"backlog")," for detailed\noutcomes."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We started working on a detailed design / implementation plan for gossip.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We merged ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3859"},"input-output-hk/ouroboros-network#3859")," which\nsets the ouroboros-network repository for the single relay release.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified a bug in the network simulator, which is fixed in the\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3852"},"input-output-hk/ouroboros-network#3852"),".\nThe above PR was reviewed.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We set the tracing configuration for nodes which we deploy and fixed and\nidentified some deployment hiccups. We identified some bugs in the RT view\nwhich were registered by the maintainers.\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network-ops/pull/4"},"input-output-hk/ouroboros-network-ops#4"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We fixed typos in network-mux library:\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3921"},"input-output-hk/ouroboros-network#3921"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"For easy of debugging we renamed a trace point:\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3922"},"input-output-hk/ouroboros-network#3922"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Duncan iterated on his simulation / visualisation. He also was able to\nidentify and fix a bug in the simulator. The simulation contains 50 nodes.\nDashed lines indicate and established connection, while solid lines indicate\na TCP connection with fully open TCP window."))),(0,a.kt)(r.Z,{playing:!0,controls:!0,url:"/p2p-relay3.mp4",mdxType:"ReactPlayer"}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7221b837.a070d45c.js b/assets/js/7221b837.a070d45c.js new file mode 100644 index 00000000000..20a91fdc283 --- /dev/null +++ b/assets/js/7221b837.a070d45c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90045],{3905:(e,t,o)=>{o.d(t,{Zo:()=>h,kt:()=>m});var n=o(67294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},h=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),u=c(o),d=a,m=u["".concat(l,".").concat(d)]||u[d]||p[d]||r;return o?n.createElement(m,i(i({ref:t},h),{},{components:o})):n.createElement(m,i({ref:t},h))}));function m(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=o.length,i=new Array(r);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var n=o(87462),a=(o(67294),o(3905));const r={title:"Initial CIP 1694 Security Analysis and Responses",slug:"2023-11-20-cip1694",authors:"kevinhammond",tags:["ledger","cip1694","security"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-11-20-cip1694",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-20-cip1694.md",source:"@site/blog/2023-11-20-cip1694.md",title:"Initial CIP 1694 Security Analysis and Responses",description:"High level summary",date:"2023-11-20T00:00:00.000Z",formattedDate:"November 20, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"},{label:"cip1694",permalink:"/cardano-updates/tags/cip-1694"},{label:"security",permalink:"/cardano-updates/tags/security"}],readingTime:5.345,hasTruncateMarker:!1,authors:[{name:"Kevin Hammond",title:"Head of Software Engineering, Cardano Core",url:"https://github.com/kevinhammond",imageURL:"https://github.com/kevinhammond.png",key:"kevinhammond"}],frontMatter:{title:"Initial CIP 1694 Security Analysis and Responses",slug:"2023-11-20-cip1694",authors:"kevinhammond",tags:["ledger","cip1694","security"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-22-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-17-hydra"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Initial CIP-1694 Security Analysis and Responses",id:"initial-cip-1694-security-analysis-and-responses",level:2},{value:"Section: The constitutional committee",id:"section-the-constitutional-committee",level:3},{value:"Section: Size of the constitutional committee",id:"section-size-of-the-constitutional-committee",level:3},{value:"Section: Terms",id:"section-terms",level:3},{value:"Section: Registered DReps",id:"section-registered-dreps",level:3},{value:"Section: Ratification",id:"section-ratification",level:3},{value:"Section: Content",id:"section-content",level:3},{value:"Section: Protocol Parameter groups",id:"section-protocol-parameter-groups",level:3},{value:"Section: Votes",id:"section-votes",level:3},{value:"Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes",id:"section-separation-of-hard-fork-initiation-from-standard-protocol-parameter-changes",level:3},{value:"Section: Changes post Edinburgh workshop (July 2023)",id:"section-changes-post-edinburgh-workshop-july-2023",level:3},{value:"Section: Reduced deposits for some government actions",id:"section-reduced-deposits-for-some-government-actions",level:3}],h={toc:c},u="wrapper";function p(e){let{components:t,...o}=e;return(0,a.kt)(u,(0,n.Z)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here."),(0,a.kt)("h2",{id:"initial-cip-1694-security-analysis-and-responses"},"Initial CIP-1694 Security Analysis and Responses"),(0,a.kt)("h3",{id:"section-the-constitutional-committee"},"Section: The constitutional committee"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},'\u201cFor example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.')),(0,a.kt)("p",null,"There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-size-of-the-constitutional-committee"},"Section: Size of the constitutional committee"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.")),(0,a.kt)("p",null,"Thanks. Yes, we\u2019ve been thinking about this issue for a long time, see for example the section \u2018Final safety measure, post bootstrapping\u2019. We don\u2019t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps"),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-terms"},"Section: Terms"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The following sentence is a bit awkward to read: \u201cFor example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.\u201d \u2014> Suggestion: \u201cFor example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.\u201d ")),(0,a.kt)("p",null,"Thanks. Yes, that suggestion is a bit easier to read."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-registered-dreps"},"Section: Registered DReps"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u201cAdditionally, registered DReps will need to vote regularly to still be considered active.\u201d - There is a minor issue with requiring \u201cvoting regularly\u201d. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).")),(0,a.kt)("p",null,"Thanks. We\u2019ve added a mechanism to prevent that issue in the spec/code where if there\u2019s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-ratification"},"Section: Ratification"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"It is a bit unclear why protocol changes: network group and technical group are two separate groups.")),(0,a.kt)("p",null,"These correspond exactly to the groups that are administered by the Parameter Committee."),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"I didn\u2019t understand the rationale for requiring 100% \u201cYes\u201d votes to pass \u201cInfo\u201d type governance actions? It seems they have the least potential to harm the system.")),(0,a.kt)("p",null,"Yes, it\u2019s not about harming the system, since ",(0,a.kt)("inlineCode",{parentName:"p"},"Info"),"\nactions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action. "),(0,a.kt)("p",null,"Once an action is enacted it\u2019s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-content"},"Section: Content"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.")),(0,a.kt)("p",null,"Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-protocol-parameter-groups"},"Section: Protocol Parameter groups"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.")),(0,a.kt)("p",null,"These are existing protocol parameters, described in e.g. ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cardano.org/explore-cardano/parameter-guide/#:~:text=Protocol%20parameters%20on%20Cardano%20are,to%20changing%20conditions%20over%20time."},"https://cips.cardano.org/cips/cip9/"),"9 or ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cardano.org/explore-cardano/parameter-guide/#:~:text=Protocol%20parameters%20on%20Cardano%20are,to%20changing%20conditions%20over%20time."},"The Cardano Protocol Parameters Guide"),"."),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories. ")),(0,a.kt)("p",null,"All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-votes"},"Section: Votes"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?")),(0,a.kt)("p",null,"They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don\u2019t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-separation-of-hard-fork-initiation-from-standard-protocol-parameter-changes"},"Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.")),(0,a.kt)("p",null,"There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire."),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-changes-post-edinburgh-workshop-july-2023"},"Section: Changes post Edinburgh workshop (July 2023)"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u201cAll governance actions are enacted one epoch after they are ratified.\u201d - I\u2019m not sure if this line is currently in the main body of the CIP?")),(0,a.kt)("p",null,"It is, but it is phrased differently: \u2018All governance actions are enacted on the epoch boundary after their ratification.\u2019"),(0,a.kt)("hr",null),(0,a.kt)("h3",{id:"section-reduced-deposits-for-some-government-actions"},"Section: Reduced deposits for some government actions"),(0,a.kt)("hr",null),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.")),(0,a.kt)("p",null,"Indeed. We have no plans for this at the moment."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/72c81964.0dc8e201.js b/assets/js/72c81964.0dc8e201.js new file mode 100644 index 00000000000..0acd8afe9dc --- /dev/null +++ b/assets/js/72c81964.0dc8e201.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94590],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>d});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),s=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(i),c=r,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||n;return i?a.createElement(d,o(o({ref:t},u),{},{components:i})):a.createElement(d,o({ref:t},u))}));function d(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-01-26-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-26-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-26-mithril.md",source:"@site/blog/2023-01-26-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-01-26T00:00:00.000Z",formattedDate:"January 26, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.175,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-01-26-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-27-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-25-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team released a new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2302.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2302.0"))," distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes."),(0,r.kt)("p",null,"Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2302.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2302.0"))),(0,r.kt)("li",{parentName:"ul"},"Implemented a backward/forward compatibility mechanism for API messages ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/688"},"#688"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for the signer registration ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/689"},"#689")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for the signature registration ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/693"},"#693")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for epoch settings ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/695"},"#695")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for certificate pending ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/696"},"#696")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for certificate ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/697"},"#697")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for snapshots list ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/698"},"#698")),(0,r.kt)("li",{parentName:"ul"},"Implement the mechanism for snapshot ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/699"},"#699")),(0,r.kt)("li",{parentName:"ul"},"Update enforcement of API version with Semver ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/705"},"#705")))),(0,r.kt)("li",{parentName:"ul"},"Completed the PoC implementation of backward compatibility with ",(0,r.kt)("inlineCode",{parentName:"li"},"protobuf")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/677"},"#677")),(0,r.kt)("li",{parentName:"ul"},"Completed the PoC implementation of backward compatibility with ",(0,r.kt)("inlineCode",{parentName:"li"},"avro")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/678"},"#678")),(0,r.kt)("li",{parentName:"ul"},"Completed the PoC to Read/Write transaction on chain for Era activations ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/672"},"#672")),(0,r.kt)("li",{parentName:"ul"},"Completed the upgrade Cardano devnet to 1.35.4 ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/523"},"#523"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7312b66d.97615e9e.js b/assets/js/7312b66d.97615e9e.js new file mode 100644 index 00000000000..f274af9dc26 --- /dev/null +++ b/assets/js/7312b66d.97615e9e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3403],{39898:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/performance-tracing/page/4","page":4,"postsPerPage":5,"totalPages":5,"totalCount":25,"previousPage":"/cardano-updates/tags/performance-tracing/page/3","nextPage":"/cardano-updates/tags/performance-tracing/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/7325235b.554ee35f.js b/assets/js/7325235b.554ee35f.js new file mode 100644 index 00000000000..5f3999c6e71 --- /dev/null +++ b/assets/js/7325235b.554ee35f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[99873],{50767:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/11","page":11,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/10","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/733f2214.260f1743.js b/assets/js/733f2214.260f1743.js new file mode 100644 index 00000000000..5dc3d734225 --- /dev/null +++ b/assets/js/733f2214.260f1743.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[947],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),h=n,m=u["".concat(s,".").concat(h)]||u[h]||c[h]||o;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-10-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-14-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-14-hydra.md",source:"@site/blog/2022-10-14-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-10-14T00:00:00.000Z",formattedDate:"October 14, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.26,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-10-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-18-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-10-14-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},u="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node"),' over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks "past the opening of a Head". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Last week we thought we were done with ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/adr/18/"},"ADR18"),", but were not ..."),(0,n.kt)("li",{parentName:"ul"},"... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence."),(0,n.kt)("li",{parentName:"ul"},"Implemented a first version for persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/187"},"#187")," in response."),(0,n.kt)("li",{parentName:"ul"},"Enhanced CI to publish test results ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/benchmarks/tests/hydra-node/hspec-results"},"on our website")),(0,n.kt)("li",{parentName:"ul"},"Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!"),(0,n.kt)("li",{parentName:"ul"},"Pulled static executable feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/200"},"#200")," into scope, implemented it and merged it!"),(0,n.kt)("li",{parentName:"ul"},"Received and read through a project proposal by a vendor (building a Hydra platform).")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Get backup/recovery ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/187"},"#187")," done with proper event sourcing (ADR18)"),(0,n.kt)("li",{parentName:"ul"},"Cut the next release, version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.8.0")),(0,n.kt)("li",{parentName:"ul"},"Address open comments on specification document & complete the list of identified gaps between specification and implementation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Have the CI build macos artifacts")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/73a1bc7a.eede1bae.js b/assets/js/73a1bc7a.eede1bae.js new file mode 100644 index 00000000000..6b770553345 --- /dev/null +++ b/assets/js/73a1bc7a.eede1bae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[44379],{32801:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/ledger/page/4","page":4,"postsPerPage":5,"totalPages":6,"totalCount":30,"previousPage":"/cardano-updates/tags/ledger/page/3","nextPage":"/cardano-updates/tags/ledger/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/73a96f39.b97f3a8a.js b/assets/js/73a96f39.b97f3a8a.js new file mode 100644 index 00000000000..321a947a92b --- /dev/null +++ b/assets/js/73a96f39.b97f3a8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95845],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(s,".").concat(c)]||d[c]||h[c]||o;return a?r.createElement(m,i(i({ref:t},u),{},{components:a})):r.createElement(m,i({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-04-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-21-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-21-hydra.md",source:"@site/blog/2023-04-21-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-21T00:00:00.000Z",formattedDate:"April 21, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.26,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-27-hydra"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-04-21-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team worked on several fronts, including fixing state\nmachine continuity on-chain, discussing voting project solutions, exploring\nadding Hydra support to kupo, and improving API navigation with a sidebar. The\nteam also updated dependencies and fixed issues in their test suites. Moving\nforward, the team plans to hold the next monthly review meeting, address a user\nissue, prepare for the 0.10.0 release, and work on a dirt road fix for the\nrollbacks issue with proper test coverage."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fixed scripts to enforce state machine continuity on-chain ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/777"},"#777"),"."),(0,n.kt)("li",{parentName:"ul"},"Took part in a twitter space on ",(0,n.kt)("a",{parentName:"li",href:"https://twitter.com/thepizzaknight_/status/1647833904282320896"},"\u201c","Scaling Cardano","\u201d"),"."),(0,n.kt)("li",{parentName:"ul"},"Joined a CBIA meeting to discuss Cardano network protocols & how to specify them."),(0,n.kt)("li",{parentName:"ul"},"Discussed potential solutions of ensuring vote uniqueness in the voting project."),(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to match ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node")," master to prepare for upcoming releases and hard-forks"),(0,n.kt)("li",{parentName:"ul"},"Explored adding Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/CardanoSolutions/kupo/pull/117"},"support to kupo"),", a lightweight Cardano chain indexer - some more work required."),(0,n.kt)("li",{parentName:"ul"},"Improved navigation of the API Reference with a sidebar, see ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/api-reference/"},"unstable API version"),"."),(0,n.kt)("li",{parentName:"ul"},"Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting (join via ",(0,n.kt)("a",{parentName:"li",href:"https://discord.gg/inputoutput?event=1097863746216538194"},"Discord")," or ",(0,n.kt)("a",{parentName:"li",href:"https://www.addevent.com/event/ck16794110"},"AddEvent"),") & report"),(0,n.kt)("li",{parentName:"ul"},"Dirt road fix for rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")," properly covered by a test."),(0,n.kt)("li",{parentName:"ul"},"Groom and ideally address user issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/823"},"#823"),"."),(0,n.kt)("li",{parentName:"ul"},"Put the spec into the repo ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693")," and prepare release 0.10.0.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/73bbd4d7.28eef603.js b/assets/js/73bbd4d7.28eef603.js new file mode 100644 index 00000000000..bc44560abd1 --- /dev/null +++ b/assets/js/73bbd4d7.28eef603.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25590],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(n),h=r,d=c["".concat(l,".").concat(h)]||c[h]||m[h]||o;return n?a.createElement(d,i(i({ref:t},u),{},{components:n})):a.createElement(d,i({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i="Executive summary",s={permalink:"/cardano-updates/2022-09-20-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-20-consensus.md",source:"@site/blog/2022-09-20-consensus.md",title:"Consensus Team Update",description:"- We proposed a fix for the performance degradation observed when running",date:"2022-09-20T00:00:00.000Z",formattedDate:"September 20, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:3.895,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-09-27-network"},nextItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-09-19-db-sync"}},l={authorsImageUrls:[void 0]},p=[{value:"UTxO HD",id:"utxo-hd",level:2},{value:"Genesis",id:"genesis",level:2},{value:"Technical debt",id:"technical-debt",level:2}],u={toc:p},c="wrapper";function m(e){let{components:t,...o}=e;return(0,r.kt)(c,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We proposed a fix for the performance degradation observed when running\ndistributed multi-node benchmarks in the UTxO HD feature branch. While this\nfixed the problems observed when running local benchmarks, it broke the\n",(0,r.kt)("inlineCode",{parentName:"li"},"ThreadNet")," tests due to concurrency issues. Therefore, we think it is wise to\nstart redesigning the UTxO HD mempool integration."),(0,r.kt)("li",{parentName:"ul"},"We did several rounds of code review on the alternative implementation of\ndiff-sequences required by the UTxO HD feature based on the idea of\nanti-diffs. This alternative implementation is close to being merged, and the\nnext step is to integrate this to the UTxO HD branch, so that we can run\nad-hoc replaying and syncing from scratch benchmarks and compare these with\nthe baseline. The micro-benchmarks we elaborated for the alternative\nimplementation show speedups of up to 4x, so we are optimistic about the\nperformance of replaying and syncing from scratch benchmarks, however it is\nimportant to notice that ",(0,r.kt)("em",{parentName:"li"},"due to the nature of UTxO HD")," we will still be\nslower than the baseline."),(0,r.kt)("li",{parentName:"ul"},"The final draft of the Genesis implementation specification is ready for\nreview."),(0,r.kt)("li",{parentName:"ul"},"We implemented a prototype for the happy path of Genesis' ChainSync Jumping\n(CSJ). The prototype is slower than the baseline, however it is not the latest\nversion of the prototype and the jump interval is very small."),(0,r.kt)("li",{parentName:"ul"},"Work on integrating Conway has ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3971#issuecomment-1252524031"},"stopped")," since\npriorities have changed."),(0,r.kt)("li",{parentName:"ul"},"We started work on benchmarking epoch-boundaries and epoch overhead\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4014"},"pr-4014"),". To this end, we made use of a modified version of our\n",(0,r.kt)("inlineCode",{parentName:"li"},"db-analyser")," tool. We ran the new benchmarking setup using the Cardano\nmainnet chain, and we can see that block tick and application take\nsubstantially longer at epoch boundaries, although there are a couple of slots\nduring an epoch in which these computations take more than normal. We notified\nthe ledger team about these findings. We will use this modified version of\n",(0,r.kt)("inlineCode",{parentName:"li"},"db-analyser")," to investigate the epoch overhead.")),(0,r.kt)("h1",{id:"workstreams"},"Workstreams"),(0,r.kt)("h2",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Spent quite some time investigating the root cause of the degradation in\nperformance observed in the benchmarks. We run the ",(0,r.kt)("inlineCode",{parentName:"p"},"make forge-stress"),"\nbenchmarks locally in order to debug this behavior."),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Transaction batching doesn't make a notable difference in the outcome\n(considering we are using the in-memory backend).")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The mempool batching implementation required asynchronous transaction\nvalidation which is a violation of the ",(0,r.kt)("inlineCode",{parentName:"p"},"LocalTxSubmission")," protocol\ncontract and therefore if we continued on that route, the impact would\nhave been quite big.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The STM logic we implemented by using a ",(0,r.kt)("inlineCode",{parentName:"p"},"TMVar")," for the mempool internal\nstate was buggy and under certain circumstances it seemed to lock.\nReverting the mempool internal state to be stored in a ",(0,r.kt)("inlineCode",{parentName:"p"},"TVar")," seems to\nsolve this problem.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The results we get after this change look almost identical to the ones\nfrom the baseline.")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3997"},"The anti-diff prototype (PR\n#3997)")," has\nbeen reviewed and is close to being merged."),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"A follow-up issue (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4010"},"issue\n#4010"),")\nto integrate the anti-diff prototype in the various ",(0,r.kt)("inlineCode",{parentName:"li"},"consensus"),' packages\nwas created. A first version of the integration exists, and all tests\npass. A next step is to get some indication of the "real" performance gain\nby profiling ',(0,r.kt)("inlineCode",{parentName:"li"},"db-analyser")," (or ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node"),").")))),(0,r.kt)("h2",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Final draft of the Genesis implementation specification, now up for review.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Local benchmark setup for parameter tuning via the happy path ChainSync\nJumping (CSJ) prototype (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3987"},"Issue 3987"),")."),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Context: Our Genesis design requires us to check in with a large (~20)\nnumber of servers periodically while syncing. These servers are offered\njump requests via the ChainSync protocol (hence the name), which they can\naccept or decline. If a peer declines, the Genesis rule allows us to\ndetermine whether a node actually has a better chain.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'The "happy path" is when no peer declines a jump. We want this to have\nclose to no overhead compared to status quo, i.e. syncing without Genesis.')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented a prototype for this happy path, and are now starting to\ntest in various configurations (number of peers, latency, bandwidth) to\ntune the performance of ChainSync jumping, i.e. how complicated our logic\nof choosing when to jump needs to be."),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Example:"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Simulated connection: 50 MBit/s, 50ms latency")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Jump interval: 3000 slots (on the low end, could be increased to up to\n",(0,r.kt)("inlineCode",{parentName:"p"},"3k/f"),")")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Red: baseline (1.35.3), one peer in topology file")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Blue: Preliminary version of our prototype, with 10 peers."),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("img",{src:n(88213).Z,width:"654",height:"459"})),(0,r.kt)("p",{parentName:"li"},"It is slower by about ~30%, but it is not the latest version of the\nprototype, and the jump interval is very small, making CSJ more of a\nbottleneck."))))),(0,r.kt)("h2",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Fix flakiness in ChainDB QSM tests (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3990"},"PR 3990"),").")))}m.isMDXComponent=!0},88213:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/happy-path-csj-prototype-prelim-5bbe2e2a20a2740e6238a7c73e618168.svg"}}]); \ No newline at end of file diff --git a/assets/js/73f0dde0.f2c110fe.js b/assets/js/73f0dde0.f2c110fe.js new file mode 100644 index 00000000000..8ef3d277600 --- /dev/null +++ b/assets/js/73f0dde0.f2c110fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30101],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(a),s=r,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||i;return a?n.createElement(h,o(o({ref:t},d),{},{components:a})):n.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-05-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-05-05-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-05-node-cli-api.md",source:"@site/blog/2023-05-05-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-05-05T00:00:00.000Z",formattedDate:"May 5, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.81,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-05-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-05-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-04-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-05-05---2023-05-23"},"2023-05-05 - 2023-05-23"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Golden tests for cardano-cli command help output were added."),(0,r.kt)("li",{parentName:"ul"},"Documentation was updated with new libsodium installation instructions."),(0,r.kt)("li",{parentName:"ul"},"There were several updates for the cardano-cli:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Deletion of the deprecated shelley command group."),(0,r.kt)("li",{parentName:"ul"},"Addition of golden tests for CLI help."),(0,r.kt)("li",{parentName:"ul"},"An improvement to avoid bare IO in tests, allowing better error reporting in failed tests."),(0,r.kt)("li",{parentName:"ul"},"Generation of UTCTime test values without leap seconds (avoids erroneous test failures)"),(0,r.kt)("li",{parentName:"ul"},"Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32."))),(0,r.kt)("li",{parentName:"ul"},"The cardano-api underwent multiple refinements:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Implementing deposit handling when balancing transactions (necessary for Conway)"),(0,r.kt)("li",{parentName:"ul"},"Cleaning up socket file path code."))),(0,r.kt)("li",{parentName:"ul"},"Several changes were made to the cardano-testnet:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Adding golden tests for cardano-testnet help."),(0,r.kt)("li",{parentName:"ul"},"Removing all hardcoded yaml files in cardano-testnet"),(0,r.kt)("li",{parentName:"ul"},"Improving cardano-testnet help output."),(0,r.kt)("li",{parentName:"ul"},"Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.")))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5181"},"Update libsodium installation instructions")," ")),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5264"},"Delete deprecated ",(0,r.kt)("inlineCode",{parentName:"a"},"shelley")," command group")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5206"},"Add golden tests for CLI help")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5201"},"Avoid bare IO in tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5200"},"Split ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli")," test files into separate directories")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5198"},"Make UTCTime test generator generate values without leap seconds")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5189"},"Add support with signing transactions with ",(0,r.kt)("inlineCode",{parentName:"a"},"GenesisDelegateSigningKey_ed25519_bip32"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5184"},"Rename --signed-tx-file argument to --tx-file argument in verify-poll command")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5120"},"Simplify socket path code")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5221"},"refactor: make renderScriptWitnessIndex output more explicit")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5218"},"Implement deposit handling when balancing transactions")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5217"},"Replace remaining ",(0,r.kt)("inlineCode",{parentName:"a"},"FilePath")," use in ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5215"},"Cleanup socket file path code")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5207"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"readEnvSocketPath")," function")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5194"},"IO functions for reading. Remove PoolMetadataFile type")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5191"},"Expose config reader")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5188"},"Golden tests for ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api")," errors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5175"},"Fix ",(0,r.kt)("inlineCode",{parentName:"a"},"toEraInMode")," for conway")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5168"},"Use machine readable output for ToJSON ScriptWitnessIndex")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5096"},"Expose LocalTxSubmissionClient data constructor")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5047"},"Use cardano-api from separate repository")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4684"},"[cardano-api] Export fromConsensusPointHF")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5022"},"Provide orphan ",(0,r.kt)("inlineCode",{parentName:"a"},"ToJSON")," instances for ",(0,r.kt)("inlineCode",{parentName:"a"},"HardForkNodeToClientVersion")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"HardForkNodeToNodeVersion"))," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5254"},"Add golden test for ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-testnet")," help")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5242"},"Remove all hardcoded yaml files from cardano-testnet")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5234"},"Fix cardano-testnet help")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5211"},"Parameterize default yaml configuration value in cardano-testnet")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5165"},"Freeze callstack in integration and integrationRetryWorkspace functions")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5128"},"Create defaultYamlValue for cardano-testnet"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7439ef37.e15faba5.js b/assets/js/7439ef37.e15faba5.js new file mode 100644 index 00000000000..6695d002f30 --- /dev/null +++ b/assets/js/7439ef37.e15faba5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20433],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var o=r.createContext({}),u=function(e){var t=r.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(o.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,o=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=u(a),h=l,c=d["".concat(o,".").concat(h)]||d[h]||m[h]||n;return a?r.createElement(c,i(i({ref:t},s),{},{components:a})):r.createElement(c,i({ref:t},s))}));function c(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,i=new Array(n);i[0]=h;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[d]="string"==typeof e?e:l,i[1]=p;for(var u=2;u{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>m,frontMatter:()=>n,metadata:()=>p,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-11-08-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-11-08-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-08-ledger.md",source:"@site/blog/2023-11-08-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-11-08T00:00:00.000Z",formattedDate:"November 8, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.685,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-11-08-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-11-09-db-sync"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-08-mithril"}},o={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway",id:"conway",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],s={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"This update contains mostly improvements to quality of Conway era implementation and\ntooling that we use for testing Ledger. Major Conway bugs that were discovered and\nsquashed are:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"PParamsUpdate proposals will now correctly use DRep thresholds for ratification"),(0,l.kt)("li",{parentName:"ul"},"Treasury withdrawals are now properly enacted."),(0,l.kt)("li",{parentName:"ul"},"Corrected snapshotting and DRep Stake Distribution Pulser initialization"),(0,l.kt)("li",{parentName:"ul"},"Delegation to non-existent Stake pool is no longer possible")),(0,l.kt)("p",null,"Other important quality of life improvements are addition of reusable interfaces for an\nordered set ",(0,l.kt)("inlineCode",{parentName:"p"},"OSet")," and ordered map ",(0,l.kt)("inlineCode",{parentName:"p"},"OMap"),". Which allowed us to disable duplicate\ncertificates and proposals in a transaction. As a precursor to ",(0,l.kt)("inlineCode",{parentName:"p"},"PlutusV3")," integration, a\nserious reorganization of Plutus related functionality was performed."),(0,l.kt)("p",null,"Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on\nexpired proposals, addition of Anchor to Constitutional Committee resignation proposals."),(0,l.kt)("p",null,'Significant improvements have been made to a specialized "Imp" test library that allows us\nwriting concise stateful unit tests for verifying the Ledger logic. Serious progress has\nbeen made on the conformance testing, where we can now interface with Haskell generated\ncode from the Agda specification. Serialization testing has been extended to increase\nbinary conformance coverage.'),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway"},"Conway"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3808"},"pull-3808")," - Enhance ",(0,l.kt)("inlineCode",{parentName:"li"},"CommitteeMembersState")," query to return quorum and NoConfidence"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3801"},"pull-3801")," - Fix epoch rule and tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3803"},"pull-3803")," - Fix delegation validation"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3759"},"pull-3759")," - Reshuffle things to the DRepPulser incorporates some snap shot things"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3779"},"pull-3779")," - Prevent duplicate certs and proposals"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3794"},"pull-3794")," - Added anchor to resign certs"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3797"},"pull-3797")," - Cleanup JSON instances for Conway governance"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3848"},"pull-3848")," - Plutus modules restructure"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3840"},"pull-3840")," - Fix anomalies in Deposits in the Conway Era"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3856"},"pull-3856")," - Add governance related ledger events"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3825"},"pull-3825")," - Prevent voting on expired GovActions"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3831"},"pull-3831")," - Treasury withdrawal fix"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3791"},"pull-3791")," - Use a Data.OMap.Strict to replace ProposalsSnapshot"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3836"},"pull-3836")," - PParamsUpdate enactment fix"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3846"},"pull-3846")," - Revert argument order swap.")),(0,l.kt)("h3",{id:"testing"},"Testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3782"},"pull-3782")," - Move ",(0,l.kt)("inlineCode",{parentName:"li"},"ImpTest")," to Shelley testlib"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3842"},"pull-3842")," - Imp improvements"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3844"},"pull-3844")," - Add mappings to Agda types"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3853"},"pull-3853")," - Fix strange assertion failure, which hides real Block too big problem."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3809"},"pull-3809")," - CDDL roundtrip testing"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3832"},"pull-3832")," - Treasury withdrawals tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3839"},"pull-3839")," - Added ",(0,l.kt)("inlineCode",{parentName:"li"},"cardano-ledger-conformance")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3841"},"pull-3841")," - Add ",(0,l.kt)("inlineCode",{parentName:"li"},"sha256")," to ",(0,l.kt)("inlineCode",{parentName:"li"},"cardano-ledger-executable-spec"))),(0,l.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3843"},"pull-3843")," - Add ...WithLogs versions of evalScripts and friends"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3795"},"pull-3795")," - Bump plutus to 1.15"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3798"},"pull-3798")," - Bump urllib3 from 1.26.17 to 1.26.18 in /doc"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3799"},"pull-3799")," - Changes needed for 8.6 release"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3807"},"pull-3807")," - Add invalidBeforeL and invalidHereAfterL functions"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3819"},"pull-3819")," - Fixups needed for a release"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3829"},"pull-3829")," - Post release CHANGELOG version bumps"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3830"},"pull-3830")," - Bump aeson to 2.2"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3833"},"pull-3833")," - Backport release cardano-ledger-conway-1.10.1.0"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3828"},"pull-3828")," - Add changelog for node release 8.6")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/74d66224.39d38542.js b/assets/js/74d66224.39d38542.js new file mode 100644 index 00000000000..c48ab062d5c --- /dev/null +++ b/assets/js/74d66224.39d38542.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40767],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=p(n),h=a,m=u["".concat(l,".").concat(h)]||u[h]||c[h]||r;return n?o.createElement(m,i(i({ref:t},d),{},{components:n})):o.createElement(m,i({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var o=n(87462),a=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2022-12-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-12-14-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-consensus.md",source:"@site/blog/2022-12-14-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.995,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-12-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-15-mithril"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2022-12-14-db-sync"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD prototype",id:"utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:3},{value:"Genesis",id:"genesis",level:3},{value:"New VRF and KES crypto integration",id:"new-vrf-and-kes-crypto-integration",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],d={toc:p},u="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,o.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks, the Consensus team finalized the QSM tests for the\nbacking store and Mempool on the UTxO-HD branch with important discoveries\nregarding parallel QSM testing. We also worked with the Ledger team to envisage\nthe modifications that are required in Ledger and Consensus to accommodate the\nchanges in the crypto VRF and KES. The ",(0,a.kt)("inlineCode",{parentName:"p"},"db-analyser")," now supports bechmarking\nthe ledger operations, which will allow us to identify, debug, and profile\npotential performance problems. We drafted a document that defines how to manage\nthe versions of Consensus-related packages. The top level documentation of\n",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," now features a description of the consensus components and\nprovides a hyperlinked map to the modules documentation."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD prototype"),(0,a.kt)("p",null,"Whereas we had passing sequential state-machine tests for the mempool, the\nparallel case proved to be more challenging than we thought. The operation of\nadding a list of transactions to the mempool is not atomic and, as a result,\nwhen adding a list of transactions, transactions from other processes can be\nadded in between. The mempool implementation handles this correctly, however\nthis required us to ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4076"},"redesign")," the parallel model we had to take\nthe lack of atomicity into account."),(0,a.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,a.kt)("p",null,"We finished refactoring the backing store property tests. The second review\nround is ongoing."),(0,a.kt)("h3",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,a.kt)("p",null,"We are working on benchmarking (in terms of time and number of IO operations)\nfetching/looking up data from disk."),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"We worked on the design of a mechanism to prevent a DoS attack on our Genesis\ndesign related to rollbacks. This was arguably the biggest outstanding question."),(0,a.kt)("p",null,"During the discussions around Genesis, we noticed a design boundary that nicely\ndelineates a fundamental component. We almost have a full Haskell prototype of\nit. It will be very nicely self-contained, perhaps even usable in the ultimate\nimplementation!"),(0,a.kt)("h3",{id:"new-vrf-and-kes-crypto-integration"},"New VRF and KES crypto integration"),(0,a.kt)("p",null,"We collaborated with the Ledger team on preparing the ledger state and crypto\ntypes to avoid huge allocation on the epoch boundary when changing aspects of\nthe crypto that will only manifest in headers, not in the ledger states."),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("p",null,"We merged the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4014"},"pull-request")," that adds a support to ",(0,a.kt)("inlineCode",{parentName:"p"},"db-analyser")," for\nbenchmarking ledger operations. This will allow us to identify, debug, and\nprofile potential performance problems. The benchmark focus on the main 5 ledger\noperations that are involved in chain syncing, block forging, and block\nvalidation, namely:"),(0,a.kt)("ol",{start:0},(0,a.kt)("li",{parentName:"ol"},"Forecast."),(0,a.kt)("li",{parentName:"ol"},"Header tick."),(0,a.kt)("li",{parentName:"ol"},"Header application."),(0,a.kt)("li",{parentName:"ol"},"Block tick."),(0,a.kt)("li",{parentName:"ol"},"Block application.")),(0,a.kt)("p",null,"The following figure shows a plot of the benchmarking results for the first 65\nmillion blocks (approximately) of the Cardano chain. The thin yellow lines under\nthe x-axis show the epoch boundaries, whereas the thick yellow lines correspond\nto the era transitions."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(2666).Z,width:"1600",height:"800"})),(0,a.kt)("p",null,"As we can see in this figure, era and epoch boundaries require more computation\ntime. The ledger team are aware of this problem, and we are working to improve\nthis situation."),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4207"},"drafted a document")," motivating and defining how Consensus (and\npossibly other core teams) will/should manage our package versions. This\npull-request garnered many great discussions from our team members and other\nteams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et\nal. We want to thank you all for your input, and we found this discussion very\nenlightening!"),(0,a.kt)("p",null,"We merged the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4197"},"pull request")," that adds an overview of consensus to\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/ouroboros-network/"},"top level\ndocumentation")," of\nouroboros-network. This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation."))}c.isMDXComponent=!0},2666:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/2022-12-14-ledger-ops-benchmark-c46be3db45ff5480ed104e0d520711a6.png"}}]); \ No newline at end of file diff --git a/assets/js/752b6ead.8868ca89.js b/assets/js/752b6ead.8868ca89.js new file mode 100644 index 00000000000..6545d3792bc --- /dev/null +++ b/assets/js/752b6ead.8868ca89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[50165],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=s(n),p=a,h=u["".concat(c,".").concat(p)]||u[p]||m[p]||o;return n?r.createElement(h,i(i({ref:t},d),{},{components:n})):r.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-05-31-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-05-31-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-31-performance-and-tracing.md",source:"@site/blog/2023-05-31-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-05-31T00:00:00.000Z",formattedDate:"May 31, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.055,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-05-31-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-31-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-26-goedel"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build\nconfiguration: As it stands, the ",(0,a.kt)("inlineCode",{parentName:"p"},"ghc-bignum")," package is using the Haskell ",(0,a.kt)("inlineCode",{parentName:"p"},"native-backend")," as a default. We strive\nto benchmark a build with the ",(0,a.kt)("inlineCode",{parentName:"p"},"gmp-backend")," next. "),(0,a.kt)("p",null,"A variant of our ",(0,a.kt)("inlineCode",{parentName:"p"},"forge-stress")," local benchmark has been set up to serve as an early indicator for the resource usage profile\nwe'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way\nshorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great\nsupport when evaluating different compiler versions or RTS flags incrementally."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The hub of the new tracing system ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," is designed with a fixed output behaviour, which is limited to various\nlogging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to\ndirectly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with\njob definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing\nbenchmarking run required us to fine-tune communications with the nomad server. "),(0,a.kt)("p",null,"Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible\nand offers more detailed insight than the previous iteration in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-ops"),". The backend will enable you to formulate\nvery specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7574ff34.785c26ac.js b/assets/js/7574ff34.785c26ac.js new file mode 100644 index 00000000000..436f200b18a --- /dev/null +++ b/assets/js/7574ff34.785c26ac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[34891],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,h=d["".concat(i,".").concat(m)]||d[m]||c[m]||o;return a?r.createElement(h,l(l({ref:t},u),{},{components:a})):r.createElement(h,l({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p[d]="string"==typeof e?e:n,l[1]=p;for(var s=2;s{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>p,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-09-01-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-09-01-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-sre.md",source:"@site/blog/2023-09-01-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.075,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-09-01-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-01-network"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-29-node-cli-api"}},i={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Sanchonet-demo",id:"sanchonet-demo",level:3}],u={toc:s},d="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes"),(0,n.kt)("li",{parentName:"ul"},"Work on a new ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs"},"capkgs"),' repository started -- "Content Addressed Packages"',(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output"),(0,n.kt)("li",{parentName:"ul"},"These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do"),(0,n.kt)("li",{parentName:"ul"},"Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers")))),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Content addressed packages -- new repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs"},"capkgs"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/5a0eabe...03e8e42"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Flake devShell module improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/4"},"cardano-parts-pull-4")),(0,n.kt)("li",{parentName:"ul"},"Cardano-world entrypoints migrated to flake parts module: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/5"},"cardano-parts-pull-5")),(0,n.kt)("li",{parentName:"ul"},"Cardano-world jobs migrated to flake parts module: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/6"},"cardano-parts-pull-6")),(0,n.kt)("li",{parentName:"ul"},"Drep delegation fixups: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/7"},"cardano-parts-pull-7")),(0,n.kt)("li",{parentName:"ul"},"Utilize content addressed binaries, WIP: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/8"},"cardano-parts-pull-8")),(0,n.kt)("li",{parentName:"ul"},"Cardano-node module preparation branch, WIP: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/compare/capkgs...node-module"},"cardano-parts-compare"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Availability zone pinning and explorer mods: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf/compare/d3a8644...9f9917c"},"cardano-perf-compare"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Remove performance nodes for migration to cardano-perf: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/306ef6c6dd6c09d9b90b9768f2b84a1d05cded26"},"cardano-world-commit"))),(0,n.kt)("h3",{id:"sanchonet-demo"},"Sanchonet-demo"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet demonstration repository: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo"},"sanchonet-demo"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/76794a21.2d5266e5.js b/assets/js/76794a21.2d5266e5.js new file mode 100644 index 00000000000..0f7d79a44a4 --- /dev/null +++ b/assets/js/76794a21.2d5266e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29071],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),c=i,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||n;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:i,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-02-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-23-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-23-mithril.md",source:"@site/blog/2023-02-23-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-02-23T00:00:00.000Z",formattedDate:"February 23, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.47,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-02-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-24-hydra"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-23-performance-and-tracing"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...r}=e;return(0,i.kt)(m,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team released a new ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2306.0"},(0,i.kt)("inlineCode",{parentName:"a"},"2306.0"))," distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes\u2019 CLI that allows generating and signing an era marker\u2019s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2306.0"},(0,i.kt)("inlineCode",{parentName:"a"},"2306.0"))),(0,i.kt)("li",{parentName:"ul"},"Completed the epic that implements signer versions deployment monitoring ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/718"},"#718"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the implementation an event producer/consumer via channel ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/738"},"#738")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation of a database and its configuration to save the events on the consumer side ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/740"},"#740")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation of events and sending them on the channel on the producer side ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/741"},"#741")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation of the signer registration event ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/742"},"#742")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation a query to extract the node versions stakes distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/743"},"#743")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements eras behavior switch ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/707"},"#707"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the loading of era reader adapters from config in the signer and the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/732"},"#732")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an era cli command in the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/755"},"#755")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of a dynamic matrix of cases in CI end to end tests ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/760"},"#760")))),(0,i.kt)("li",{parentName:"ul"},"Fixed some bugs:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fixed the unsupported ",(0,i.kt)("inlineCode",{parentName:"li"},"unixepoch()")," function ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/757"},"#757")),(0,i.kt)("li",{parentName:"ul"},"Fixed the problem that prevented some signers from signing on the ",(0,i.kt)("inlineCode",{parentName:"li"},"testing-preview")," network ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/730"},"#730")),(0,i.kt)("li",{parentName:"ul"},"Update SQLite version to ",(0,i.kt)("inlineCode",{parentName:"li"},"3.40")," in aggregator infrastructure ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/765"},"#765"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/769eb34c.4403be81.js b/assets/js/769eb34c.4403be81.js new file mode 100644 index 00000000000..1937365ca2e --- /dev/null +++ b/assets/js/769eb34c.4403be81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6919],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},c),{},{components:n})):r.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-07-26-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-07-26-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-26-consensus.md",source:"@site/blog/2023-07-26-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-07-26T00:00:00.000Z",formattedDate:"July 26, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.85,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-07-26-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-27-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-21-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis liaising",id:"genesis-liaising",level:3}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"db-sync")," team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now.\nWe also focused on completing tracing support for UTxO-HD in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),".\nCurrently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further. "),(0,a.kt)("p",null,"The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ChainSync")," client as part of the onboarding efforts for the team that will implement Genesis."),(0,a.kt)("p",null,"The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team."),(0,a.kt)("h3",{id:"genesis-liaising"},"Genesis liaising"),(0,a.kt)("p",null,"Improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ChainSync")," client:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/222"},"#222"),"."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/233"},"#233"),".")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/76c61a3b.3a82d970.js b/assets/js/76c61a3b.3a82d970.js new file mode 100644 index 00000000000..0d70c0943d1 --- /dev/null +++ b/assets/js/76c61a3b.3a82d970.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91192],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,f=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2022-11-16-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2022-11-16-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-performance-and-tracing.md",source:"@site/blog/2022-11-16-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2022-11-16T00:00:00.000Z",formattedDate:"November 16, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.635,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2022-11-16-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-16-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-11-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"P2P performance investigation is ongoing, in support of the networking team."),(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support."),(0,a.kt)("li",{parentName:"ol"},"Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing."),(0,a.kt)("li",{parentName:"ol"},"On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started."),(0,a.kt)("li",{parentName:"ol"},"We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends."),(0,a.kt)("p",null,"We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing."),(0,a.kt)("p",null,"A number of smaller workbench, data analysis & reporting improvements have been made."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/771f29e6.38c2d771.js b/assets/js/771f29e6.38c2d771.js new file mode 100644 index 00000000000..b6264061deb --- /dev/null +++ b/assets/js/771f29e6.38c2d771.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56674],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(a),c=n,m=s["".concat(u,".").concat(c)]||s[c]||h[c]||l;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=c;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:n,o[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-03-31-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-03-31-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-ledger.md",source:"@site/blog/2023-03-31-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.97,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-03-31-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-31-hydra"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-03-27-system-test"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Support for the next release",id:"support-for-the-next-release",level:3},{value:"Experiments for DRep stake distribution",id:"experiments-for-drep-stake-distribution",level:3},{value:"Technical debt and bug fixes",id:"technical-debt-and-bug-fixes",level:3},{value:"Documentation changes",id:"documentation-changes",level:3}],d={toc:p},s="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We are still heavily involved in work related to preparing the next release.\nThe other main thing we have worked on is experimentation about how we will\nhandle the DRep stake distribution for CIP-1694 in the conway ledger era.\nLastly, we merged a fix for\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4826"},"node-4826"),"\ninto our main branch (there will be a post-mortem shortly)."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"support-for-the-next-release"},"Support for the next release"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3363"},"pull-3363")," - Fix problems relating to Arbitrary instances used by consensus."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3361"},"pull-3361")," - Remove the alonze genesis from the conway genesis."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3360"},"pull-3360")," - Translate bad pointer addresses to valid ones in conway."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3357"},"pull-3357")," - Fix a bug relating to zero valued ADA in the script context."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3356"},"pull-3356")," - Added needed instances (Arbitrary and Serialization) for conway integration."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3345"},"pull-3345")," - Added helper functions for the CLI."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3342"},"pull-3342")," - Fix a bug with a CLI helper function (having to do with deposit tracking).")),(0,n.kt)("h3",{id:"experiments-for-drep-stake-distribution"},"Experiments for DRep stake distribution"),(0,n.kt)("p",null,"Adding another stake distribution to the ledger state presents some new challenges.\nWe would like to be able to use the current stake distribution at the epoch boundary\nfor DRep voting so that people can always vote themselves in time for any proposal.\nTo this end, we have a prototype of an incremental computation based on the incremental\nlambda calculus, together with tests and benchmarks (which are very promising).\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3344"},"pull-3344"),"."),(0,n.kt)("p",null,"Additionally, more of the ledger state is going to need to be rearranged to accomodate\nthe new incremental computations.\nWe have two draft PRs up for possibles solution.\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3353"},"pull-3353")," and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3364"},"pull-3364"),"."),(0,n.kt)("h3",{id:"technical-debt-and-bug-fixes"},"Technical debt and bug fixes"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3343"},"pull-3343")," - A fix ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/4826"},"node-4826"),"."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3333"},"pull-3333")," - Moving more code out of the shelley packages. "),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3347"},"pull-3347")," - Bug fix for the multi-asset generators."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3341"},"pull-3341")," - Removal of code duplication.")),(0,n.kt)("h3",{id:"documentation-changes"},"Documentation changes"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3354"},"pull-3354"),' - Rename "optional datums" with "supplemental datums" in the alonzo spec.'),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3352"},"pull-3352")," - Add a section to the Shelly errata about the individual deposit tracking."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3351"},"pull-3351")," - Further clarify the details regarding the script integrity hash."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3350"},"pull-3350")," - Some cleanup of the Babbage spec.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/77215fb3.5fcc484d.js b/assets/js/77215fb3.5fcc484d.js new file mode 100644 index 00000000000..d1666ae2cd6 --- /dev/null +++ b/assets/js/77215fb3.5fcc484d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[13680],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(a),h=n,m=u["".concat(p,".").concat(h)]||u[h]||d[h]||i;return a?r.createElement(m,o(o({ref:t},c),{},{components:a})):r.createElement(m,o({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-10-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-10-21-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-21-hydra.md",source:"@site/blog/2022-10-21-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-10-21T00:00:00.000Z",formattedDate:"October 21, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.97,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-10-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-10-27-crypto"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-19-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],c={toc:s},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team reviewed and addressed several open comments on the\nnew HeadV1 specification, completing a list the of identified gaps between\nspecification and implementation while doing so. In the wake of the recent\ndemonstration of SundaeSwap running their DEX in a Hydra Head, they met with\nthem to capture feature ideas & incorporate their feedback on the roadmap, as\nwell as potential research avenues."),(0,n.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Had the monthly review meeting, a bit earlier than expected: ",(0,n.kt)("a",{parentName:"li",href:"https://input-output.atlassian.net/wiki/spaces/HYDRA/pages/3650813953/Monthly+report+-+October+2022"},"https://input-output.atlassian.net/wiki/spaces/HYDRA/pages/3650813953/Monthly+report+-+October+2022")),(0,n.kt)("li",{parentName:"ul"},"Reviewed and addressed several open comments on HeadV1 specification."),(0,n.kt)("li",{parentName:"ul"},"Completed the list of identified gaps between specification and implementation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Had two meetings with SundaeSwap to incorporate their feedback (on research and on the roadmap)."),(0,n.kt)("li",{parentName:"ul"},"Some small fixes on TUI and our docker images. ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/538"},"#538")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/562"},"#562")),(0,n.kt)("li",{parentName:"ul"},"Met with the internal audit team and clarified scope.")),(0,n.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete the last two items required for a version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.8.0"),"."),(0,n.kt)("li",{parentName:"ul"},"Cut the next release, version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.8.0")),(0,n.kt)("li",{parentName:"ul"},"Get backup/recovery ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/187"},"#187")," done with proper event sourcing (ADR18)"),(0,n.kt)("li",{parentName:"ul"},"Have the CI build macos artifacts")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/77550e96.e668c8a1.js b/assets/js/77550e96.e668c8a1.js new file mode 100644 index 00000000000..5d56dfb32b1 --- /dev/null +++ b/assets/js/77550e96.e668c8a1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62227],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=u(a),s=r,h=m["".concat(p,".").concat(s)]||m[s]||d[s]||i;return a?n.createElement(h,o(o({ref:t},c),{},{components:a})):n.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-08-29-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-08-29-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-29-node-cli-api.md",source:"@site/blog/2023-08-29-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-08-29T00:00:00.000Z",formattedDate:"August 29, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.55,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-08-29-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-01-sre"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-28-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-08-16---2023-08-29"},"2023-08-16 - 2023-08-29"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CLI is making progress towards phases 3 and 4 of SanchoNet."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Ability to create info, no-confidence and new committee governance actions.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Voting as DREP is possible now on the CLI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"API is now using Ledger's PParams and VotingProcedures")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Expose following queries from consensus:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"- GetGovState\n- GetDRepState\n- GetDRepStakeDistr\n- GetCommitteeState\n- GetConstitution\n")))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/179"},"Add goverance info action creation to era based cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/176"},"Add create-no-confidence command to era based cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/175"},"Add create-new-committee command to era based cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/204"},"Enable ",(0,r.kt)("inlineCode",{parentName:"a"},"--drep-script-hash")," option")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/211"},"Remove ",(0,r.kt)("inlineCode",{parentName:"a"},"experimental")," subcommand")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/210"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.17.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/194"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"governance drep id")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/189"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"governance query")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/187"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--verification-key")," option to ",(0,r.kt)("inlineCode",{parentName:"a"},"committee key-hash")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/203"},"Read and write ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingProcedures")," files instead of ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingEntry")," files")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/201"},"Release 8.6.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/195"},"Merge ",(0,r.kt)("inlineCode",{parentName:"a"},"LegacyClientCmdError")," into ",(0,r.kt)("inlineCode",{parentName:"a"},"CmdError")," ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/193"},"Add test for conway governance action create-constitution")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/192"},"Move legacy errors out of legacy command structure modules")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/191"},"Governance ",(0,r.kt)("inlineCode",{parentName:"a"},"drep")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"vote")," command groups")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/188"},"Move command errors from era-based to ",(0,r.kt)("inlineCode",{parentName:"a"},"CmdError")," module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/186"},"Move some error types")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/185"},"Delete unused module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/183"},"Refactor: Use ",(0,r.kt)("inlineCode",{parentName:"a"},"maybeFeatureInEra")," instead of ",(0,r.kt)("inlineCode",{parentName:"a"},"featureInEra")," where possible")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/182"},"Remove all uses of ",(0,r.kt)("inlineCode",{parentName:"a"},"toS"),", ",(0,r.kt)("inlineCode",{parentName:"a"},"purer"),", ",(0,r.kt)("inlineCode",{parentName:"a"},"cborError")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"intercalate")," from ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Prelude"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/180"},"Remove example era-based parsers we don't need anymore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/174"},"Bump CHaP index in preparation for 8.3.0 pre"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/216"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.17.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/214"},"Replace ProtocolParameters usage with ledger's PParams")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/210"},"Use injective type families to improve type inference")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/209"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"TxVotes")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingEntry")," and use ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingProcedures")," instead")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/208"},"New functions ",(0,r.kt)("inlineCode",{parentName:"a"},"emptyVotingProcedures"),", ",(0,r.kt)("inlineCode",{parentName:"a"},"singletonVotingProcedures")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"mergeVotingProcedures"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/207"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"makeStakeAddressAndDRepDelegationCertificate")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/206"},"Expose ledger lenses for governance types")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/205"},"New version cardano-api-8.16.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/204"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"VotingProcedures")," type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/202"},"Release 8.16.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/200"},"Update createAnchor to use hashAnchorData")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/197"},"Release 8.15.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/196"},"Add consensus governance queries"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/778ef860.762eeabd.js b/assets/js/778ef860.762eeabd.js new file mode 100644 index 00000000000..6cf240fa845 --- /dev/null +++ b/assets/js/778ef860.762eeabd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96838],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},m=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),s=c(r),d=a,g=s["".concat(p,".").concat(d)]||s[d]||u[d]||o;return r?n.createElement(g,l(l({ref:t},m),{},{components:r})):n.createElement(g,l({ref:t},m))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-09-15-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-15-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-goedel.md",source:"@site/blog/2023-09-15-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.44,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-09-15-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-20-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-15-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],m={toc:c},s="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"working on collating and open sourcing performance analysis prototype")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"improvements to Ouroboros Praos specification in Isabelle")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"working on formalising chain sync mini-protocol")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"reviewing an alternatice semantics for DeltaQ")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Seminar talk at U. Bergen on algebraic properties of timeliness"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/77d69aed.613ab23b.js b/assets/js/77d69aed.613ab23b.js new file mode 100644 index 00000000000..9710c5478c7 --- /dev/null +++ b/assets/js/77d69aed.613ab23b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29399],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(n),m=r,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:r,o[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const i={title:"Consensus Team Update",slug:"2023-05-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-31-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-31-consensus.md",source:"@site/blog/2023-05-31-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-05-31T00:00:00.000Z",formattedDate:"May 31, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.825,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-05-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-01-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-31-performance-and-tracing"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Support",id:"support",level:2}],p={toc:u},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/101"},"this issue"),"). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain."),(0,r.kt)("p",null,"On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano."),(0,r.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking ",(0,r.kt)("inlineCode",{parentName:"li"},"SOP")," classes like ",(0,r.kt)("inlineCode",{parentName:"li"},"HPure")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"HAp")," . In short, we implement generalised versions of important classes like ",(0,r.kt)("inlineCode",{parentName:"li"},"Applicative")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"Traversable"),".")),(0,r.kt)("h2",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim-0.1.0.2")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-api-0.1.0.2")," were released, which makes them now compatible with GHC up to ",(0,r.kt)("inlineCode",{parentName:"li"},"9.6"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus-0.7.0.0")," was released for ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node")," ",(0,r.kt)("inlineCode",{parentName:"li"},"8.1"),", including query serialization fixes for backwards compatibility.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/77d820b6.ed642bc4.js b/assets/js/77d820b6.ed642bc4.js new file mode 100644 index 00000000000..2557b39ecc0 --- /dev/null +++ b/assets/js/77d820b6.ed642bc4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76413],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>f});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=a.createContext({}),s=function(e){var n=a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return a.createElement(c.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(t),m=r,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||i;return t?a.createElement(f,o(o({ref:n},d),{},{components:t})):a.createElement(f,o({ref:n},d))}));function f(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=t(87462),r=(t(67294),t(3905));const i={title:"Performance & tracing update",slug:"2023-05-03-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-05-03-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-03-performance-and-tracing.md",source:"@site/blog/2023-05-03-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.",date:"2023-05-03T00:00:00.000Z",formattedDate:"May 3, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.76,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-05-03-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-03-consensus"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-05-01-db-sync"}},c={authorsImageUrls:[void 0]},s=[{value:"Dataflow documentation",id:"dataflow-documentation",level:3},{value:"Remove redundant Plutus flake input",id:"remove-redundant-plutus-flake-input",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},p="wrapper";function u(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: The benchmarks and performance investigations for the new ",(0,r.kt)("inlineCode",{parentName:"li"},"8.0")," release branch are ongoing."),(0,r.kt)("li",{parentName:"ul"},"New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint."),(0,r.kt)("li",{parentName:"ul"},"Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on."),(0,r.kt)("li",{parentName:"ul"},"Infrastructure: The ",(0,r.kt)("inlineCode",{parentName:"li"},"plutus-apps")," flake input for ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node")," has finally been removed."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: A PR implementing placement of benchmarking clusters has been merged.")),(0,r.kt)("h1",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"The performance investigations on the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.0")," release branch have lead to pinpointing and addressing incosistent behaviour. For that,\nwe created yet another local reproduction with the workbench's ",(0,r.kt)("inlineCode",{parentName:"p"},"forge-stress")," benchmark. "),(0,r.kt)("p",null,"Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into ",(0,r.kt)("inlineCode",{parentName:"p"},"8.0")," and\nsubsequent releases. "),(0,r.kt)("p",null,"Additionally, we've refined the ",(0,r.kt)("inlineCode",{parentName:"p"},"trace-bench")," family of profiles that target benchmarking our own new tracing system. "),(0,r.kt)("h1",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally\nintended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant\nconversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system."),(0,r.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,r.kt)("h3",{id:"dataflow-documentation"},"Dataflow documentation"),(0,r.kt)("p",null,"The LogObject CLI ",(0,r.kt)("inlineCode",{parentName:"p"},"locli")," is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate\nfurther development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting. "),(0,r.kt)("h3",{id:"remove-redundant-plutus-flake-input"},"Remove redundant Plutus flake input"),(0,r.kt)("p",null,"This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input,\nwe simplify the dependency graph for ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),", as well as enable immediate feedback when developing Plutus benchmarks."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking.\nThis capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along\nwith various quality-of-life improvements, has been merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/77e9cceb.9b232c45.js b/assets/js/77e9cceb.9b232c45.js new file mode 100644 index 00000000000..3bf414183ec --- /dev/null +++ b/assets/js/77e9cceb.9b232c45.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54868],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>y});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),s=p(n),m=a,y=s["".concat(u,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(y,l(l({ref:t},c),{},{components:n})):r.createElement(y,l({ref:t},c))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-08-17-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-17-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-db-sync.md",source:"@site/blog/2023-08-17-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-08-17T00:00:00.000Z",formattedDate:"August 17, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.41,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-08-17-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-17-crypto"},nextItem:{title:"SECP bindings Security Issue Report",permalink:"/cardano-updates/2023-08-17-secp-issue"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],c={toc:p},s="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have integrated many new Conway feutures and allow db-sync to sync sanchonet.\nWe also continued testing and improving the new db-sync options."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Conway integration\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1484"},"#1484")),(0,a.kt)("li",{parentName:"ul"},"Support for Sanchonet\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1476"},"#1476")),(0,a.kt)("li",{parentName:"ul"},"Stake distribution is computed earlier\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1484"},"#1484")),(0,a.kt)("li",{parentName:"ul"},"Deposit ledger events are now used. This reduces the db queries and makes syncing faster\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1484"},"#1484")),(0,a.kt)("li",{parentName:"ul"},"Testing new db-sync options\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1466"},"#1466")),(0,a.kt)("li",{parentName:"ul"},"Added support for ghc-9.6\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1479"},"#1479")),(0,a.kt)("li",{parentName:"ul"},"Tech debt: improve exceptions\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1471"},"#1471"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/789f2cca.39f99462.js b/assets/js/789f2cca.39f99462.js new file mode 100644 index 00000000000..7f29e7e99af --- /dev/null +++ b/assets/js/789f2cca.39f99462.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43261],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=u(a),h=n,c=m["".concat(p,".").concat(h)]||m[h]||d[h]||l;return a?r.createElement(c,i(i({ref:t},s),{},{components:a})):r.createElement(c,i({ref:t},s))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=h;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[m]="string"==typeof e?e:n,i[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-08-18-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-08-18-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-ledger.md",source:"@site/blog/2023-08-18-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-08-18-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-18-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-18-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway progress",id:"conway-progress",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],s={toc:u},m="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(m,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The ledger team made great progress in advancing Conway era forward. In particular, voting\nfor DRep and Stake Pool Operators is now at the state that can be used by downstream\ncomponents. Addition of new ledger state queries makes it possible to verify changes to\nthe governance state, such as placement of votes, submission of governance proposals,\ninspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the\nability to enact all of the governance actions, except for the hard fork initiation."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-progress"},"Conway progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3577"},"pull-3577")," - Move ",(0,n.kt)("inlineCode",{parentName:"li"},"PParams")," to ",(0,n.kt)("inlineCode",{parentName:"li"},"GovState")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3609"},"pull-3609")," - Adjust thresholds for sanchonet"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3604"},"pull-3604")," - README: update CIP-1694 link"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3616"},"pull-3616")," - Switch ",(0,n.kt)("inlineCode",{parentName:"li"},"TreasuryWithdrawals")," to use ",(0,n.kt)("inlineCode",{parentName:"li"},"RewardAcnt")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3599"},"pull-3599")," - Add governance action well-formedness check"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3607"},"pull-3607")," - Rename governance to gov"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3601"},"pull-3601")," - Added ",(0,n.kt)("inlineCode",{parentName:"li"},"DRep")," anchors"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3615"},"pull-3615")," - Add optional previous ",(0,n.kt)("inlineCode",{parentName:"li"},"GovActionId")," in some ",(0,n.kt)("inlineCode",{parentName:"li"},"ProposalProcedures")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3596"},"pull-3596")," - Upgradeable families"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3625"},"pull-3625")," - Change constitution to use ",(0,n.kt)("inlineCode",{parentName:"li"},"Anchor")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3592"},"pull-3592")," - Added pulsing incremental computation of the DRep distribution"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3523"},"pull-3523")," - Treasury donations"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3633"},"pull-3633")," - Prevent state changes on phase2 failure"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3634"},"pull-3634")," - Disable serialization of protocolVersion param update"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3630"},"pull-3630")," - Implemented DRep refreshing"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3640"},"pull-3640")," - Remove crypto parameterization from ",(0,n.kt)("inlineCode",{parentName:"li"},"AnchorData")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3636"},"pull-3636"),' - Implement DRep ratification with an "always passing"; threshold'),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3648"},"pull-3648")," - Governance queries"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3650"},"pull-3650")," - Change environment for ",(0,n.kt)("inlineCode",{parentName:"li"},"ShelleyPOOLREAP")," rule"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3658"},"pull-3658")," - Set ",(0,n.kt)("inlineCode",{parentName:"li"},"DRep")," ratify threshold to 51%"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3628"},"pull-3628")," - ",(0,n.kt)("inlineCode",{parentName:"li"},"DELEG"),", ",(0,n.kt)("inlineCode",{parentName:"li"},"POOL"),", ",(0,n.kt)("inlineCode",{parentName:"li"},"GOVCERT")," conformance with Spec v0.8")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3619"},"pull-3619")," - Disabled a broken test")),(0,n.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3660"},"pull-3660")," - Fix bounds and versions"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3661"},"pull-3661")," - Adjust versions, bounds and CHANGELOGs to account for the latest release")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/78c763b8.c42d19d7.js b/assets/js/78c763b8.c42d19d7.js new file mode 100644 index 00000000000..23e6ec2adc9 --- /dev/null +++ b/assets/js/78c763b8.c42d19d7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96944],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),d=u(a),h=r,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||i;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=h;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[d]="string"==typeof t?t:r,l[1]=o;for(var u=2;u{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-10-24-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-10-24-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-24-node-cli-api.md",source:"@site/blog/2023-10-24-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-10-24T00:00:00.000Z",formattedDate:"October 24, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.68,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-10-24-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-25-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-20-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},d="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-10-11---2023-10-24"},"2023-10-11 - 2023-10-24"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CARDANO-CLI"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"stake-address-info")," now shows deposits balance."),(0,r.kt)("li",{parentName:"ul"},"Added ",(0,r.kt)("inlineCode",{parentName:"li"},"conway governance action view")," to allow to inspect governance action files before submitting them on a transaction."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"build-raw")," support for ",(0,r.kt)("inlineCode",{parentName:"li"},"--vote-file")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"--proposal-file"))),(0,r.kt)("p",null,"CARDANO-API"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Support DRep extended keys"),(0,r.kt)("li",{parentName:"ul"},"Support Plutus V1 in Conway")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/394"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.28.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/393"},"Simplify ",(0,r.kt)("inlineCode",{parentName:"a"},"toTxOutInAnyEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/390"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.27.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/389"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.26.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/380"},"Check that poll answer index is not negative, to avoid a Prelude.!! error")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/379"},"drep registration-certificate: add a golden test")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/378"},"Disambiguate treasury withdrawal flags")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/375"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"stake-address-info")," query also return deposit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/374"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"conway governance action view"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/372"},"Ch/clearer anchor flags")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/371"},"Command argument types for ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/370"},"Remove eras' constitution-hash")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/368"},"Shelley to Alonzo: add create-genesis-key-delegation-certificate to governance")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/367"},"Enable reading of Conway ",(0,r.kt)("inlineCode",{parentName:"a"},"TxWitness"),"es")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/366"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"governance action create-protocol-parameters-update")," Conway onwards only")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/365"},(0,r.kt)("inlineCode",{parentName:"a"},"transaction build-raw")," support for ",(0,r.kt)("inlineCode",{parentName:"a"},"--vote-file")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"--proposal-file"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/364"},"Command argument types for governance key commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/363"},"Add test of voting using a cc hot key"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/338"},"Add Show instance for FoldBlocksError")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/336"},"Upgrade typed-protocols to 1.1.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/332"},"Improved validity range handling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/331"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.28.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/330"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"AlonzoEraOnly"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/329"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyToAlonzoEraToShelleyToBabbageEra")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/327"},"DRep extended key: add CastVerificationKeyRole")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/326"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardadno-api-8.27.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/325"},"Delete unnecessary calls to ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraints"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/324"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardadno-api-8.27.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/323"},"Support Plutus V1 in Conway")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/322"},"Parameterize GovernanceAction on era ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/320"},"Support DRep extended keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/317"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.26.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/314"},"Haddock document the case functions, so that their behavior is easier to understand when calling them")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/313"},"Avoid ",(0,r.kt)("inlineCode",{parentName:"a"},"IsShelleyBasedEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"IsCardanoEra")," where possible")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/312"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"MaryEraOnly")," eon. Disjoint functions"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5515"},"Factor out file creation for SPO"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5504"},"Tracer documentation generation enhacements "))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/78d554ba.66ab6334.js b/assets/js/78d554ba.66ab6334.js new file mode 100644 index 00000000000..acf622b5f84 --- /dev/null +++ b/assets/js/78d554ba.66ab6334.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[61980],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),d=n,g=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return r?a.createElement(g,l(l({ref:t},s),{},{components:r})):a.createElement(g,l({ref:t},s))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-05-26-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-26-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-goedel.md",source:"@site/blog/2023-05-26-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.39,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-05-26-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-31-performance-and-tracing"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-26-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team has been working on final revisions for the\npre-proceedings versions of two ICE 2023 papers."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Porting Ouroboros Praos formalisation to new application layer.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Preparing pre-proceedings version of two ICE 2023 papers.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/78d8ce1d.84441dbe.js b/assets/js/78d8ce1d.84441dbe.js new file mode 100644 index 00000000000..7e2761ae7a8 --- /dev/null +++ b/assets/js/78d8ce1d.84441dbe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73320],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),d=a,h=u["".concat(l,".").concat(d)]||u[d]||m[d]||i;return n?r.createElement(h,o(o({ref:t},p),{},{components:n})):r.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const i={title:"DB Sync Team Update",slug:"2022-11-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2022-11-01-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-01-db-sync.md",source:"@site/blog/2022-11-01-db-sync.md",title:"DB Sync Team Update",description:"High level summary",date:"2022-11-01T00:00:00.000Z",formattedDate:"November 1, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.86,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB Sync Team Update",slug:"2022-11-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-11-02-system-test"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-28-hydra"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Schema simplifications",id:"schema-simplifications",level:3},{value:"Performance",id:"performance",level:3},{value:"Migrations and resyncing",id:"migrations-and-resyncing",level:3},{value:"Release",id:"release",level:3}],p={toc:c},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DBSync team is preparing a release which introduces schema simplifications, removes indexes,\nunique and foreign keys. It also provides a way to fix older values and migrates without the need to\nresync from genesis."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("h3",{id:"schema-simplifications"},"Schema simplifications"),(0,a.kt)("p",null,"Indexes, Unique and Foreign keys are removed in order to speedup syncing\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1295"},"#1295"),"\nThe same pr also introduces a different way to rollback, which doesn't rely on foreign keys and\nindexes."),(0,a.kt)("h3",{id:"performance"},"Performance"),(0,a.kt)("p",null,"The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A\nconservative number of these will be included in the next release and the rest can be found in\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/52/views/7"},"performance view"),"."),(0,a.kt)("h3",{id:"migrations-and-resyncing"},"Migrations and resyncing"),(0,a.kt)("p",null,"The next release will be 13.1.0, it will enable a migration without the need to resync. It will also\nintroduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1294"},"#1294")),(0,a.kt)("h3",{id:"release"},"Release"),(0,a.kt)("p",null,"The release has been mostly cherry-picked from master\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1294"},"#1294")," and its scope can be seen\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/52/views/6"},"release view")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/78df8d65.119ba796.js b/assets/js/78df8d65.119ba796.js new file mode 100644 index 00000000000..315113482ec --- /dev/null +++ b/assets/js/78df8d65.119ba796.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29537],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>d});var a=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(o),c=n,d=m["".concat(p,".").concat(c)]||m[c]||k[c]||r;return o?a.createElement(d,i(i({ref:t},u),{},{components:o})):a.createElement(d,i({ref:t},u))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,i=new Array(r);i[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>k,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=o(87462),n=(o(67294),o(3905));const r={title:"Network Team Update",slug:"2023-04-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-28-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-network.md",source:"@site/blog/2023-04-28-network.md",title:"Network Team Update",description:"High level summary",date:"2023-04-28T00:00:00.000Z",formattedDate:"April 28, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.21,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-04-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-28-goedel"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-27-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed log",id:"detailed-log",level:2},{value:"Ouroboros-Network",id:"ouroboros-network",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"Typed Protocols",id:"typed-protocols",level:3}],u={toc:s},m="wrapper";function k(e){let{components:t,...o}=e;return(0,n.kt)(m,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The networking team has released the following packages to ",(0,n.kt)("inlineCode",{parentName:"p"},"Hackage"),":"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/io-classes"},(0,n.kt)("inlineCode",{parentName:"a"},"io-classes")),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/io-classes-mtl"},(0,n.kt)("inlineCode",{parentName:"a"},"io-classes-mtl"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/io-sim"},(0,n.kt)("inlineCode",{parentName:"a"},"io-sim")),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/strict-stm"},(0,n.kt)("inlineCode",{parentName:"a"},"strict-stm")),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/strict-mvar"},(0,n.kt)("inlineCode",{parentName:"a"},"strict-mvar")))),(0,n.kt)("p",null,"We published an announcement ",(0,n.kt)("a",{parentName:"p",href:"https://engineering.iog.io/2023-04-14-io-sim-annoucement"},"blog post"),". We made progress\nalso on another blog post which will describes the design of the P2P networking\nlayer."),(0,n.kt)("p",null,"After moving ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," to its own repository, we made\n",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," compatible with ",(0,n.kt)("inlineCode",{parentName:"p"},"GHC")," ",(0,n.kt)("inlineCode",{parentName:"p"},"9.4")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"9.6"),"."),(0,n.kt)("p",null,"We made ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-client")," library independent of\n",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-diffusion"),"."),(0,n.kt)("p",null,"We prepared release of network packages for ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node-8.0"),"."),(0,n.kt)("h2",{id:"detailed-log"},"Detailed log"),(0,n.kt)("h3",{id:"ouroboros-network"},"Ouroboros-Network"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Compatibility with ",(0,n.kt)("inlineCode",{parentName:"li"},"io-classes-1.1.0.0"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4281"},"ouroboros-network#4281"),"."),(0,n.kt)("li",{parentName:"ul"},"Compatibility with ",(0,n.kt)("inlineCode",{parentName:"li"},"GHC")," ",(0,n.kt)("inlineCode",{parentName:"li"},"9.4")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"9.6"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4527"},"ouroboros-network#4527"),"."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cardano-client")," independent of ",(0,n.kt)("inlineCode",{parentName:"li"},"ouroboros-cosnensus-diffusion"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4526"},"ouroboros-network#4526"),"."),(0,n.kt)("li",{parentName:"ul"},"Release new versions of packages for ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node-8.0"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4532"},"ouroboros-network#4532"),"."),(0,n.kt)("li",{parentName:"ul"},"Galois Inc, has been making progress towards merging ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"ouroboros-network#4256"),".")),(0,n.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"io-classes-1.0.0.0"),", and following up releases: ",(0,n.kt)("inlineCode",{parentName:"li"},"1.0.0.1")," (",(0,n.kt)("inlineCode",{parentName:"li"},"ghc-9.6"),"\nsupport), ",(0,n.kt)("inlineCode",{parentName:"li"},"1.1.0.0")," (documentation fix)."),(0,n.kt)("li",{parentName:"ul"},"Fixed timeouts and delays in ",(0,n.kt)("inlineCode",{parentName:"li"},"io-sim")," in a series of PRs: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/81"},"io-sim#81"),",\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/82"},"io-sim#82"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/86"},"io-sim#86"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/87"},"io-sim#87"),"."),(0,n.kt)("li",{parentName:"ul"},"Renamed a module: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/88"},"io-sim#88"),"."),(0,n.kt)("li",{parentName:"ul"},"Fixed a failing ",(0,n.kt)("inlineCode",{parentName:"li"},"registerDelayCancellable")," test: ","[io-sim#80]","."),(0,n.kt)("li",{parentName:"ul"},"Use GitHub merge queue in ",(0,n.kt)("inlineCode",{parentName:"li"},"io-sim")," repository."),(0,n.kt)("li",{parentName:"ul"},"CI: download ",(0,n.kt)("inlineCode",{parentName:"li"},"stylish-haskell"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/83"},"io-sim#83"),".")),(0,n.kt)("h3",{id:"typed-protocols"},"Typed Protocols"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released ",(0,n.kt)("inlineCode",{parentName:"li"},"typed-protocols-0.1.0.4")," which support ",(0,n.kt)("inlineCode",{parentName:"li"},"io-classes-1.1.0.0"),":\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/227"},"typed-protocols#227"),"."),(0,n.kt)("li",{parentName:"ul"},"Use GitHub merge queue in ",(0,n.kt)("inlineCode",{parentName:"li"},"typed-protocols"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/30"},"typed-protocols#30"),"."),(0,n.kt)("li",{parentName:"ul"},"CI: download ",(0,n.kt)("inlineCode",{parentName:"li"},"stylish-haskell"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/29"},"typed-protocols#29"),".")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/79239208.68e37e23.js b/assets/js/79239208.68e37e23.js new file mode 100644 index 00000000000..d82d93c2510 --- /dev/null +++ b/assets/js/79239208.68e37e23.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35748],{61778:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/2","page":2,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra","nextPage":"/cardano-updates/tags/hydra/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/795480a5.e692d8ea.js b/assets/js/795480a5.e692d8ea.js new file mode 100644 index 00000000000..49536899100 --- /dev/null +++ b/assets/js/795480a5.e692d8ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78446],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=u(a),c=r,m=d["".concat(p,".").concat(c)]||d[c]||h[c]||l;return a?n.createElement(m,i(i({ref:t},s),{},{components:a})):n.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[d]="string"==typeof e?e:r,i[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-01-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-01-05-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-05-ledger.md",source:"@site/blog/2023-01-05-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-01-05T00:00:00.000Z",formattedDate:"January 5, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:4.44,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-01-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-06-crypto"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-28-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Finishing the deposit tracking",id:"finishing-the-deposit-tracking",level:3},{value:"New Conway era transaction",id:"new-conway-era-transaction",level:3},{value:"Optimizing the TICKF transition",id:"optimizing-the-tickf-transition",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Improved ledger event",id:"improved-ledger-event",level:4},{value:"Improved type saftey",id:"improved-type-saftey",level:4},{value:"Code/Module organization",id:"codemodule-organization",level:4},{value:"Revert pointer address deprecation",id:"revert-pointer-address-deprecation",level:4},{value:"Miscellaneous",id:"miscellaneous",level:4}],s={toc:u},d="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The ledger team finished up the remaining work for tracking individual depots,\nbuilt out the new Conway era transaction body (in line with CIP-1694),\ngreatly reduce some problematically large calculations on the epoch boundary,\nand addressed technical debt."),(0,r.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,r.kt)("h3",{id:"finishing-the-deposit-tracking"},"Finishing the deposit tracking"),(0,r.kt)("p",null,"The initial work on the individual deposit tracking project focused only on correctness.\nAs this is a large data structure\n(since its size is linear with respect to the number of registered stake credentials),\nit is very important that we also reduce the memory overhead as much as possible.\nFortunately, we were able to add very little overhead for the deposits by using existing\nefficient data structures. The extra tracking now only incurs one word (8 bytes)\nper registered stake credential."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3195"},"pull-3195")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3202"},"pull-3202")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3217"},"pull-3217"))),(0,r.kt)("h3",{id:"new-conway-era-transaction"},"New Conway era transaction"),(0,r.kt)("p",null,'We implemented the Conway era transaction body, which is in line with CIP-1694.\nNote that the Conway era implements, losing speaking, the parts of CIP-1694 that are not\nrelated to the liquid democracy (the "DReps").\nThe new transaction body adds the new governance actions and votes,\nwhile also deprecating the old governance structures\n(i.e. the old protocol parameter updates and MIR certificates).'),(0,r.kt)("p",null,"We also now have the wire specification (CDDL file) and serialization code in place.\nThe wire specification is still subject to change while we work on the Conway era,\nbut it is now usable and has proper testing support\n(so that, for example, the serialization round-trips, etc)."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3176"},"pull-3176")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3226"},"pull-3226"))),(0,r.kt)("h3",{id:"optimizing-the-tickf-transition"},"Optimizing the ",(0,r.kt)("inlineCode",{parentName:"h3"},"TICKF")," transition"),(0,r.kt)("p",null,"Every since the release of the Shelley era, we have been working to reduce the computational load\nplaced on the node by the ledger at the epoch boundary.\nWhile still not perfect, we believe that we have removed one of the final problematically long\nepoch boundary computations that exacerbate situations like\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4421"},"this"),".\nIn particular, the problem involved the way in which the consensus layer obtains a view of the\nledger for the purposes of checking the leadership schedule in a new epoch.\nWe implemented a stopgap measure which now only incurs a single multi-second cost once per epoch\ninstead of potentially several multi-second costs while the networks waits for the first block\nof a new epoch to be minted."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"An ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/blob/ea48d4815946c4f35239eb41815fe06cd6ffec2e/docs/adr/2022-12-12_007-optimize-ledger-view.md"},"ADR")," about the decision."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3209"},"pull-3209"))),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"We closed the year out with a lot of reduction to the technical debt!"),(0,r.kt)("h4",{id:"improved-ledger-event"},"Improved ledger event"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3212"},"pull-3212")," - The ledger events are not guaranteed to appear in any given order within a block.\nFor this reason, motivated by the use case in db-sync, the ",(0,r.kt)("inlineCode",{parentName:"li"},"TotalDeposits")," event now\nincludes a transaction ID and emits the ",(0,r.kt)("em",{parentName:"li"},"change")," in deposits instead of the value.")),(0,r.kt)("h4",{id:"improved-type-saftey"},"Improved type saftey"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3208"},"pull-3208")," - We replaced ",(0,r.kt)("inlineCode",{parentName:"li"},"NominalDiffTime")," with a newtype wrapper. The problem was that our CBOR\nencoders and decoders were using the wrong level of precision, having to due with with\nthe Shelley genesis file. We removed the potential problem with a newtype wrapper."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3167"},"pull-3167")," - We now use a GADT to ensure consistency of the Plutus language in the types\nfor ",(0,r.kt)("inlineCode",{parentName:"li"},"TransactionScriptFailure")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"PlutusDebug"),".")),(0,r.kt)("h4",{id:"codemodule-organization"},"Code/Module organization"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3175"},"pull-3175")," - The Allegra and Mary eras had an unusual relationship in our codebase,\ndue to the uncertainly of release dates while we were implementing them.\nIn particular, they were coupled in way that is different from the rest of the code base.\nWith hindsight on our side, we split the combined ",(0,r.kt)("inlineCode",{parentName:"li"},"shelley-ma")," Haskell package into two\nseparate ledger era packages, which is now consistent with the rest of the repository\nand module structure."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3184"},"pull-3184")," - We created a core test sub-library, cleaning up a lot of our property test\ngenerator code."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3210"},"pull-3210")," - We moved the ",(0,r.kt)("inlineCode",{parentName:"li"},"KeyPair")," type to the test library. Outside of testing,\nthe ledger does not need to deal with signing keys, and since this is a topic that\ndeserves the utmost care, it is best to make it clear that our use of signing keys\nis only for testing."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3229"},"pull-3229")," - We split the ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardano.Ledger.Alonzo.Data")," module, which is more consistent with the rest\nof the codebase.")),(0,r.kt)("h4",{id:"revert-pointer-address-deprecation"},"Revert pointer address deprecation"),(0,r.kt)("p",null,"Thanks to one of our excellent internal auditors,\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/jmhrpr"},"@jmhrpr"),",\nwe now have a better plan for deprecating pointer addresses.\nThis meant that we had to revert the previous work to deprecate them."),(0,r.kt)("p",null,"See:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3161"},"issue-3161")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3215"},"pull-3215"))),(0,r.kt)("h4",{id:"miscellaneous"},"Miscellaneous"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3205"},"pull-3205")," - We removed deprecated type synonyms."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3218"},"pull-3218")," - We cleaned up the address deserialization."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3223"},"pull-3223")," - We fixed faulty address deserialization tests."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3222"},"pull-3222")," - We switched to a general type family ",(0,r.kt)("inlineCode",{parentName:"li"},"TxOut")," from concrete ones,\nreducing many constraints."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3224"},"pull-3224")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"ShelleyGenesis")," is now parameterized by crypto instead of by era."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3170"},"pull-3170")," - We set the cabal-version to 3.0 in our projects."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3172"},"pull-3172")," - We removed the now useless ",(0,r.kt)("inlineCode",{parentName:"li"},"EncodeMint"),"/",(0,r.kt)("inlineCode",{parentName:"li"},"DecodeMint")," classes."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3225"},"pull-3225")," - We switch from ",(0,r.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/ormolu"},"ormolu")," to\n",(0,r.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/fourmolu"},"fourmolu"),".\nThe reason was to be able to finally have more diff friendly code!")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/79730245.14cda0d8.js b/assets/js/79730245.14cda0d8.js new file mode 100644 index 00000000000..913163249d2 --- /dev/null +++ b/assets/js/79730245.14cda0d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[61596],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=o,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(h,i(i({ref:t},c),{},{components:n})):r.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:o,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(87462),o=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-02-17-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-17-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-network.md",source:"@site/blog/2023-02-17-network.md",title:"Network Team Update",description:"High level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.865,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-02-17-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-17-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-10-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"Recently QA found a bug in P2P code, which results in busy loops. We added one\nfix to ",(0,o.kt)("inlineCode",{parentName:"p"},"1.35.6")," release, another one will likely be part of next release. The\nfirst one is already included in ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.3.0.1")," release. These\nbugs could only affect nodes which are out of sync and thus should not impose\nrisk on well maintained nodes on mainnet. We also advertise to deploy at most\none of the relays as a P2P node, which shields from possible consequences."),(0,o.kt)("p",null,"We recently finished design phase of eclipse evasion and we started\nimplementing it (see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?pane=issue&itemId=19819205"},"issue #3886")," for progress)."),(0,o.kt)("p",null,"Galois finished implementing Handshake extension which will allow to query\nnetwork protocol versions (see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"pr #4256"),")."),(0,o.kt)("p",null,"We also recently released a newer set of network packages to be integrated with\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," ",(0,o.kt)("inlineCode",{parentName:"p"},"master")," branch, this includes:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"* monoidal-synchronisation-0.1.0.2\n* cardano-client-0.1.0.2\n* network-mux-0.3.0.0\n* ouroboros-network-api-0.1.0.0\n* ouroboros-network-protocols-0.2.0.0\n* ouroboros-network-testing-0.2.0.1\n* ouroboros-network-mock-0.1.0.0\n* ouroboros-network-framework-0.3.0.0\n* ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included\n in `0.3.0.1`)\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/798d160f.fc29dc61.js b/assets/js/798d160f.fc29dc61.js new file mode 100644 index 00000000000..7b24ef590cb --- /dev/null +++ b/assets/js/798d160f.fc29dc61.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[82358],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),m=a,d=c["".concat(u,".").concat(m)]||c[m]||h[m]||o;return n?r.createElement(d,s(s({ref:t},p),{},{components:n})):r.createElement(d,s({ref:t},p))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-10-18-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-18-consensus.md",source:"@site/blog/2023-10-18-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-10-18T00:00:00.000Z",formattedDate:"October 18, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-20-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-18-mithril"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Support",id:"support",level:3}],p={toc:l},c="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node."),(0,a.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The Plutus workload benchmark for the in-memory backend ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/203#issuecomment-1768560330"},"showed no regressions")," for the metrics of interest, but it does show an increase in resource usage."),(0,a.kt)("li",{parentName:"ul"},"We got additional ad-hoc ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/5495#issuecomment-1768593069"},"measurements")," on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB."),(0,a.kt)("li",{parentName:"ul"},"We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.")),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We produced the first draft for a Survivable Eclipse Duration Model (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/422"},"422"),").")),(0,a.kt)("h3",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/amesgen"},"Esgen")," finished his cycle as release engineer. Node ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.5.0-pre"},"8.5.0")," has been released."),(0,a.kt)("li",{parentName:"ul"},"We resumed work on the subpar handling of block from the future (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4251"},"4251"),")."),(0,a.kt)("li",{parentName:"ul"},"We prepared the integration of ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5502"},"new tracing events")," for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4251"},"issue"),").")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/79d76848.47b0a3f4.js b/assets/js/79d76848.47b0a3f4.js new file mode 100644 index 00000000000..f1fcdde4897 --- /dev/null +++ b/assets/js/79d76848.47b0a3f4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75379],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(r),h=a,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||o;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=h;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:a,i[1]=p;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>p,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Open-Source Update",slug:"2023-01-13-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/quarterly/2023-01-13-open-source",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-13-open-source.md",source:"@site/quarterly/2023-01-13-open-source.md",title:"Open-Source Update",description:"Open Source Quarterly Update",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"open-source",permalink:"/cardano-updates/quarterly/tags/open-source"}],readingTime:2.215,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Open-Source Update",slug:"2023-01-13-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},prevItem:{title:"Network Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-13-network"},nextItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2022-11-15-consensus"}},l={authorsImageUrls:[void 0]},s=[{value:"Open Source Quarterly Update",id:"open-source-quarterly-update",level:2},{value:"2022-11 - 2023-01",id:"2022-11---2023-01",level:2},{value:"Summary",id:"summary",level:3},{value:"Detailed log",id:"detailed-log",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"open-source-quarterly-update"},"Open Source Quarterly Update"),(0,a.kt)("h2",{id:"2022-11---2023-01"},"2022-11 - 2023-01"),(0,a.kt)("h3",{id:"summary"},"Summary"),(0,a.kt)("p",null,"In the last quarter the open-source initiative delivered a comprehensive report\non the state of our repositories. As part of this work stream we\nidentified the key open-source repositories for the cardano project across all\nthe projects From a list of more than 500 repositories (some of which are\nforks) we identified key repositories which constitute the core of Cardano.\n20 of them were identified as to be transferred to the future MBO which will\ngovern Cardano development. Some where excluded (like ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim"},(0,a.kt)("inlineCode",{parentName:"a"},"io-sim"))," and\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols"},(0,a.kt)("inlineCode",{parentName:"a"},"typed-protocols")),"), to be govern by IOG, since they have a much broader\napplication than Cardano itself, and thus we think their open-source future\nwill be better outside of the Cardano umbrella."),(0,a.kt)("p",null,"Christian Taylor identified a number of ways we can improve our repositories to\nmake them more attractive for open-source contributions by analysing each of\nthem. This includes adding or improving various documentation files, like\n",(0,a.kt)("inlineCode",{parentName:"p"},"CONTRIBUTING")," files, adding code of conduct, improving readme files, issue\n& pull request templates etc. Christian also computed various interesting\nmetrics which gives a very good insight into the development practices: e.g.\naverage merge ratio, average number of reviews, comments and many more! The\npresentation is available ",(0,a.kt)("a",{parentName:"p",href:"https://docs.google.com/presentation/d/127IFEavlrZeeoFrVXFYWzSt0ugOkSL7isxjyM1vmMzQ"},"here"),"."),(0,a.kt)("p",null,"We followed with work on the ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},"Cardano Engineering Handbook"),". We included\na standard code of conduct which is now used by most important projects in the\nCardano space. We included ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),"'s security policy and added\na responsible disclosure policy. We also described how roles and\nresponsibilities should be clarified. This progress was made by\na collaborative effort of the Cardano Core, Plutus and Architecture teams, and\nit wouldn't be possible without Michael Peyton Jones, Arnaud Bailly, Kevin\nHammond, Jared Corduan and Marcin Szamotulski."),(0,a.kt)("p",null,"We also improved the documentation of key repositories, by adding description,\nimproving their ",(0,a.kt)("inlineCode",{parentName:"p"},"README")," file & ",(0,a.kt)("inlineCode",{parentName:"p"},"CONTRIBUTING")," files, adding code of conducts\nfollowing the ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},"Cardano Engineering Handbook"),". This includes improvements to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network"},(0,a.kt)("inlineCode",{parentName:"a"},"ouroboros-network"))," (both ",(0,a.kt)("inlineCode",{parentName:"li"},"network")," & ",(0,a.kt)("inlineCode",{parentName:"li"},"consensus"),")"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger"},(0,a.kt)("inlineCode",{parentName:"a"},"cardano-ledger"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node"},(0,a.kt)("inlineCode",{parentName:"a"},"cardano-node")))),(0,a.kt)("p",null,"And also"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim"},(0,a.kt)("inlineCode",{parentName:"a"},"io-sim"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols"},(0,a.kt)("inlineCode",{parentName:"a"},"typed-protocols"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-prelude"},(0,a.kt)("inlineCode",{parentName:"a"},"cardano-prelude"))," (work in progress)")),(0,a.kt)("p",null,"The work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan. "),(0,a.kt)("p",null,"In this quarter we also identified a number of projects which can be published to\n",(0,a.kt)("inlineCode",{parentName:"p"},"Hackage")," (Haskell's package repository) or ",(0,a.kt)("inlineCode",{parentName:"p"},"crate")," (Rust package repository).\nThe list contains 21 packages, 2 of which (",(0,a.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/hedgehog-extras"},(0,a.kt)("inlineCode",{parentName:"a"},"hedgehog-extras"))," and\n",(0,a.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/quickcheck-dynamic"},(0,a.kt)("inlineCode",{parentName:"a"},"quickcheck-dynamic")),") are already published on Hackage and another 5 (from\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim"},(0,a.kt)("inlineCode",{parentName:"a"},"io-sim"))," repository) are close to be published."),(0,a.kt)("h3",{id:"detailed-log"},"Detailed log"),(0,a.kt)("p",null,"The progress of the open-source project is tracked in ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/60/views/1"},"this project"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7a263bfa.1c805219.js b/assets/js/7a263bfa.1c805219.js new file mode 100644 index 00000000000..bc8973cb29b --- /dev/null +++ b/assets/js/7a263bfa.1c805219.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98450],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>d});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function s(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var l=r.createContext({}),p=function(e){var t=r.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):s(s({},t),e)),o},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(o),h=n,d=c["".concat(l,".").concat(h)]||c[h]||m[h]||a;return o?r.createElement(d,s(s({ref:t},u),{},{components:o})):r.createElement(d,s({ref:t},u))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,s=new Array(a);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:n,s[1]=i;for(var p=2;p{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var r=o(87462),n=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-10-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-10-27-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-network.md",source:"@site/blog/2023-10-27-network.md",title:"Network Team Update",description:"High-level overview of sprint 47",date:"2023-10-27T00:00:00.000Z",formattedDate:"October 27, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.765,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-10-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-27-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-27-sre"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level overview of sprint 47",id:"high-level-overview-of-sprint-47",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"CI / Tests",id:"ci--tests",level:3},{value:"KeepAlive client",id:"keepalive-client",level:3},{value:"Galois",id:"galois",level:3},{value:"Cardano Network Service Assurance (CNSA)",id:"cardano-network-service-assurance-cnsa",level:3},{value:"New CHaP Release",id:"new-chap-release",level:3},{value:"More details",id:"more-details",level:2},{value:"CI / Tests",id:"ci--tests-1",level:3},{value:"Release Process",id:"release-process",level:3}],u={toc:p},c="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,r.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-47"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+47%22"},"sprint 47")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We continued to review the process of bootstrap peers, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4555"},"ouroboros-network#4555")),(0,n.kt)("h3",{id:"ci--tests"},"CI / Tests"),(0,n.kt)("p",null,"We investigated our CI issues. We found a memory leak in ",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols"),"\nfunction used for testing codecs which triggered out of memory manager (OOM) on\nsome platforms (",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/43"},"typed-protocols#43"),"); we also found a bug in the connection manager which resulted in CI\n",(0,n.kt)("inlineCode",{parentName:"p"},"timeouts")," (see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4696/commits/010d9b2bd76356373d8c139eaedd8aea7ad90680"},"connection-manager-fix"),"). "),(0,n.kt)("h3",{id:"keepalive-client"},"KeepAlive client"),(0,n.kt)("p",null,"We found two small issues with the keep-alive client, which were addressed\nby Karl Knutsson (",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"Cardano Foundation"),"), ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4689"},"ouroboros-network#4689"),"."),(0,n.kt)("h3",{id:"galois"},"Galois"),(0,n.kt)("p",null,"We merged two large PRs prepared by ",(0,n.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois"),":"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4660"},"inspect ",(0,n.kt)("inlineCode",{parentName:"a"},"error")," call sites")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4663"},"implement micro benchmarks for ",(0,n.kt)("inlineCode",{parentName:"a"},"PeerMetrics")))),(0,n.kt)("h3",{id:"cardano-network-service-assurance-cnsa"},"Cardano Network Service Assurance (CNSA)"),(0,n.kt)("p",null,"Galois made the following progress on CNSA:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"a simple ","[InfuxDB]"," database backend has been added;"),(0,n.kt)("li",{parentName:"ul"},"the documentation has been updated;"),(0,n.kt)("li",{parentName:"ul"},"internal improvements to the code;"),(0,n.kt)("li",{parentName:"ul"},'progress on a new "CSNA analysis" that provides, for each sampler node, the\nblock download throughput in bytes over time.')),(0,n.kt)("h3",{id:"new-chap-release"},"New CHaP Release"),(0,n.kt)("p",null,"We cut a new release of ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-netowrk")," packages to ",(0,n.kt)("inlineCode",{parentName:"p"},"CHaP"),": ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/547"},"chap#547")),(0,n.kt)("h2",{id:"more-details"},"More details"),(0,n.kt)("h3",{id:"ci--tests-1"},"CI / Tests"),(0,n.kt)("p",null,"We improved the memory footprint of some of our tests by analysing a stream of\n",(0,n.kt)("inlineCode",{parentName:"p"},"IOSim")," traces without retaining them, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4696"},"ouroboros-network#4696")),(0,n.kt)("p",null,"As a safety measure, we introduced an upper bound for heap memory used by test\nartefacts in our ",(0,n.kt)("inlineCode",{parentName:"p"},"nix")," tests. We use ",(0,n.kt)("inlineCode",{parentName:"p"},"200MB")," limit for all tests except for\n",(0,n.kt)("inlineCode",{parentName:"p"},"network-mux")," tests which use ",(0,n.kt)("inlineCode",{parentName:"p"},"350MB")," limit, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4702"},"ouroboros-network#4702"),"."),(0,n.kt)("p",null,"We refactored one of our tests to use ephemeral ports thus allowing it to\nrun concurrently, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4702"},"ouroboros-network#4702"),"."),(0,n.kt)("p",null,"We merged ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4623"},"ouroboros-network#4623")," which fixes a bunch of test failures."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4694"},"inbound-governor: connection leak")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4607"},"connection-manager: assertion failure")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4605"},"not released connection"))),(0,n.kt)("p",null,"All of them were due to a bug in test logic rather than a bug in production\ncode."),(0,n.kt)("h3",{id:"release-process"},"Release Process"),(0,n.kt)("p",null,"We updated our release process & associated scripts, see\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4705"},"ouroboros-network#4705"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7a4b421f.f75b7a16.js b/assets/js/7a4b421f.f75b7a16.js new file mode 100644 index 00000000000..7c4bf74394c --- /dev/null +++ b/assets/js/7a4b421f.f75b7a16.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67452],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>h});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),c=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return r.createElement(s.Provider,{value:n},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(t),u=a,h=p["".concat(s,".").concat(u)]||p[u]||m[u]||i;return t?r.createElement(h,o(o({ref:n},d),{},{components:t})):r.createElement(h,o({ref:n},d))}));function h(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=u;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=t(87462),a=(t(67294),t(3905));const i={title:"Performance & tracing update",slug:"2023-04-19-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-04-19-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-19-performance-and-tracing.md",source:"@site/blog/2023-04-19-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.",date:"2023-04-19T00:00:00.000Z",formattedDate:"April 19, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.575,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-04-19-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-19-consensus"},nextItem:{title:"Incident Report",permalink:"/cardano-updates/2023-04-17-ledger"}},s={authorsImageUrls:[void 0]},c=[{value:"Detailed manifest",id:"detailed-manifest",level:3},{value:"GHC profiling inside workbench",id:"ghc-profiling-inside-workbench",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:c},p="wrapper";function m(e){let{components:n,...t}=e;return(0,a.kt)(p,(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We performed a series of benchmarks aimed at the new ",(0,a.kt)("inlineCode",{parentName:"li"},"8.0")," release branch and built a timeline from the ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35")," releases to that branch."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.")),(0,a.kt)("h1",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"We have performed various cluster runs targeting the ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0")," release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile ",(0,a.kt)("inlineCode",{parentName:"p"},"epoch-transition")," for local reproduction of what we observed on the benchmarking cluster. "),(0,a.kt)("p",null,"Furthermore, we bridged the gap between the run data from the ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.x")," releases to the the new ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0.x")," release branch. This included walking the\n",(0,a.kt)("inlineCode",{parentName:"p"},"master")," branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial\nin locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of\nbenchmarks."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still\nongoing. "),(0,a.kt)("p",null,"In coordination with Galois, who are developing a system assurance service by observing a number of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),"s, we're working with the implementation\nof data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational\nburden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," could be extended with a richer\nfeature set to that end."),(0,a.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,a.kt)("h3",{id:"detailed-manifest"},"Detailed manifest"),(0,a.kt)("p",null,"A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with.\nThese dependencies come from different package sources, have different versioning policies, and an identical package version might provide different\nperformance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated\nby making all component bumps visible and accessible."),(0,a.kt)("h3",{id:"ghc-profiling-inside-workbench"},"GHC profiling inside workbench"),(0,a.kt)("p",null,"The workbench has been equipped with a new ",(0,a.kt)("inlineCode",{parentName:"p"},"-profnix")," profile flavour. This enforces a ",(0,a.kt)("inlineCode",{parentName:"p"},"-fprof-auto")," build for all node-related packages. The type of\nprofiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already\nbeen merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances.\nThis results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7a6174e7.93ed69fb.js b/assets/js/7a6174e7.93ed69fb.js new file mode 100644 index 00000000000..39679187798 --- /dev/null +++ b/assets/js/7a6174e7.93ed69fb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[44377],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>c});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),m=n,c=h["".concat(s,".").concat(m)]||h[m]||d[m]||a;return r?i.createElement(c,o(o({ref:t},u),{},{components:r})):i.createElement(c,o({ref:t},u))}));function c(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-08-28-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-08-28-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-28-mithril.md",source:"@site/blog/2023-08-28-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-08-28T00:00:00.000Z",formattedDate:"August 28, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-08-28-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-29-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-25-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of ",(0,n.kt)("inlineCode",{parentName:"p"},"zstandard")," compression of the snapshot archive, and streaming its download and decompression in the client."),(0,n.kt)("p",null,"Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer. "),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Create explorer page with registered signers")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1097"},"#1097")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Simplify logs on the Signer/Aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1106"},"#1106")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Refactor (de)serialization of crypto entities")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/668"},"#668")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Mithril client last snapshot download")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1078"},"#1078")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Use the '/signers/registered' route to verify if a signer is registered")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1152"},"#1152")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Provide progress information with '--json' option in Client")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1095"},"#1095")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Use 'zstandard' compression for snapshot archives")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/876"},"#876")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Make client download and extract the archive simultaneously")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1115"},"#1115"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7a7e39bb.20054c14.js b/assets/js/7a7e39bb.20054c14.js new file mode 100644 index 00000000000..1e244447fdc --- /dev/null +++ b/assets/js/7a7e39bb.20054c14.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[61660],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>c});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),d=i,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return r?a.createElement(c,o(o({ref:t},u),{},{components:r})):a.createElement(c,o({ref:t},u))}));function c(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:i,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-05-17-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-17-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-mithril.md",source:"@site/blog/2023-05-17-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-05-17T00:00:00.000Z",formattedDate:"May 17, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.555,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-05-17-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-17-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-17-performance-and-tracing"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team released a new ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2318.0"},(0,i.kt)("inlineCode",{parentName:"a"},"2318.0"))," distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types."),(0,i.kt)("p",null,"Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node ",(0,i.kt)("inlineCode",{parentName:"p"},"8.0.0")," (along with the backward compatibility for previous ",(0,i.kt)("inlineCode",{parentName:"p"},"1.35.x")," versions)."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implements generic signing/verification of entity services ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the handling of multiple types of signed entity in the aggregator runtime ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/907"},"#907")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the signer runtime to use the signable builder service ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/854"},"#854")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the aggregator runtime to use the artifact builder service ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/869"},"#869")),(0,i.kt)("li",{parentName:"ul"},"Completed the appending of the next AVK to all protocol messages ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/888"},"#888")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/893"},"#893")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the explorer to handle new artifact routes of the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/927"},"#927")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements the computation of the stake distribution for ",(0,i.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/880"},"#880"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of the new stake distribution computation in the chain observer ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/919"},"#919")),(0,i.kt)("li",{parentName:"ul"},"Worked on upgrading the Cardano node to ",(0,i.kt)("inlineCode",{parentName:"li"},"8.0.0")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/920"},"#920"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7aaa65e3.2ad8effb.js b/assets/js/7aaa65e3.2ad8effb.js new file mode 100644 index 00000000000..5a4f20c0fb9 --- /dev/null +++ b/assets/js/7aaa65e3.2ad8effb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98882],{2632:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/network/page/4","page":4,"postsPerPage":5,"totalPages":5,"totalCount":24,"previousPage":"/cardano-updates/tags/network/page/3","nextPage":"/cardano-updates/tags/network/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/7b73b4cd.d7498fa0.js b/assets/js/7b73b4cd.d7498fa0.js new file mode 100644 index 00000000000..c6a70836a31 --- /dev/null +++ b/assets/js/7b73b4cd.d7498fa0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60881],{25184:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/19","page":19,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/18","nextPage":"/cardano-updates/page/20","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/7c359f4d.0c522b73.js b/assets/js/7c359f4d.0c522b73.js new file mode 100644 index 00000000000..941f1b81a48 --- /dev/null +++ b/assets/js/7c359f4d.0c522b73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[77696],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),p=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(i.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,i=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=p(r),c=a,y=u["".concat(i,".").concat(c)]||u[c]||d[c]||s;return r?n.createElement(y,o(o({ref:t},m),{},{components:r})):n.createElement(y,o({ref:t},m))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=c;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const s={title:"System Test Team Update",slug:"2023-01-13-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-13-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-system-test.md",source:"@site/blog/2023-01-13-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.91,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"System Test Team Update",slug:"2023-01-13-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2023-01-13-release"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-12-mithril"}},i={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"Node:",id:"node",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],m={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the ",(0,a.kt)("em",{parentName:"p"},"P2P Single\nRelay")," functionality."),(0,a.kt)("p",null,"We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"extended the ",(0,a.kt)("em",{parentName:"li"},"cardano-node-tests")," with the ability for anybody to fork the repo and ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/readme.html"},"run all our System Tests on GitHub Actions")),(0,a.kt)("li",{parentName:"ul"},"added 2 new nightly pipelines - nightly-mixed and nightly-p2p - ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/nightly_system_tests.html"},"details here")),(0,a.kt)("li",{parentName:"ul"},"some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;")),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"}," === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) ===\n to\n === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===")),(0,a.kt)("h3",{id:"node"},"Node:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled"),(0,a.kt)("li",{parentName:"ul"},"started the preparations for testing the next tag - ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.5_rc1/src_docs/source/test_results/node/tag_1_35_5_rc1.rst"},"details here"))),(0,a.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"some improvements on db-sync sync tests")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7c815b5e.a5522061.js b/assets/js/7c815b5e.a5522061.js new file mode 100644 index 00000000000..f1b9480262b --- /dev/null +++ b/assets/js/7c815b5e.a5522061.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59318],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(n),h=a,d=c["".concat(l,".").concat(h)]||c[h]||m[h]||o;return n?r.createElement(d,i(i({ref:t},p),{},{components:n})):r.createElement(d,i({ref:t},p))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:a,i[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-10-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-10-05-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-05-consensus.md",source:"@site/blog/2022-10-05-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2022-10-05T00:00:00.000Z",formattedDate:"October 5, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.825,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-10-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-10-14-ledger"},nextItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-10-04-db-sync"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Executive summary",id:"executive-summary",level:2},{value:"Additional information",id:"additional-information",level:2},{value:"Genesis",id:"genesis",level:3}],p={toc:u},c="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks, the consensus team worked on improving the\nperformance of the ChainSync jumping logic, which is needed for Genesis. We also\nrewrote the implementation of the mempool in the UTxO HD prototype which solved\nthe issues that prevented us from running system level benchmarks. Also on the\nUTxO HD front, we have an improved implementation of the sequence-of-differences\n(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for\nthe UTxO HD feature."),(0,a.kt)("h2",{id:"executive-summary"},"Executive summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With the latest implementation of ChainSync jumping we are closer to the\nbaseline performance. In particular, the prototype seems to benefit from the\nextra concurrency provided by additional capabilities."),(0,a.kt)("li",{parentName:"ul"},"We rewrote the implementation of the mempool in the UTxO HD prototype. This\nrewrite was required due to performance problems we observed when running the\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/blob/master/Makefile#L51"},"workbench"),".\nThese performance problems prevented us from running system level benchmarks.\nThe rewrite solved these issues. After the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4049"},"UTxO-HD: mempool\nrewrite")," PR is\nmerged, we will contact the Benchmarking team so that they run the system\nlevel benchmarks."),(0,a.kt)("li",{parentName:"ul"},"The implementation of sequences of differences based on anti-diffs was\nintegrated into the UTxO HD prototype. It is pending\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4036"},"review")," and\nwe also need to run replay and syncing benchmarks to confirm that this will\ndeliver a performance improvement, as observed in our micro-benchmarks."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3944"},"The UTxO HD prototype\ninspection"),"\nresulted in a ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4045"},"list of\ntests"),"\nneeded for consensus to consider the UTxO HD prototype as fully tested.")),(0,a.kt)("h2",{id:"additional-information"},"Additional information"),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"Benchmarking setup: 50MBit/s, 50ms latency"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Red: baseline"),(0,a.kt)("li",{parentName:"ul"},"Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.")),(0,a.kt)("p",null,"As ChainSync Jumping involves many concurrent network operations at every jump,\nwe tried to run the node with 6 instead of the default 2 capabilties."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Orange: baseline with 6 capabilities"),(0,a.kt)("li",{parentName:"ul"},"Blue: CSJ prototype with 6 capabilities")),(0,a.kt)("p",null,"This diagram shows the respective syncing progress, starting at Genesis and\ncontinuing a good part into Shelley (with the dashed line indicating the\nByron-to-Shelley transition)."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(36276).Z,width:"654",height:"459"})),(0,a.kt)("p",null,"Further work includes whether we can tune the prototype to better handle few\ncapabilities, or to adapt the default number of capabilities (potentially just\nwhile syncing)."))}m.isMDXComponent=!0},36276:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/happy-path-csj-prototype-bench-1-2c33ba45f44a086415e703fe8f0f7ad1.svg"}}]); \ No newline at end of file diff --git a/assets/js/7c895c96.960a5ba4.js b/assets/js/7c895c96.960a5ba4.js new file mode 100644 index 00000000000..f03c4f346fe --- /dev/null +++ b/assets/js/7c895c96.960a5ba4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83036],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=u(n),m=a,d=c["".concat(l,".").concat(m)]||c[m]||h[m]||s;return n?r.createElement(d,o(o({ref:t},p),{},{components:n})):r.createElement(d,o({ref:t},p))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=n.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:a,o[1]=i;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const s={title:"Consensus Team Update",slug:"2023-09-06-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-09-06-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-06-consensus.md",source:"@site/blog/2023-09-06-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-09-06T00:00:00.000Z",formattedDate:"September 6, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.22,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-09-06-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-07-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-01-goedel"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Tech debt",id:"tech-debt",level:2},{value:"Support",id:"support",level:2}],p={toc:u},c="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation.\nOn the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers.\nThe Consensus release engineer finished his rotation: version ",(0,a.kt)("inlineCode",{parentName:"p"},"8.3.0-pre")," of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," is releasing 2023 September 5."),(0,a.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We ran the first successful system-level benchmarks for UTxO-HD (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/203"},"#203"),") using the ",(0,a.kt)("em",{parentName:"li"},"in-memory")," backend.",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot."),(0,a.kt)("li",{parentName:"ul"},"After the mempool regression is fixed the benchmarks need to be ran again."),(0,a.kt)("li",{parentName:"ul"},"System-level UTxO-HD benchmarks with the LMDB are still pending."))),(0,a.kt)("li",{parentName:"ul"},"UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"#344"),")."),(0,a.kt)("li",{parentName:"ul"},"We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in ",(0,a.kt)("inlineCode",{parentName:"li"},"GetUTxOByAddress")," (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/205#issuecomment-1706878418"},"this comment"),"). Preliminary results are promising."),(0,a.kt)("li",{parentName:"ul"},"Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"#344"),"), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.")),(0,a.kt)("h2",{id:"tech-debt"},"Tech debt"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We added tests that Consensus emits valid CBOR (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3099"},"#3099"),"). This helped us detect a couple of serialization bugs. The tests still need to be merged into the ",(0,a.kt)("inlineCode",{parentName:"li"},"main")," branch (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/323"},"#323"),").")),(0,a.kt)("h2",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Nick Frisby")," finished his release engineer rotation; ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node 8.3.0-pre")," is releasing 2023 September 5."),(0,a.kt)("li",{parentName:"ul"},"We helped to investigate a protocol version bug in Sanchonet (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3491"},"#3491"),")."),(0,a.kt)("li",{parentName:"ul"},"We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/91"},"#91"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7d4ab4f9.0ec0db41.js b/assets/js/7d4ab4f9.0ec0db41.js new file mode 100644 index 00000000000..c31150a96ce --- /dev/null +++ b/assets/js/7d4ab4f9.0ec0db41.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54007],{90958:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/9","page":9,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/8","nextPage":"/cardano-updates/page/10","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/7d6aa09c.fba7f48c.js b/assets/js/7d6aa09c.fba7f48c.js new file mode 100644 index 00000000000..1ced72a1491 --- /dev/null +++ b/assets/js/7d6aa09c.fba7f48c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18058],{18069:a=>{a.exports=JSON.parse('{"label":"goedel","permalink":"/cardano-updates/tags/goedel","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/7de7ce98.caa95da2.js b/assets/js/7de7ce98.caa95da2.js new file mode 100644 index 00000000000..a424bcc06cf --- /dev/null +++ b/assets/js/7de7ce98.caa95da2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[9828],{3905:(e,n,t)=>{t.d(n,{Zo:()=>m,kt:()=>h});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),c=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=c(e.components);return a.createElement(s.Provider,{value:n},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=c(t),d=r,h=u["".concat(s,".").concat(d)]||u[d]||p[d]||i;return t?a.createElement(h,o(o({ref:n},m),{},{components:t})):a.createElement(h,o({ref:n},m))}));function h(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=d;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=t(87462),r=(t(67294),t(3905));const i={title:"Performance & Tracing Q3 2023 Update",slug:"2023-Q3-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/quarterly/2023-Q3-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q3-performance-and-tracing.md",source:"@site/quarterly/2023-Q3-performance-and-tracing.md",title:"Performance & Tracing Q3 2023 Update",description:"2023-07 - 2023-09",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/quarterly/tags/performance-tracing"}],readingTime:3.27,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & Tracing Q3 2023 Update",slug:"2023-Q3-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"SRE Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-sre"},nextItem:{title:"SRE Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-sre"}},s={authorsImageUrls:[void 0]},c=[{value:"2023-07 - 2023-09",id:"2023-07---2023-09",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Release benchmarking",id:"release-benchmarking",level:4},{value:"UTxO-HD benchmarks",id:"utxo-hd-benchmarks",level:4},{value:"P2P benchmarks",id:"p2p-benchmarks",level:4},{value:"New nomad cluster",id:"new-nomad-cluster",level:4},{value:"New tracing system",id:"new-tracing-system",level:4},{value:"GHC9 performance",id:"ghc9-performance",level:4},{value:"Consensus QTAs",id:"consensus-qtas",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"Benchmarking:",id:"benchmarking",level:4},{value:"Performance",id:"performance",level:4},{value:"New tracing system",id:"new-tracing-system-1",level:4},{value:"UTxO-HD monitoring",id:"utxo-hd-monitoring",level:4},{value:"Nomad backend",id:"nomad-backend",level:4},{value:"Workbench",id:"workbench",level:4},{value:"Consensus component QTAs (co-development)",id:"consensus-component-qtas-co-development",level:4}],m={toc:c},u="wrapper";function p(e){let{components:n,...t}=e;return(0,r.kt)(u,(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-07---2023-09"},"2023-07 - 2023-09"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Release benchmarking"),(0,r.kt)("li",{parentName:"ul"},"Developing and running UTxO-HD benchmarks - in-memory flavour"),(0,r.kt)("li",{parentName:"ul"},"P2P benchmarks, facilitating rollout"),(0,r.kt)("li",{parentName:"ul"},"Production-readiness of the new Nomad cluster has been reached"),(0,r.kt)("li",{parentName:"ul"},"Optimization of and introspection capability for the new tracing system"),(0,r.kt)("li",{parentName:"ul"},"GHC9 performance investigation (and possible remedy)"),(0,r.kt)("li",{parentName:"ul"},"Conensus QTAs: first real-world application of prototype")),(0,r.kt)("h4",{id:"release-benchmarking"},"Release benchmarking"),(0,r.kt)("p",null,"Ongoing release benchmarking is a crucial safeguard to ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),"'s release cycle from a performance perspective. We've performed and analyzed benchmarks for node versions ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.x")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"8.5")," throughout Q3."),(0,r.kt)("h4",{id:"utxo-hd-benchmarks"},"UTxO-HD benchmarks"),(0,r.kt)("p",null,"Targeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery."),(0,r.kt)("h4",{id:"p2p-benchmarks"},"P2P benchmarks"),(0,r.kt)("p",null,"In Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature."),(0,r.kt)("h4",{id:"new-nomad-cluster"},"New nomad cluster"),(0,r.kt)("p",null,"The new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received\nvarious rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest\nof our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it\nready for production use."),(0,r.kt)("h4",{id:"new-tracing-system"},"New tracing system"),(0,r.kt)("p",null,"Our new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that\nit is roughly on par with the legacy system while offering a richer feature set and greater flexibility. "),(0,r.kt)("p",null,"Additionally, in Q3 we equipped the system with an introspection capability. This is now used for generating\nend user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system."),(0,r.kt)("h4",{id:"ghc9-performance"},"GHC9 performance"),(0,r.kt)("p",null,"In Q3, a joint investigation with DevX into GHC9's behaviour revealed where and how GHC9 misses opportunities for\noptimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable\nthose optimizations - which is still being validated."),(0,r.kt)("h4",{id:"consensus-qtas"},"Consensus QTAs"),(0,r.kt)("p",null,"In collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations'\nperformance characteristics. It's now applicable, and being applied, to a real-world task - namely\ngathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds."),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"benchmarking"},"Benchmarking:"),(0,r.kt)("p",null,"In Q4, the focus will be on:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"facilitating the next mainnet release"),(0,r.kt)("li",{parentName:"ul"},"benchmarking runs in the Conway era"),(0,r.kt)("li",{parentName:"ul"},"developing benchmarks / workloads for Conway-exclusive actions"),(0,r.kt)("li",{parentName:"ul"},"implementing a specialized benchmark setup for the UTxO-HD on-disk variant"),(0,r.kt)("li",{parentName:"ul"},"developing new Plutus benchmarks to safeguard Plutus V3"),(0,r.kt)("li",{parentName:"ul"},"benchmarks regarding the rollout of P2P")),(0,r.kt)("h4",{id:"performance"},"Performance"),(0,r.kt)("p",null,"For certain blocking performance issues we've located the cause, or even found a solution in a cross-team effort. In Q4 we'll advance that work to ensure the ongoing\nrelease cycle for mainnet, as well as make GHC9 become a viable release platform."),(0,r.kt)("h4",{id:"new-tracing-system-1"},"New tracing system"),(0,r.kt)("p",null,"For the new tracing system, we'll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support."),(0,r.kt)("h4",{id:"utxo-hd-monitoring"},"UTxO-HD monitoring"),(0,r.kt)("p",null,"We'll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way."),(0,r.kt)("h4",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"From Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad."),(0,r.kt)("h4",{id:"workbench"},"Workbench"),(0,r.kt)("p",null,"We will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),"."),(0,r.kt)("h4",{id:"consensus-component-qtas-co-development"},"Consensus component QTAs (co-development)"),(0,r.kt)("p",null,"In Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7de83161.6e30b750.js b/assets/js/7de83161.6e30b750.js new file mode 100644 index 00000000000..53b83300804 --- /dev/null +++ b/assets/js/7de83161.6e30b750.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7968],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),h=a,m=p["".concat(l,".").concat(h)]||p[h]||d[h]||o;return n?r.createElement(m,s(s({ref:t},u),{},{components:n})):r.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-11-15-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-15-consensus.md",source:"@site/blog/2023-11-15-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-11-15T00:00:00.000Z",formattedDate:"November 15, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.34,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-11-16-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-15-mithril"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"Over the last two weeks, we managed to run a UTxO-HD capable node in ",(0,a.kt)("em",{parentName:"p"},"legacy mode"),", which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does).\nThis ",(0,a.kt)("em",{parentName:"p"},"legacy mode")," could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not.\nHowever, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter.\nOn the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node.\nTherefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend."),(0,a.kt)("p",null,"On the Genesis front, we reviewed the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/434"},"peer simulator")," for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team."),(0,a.kt)("p",null,"We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos."),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/jasagredo"},"Javier Sagredo")," continues his cycle as release engineer, and he is working on version 8.7 of Cardano node."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7e644b1f.ef2c8f6f.js b/assets/js/7e644b1f.ef2c8f6f.js new file mode 100644 index 00000000000..8a5d94f0962 --- /dev/null +++ b/assets/js/7e644b1f.ef2c8f6f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60375],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},h=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||d[c]||o;return a?r.createElement(m,l(l({ref:t},h),{},{components:a})):r.createElement(m,l({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=c;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-04-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-04-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-hydra.md",source:"@site/blog/2023-08-04-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.06,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-04-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-04-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-04-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team achieved notable progress in various aspects of the\nproject. The team updated the use case section for auctions on the ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/unstable/use-cases/"},"/unstable"),"\nbranch of the website, improving the understanding of Hydra","\u2019","s applicability."),(0,n.kt)("p",null,"From the development side, the team successfully completed event-sourced\npersistence, a key enhancement in the project","\u2019","s architecture which improves\noff-chain transaction processing performance. They also added a\n","\u201c","submit-transaction","\u201d"," endpoint to the API."),(0,n.kt)("p",null,"In addition to project-related progress, the team actively engaged in community\nreviews for several catalyst proposals related to Hydra and Mithril,\ncontributing to the wider Cardano ecosystem."),(0,n.kt)("p",null,"Finally, the full report for the month of July was also published ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2023-07"},"here"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published the ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-07"},"monthly report for July")),(0,n.kt)("li",{parentName:"ul"},"Updated the use case section for auctions (published on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/use-cases/"},"/unstable")," branch)"),(0,n.kt)("li",{parentName:"ul"},"Completed event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/913"},"#913")),(0,n.kt)("li",{parentName:"ul"},"Added a ","\u201c","submit-transaction","\u201d"," endpoint to the API ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/966"},"#966")),(0,n.kt)("li",{parentName:"ul"},"Community reviews for several catalyst proposals related to Hydra and Mithril"),(0,n.kt)("li",{parentName:"ul"},"Created a network testing tool (hydra-net) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1006"},"#1006"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update hydra-node to work with cardano-node version 8.x"),(0,n.kt)("li",{parentName:"ul"},"Remove the internal commit functionality"),(0,n.kt)("li",{parentName:"ul"},"Release version 0.12.0"),(0,n.kt)("li",{parentName:"ul"},"Update & streamline tutorial to work with latest version of hydra-node")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7e87972d.24662f86.js b/assets/js/7e87972d.24662f86.js new file mode 100644 index 00000000000..d37cd307787 --- /dev/null +++ b/assets/js/7e87972d.24662f86.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2432],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(r),d=a,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||o;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2022-11-30-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-30-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-performance-and-tracing.md",source:"@site/blog/2022-11-30-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2022-11-30T00:00:00.000Z",formattedDate:"November 30, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.95,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2022-11-30-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-30-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-28-network"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},u="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release."),(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them.\nThe idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time."),(0,a.kt)("p",null,"To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation."),(0,a.kt)("p",null,"In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model."),(0,a.kt)("p",null,"The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged.\nWe are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration."),(0,a.kt)("p",null,"We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability."),(0,a.kt)("p",null,"We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP."),(0,a.kt)("p",null,"As usual, a number of smaller workbench, data analysis & reporting improvements have been made."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7e8e081f.455c9b12.js b/assets/js/7e8e081f.455c9b12.js new file mode 100644 index 00000000000..e2ad2fa5bdc --- /dev/null +++ b/assets/js/7e8e081f.455c9b12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49238],{37418:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/network/page/5","page":5,"postsPerPage":5,"totalPages":5,"totalCount":24,"previousPage":"/cardano-updates/tags/network/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/7fa9de70.cff3c34e.js b/assets/js/7fa9de70.cff3c34e.js new file mode 100644 index 00000000000..5912e2cc76e --- /dev/null +++ b/assets/js/7fa9de70.cff3c34e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[38938],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(s,".").concat(c)]||d[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-11-17-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-17-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-17-hydra.md",source:"@site/blog/2023-11-17-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-11-17T00:00:00.000Z",formattedDate:"November 17, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.135,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-11-17-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Initial CIP 1694 Security Analysis and Responses",permalink:"/cardano-updates/2023-11-20-cip1694"},nextItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-11-17-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team made several impactful updates. They addressed\nmisleading errors regarding collect com transactions, resolved a security\nadvisory (CVE-2023-42806), and simplified the Hydra Head protocol by using\ninline datums. The team also tackled minor inconsistencies in specifications and\nimplementation, documented reasons for potentially dropped close transactions by\nthe cardano-node, and collaborated with SundaeLabs on an offline mode for\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node"),". Additionally, they engaged in discussions with researchers about\nincremental de-/commits."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Removed misleading errors about collect com transactions ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/839"},"#839")),(0,n.kt)("li",{parentName:"ul"},"Addressed security advisory ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq"},"CVE-2023-42806")," in PR ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1161"},"#1161")),(0,n.kt)("li",{parentName:"ul"},"Changed the head protocol to use inline datums, simplifying things in the hydra-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1162"},"#1162")),(0,n.kt)("li",{parentName:"ul"},"Addressed minor inconsistencies in spec and implementation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1104"},"#1104")),(0,n.kt)("li",{parentName:"ul"},"Documented why close transacations might be dropped by the cardano-node (can","\u2019","t fix) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1039"},"#1039")),(0,n.kt)("li",{parentName:"ul"},"Tidy up a few things here and there"),(0,n.kt)("li",{parentName:"ul"},"Worked with SundaeLabs on the offline mode for ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")),(0,n.kt)("li",{parentName:"ul"},"Discussed incremental de-/commits with researchers")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Start work on incremental decommits protocol specification ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1057"},"#1057")),(0,n.kt)("li",{parentName:"ul"},"Provide support to Hypix"),(0,n.kt)("li",{parentName:"ul"},"Address all ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/labels/bug%20%3Abug%3A"},"open bugs")),(0,n.kt)("li",{parentName:"ul"},"Release version 0.14.0 with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/milestone/14?closed=1"},"this scope")),(0,n.kt)("li",{parentName:"ul"},"Update dependencies to prepare for Conway ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1114"},"#1114")),(0,n.kt)("li",{parentName:"ul"},"Shepherd off-line mode PR over the finish line"),(0,n.kt)("li",{parentName:"ul"},"Complete tidying up chain layer via stateless observation changes in hydra-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1096"},"#1096"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7faccef9.aac12434.js b/assets/js/7faccef9.aac12434.js new file mode 100644 index 00000000000..df5bb73c736 --- /dev/null +++ b/assets/js/7faccef9.aac12434.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75064],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=s(r),d=a,f=m["".concat(l,".").concat(d)]||m[d]||u[d]||o;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & Tracing Team Update",slug:"2022-10-28-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2022-10-28-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-performance-and-tracing.md",source:"@site/blog/2022-10-28-performance-and-tracing.md",title:"Performance & Tracing Team Update",description:"High level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.155,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & Tracing Team Update",slug:"2022-10-28-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-10-28-network"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2022-08-12-sre"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Executive summary",id:"executive-summary",level:2}],p={toc:s},m="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline."),(0,a.kt)("p",null,"On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario."),(0,a.kt)("h2",{id:"executive-summary"},"Executive summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale."),(0,a.kt)("li",{parentName:"ul"},"The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment."),(0,a.kt)("li",{parentName:"ul"},"The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7ff27d5d.5960fd00.js b/assets/js/7ff27d5d.5960fd00.js new file mode 100644 index 00000000000..014f0d89a1b --- /dev/null +++ b/assets/js/7ff27d5d.5960fd00.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16091],{97270:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/cli-api/page/5","page":5,"postsPerPage":5,"totalPages":6,"totalCount":27,"previousPage":"/cardano-updates/tags/cli-api/page/4","nextPage":"/cardano-updates/tags/cli-api/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/7ff38eb4.f5ac8427.js b/assets/js/7ff38eb4.f5ac8427.js new file mode 100644 index 00000000000..21af8ddb4a1 --- /dev/null +++ b/assets/js/7ff38eb4.f5ac8427.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[19105],{25873:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/43","page":43,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/42","nextPage":"/cardano-updates/page/44","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/80057f85.edc1c235.js b/assets/js/80057f85.edc1c235.js new file mode 100644 index 00000000000..c31e61eb641 --- /dev/null +++ b/assets/js/80057f85.edc1c235.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83377],{13147:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/tags/network","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/80210.245c42c2.js b/assets/js/80210.245c42c2.js new file mode 100644 index 00000000000..c80f812826f --- /dev/null +++ b/assets/js/80210.245c42c2.js @@ -0,0 +1 @@ +(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80210],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>u,kt:()=>f});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),i=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=i(e.components);return o.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},p=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=i(n),p=r,f=m["".concat(s,".").concat(p)]||m[p]||d[p]||a;return n?o.createElement(f,c(c({ref:t},u),{},{components:n})):o.createElement(f,c({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,c=new Array(a);c[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:r,c[1]=l;for(var i=2;i{"use strict";n.d(t,{Z:()=>i});var o=n(87462),r=n(67294),a=n(86010),c=n(95999),l=n(86668);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function i(e){let{as:t,id:n,...i}=e;const{navbar:{hideOnScroll:u}}=(0,l.L)();return"h1"!==t&&n?r.createElement(t,(0,o.Z)({},i,{className:(0,a.Z)("anchor",u?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar),id:n}),i.children,r.createElement("a",{className:"hash-link",href:`#${n}`,title:(0,c.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):r.createElement(t,(0,o.Z)({},i,{id:void 0}))}},80210:(e,t,n)=>{"use strict";n.d(t,{Z:()=>pe});var o=n(67294),r=n(3905),a=n(87462),c=n(35742);var l=n(72389),s=n(86010),i=n(92949),u=n(86668);function m(){const{prism:e}=(0,u.L)(),{colorMode:t}=(0,i.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}var d=n(35281),p=n(87594),f=n.n(p);const h=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,y={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function b(e,t){const n=e.map((e=>{const{start:n,end:o}=y[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${o})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function v(e,t){let n=e.replace(/\n$/,"");const{language:o,magicComments:r,metastring:a}=t;if(a&&g.test(a)){const e=a.match(g).groups.range;if(0===r.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=r[0].className,o=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(o),code:n}}if(void 0===o)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return b(["js","jsBlock"],t);case"jsx":case"tsx":return b(["js","jsBlock","jsx"],t);case"html":return b(["js","jsBlock","html"],t);case"python":case"py":case"bash":return b(["bash"],t);case"markdown":case"md":return b(["html","jsx","bash"],t);default:return b(Object.keys(y),t)}}(o,r),l=n.split("\n"),s=Object.fromEntries(r.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(r.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<l.length;){const e=l[p].match(c);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));i[t]?s[i[t]].range+=`${p},`:u[t]?s[u[t]].start=p:m[t]&&(s[m[t]].range+=`${s[m[t]].start}-${p-1},`),l.splice(p,1)}n=l.join("\n");const d={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{d[e]??=[],d[e].push(t)}))})),{lineClassNames:d,code:n}}const E={codeBlockContainer:"codeBlockContainer_Ckt0"};function k(e){let{as:t,...n}=e;const r=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[o,r]=e;const a=t[o];a&&"string"==typeof r&&(n[a]=r)})),n}(m());return o.createElement(t,(0,a.Z)({},n,{style:r,className:(0,s.Z)(n.className,E.codeBlockContainer,d.k.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return o.createElement(k,{as:"pre",tabIndex:0,className:(0,s.Z)(N.codeBlockStandalone,"thin-scrollbar",n)},o.createElement("code",{className:N.codeBlockLines},t))}var w=n(902);const B={attributes:!0,characterData:!0,childList:!0,subtree:!0};function T(e,t){const[n,r]=(0,o.useState)(),a=(0,o.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,o.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=B);const r=(0,w.zX)(t),a=(0,w.Ql)(n);(0,o.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const L={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var j={Prism:n(87410).Z,theme:L};function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(){return Z=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Z.apply(this,arguments)}var x=/\r\n|\r|\n/,S=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},_=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function P(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(n[o]=e[o]);return n}var z=function(e){function t(){for(var t=this,n=[],o=arguments.length;o--;)n[o]=arguments[o];e.apply(this,n),O(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,o=Object.create(null),r=e.styles.reduce((function(e,n){var o=n.languages,r=n.style;return o&&!o.includes(t)||n.types.forEach((function(t){var n=Z({},e[t],r);e[t]=n})),e}),o);return r.root=n,r.plain=Z({},n,{backgroundColor:null}),r}(e.theme,e.language):void 0;return t.themeDict=n})),O(this,"getLineProps",(function(e){var n=e.key,o=e.className,r=e.style,a=Z({},P(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(a.style=c.plain),void 0!==r&&(a.style=void 0!==a.style?Z({},a.style,r):r),void 0!==n&&(a.key=n),o&&(a.className+=" "+o),a})),O(this,"getStyleForToken",(function(e){var n=e.types,o=e.empty,r=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===r&&"plain"===n[0])return o?{display:"inline-block"}:void 0;if(1===r&&!o)return a[n[0]];var c=o?{display:"inline-block"}:{},l=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[c].concat(l))}})),O(this,"getTokenProps",(function(e){var n=e.key,o=e.className,r=e.style,a=e.token,c=Z({},P(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==r&&(c.style=void 0!==c.style?Z({},c.style,r):r),void 0!==n&&(c.key=n),o&&(c.className+=" "+o),c})),O(this,"tokenize",(function(e,t,n,o){var r={code:t,grammar:n,language:o,tokens:[]};e.hooks.run("before-tokenize",r);var a=r.tokens=e.tokenize(r.code,r.grammar,r.language);return e.hooks.run("after-tokenize",r),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,o=e.code,r=e.children,a=this.getThemeDict(this.props),c=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],o=[0],r=[e.length],a=0,c=0,l=[],s=[l];c>-1;){for(;(a=o[c]++)<r[c];){var i=void 0,u=t[c],m=n[c][a];if("string"==typeof m?(u=c>0?u:["plain"],i=m):(u=_(u,m.type),m.alias&&(u=_(u,m.alias)),i=m.content),"string"==typeof i){var d=i.split(x),p=d.length;l.push({types:u,content:d[0]});for(var f=1;f<p;f++)S(l),s.push(l=[]),l.push({types:u,content:d[f]})}else c++,t.push(u),n.push(i),o.push(0),r.push(i.length)}c--,t.pop(),n.pop(),o.pop(),r.pop()}return S(l),s}(void 0!==c?this.tokenize(t,o,c,n):[o]),className:"prism-code language-"+n,style:void 0!==a?a.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(o.Component);const A=z,I={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function M(e){let{line:t,classNames:n,showLineNumbers:r,getLineProps:c,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const i=c({line:t,className:(0,s.Z)(n,r&&I.codeLine)}),u=t.map(((e,t)=>o.createElement("span",(0,a.Z)({key:t},l({token:e,key:t})))));return o.createElement("span",i,r?o.createElement(o.Fragment,null,o.createElement("span",{className:I.codeLineNumber}),o.createElement("span",{className:I.codeLineContent},u)):u,o.createElement("br",null))}var D=n(95999);const H={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function W(e){let{code:t,className:n}=e;const[r,a]=(0,o.useState)(!1),c=(0,o.useRef)(void 0),l=(0,o.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const o=document.createElement("textarea"),r=document.activeElement;o.value=e,o.setAttribute("readonly",""),o.style.contain="strict",o.style.position="absolute",o.style.left="-9999px",o.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(o),o.select(),o.selectionStart=0,o.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}o.remove(),c&&(a.removeAllRanges(),a.addRange(c)),r&&r.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,o.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),o.createElement("button",{type:"button","aria-label":r?(0,D.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,D.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,D.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,s.Z)("clean-btn",n,H.copyButton,r&&H.copyButtonCopied),onClick:l},o.createElement("span",{className:H.copyButtonIcons,"aria-hidden":"true"},o.createElement("svg",{className:H.copyButtonIcon,viewBox:"0 0 24 24"},o.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})),o.createElement("svg",{className:H.copyButtonSuccessIcon,viewBox:"0 0 24 24"},o.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const V={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function R(e){let{className:t,onClick:n,isEnabled:r}=e;const a=(0,D.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return o.createElement("button",{type:"button",onClick:n,className:(0,s.Z)("clean-btn",t,r&&V.wordWrapButtonEnabled),"aria-label":a,title:a},o.createElement("svg",{className:V.wordWrapButtonIcon,viewBox:"0 0 24 24","aria-hidden":"true"},o.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})))}function $(e){let{children:t,className:n="",metastring:r,title:c,showLineNumbers:l,language:i}=e;const{prism:{defaultLanguage:d,magicComments:p}}=(0,u.L)(),f=i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??d,g=m(),y=function(){const[e,t]=(0,o.useState)(!1),[n,r]=(0,o.useState)(!1),a=(0,o.useRef)(null),c=(0,o.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),l=(0,o.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return T(a,l),(0,o.useEffect)((()=>{l()}),[e,l]),(0,o.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),b=function(e){return e?.match(h)?.groups.title??""}(r)||c,{lineClassNames:E,code:C}=v(t,{metastring:r,language:f,magicComments:p}),w=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(r);return o.createElement(k,{as:"div",className:(0,s.Z)(n,f&&!n.includes(`language-${f}`)&&`language-${f}`)},b&&o.createElement("div",{className:N.codeBlockTitle},b),o.createElement("div",{className:N.codeBlockContent},o.createElement(A,(0,a.Z)({},j,{theme:g,code:C,language:f??"text"}),(e=>{let{className:t,tokens:n,getLineProps:r,getTokenProps:a}=e;return o.createElement("pre",{tabIndex:0,ref:y.codeBlockRef,className:(0,s.Z)(t,N.codeBlock,"thin-scrollbar")},o.createElement("code",{className:(0,s.Z)(N.codeBlockLines,w&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>o.createElement(M,{key:t,line:e,getLineProps:r,getTokenProps:a,classNames:E[t],showLineNumbers:w})))))})),o.createElement("div",{className:N.buttonGroup},(y.isEnabled||y.isCodeScrollable)&&o.createElement(R,{className:N.codeButton,onClick:()=>y.toggle(),isEnabled:y.isEnabled}),o.createElement(W,{className:N.codeButton,code:C}))))}function F(e){let{children:t,...n}=e;const r=(0,l.Z)(),c=function(e){return o.Children.toArray(e).some((e=>(0,o.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),s="string"==typeof c?$:C;return o.createElement(s,(0,a.Z)({key:String(r)},n),c)}var q=n(39960);var G=n(86043);const U={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function Y(e){return!!e&&("SUMMARY"===e.tagName||Y(e.parentElement))}function Q(e,t){return!!e&&(e===t||Q(e.parentElement,t))}function X(e){let{summary:t,children:n,...r}=e;const c=(0,l.Z)(),i=(0,o.useRef)(null),{collapsed:u,setCollapsed:m}=(0,G.u)({initialState:!r.open}),[d,p]=(0,o.useState)(r.open);return o.createElement("details",(0,a.Z)({},r,{ref:i,open:d,"data-collapsed":u,className:(0,s.Z)(U.details,c&&U.isBrowser,r.className),onMouseDown:e=>{Y(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Y(t)&&Q(t,i.current)&&(e.preventDefault(),u?(m(!1),p(!0)):m(!0))}}),t??o.createElement("summary",null,"Details"),o.createElement(G.z,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},o.createElement("div",{className:U.collapsibleContent},n)))}const J={details:"details_b_Ee"},K="alert alert--info";function ee(e){let{...t}=e;return o.createElement(X,(0,a.Z)({},t,{className:(0,s.Z)(K,J.details,t.className)}))}var te=n(92503);function ne(e){return o.createElement(te.Z,e)}const oe={containsTaskList:"containsTaskList_mC6p"};const re={img:"img_ev3q"};const ae="admonition_LlT9",ce="admonitionHeading_tbUL",le="admonitionIcon_kALy",se="admonitionContent_S0QG";const ie={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(D.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(D.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(D.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(D.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(D.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},ue={secondary:"note",important:"info",success:"tip",warning:"danger"};function me(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=o.Children.toArray(e),n=t.find((e=>o.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:r}}(e.children);return{...e,title:e.title??t,children:n}}const de={head:function(e){const t=o.Children.map(e.children,(e=>o.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...r}=e.props;return o.createElement(e.props.originalType,r)}return e}(e):e));return o.createElement(c.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return o.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,o.isValidElement)(e)&&t.includes(e.props?.mdxType)))?o.createElement("code",e):o.createElement(F,e)},a:function(e){return o.createElement(q.Z,e)},pre:function(e){return o.createElement(F,(0,o.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=o.Children.toArray(e.children),n=t.find((e=>o.isValidElement(e)&&"summary"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return o.createElement(ee,(0,a.Z)({},e,{summary:n}),r)},ul:function(e){return o.createElement("ul",(0,a.Z)({},e,{className:(t=e.className,(0,s.Z)(t,t?.includes("contains-task-list")&&oe.containsTaskList))}));var t},img:function(e){return o.createElement("img",(0,a.Z)({loading:"lazy"},e,{className:(t=e.className,(0,s.Z)(t,re.img))}));var t},h1:e=>o.createElement(ne,(0,a.Z)({as:"h1"},e)),h2:e=>o.createElement(ne,(0,a.Z)({as:"h2"},e)),h3:e=>o.createElement(ne,(0,a.Z)({as:"h3"},e)),h4:e=>o.createElement(ne,(0,a.Z)({as:"h4"},e)),h5:e=>o.createElement(ne,(0,a.Z)({as:"h5"},e)),h6:e=>o.createElement(ne,(0,a.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:r,icon:a}=me(e),c=function(e){const t=ue[e]??e,n=ie[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),ie.info)}(n),l=r??c.label,{iconComponent:i}=c,u=a??o.createElement(i,null);return o.createElement("div",{className:(0,s.Z)(d.k.common.admonition,d.k.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,ae)},o.createElement("div",{className:ce},o.createElement("span",{className:le},u),l),o.createElement("div",{className:se},t))},mermaid:n(11875).Z};function pe(e){let{children:t}=e;return o.createElement(r.Zo,{components:de},t)}},87594:(e,t)=>{function n(e){let t,n=[];for(let o of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(o))n.push(parseInt(o,10));else if(t=o.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,o,r,a]=t;if(o&&a){o=parseInt(o),a=parseInt(a);const e=o<a?1:-1;"-"!==r&&".."!==r&&"\u2025"!==r||(a+=e);for(let t=o;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/80537537.5725cfd8.js b/assets/js/80537537.5725cfd8.js new file mode 100644 index 00000000000..1ece2d244b4 --- /dev/null +++ b/assets/js/80537537.5725cfd8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43140],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function o(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var l=n.createContext({}),u=function(t){var e=n.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(l.Provider,{value:e},t.children)},m="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},s=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,l=t.parentName,c=p(t,["components","mdxType","originalType","parentName"]),m=u(a),s=r,h=m["".concat(l,".").concat(s)]||m[s]||d[s]||i;return a?n.createElement(h,o(o({ref:e},c),{},{components:a})):n.createElement(h,o({ref:e},c))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,o=new Array(i);o[0]=s;var p={};for(var l in e)hasOwnProperty.call(e,l)&&(p[l]=e[l]);p.originalType=t,p[m]="string"==typeof t?t:r,o[1]=p;for(var u=2;u<i;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},88265:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-08-01-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},o="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-08-01-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-01-node-cli-api.md",source:"@site/blog/2023-08-01-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-08-01T00:00:00.000Z",formattedDate:"August 1, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.76,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-08-01-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-04-sre"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-07-31-network"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(t){let{components:e,...a}=t;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-07-19---2023-08-01"},"2023-07-19 - 2023-08-01"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Release of Node 8.2.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694."),(0,r.kt)("li",{parentName:"ul"},"This release is phase 1 of the SanchoNet roll out"),(0,r.kt)("li",{parentName:"ul"},"Allows SPOs to vote on changes to the on-chain constitution."),(0,r.kt)("li",{parentName:"ul"},"Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag."),(0,r.kt)("li",{parentName:"ul"},"Updates to the networking packages prepare the road for peer sharing."))),(0,r.kt)("li",{parentName:"ul"},"cardano-cli and cardano-api continue to integrate Conway era features"),(0,r.kt)("li",{parentName:"ul"},"Continue refactoring of cardano-testnet")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/116"},"Use AnyShelleyToBabbageEra from cardano-api instead")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/115"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/113"},"Add rendering for ",(0,r.kt)("inlineCode",{parentName:"a"},"ConwayCertificate")," in ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Cli.Json.Friendly"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/111"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/110"},"Add DRep registration certificate command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/109"},"Add options to delegate voting stake ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/107"},"Share MIR certificates code between era-based and legacy CLI parsers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/106"},"Release cardano-cli 8.4.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/103"},"Update to",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/100"},"Change directory structure from Options/.. to EraBased/..")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/98"},"Era-sensitive command structure")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/90"},"#86 Set default era to Babbage in stake-address, stake-pool and governance commmands"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/155"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyCertificateConstraints")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"conwayCertificateConstraints"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/154"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"TxVotesSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/152"},"Add SerialiseAsBech32 instances for committee cold and hot keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/151"},"Deprecate some constraint functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/150"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"TxGovernanceActionSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/149"},"More ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraint")," constraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/148"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/147"},"Expose shelleyCertificateConstraints and conwayCertificateConstraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/146"},"Remove unnecessary function ",(0,r.kt)("inlineCode",{parentName:"a"},"getShelleyEraTxBodyConstraint"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/143"},"Provide additional constraints in ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraints"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/142"},"Update changelogs for ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/141"},"handleFileForWritingWithOwnerPermissionImpl: Fix permisions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/138"},"Update DRepKey with correct ",(0,r.kt)("inlineCode",{parentName:"a"},"Voting")," keyrole")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/137"},"Support more constraints for Conway witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/135"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/134"},"Expose toShelleyPoolParams for conway integration")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/131"},(0,r.kt)("inlineCode",{parentName:"a"},"FeatureInEra")," instance for ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/130"},"Expose more functionality from cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/128"},"Improved feature ergonomics")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/127"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"AtMostBabbageEra")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyToBabbageEra")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5412"},"Fix stubbed LogFormatting instances")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5411"},"8.2.0 version bumps")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"Bump network packages version")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5404"},"Fix missing ",(0,r.kt)("inlineCode",{parentName:"a"},"ToObject")," tracing instances.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5401"},"input-output-hk/cardano-cli#85 Fix node crashing in babbage"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5411"},"8.2.0 version bumps")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"Bump network packages version")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5404"},"Fix missing ",(0,r.kt)("inlineCode",{parentName:"a"},"ToObject")," tracing instances.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5400"},"Fix plutus script costing in cardano-testnet"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"Bump network packages version"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/blob/05c0392b4722d7fe2f82db1854b28de4f28a917b/doc/getting-started/understanding-config-files.md?plain=1#L84C1-L97C42"},"WarmValency"))))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/805fc822.c864d419.js b/assets/js/805fc822.c864d419.js new file mode 100644 index 00000000000..8e511606f0d --- /dev/null +++ b/assets/js/805fc822.c864d419.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53165],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(r),d=a,f=s["".concat(p,".").concat(d)]||s[d]||m[d]||o;return r?n.createElement(f,i(i({ref:t},c),{},{components:r})):n.createElement(f,i({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:a,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},7581:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"Network Team Update",slug:"2022-12-12-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-12-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-12-network.md",source:"@site/blog/2022-12-12-network.md",title:"Network Team Update",description:"High level summary",date:"2022-12-12T00:00:00.000Z",formattedDate:"December 12, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"},{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:.43,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-12-12-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-12-14-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-12-09-crypto"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:u},s="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"In last sprint the team focused on preparations for the conference talk at\n",(0,a.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/"},"OPODIS 2022"),". We also worked on preparations to publish ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," and related\npackages on Hackage (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"PR #57"),", ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/60"},"PR #60"),")."),(0,a.kt)("p",null,"We also started reviewing:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"ouroboros-network")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"cardano-ledger"),"\nrepositories for open-source readiness (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4218"},"PR #4128"),").")),(0,a.kt)("p",null,"We prepared a PR which changes how ",(0,a.kt)("inlineCode",{parentName:"p"},"node-to-node")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol\nversiones are serialised in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," log (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4691"},"PR #4691"),")."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/80617771.3351af55.js b/assets/js/80617771.3351af55.js new file mode 100644 index 00000000000..fc6f4d02d05 --- /dev/null +++ b/assets/js/80617771.3351af55.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23427],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=p(a),s=n,m=d["".concat(u,".").concat(s)]||d[s]||h[s]||i;return a?r.createElement(m,l(l({ref:t},c),{},{components:a})):r.createElement(m,l({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=s;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}s.displayName="MDXCreateElement"},22977:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-09-29-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-09-29-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-hydra.md",source:"@site/blog/2023-09-29-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.49,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-29-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-29-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-29-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],c={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team mainly focused on having a working new reliability\nnetwork layer; and specified its expected behavior in a new ADR."),(0,n.kt)("p",null,'They also revisited the security policy and vulnerability disclosure policy on\nhow to handle security vulnerability within Hydra, and in particular how to\nhandle so-called "Silent fixes".'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated security policy and vulnerability disclosure policy ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1088"},"#1088")),(0,n.kt)("li",{parentName:"ul"},"Adr/network reliability ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1082"},"#1082"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Introduce reliability network layer ","[#1074]"," (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1074"},"https://github.com/input-output-hk/hydra/pull/1074"),")"),(0,n.kt)("li",{parentName:"ul"},"Refactor the vCommit validator in Aiken ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1072"},"#1072"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8084428b.0eba4435.js b/assets/js/8084428b.0eba4435.js new file mode 100644 index 00000000000..d8deafd6ee6 --- /dev/null +++ b/assets/js/8084428b.0eba4435.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31724],{16813:a=>{a.exports=JSON.parse('{"label":"cli-api","permalink":"/cardano-updates/tags/cli-api","allTagsPath":"/cardano-updates/tags","count":27}')}}]); \ No newline at end of file diff --git a/assets/js/80c54634.fd705a3e.js b/assets/js/80c54634.fd705a3e.js new file mode 100644 index 00000000000..2d0b13f1f97 --- /dev/null +++ b/assets/js/80c54634.fd705a3e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[99808],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),c=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},u="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(a),h=n,m=u["".concat(d,".").concat(h)]||u[h]||s[h]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var c=2;c<o;c++)i[c]=a[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},57809:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-11-hydra",authors:["ffakenz","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-11-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-11-hydra.md",source:"@site/blog/2023-08-11-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-11T00:00:00.000Z",formattedDate:"August 11, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.8,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-11-hydra",authors:["ffakenz","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-15-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-11-performance-and-tracing"}},d={authorsImageUrls:[void 0,void 0]},c=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:c},u="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team updated ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," to support ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node"),' version\n8.1.2, ensuring compatibility with the latest mainnet release. The team also\nparticipated in discussions about a "cardanonical" JSON schema and added it as a\nsubmodule to the project, contributing to improved data modeling and\ninteroperability.'),(0,n.kt)("p",null,"In terms of community engagement, the team successfully onboarded a new\ncontributor, also participated in a RareEvo Twitter space, and continued\npreparations for the Hydra master-class."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to support cardano-node 8.1.2 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1007"},"#1007")),(0,n.kt)("li",{parentName:"ul"},"Engaged in discussions about a ","\u201c","cardanonical","\u201d"," json schema and\nadd it as submodule to the project\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1013"},"#1013")),(0,n.kt)("li",{parentName:"ul"},"Onboarded a new contributor to the hydra project (@locallycompact)"),(0,n.kt)("li",{parentName:"ul"},"Joined RareEvo twitter space and continued preparation of hydra master-class")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update & streamline tutorial to work with latest version of hydra-node"),(0,n.kt)("li",{parentName:"ul"},"Remove the internal commit functionality ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/954"},"#954")),(0,n.kt)("li",{parentName:"ul"},"Release 0.12.0")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/81528b00.9aeb470f.js b/assets/js/81528b00.9aeb470f.js new file mode 100644 index 00000000000..df9b19c3fc4 --- /dev/null +++ b/assets/js/81528b00.9aeb470f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[50471],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),c=n,d=h["".concat(s,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},67938:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-12-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-01-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-mithril.md",source:"@site/blog/2022-12-01-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2022-12-01T00:00:00.000Z",formattedDate:"December 1, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.04,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2022-12-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"DB sync Team Update",permalink:"/cardano-updates/2022-12-01-db-sync"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-12-01-system-test"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes. "),(0,n.kt)("p",null,"Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implemented custom Mithril SPOs on testing/pre-release networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/563"},"#563")),(0,n.kt)("li",{parentName:"ul"},"Deprecated Signer Declarative Pool Id registration mode ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/585"},"#585")),(0,n.kt)("li",{parentName:"ul"},"Completed the second stage of the store automatic migration process ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/600"},"#600")),(0,n.kt)("li",{parentName:"ul"},"Completed the deployment pipelines to crates.io registry ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/588"},"#588")),(0,n.kt)("li",{parentName:"ul"},"Completed automatic generation of nodes/libraries versions manifest in releases notes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/599"},"#599")),(0,n.kt)("li",{parentName:"ul"},"Completed CI/CD handling of PR from forks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/597"},"#597")),(0,n.kt)("li",{parentName:"ul"},"Worked on the CIP design for Mithril piggybacked on the Cardano network layer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/586"},"#586")),(0,n.kt)("li",{parentName:"ul"},"Worked on signing the artifacts released in the distributions by the CI/CD ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/587"},"#587")),(0,n.kt)("li",{parentName:"ul"},"Worked on multi-platforms end to end test ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/601"},"#601")),(0,n.kt)("li",{parentName:"ul"},"Worked on the refactorizaton of the aggregator multi-signer engine ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/398"},"#398"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/81bb24c9.76693a73.js b/assets/js/81bb24c9.76693a73.js new file mode 100644 index 00000000000..4362703ab80 --- /dev/null +++ b/assets/js/81bb24c9.76693a73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46003],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),h=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=h(e.components);return i.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=h(r),c=n,d=p["".concat(s,".").concat(c)]||p[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var h=2;h<a;h++)o[h]=r[h];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},94887:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>h});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-11-18-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-11-18-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-18-mithril.md",source:"@site/blog/2022-11-18-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2022-11-18T00:00:00.000Z",formattedDate:"November 18, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.35,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Mithril Team Update",slug:"2022-11-18-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-18-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-16-consensus"}},s={authorsImageUrls:[void 0]},h=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:h},p="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks. "),(0,n.kt)("p",null,"Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released a new Mithril distribution ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2246.1"},"2246.1")),(0,n.kt)("li",{parentName:"ul"},"Completed the first stage of the store migrations process ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/562"},"#562")),(0,n.kt)("li",{parentName:"ul"},"Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/565"},"#565")),(0,n.kt)("li",{parentName:"ul"},"Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/576"},"#576")),(0,n.kt)("li",{parentName:"ul"},"Prepared a Daedalus synchronization benchmark video with/without Mithril ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/606"},"#606")),(0,n.kt)("li",{parentName:"ul"},"Upgraded the Cardano nodes of the testing Mithril networks to ",(0,n.kt)("inlineCode",{parentName:"li"},"1.35.4")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/594"},"#594")),(0,n.kt)("li",{parentName:"ul"},"Worked on implementing SPO tests nodes on testing Mithril networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/563"},"#563")),(0,n.kt)("li",{parentName:"ul"},"Worked on the CIP design for Mithril piggybacked on the Cardano network layer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/588"},"#588")),(0,n.kt)("li",{parentName:"ul"},"Worked on the refactorizaton of the aggregator multi signer engine ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/398"},"#398"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/82209890.d5e4ff65.js b/assets/js/82209890.d5e4ff65.js new file mode 100644 index 00000000000..4e237e2f7d7 --- /dev/null +++ b/assets/js/82209890.d5e4ff65.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30141],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>f});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),s=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return r.createElement(c.Provider,{value:n},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(t),p=a,f=m["".concat(c,".").concat(p)]||m[p]||u[p]||i;return t?r.createElement(f,o(o({ref:n},d),{},{components:t})):r.createElement(f,o({ref:n},d))}));function f(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=p;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var s=2;s<i;s++)o[s]=t[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}p.displayName="MDXCreateElement"},25680:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=t(87462),a=(t(67294),t(3905));const i={title:"Performance & tracing update",slug:"2023-06-14-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-14-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-14-performance-and-tracing.md",source:"@site/blog/2023-06-14-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-06-14T00:00:00.000Z",formattedDate:"June 14, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.515,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-06-14-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-14-consensus"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-12-network"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},m="wrapper";function u(e){let{components:n,...t}=e;return(0,a.kt)(m,(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've continued release benchmarking and established a new baseline for ",(0,a.kt)("inlineCode",{parentName:"li"},"8.0.0"),"."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"In our release benchmarking cycle, we established a new performance baseline for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0.0"),". Additionally, we've measured\nperformance under various workloads for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.1.1-pre"),"; the results look promising and validate the optimization efforts\ndone on several system components. "),(0,a.kt)("p",null,"In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for\nbenchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be\nmeaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific\ntrace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles. "),(0,a.kt)("p",null,"Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs. "),(0,a.kt)("p",null,"This means the backend is entering validation phase, where we systematically compare all metrics taken from the new\ninfrastructure to the existing ones, including determining reproducibility and variance."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/822bd8ab.dfb2cd17.js b/assets/js/822bd8ab.dfb2cd17.js new file mode 100644 index 00000000000..2a6e5cc8f6c --- /dev/null +++ b/assets/js/822bd8ab.dfb2cd17.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36504],{3905:(t,e,a)=>{a.d(e,{Zo:()=>l,kt:()=>f});var r=a(67294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function s(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?o(Object(a),!0).forEach((function(e){n(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,r,n=function(t,e){if(null==t)return{};var a,r,n={},o=Object.keys(t);for(r=0;r<o.length;r++)a=o[r],e.indexOf(a)>=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r<o.length;r++)a=o[r],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var u=r.createContext({}),c=function(t){var e=r.useContext(u),a=e;return t&&(a="function"==typeof t?t(e):s(s({},e),t)),a},l=function(t){var e=c(t.components);return r.createElement(u.Provider,{value:e},t.children)},p="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},m=r.forwardRef((function(t,e){var a=t.components,n=t.mdxType,o=t.originalType,u=t.parentName,l=i(t,["components","mdxType","originalType","parentName"]),p=c(a),m=n,f=p["".concat(u,".").concat(m)]||p[m]||d[m]||o;return a?r.createElement(f,s(s({ref:e},l),{},{components:a})):r.createElement(f,s({ref:e},l))}));function f(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var o=a.length,s=new Array(o);s[0]=m;var i={};for(var u in e)hasOwnProperty.call(e,u)&&(i[u]=e[u]);i.originalType=t,i[p]="string"==typeof t?t:n,s[1]=i;for(var c=2;c<o;c++)s[c]=a[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},27428:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={sidebar_position:6},s="Congratulations!",i={unversionedId:"tutorial-basics/congratulations",id:"tutorial-basics/congratulations",title:"Congratulations!",description:"You have just learned the basics of Docusaurus and made some changes to the initial template.",source:"@site/docs/tutorial-basics/congratulations.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/congratulations",permalink:"/cardano-updates/docs/tutorial-basics/congratulations",draft:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"defaultSidebar",previous:{title:"Deploy your site",permalink:"/cardano-updates/docs/tutorial-basics/deploy-your-site"},next:{title:"Tutorial - Extras",permalink:"/cardano-updates/docs/category/tutorial---extras"}},u={},c=[{value:"What's next?",id:"whats-next",level:2}],l={toc:c},p="wrapper";function d(t){let{components:e,...a}=t;return(0,n.kt)(p,(0,r.Z)({},l,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"congratulations"},"Congratulations!"),(0,n.kt)("p",null,"You have just learned the ",(0,n.kt)("strong",{parentName:"p"},"basics of Docusaurus")," and made some changes to the ",(0,n.kt)("strong",{parentName:"p"},"initial template"),"."),(0,n.kt)("p",null,"Docusaurus has ",(0,n.kt)("strong",{parentName:"p"},"much more to offer"),"!"),(0,n.kt)("p",null,"Have ",(0,n.kt)("strong",{parentName:"p"},"5 more minutes"),"? Take a look at ",(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"/cardano-updates/docs/tutorial-extras/manage-docs-versions"},"versioning"))," and ",(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"/cardano-updates/docs/tutorial-extras/translate-your-site"},"i18n")),"."),(0,n.kt)("p",null,"Anything ",(0,n.kt)("strong",{parentName:"p"},"unclear")," or ",(0,n.kt)("strong",{parentName:"p"},"buggy")," in this tutorial? ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/facebook/docusaurus/discussions/4610"},"Please report it!")),(0,n.kt)("h2",{id:"whats-next"},"What's next?"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Read the ",(0,n.kt)("a",{parentName:"li",href:"https://docusaurus.io/"},"official documentation")),(0,n.kt)("li",{parentName:"ul"},"Modify your site configuration with ",(0,n.kt)("a",{parentName:"li",href:"https://docusaurus.io/docs/api/docusaurus-config"},(0,n.kt)("inlineCode",{parentName:"a"},"docusaurus.config.js"))),(0,n.kt)("li",{parentName:"ul"},"Add navbar and footer items with ",(0,n.kt)("a",{parentName:"li",href:"https://docusaurus.io/docs/api/themes/configuration"},(0,n.kt)("inlineCode",{parentName:"a"},"themeConfig"))),(0,n.kt)("li",{parentName:"ul"},"Add a custom ",(0,n.kt)("a",{parentName:"li",href:"https://docusaurus.io/docs/styling-layout"},"Design and Layout")),(0,n.kt)("li",{parentName:"ul"},"Add a ",(0,n.kt)("a",{parentName:"li",href:"https://docusaurus.io/docs/search"},"search bar")),(0,n.kt)("li",{parentName:"ul"},"Find inspirations in the ",(0,n.kt)("a",{parentName:"li",href:"https://docusaurus.io/showcase"},"Docusaurus showcase")),(0,n.kt)("li",{parentName:"ul"},"Get involved in the ",(0,n.kt)("a",{parentName:"li",href:"https://docusaurus.io/community/support"},"Docusaurus Community"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/82c38436.f7c1816e.js b/assets/js/82c38436.f7c1816e.js new file mode 100644 index 00000000000..13bc3cecaa1 --- /dev/null +++ b/assets/js/82c38436.f7c1816e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36229],{47683:a=>{a.exports=JSON.parse('{"label":"sre","permalink":"/cardano-updates/tags/sre","allTagsPath":"/cardano-updates/tags","count":15}')}}]); \ No newline at end of file diff --git a/assets/js/82db709e.075c055a.js b/assets/js/82db709e.075c055a.js new file mode 100644 index 00000000000..9c8b57fba44 --- /dev/null +++ b/assets/js/82db709e.075c055a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27647],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,h=d["".concat(p,".").concat(m)]||d[m]||c[m]||o;return a?r.createElement(h,l(l({ref:t},u),{},{components:a})):r.createElement(h,l({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s<o;s++)l[s]=a[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},10627:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-11-10-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-11-10-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-10-sre.md",source:"@site/blog/2023-11-10-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-11-10T00:00:00.000Z",formattedDate:"November 10, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:2.225,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-11-10-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-10-hydra"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-11-09-db-sync"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3},{value:"Sanchonet-demo",id:"sanchonet-demo",level:3}],u={toc:s},d="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground")," stack")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Minor bug fix and db-sync sanchonet package update: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/b1f1cbd...994696f"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"General migration support PR for cardano-world to cardano-playground ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/18"},"cardano-parts-pull-18"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground"),(0,n.kt)("li",{parentName:"ul"},"Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes"),(0,n.kt)("li",{parentName:"ul"},"Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains"),(0,n.kt)("li",{parentName:"ul"},"The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state"),(0,n.kt)("li",{parentName:"ul"},"The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable"),(0,n.kt)("li",{parentName:"ul"},"Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0"),(0,n.kt)("li",{parentName:"ul"},"For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true"),(0,n.kt)("li",{parentName:"ul"},"Template updates include:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds optional TF AZ declaration on ec2 resources"),(0,n.kt)("li",{parentName:"ul"},"Adds a cardano node p2p dashboard to the grafana cloud stack"),(0,n.kt)("li",{parentName:"ul"},"Adds a dbsync pool performance analysis query"),(0,n.kt)("li",{parentName:"ul"},"Updates python distribute and delegation scripts from world for playground compatibility"),(0,n.kt)("li",{parentName:"ul"},"Starts a python script lib to reduce shared code among the python scripts"),(0,n.kt)("li",{parentName:"ul"},"Several justfile improvements and new recipes"))),(0,n.kt)("li",{parentName:"ul"},"More detail is available in the PR description"))),(0,n.kt)("li",{parentName:"ul"},"Update submit action script for 8.6 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/19"},"cardano-parts-pull-19")),(0,n.kt)("li",{parentName:"ul"},"Update scripts for 8.6.0-pre ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/21"},"cardano-parts-pull-21"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Fixes subcommand names based on ERA_CMD"),(0,n.kt)("li",{parentName:"ul"},"Adds deposits to some commands"),(0,n.kt)("li",{parentName:"ul"},"Separates CC cold/hot key generation as host authorization has to occur after action is approved"),(0,n.kt)("li",{parentName:"ul"},"CC voting enabled in vote job")))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migration PR to largely complete the network migration from cardano-world to cardano-playground: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/5"},"cardano-playground-pull-5"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds re-spun private chain network"),(0,n.kt)("li",{parentName:"ul"},"Migrates shelley-qa chain network from world"),(0,n.kt)("li",{parentName:"ul"},"Justfile improvements and new recipes"),(0,n.kt)("li",{parentName:"ul"},"Improve concurrent environment chain support"),(0,n.kt)("li",{parentName:"ul"},"More detail is available in the PR description")))),(0,n.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migration to play: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/561"},"iohk-nix-pull-561"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org"),(0,n.kt)("li",{parentName:"ul"},"Remove deprecated cardano-lib p2p network environment"),(0,n.kt)("li",{parentName:"ul"},"Update sanchonet chain with respin changes"),(0,n.kt)("li",{parentName:"ul"},"Update private chain with respin changes"),(0,n.kt)("li",{parentName:"ul"},"Bump private and shelley-qa chains to sanchonet equivalent conway genesis"),(0,n.kt)("li",{parentName:"ul"},"Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing")))),(0,n.kt)("h3",{id:"sanchonet-demo"},"Sanchonet-demo"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update for cardano-node 8.6.0-pre demo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo/commit/b54da94057ac0949421918208fd04795d029447d"},"sanchonet-demo-commit"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/82ed4471.838c38ab.js b/assets/js/82ed4471.838c38ab.js new file mode 100644 index 00000000000..2159f071e62 --- /dev/null +++ b/assets/js/82ed4471.838c38ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58312],{9933:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/7","page":7,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/6","nextPage":"/cardano-updates/page/8","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/82f24945.8746cef5.js b/assets/js/82f24945.8746cef5.js new file mode 100644 index 00000000000..de19a42d018 --- /dev/null +++ b/assets/js/82f24945.8746cef5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33724],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=s(a),m=n,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||i;return a?r.createElement(h,o(o({ref:t},p),{},{components:a})):r.createElement(h,o({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<i;s++)o[s]=a[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},11607:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Crypto Team Update",slug:"2023-01-20-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-20-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-crypto.md",source:"@site/blog/2023-01-20-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-01-20-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-01-25-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-20-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3}],p={toc:s},c="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: We explored whether some uses of ",(0,n.kt)("inlineCode",{parentName:"li"},"transmute")," could be removed, but it resulted in considerable regression. "),(0,n.kt)("li",{parentName:"ul"},"cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: An inconsistency between ",(0,n.kt)("inlineCode",{parentName:"li"},"contra-tracer")," available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the ",(0,n.kt)("inlineCode",{parentName:"li"},"contra-tracer")," used by consensus. ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/675"},"PR#675"),". We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing. "),(0,n.kt)("li",{parentName:"ul"},"We are writing a RFP for the audit of the core library. ")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A problem with Nix is blocking merge of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#341")),(0,n.kt)("li",{parentName:"ul"},"Plutus team ran ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus/blob/kwxm/BLS12_381/prototype/plutus-benchmark/bls-benchmarks/Main.hs"},"benchmarks")," of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution."),(0,n.kt)("li",{parentName:"ul"},"Team is fully digesting the Plonk paper. "),(0,n.kt)("li",{parentName:"ul"},"There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used. ")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A little unforseen delay has been caused by a mismatch in the use of ",(0,n.kt)("inlineCode",{parentName:"li"},"contra-tracer"),". The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255/commits/39b2d9473aa296976825248360a73cf066065431"},"doing the change"),", but still the CI is not happy."),(0,n.kt)("li",{parentName:"ul"},"The ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317/commits/39b2d9473aa296976825248360a73cf066065431"},"same")," was needed for the KES agents prerequisites ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"PR#317"),"."),(0,n.kt)("li",{parentName:"ul"},"We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/830ba2c4.c975997b.js b/assets/js/830ba2c4.c975997b.js new file mode 100644 index 00000000000..d1a95d778f6 --- /dev/null +++ b/assets/js/830ba2c4.c975997b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[99726],{49778:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/831d95cb.0c66da8a.js b/assets/js/831d95cb.0c66da8a.js new file mode 100644 index 00000000000..e0a08810056 --- /dev/null +++ b/assets/js/831d95cb.0c66da8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75319],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=d(a),c=n,m=h["".concat(s,".").concat(c)]||h[c]||u[c]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},69346:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-01-13-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-01-13-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-hydra.md",source:"@site/blog/2023-01-13-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.56,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-01-13-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-01-14-db-sync"},nextItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2023-01-13-release"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:d},h="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"Since last weekly update before christmas, the Hydra team worked on the\ntechnical specification, closed gaps in ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts, made the unique\n",(0,n.kt)("inlineCode",{parentName:"p"},"headId")," available to Hydra clients through the API, allow the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," to\nexplicitly synchronize from genesis (if configured), and fixed smaller log and\nbuild issues reported by new users."),(0,n.kt)("p",null,"Besides this, a retrospective ",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/en/news/hydra-head-protocol-an-open-source-solution-for-scalability/"},"blog\npost"),"\nwas published by Matthias Benkort (CF) on Hydra, summarizing our progress made\nin 2022 also an outlook where Hydra is headed for in 2023. Also, the team had\nsome first sessions on the voting project with Catalyst and the CF."),(0,n.kt)("p",null,"A full digest monthly digest for December 2022 can be found on the ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2022-12"},"hydra\nwebsite"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Had some first sessions on the voting project with Catalyst and CF"),(0,n.kt)("li",{parentName:"ul"},"Published retrospective ",(0,n.kt)("a",{parentName:"li",href:"https://cardanofoundation.org/en/news/hydra-head-protocol-an-open-source-solution-for-scalability/"},"blog\npost"),"\nby Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also\nan outlook where Hydra is headed for in 2023."),(0,n.kt)("li",{parentName:"ul"},"Worked on the LaTeX spec for HydraHeadV1, not final or published yet - ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/ch1bo/hydra-spec"},"latest\nversion in this repository"),"."),(0,n.kt)("li",{parentName:"ul"},"Add unique ",(0,n.kt)("inlineCode",{parentName:"li"},"headId")," to API and hence make it available to clients."),(0,n.kt)("li",{parentName:"ul"},"Allow ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")," to explicitly synchronize from genesis using ",(0,n.kt)("inlineCode",{parentName:"li"},"--start-chain-from 0"),"."),(0,n.kt)("li",{parentName:"ul"},"Closed gaps in ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-plutus")," scripts",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"bounded transaction validity (",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/adr/21/"},"ADR21"),")"),(0,n.kt)("li",{parentName:"ul"},"enforcing contract continuity via state token in output"))),(0,n.kt)("li",{parentName:"ul"},"Fixed JSON for some logs and smaller build issues reported by new users.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Reach out to have ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial")," integrated."),(0,n.kt)("li",{parentName:"ul"},"Plan the next couple of months."),(0,n.kt)("li",{parentName:"ul"},"Complete checking reimbursing of commits in head validator."),(0,n.kt)("li",{parentName:"ul"},"Align plutus scripts to spec and simplify them (identified some simplifications)"),(0,n.kt)("li",{parentName:"ul"},"Improve mutation framework to be sure we fail tests for the right reasons"),(0,n.kt)("li",{parentName:"ul"},"Complete the spec except the open points (<5) and also discuss them with researchers.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8395f67d.798e5dd2.js b/assets/js/8395f67d.798e5dd2.js new file mode 100644 index 00000000000..daae1a14391 --- /dev/null +++ b/assets/js/8395f67d.798e5dd2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16934],{55035:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/crypto/page/2","page":2,"postsPerPage":5,"totalPages":4,"totalCount":18,"previousPage":"/cardano-updates/tags/crypto","nextPage":"/cardano-updates/tags/crypto/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/83e7e4db.6c511419.js b/assets/js/83e7e4db.6c511419.js new file mode 100644 index 00000000000..a3644b4d2aa --- /dev/null +++ b/assets/js/83e7e4db.6c511419.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68102],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=u(n),m=r,h=d["".concat(l,".").concat(m)]||d[m]||c[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var u=2;u<i;u++)o[u]=n[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},85321:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const i={title:"Consensus Quarterly Update",slug:"2022-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/quarterly/2022-11-15-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-15-consensus.md",source:"@site/quarterly/2022-11-15-consensus.md",title:"Consensus Quarterly Update",description:"Consensus Quarterly Update",date:"2022-11-15T00:00:00.000Z",formattedDate:"November 15, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:3.655,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Quarterly Update",slug:"2022-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Open-Source Update",permalink:"/cardano-updates/quarterly/2023-01-13-open-source"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/quarterly/2022-11-09-network"}},l={authorsImageUrls:[void 0]},u=[{value:"Consensus Quarterly Update",id:"consensus-quarterly-update",level:2},{value:"2022-09 - 2022-11",id:"2022-09---2022-11",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Conway era",id:"conway-era",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4},{value:"Tech debt",id:"tech-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration-1",level:4}],p={toc:u},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"consensus-quarterly-update"},"Consensus Quarterly Update"),(0,r.kt)("h2",{id:"2022-09---2022-11"},"2022-09 - 2022-11"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"As a consequence of the errors observed when running distributed mempool\nbenchmarks, we re-designed the UTxO HD mempool integration, which fixed these\nerrors and lead to a simpler and more maintainable design.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We focused on increasing test coverage for the UTxO-HD prototype. In\nparticular, we added property tests for:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Backing store (work ongoing)"),(0,r.kt)("li",{parentName:"ul"},"Era transitions"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The property tests we added uncovered several bugs, which is a great result\ngiven the exponential increase in the cost of finding bugs as they are closer\nto deployment.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"One of the errors found by our tests required us to work on improvements in\nthe Haskell bindings for LMDB. This work is ongoing.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We started working on the mempool property tests that will exercise the new\ncode paths that UTxO HD introduced.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'We developed, benchmarked and tested an implementation of sequences of\ndifferences based on "anti-diffs". Performance results of diff sequence\noperations show that we achieved a speedup of about ',(0,r.kt)("inlineCode",{parentName:"p"},"4x")," across several\nscenarios. Note: this speedup is taking into account diff sequence operations\nonly, so the consensus-wide speedup is less than ",(0,r.kt)("inlineCode",{parentName:"p"},"4x"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'We integrated the "anti-diff" prototype into the UTxO HD feature branch.'))),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We wrote a simulator that demonstrates soundness of an abstract implementation\nof the new chain selection rule."),(0,r.kt)("li",{parentName:"ul"},"We elaborated a draft specification for the Genesis implementation (currently\nawaiting feedback from other architects)."),(0,r.kt)("li",{parentName:"ul"},"We elaborated a draft specification for the ChainSync Jumping optimization. In\nparticular, this includes a proof sketch that the latter preserves liveness\nand safety in all cases."),(0,r.kt)("li",{parentName:"ul"},"With the Networking team, we co-designed the eclipse avoidance mechanism,\nspecifically its coherence with the Genesis implementation plan's security\nand its dependence on the new ChainSync Jumping optimization."),(0,r.kt)("li",{parentName:"ul"},"We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a\nperformance degradation wrt the baseline. Our optimization attempts so far\nhave brought the performance closer to the baseline, but not yet to parity.")),(0,r.kt)("h4",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We did most of the heavy lifting required to integrate the Conway era into the\nConsensus layer.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We started working on enabling CI nightly tests, which revealed several test\nfailures due to thunks being found it data structures used by the ledger and\nconsensus. We made a lot of progress fixing those thunk errors, but some\nerrors still remain.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We elaborated a ",(0,r.kt)("inlineCode",{parentName:"p"},"db-analyser")," benchmark for the ledger operations. This led us\nto the identification of high processing time at epoch boundaries, and we\ncould not observe any performance degradation that can be attributed to era\nchanges.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed a source of flakiness in the ChainDB QSM test.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We clarified a common source of confusion around VRF tie-breaking and\ncross-era chain selection.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed a bug in the maximum-allowed ledger major protocol version."))),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We spent time making ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-updates")," the central source of information for\nthe core teams stakeholders."),(0,r.kt)("li",{parentName:"ul"},"We went through the Galois gap analysis and extracted actionable points to\ntake on next."),(0,r.kt)("li",{parentName:"ul"},"Bart and Yogesh continued with their onboarding and stated making substantial\ncontributions to consensus.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish the mempool property tests."),(0,r.kt)("li",{parentName:"ul"},"Benchmark the latest version of the prototype."),(0,r.kt)("li",{parentName:"ul"},"Elaborate a document that describes new integration test scenarios and pass it\nto the SDET team."),(0,r.kt)("li",{parentName:"ul"},"Bring query UTxO by address command performance on par with the baseline\nversion.")),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Receive and incorporate Duncan's feedback on the first draft specification for\nthe Genesis implementation."),(0,r.kt)("li",{parentName:"ul"},"Begin prototyping the first genesis implementation, unless the first draft\nneeds major changes."),(0,r.kt)("li",{parentName:"ul"},"Draft a second revision of the Genesis report."),(0,r.kt)("li",{parentName:"ul"},"Review the second revision with a wider audience, which includes at least\nAlexander Russell. That feedback will drive a third and hopefully final\nrevision."),(0,r.kt)("li",{parentName:"ul"},"Investigate how to mitigate the ~30% slowdown we have observed so far in the\nChainSync jumping prototype, and try to mitigate it. In particular, we might\nneed to optimize the existing BlockFetch logic.")),(0,r.kt)("h4",{id:"tech-debt"},"Tech debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enabling nightly CI tests.")),(0,r.kt)("h4",{id:"fostering-collaboration-1"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Merge the tutorial document Galois wrote; requires CI integration."),(0,r.kt)("li",{parentName:"ul"},"Come up with our own documentation improvements, many of which were suggested\nin the Galois gap analysis."),(0,r.kt)("li",{parentName:"ul"},"Try to hire a new team member.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/84189288.e5afffc2.js b/assets/js/84189288.e5afffc2.js new file mode 100644 index 00000000000..3e88669a22b --- /dev/null +++ b/assets/js/84189288.e5afffc2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48863],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),d=a,h=p["".concat(l,".").concat(d)]||p[d]||m[d]||o;return n?r.createElement(h,s(s({ref:t},u),{},{components:n})):r.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},59071:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-07-12-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-07-12-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-12-consensus.md",source:"@site/blog/2023-07-12-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-07-12T00:00:00.000Z",formattedDate:"July 12, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.59,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-07-12-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-13-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-07-12-performance-and-tracing"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4620"},"proposed fix"),". The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine."),(0,a.kt)("p",null,"The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility."),(0,a.kt)("p",null,"On the support front, the team ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/200"},"drafted")," an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/84677cf0.55a9266a.js b/assets/js/84677cf0.55a9266a.js new file mode 100644 index 00000000000..1bfecbe6d47 --- /dev/null +++ b/assets/js/84677cf0.55a9266a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54415],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),d=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=d(a),c=n,m=s["".concat(u,".").concat(c)]||s[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var d=2;d<i;d++)o[d]=a[d];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},70789:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-12-09-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-09-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-hydra.md",source:"@site/blog/2022-12-09-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-12-09T00:00:00.000Z",formattedDate:"December 9, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.62,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-12-09-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-12-09-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-12-09-ledger"}},u={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:d},s="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team has worked on completing to "Validate coordinated head protocol against formal model", this is a huge step to verify the implementation is secure. They also worked on implementing ',(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," related to bounded tx validity which is now under review. ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/obsidiansystems/hydra-pay"},"HydraPay")," project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/obsidiansystems/hydra-pay/issues?q=is%3Aissue"},"issues")," they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Document model based testing ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/194"},"#194")," & ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/641"},"#641")),(0,n.kt)("li",{parentName:"ul"},"Got ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21"),", reducing gaps between implementation and specification, under review."),(0,n.kt)("li",{parentName:"ul"},"Complete review on ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete first round of review on ",(0,n.kt)("inlineCode",{parentName:"li"},"HydraPay")," work ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/634"},"#634")),(0,n.kt)("li",{parentName:"ul"},"Meeting with ",(0,n.kt)("inlineCode",{parentName:"li"},"Director of CyberSecurity")," frio ",(0,n.kt)("inlineCode",{parentName:"li"},"IOG"),' to unblock "the RFP prepared for the external audit" ',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/606"},"#606")),(0,n.kt)("li",{parentName:"ul"},"Remove ",(0,n.kt)("inlineCode",{parentName:"li"},"vasil-dev")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"testnet")," from ",(0,n.kt)("inlineCode",{parentName:"li"},"smoke-test")," because they were not working ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/630"},"#630")),(0,n.kt)("li",{parentName:"ul"},"Fix flaky ",(0,n.kt)("inlineCode",{parentName:"li"},"plutus-merkle-tree")," test ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/642"},"#642")),(0,n.kt)("li",{parentName:"ul"},"Refactor ",(0,n.kt)("inlineCode",{parentName:"li"},"NetworkSpec")," to improve legilibility."),(0,n.kt)("li",{parentName:"ul"},"Fix benchmark cost for ",(0,n.kt)("inlineCode",{parentName:"li"},"abortTx")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/631"},"#631")),(0,n.kt)("li",{parentName:"ul"},"Adapt ",(0,n.kt)("inlineCode",{parentName:"li"},"nix.conf")," to the recent hydra-ci nix cache migration.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Get ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," accepted & close tx validity gap in our implementation."),(0,n.kt)("li",{parentName:"ul"},"Integrate the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial"),"."),(0,n.kt)("li",{parentName:"ul"},"Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec."),(0,n.kt)("li",{parentName:"ul"},"Get Cicero (new CI) working."),(0,n.kt)("li",{parentName:"ul"},"Use reference inputs to reduce the cost of the ",(0,n.kt)("inlineCode",{parentName:"li"},"commitTx"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8470e3c7.4090b9b2.js b/assets/js/8470e3c7.4090b9b2.js new file mode 100644 index 00000000000..d19e05f930c --- /dev/null +++ b/assets/js/8470e3c7.4090b9b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[38141],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=u(r),h=n,d=c["".concat(p,".").concat(h)]||c[h]||m[h]||i;return r?a.createElement(d,o(o({ref:t},s),{},{components:r})):a.createElement(d,o({ref:t},s))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=r[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}h.displayName="MDXCreateElement"},75734:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-01-06-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-06-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-06-crypto.md",source:"@site/blog/2023-01-06-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-01-06T00:00:00.000Z",formattedDate:"January 6, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.46,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-01-06-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-01-11-performance-and-tracing"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-05-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"MuSig2",id:"musig2",level:3},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Cryptography handbook",id:"cryptography-handbook",level:3}],s={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The four open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"MuSig2: The API features (error handling) has been merged. "),(0,n.kt)("li",{parentName:"ul"},"Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures."),(0,n.kt)("li",{parentName:"ul"},"cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: We keep progressing with KES secure forgetting implementation.")),(0,n.kt)("p",null,"We also started working in the cryptography engineering handbook, which will be a cross team effort."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Merged the more granular error handling mechanism ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/33"},"PR#33"))),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes/commit/9de00835ed354cbb8d37838f6cee57930ea9fd3d"},"Version 0.1.1"),", which was published in ",(0,n.kt)("a",{parentName:"li",href:"https://crates.io/crates/kes-summed-ed25519"},"crates.io"),". "),(0,n.kt)("li",{parentName:"ul"},"Updated new KES format to mithril library ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/674"},"PR 674")),(0,n.kt)("li",{parentName:"ul"},"We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/531"},"PR 531")),(0,n.kt)("li",{parentName:"ul"},"We keep progressing on reducing the use of ",(0,n.kt)("inlineCode",{parentName:"li"},"transmute")," in ",(0,n.kt)("inlineCode",{parentName:"li"},"mithril-stm"),".")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nothing new to report. Still working in merging these PRs. We are only missing nix merge of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/520"},"PR#520")," and the updates on VRF will be merged.")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255#issuecomment-1362601518"},"PR#255"),".")),(0,n.kt)("h3",{id:"cryptography-handbook"},"Cryptography handbook"),(0,n.kt)("p",null,"We have made available the (temporary) cryptography handbook ",(0,n.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cryptography_spec/"},"https://input-output-hk.github.io/cryptography_spec/"),", and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/84823557.5b494971.js b/assets/js/84823557.5b494971.js new file mode 100644 index 00000000000..e60a1b2b423 --- /dev/null +++ b/assets/js/84823557.5b494971.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94771],{53381:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/36","page":36,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/35","nextPage":"/cardano-updates/page/37","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/8534c2dd.8ec8dbda.js b/assets/js/8534c2dd.8ec8dbda.js new file mode 100644 index 00000000000..b0b8fee70f0 --- /dev/null +++ b/assets/js/8534c2dd.8ec8dbda.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39987],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(a),c=r,m=h["".concat(s,".").concat(c)]||h[c]||d[c]||i;return a?n.createElement(m,o(o({ref:t},u),{},{components:a})):n.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},88128:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-11-24-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-24-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-24-hydra.md",source:"@site/blog/2023-11-24-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-11-24T00:00:00.000Z",formattedDate:"November 24, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.12,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-11-24-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-29-mithril"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-24-sre"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],u={toc:p},h="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(h,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"This week, the Hydra team spent significant time opening a head among\nthemselves on ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet")," using the release candidate, revealing and\naddressing lurking bugs such as\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1174"},"#","1174"),". Also\nrequired was this change to dynamically calculate the min utxo value\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/1176"},"#","1176"),", a\nnecessary adjustment following the switch to inline datums. The team\nengaged with ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli")," / ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-api")," maintainers to discuss recent\nchanges and collaborated on drafting feature ideas, including providing\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1177"},"Conway support"),"\nfor the Hydra roadmap. As part of ongoing improvements, they\nexperimented with writing the specification in markdown instead of\nLaTex."),(0,r.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Opened head among us on mainnet and uncovered a few lurking bugs like\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1174"},"#","1174")," in the\nrelease candidate"),(0,r.kt)("li",{parentName:"ul"},"Calculate the min utxo value instead of hard-coding it\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1176"},"#","1176"),", which is\nneeded since we switched to inline datums."),(0,r.kt)("li",{parentName:"ul"},"Met with the ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli")," / ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-api")," maintainers to discuss\nrecent changes and way forward"),(0,r.kt)("li",{parentName:"ul"},"Drafted features ideas to provide ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1177"},"Conway\nsupport")," on the\nHydra roadmap"),(0,r.kt)("li",{parentName:"ul"},"Experimented in writing the specification in markdown instead of LaTex")),(0,r.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Have the Monthly review meeting with several demos"),(0,r.kt)("li",{parentName:"ul"},"Release version 0.14.0 with ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/milestone/14?closed=1"},"this\nscope")),(0,r.kt)("li",{parentName:"ul"},"Complete tidying up chain layer via stateless observation changes in\nhydra-node\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1096"},"#","1096")),(0,r.kt)("li",{parentName:"ul"},"Update dependencies to prepare for Conway\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1114"},"#","1114"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/859b6012.9836dc83.js b/assets/js/859b6012.9836dc83.js new file mode 100644 index 00000000000..3235457851b --- /dev/null +++ b/assets/js/859b6012.9836dc83.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85173],{96249:a=>{a.exports=JSON.parse('{"label":"db-sync","permalink":"/cardano-updates/tags/db-sync","allTagsPath":"/cardano-updates/tags","count":14}')}}]); \ No newline at end of file diff --git a/assets/js/86c4d158.2e916fa2.js b/assets/js/86c4d158.2e916fa2.js new file mode 100644 index 00000000000..9c05fefa228 --- /dev/null +++ b/assets/js/86c4d158.2e916fa2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46831],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),u=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=u(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,i=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),p=u(r),c=a,k=p["".concat(i,".").concat(c)]||p[c]||d[c]||s;return r?n.createElement(k,o(o({ref:t},m),{},{components:r})):n.createElement(k,o({ref:t},m))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=c;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<s;u++)o[u]=r[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}c.displayName="MDXCreateElement"},3439:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const s={title:"System Test Team Update",slug:"2023-06-08-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-08-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-system-test.md",source:"@site/blog/2023-06-08-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:1.005,hasTruncateMarker:!1,authors:[{name:"Martin Kourim",title:"System Test Engineer",url:"https://github.com/mkoura",imageURL:"https://github.com/mkoura.png",key:"mkoura"}],frontMatter:{title:"System Test Team Update",slug:"2023-06-08-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-08-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-06-07-node-cli-api"}},i={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"Testing improvements",id:"testing-improvements",level:3},{value:"Node:",id:"node",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],m={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the ",(0,a.kt)("em",{parentName:"p"},"1.35.7")," and ",(0,a.kt)("em",{parentName:"p"},"8.0.0")," releases."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node-tests/pulls?page=1&q=is%3Apr+is%3Aclosed+updated%3A2023-03-26..2023-06-08"},"Full list of closed PRs")),(0,a.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Make cardano-submit-api REST API service available and run corresponding regression tests by default"),(0,a.kt)("li",{parentName:"ul"},"Update cabal build testing for 8.0.0"),(0,a.kt)("li",{parentName:"ul"},"Add support for testing governance SPO poll"),(0,a.kt)("li",{parentName:"ul"},"Use Poetry for Python dependency management"),(0,a.kt)("li",{parentName:"ul"},"Check status of known GH issues during tests runtime and finish the test accordingly"),(0,a.kt)("li",{parentName:"ul"},"Generate topology files with both IP addresses and DNS names"),(0,a.kt)("li",{parentName:"ul"},"Log issues like failure to start a cluster instance and report errors during tests runtime")),(0,a.kt)("h3",{id:"testing-improvements"},"Testing improvements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Add rollback testing:",(0,a.kt)("ol",{parentName:"li"},(0,a.kt)("li",{parentName:"ol"},"global consensus is reached after rollback, in situation where less than ",(0,a.kt)("inlineCode",{parentName:"li"},"securityParam")," blocks were produced since cluster split"),(0,a.kt)("li",{parentName:"ol"},"global consensus is not reached when more than ",(0,a.kt)("inlineCode",{parentName:"li"},"securityParam")," blocks were produced, and the result is permanent fork"))),(0,a.kt)("li",{parentName:"ul"},"Add tests to governance SPO poll commands")),(0,a.kt)("h3",{id:"node"},"Node:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"tested the ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_7.html"},"1.35.7")," release"),(0,a.kt)("li",{parentName:"ul"},"tested the ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_8_0_0.html"},"8.0.0")," release")),(0,a.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"improvements in db-sync sync tests"),(0,a.kt)("li",{parentName:"ul"},"improvements in db-sync functional tests")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/86cc1b5f.c4aa4649.js b/assets/js/86cc1b5f.c4aa4649.js new file mode 100644 index 00000000000..215bcdad4fc --- /dev/null +++ b/assets/js/86cc1b5f.c4aa4649.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62034],{12783:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/60","page":60,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/59","nextPage":"/cardano-updates/page/61","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/86e0423a.929b4796.js b/assets/js/86e0423a.929b4796.js new file mode 100644 index 00000000000..8a45350eb7e --- /dev/null +++ b/assets/js/86e0423a.929b4796.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[69778],{6118:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/mithril","page":1,"postsPerPage":5,"totalPages":7,"totalCount":34,"nextPage":"/cardano-updates/tags/mithril/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/87088759.90416017.js b/assets/js/87088759.90416017.js new file mode 100644 index 00000000000..ff903c4ba97 --- /dev/null +++ b/assets/js/87088759.90416017.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90047],{32425:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Consensus Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-consensus"},{"title":"Network Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-network"},{"title":"SRE Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-sre"},{"title":"Performance & Tracing Q3 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q3-performance-and-tracing"},{"title":"SRE Q3 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q3-sre"}]}')}}]); \ No newline at end of file diff --git a/assets/js/871691d4.358d342f.js b/assets/js/871691d4.358d342f.js new file mode 100644 index 00000000000..71b1fe6b4ae --- /dev/null +++ b/assets/js/871691d4.358d342f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2136],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),s=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(n),m=r,h=c["".concat(l,".").concat(m)]||c[m]||d[m]||a;return n?o.createElement(h,i(i({ref:t},u),{},{components:n})):o.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:r,i[1]=p;for(var s=2;s<a;s++)i[s]=n[s];return o.createElement.apply(null,i)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},78081:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>p,toc:()=>s});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-06-23-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-06-23-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-network.md",source:"@site/blog/2023-06-23-network.md",title:"Network Team Update",description:"Network Update",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-06-23-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-23-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-23-sre"}},l={authorsImageUrls:[void 0]},s=[{value:"Network Update",id:"network-update",level:2},{value:"Key contributions",id:"key-contributions",level:3},{value:"Other smaller changes",id:"other-smaller-changes",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"network-update"},"Network Update"),(0,r.kt)("h3",{id:"key-contributions"},"Key contributions"),(0,r.kt)("p",null,"We held a series of session to review the implementation of big ledger peers\n(eclipse evasion). See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"#4462"),"."),(0,r.kt)("p",null,"We get a request from a 3rd party to clarify an inconsistency between CDDL spec\nand protocol implementation. We worked out a nice solution which takes\nadvantage of the ",(0,r.kt)("inlineCode",{parentName:"p"},"any")," notion available in ",(0,r.kt)("inlineCode",{parentName:"p"},"CDDL"),". On the Haskell side we\nprovide ",(0,r.kt)("inlineCode",{parentName:"p"},"Any")," type which gen generate almost any CBOR term (some are excluded\nonly because they are not decoded back to the same form, and we relay on that\nproperty). See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4580"},"#4580"),"."),(0,r.kt)("p",null,"We fixed a bunch of problems of the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," command. It also now has\na limited support of ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," mini-protocol (the ",(0,r.kt)("inlineCode",{parentName:"p"},"-c")," option is\nignored, as it cannot be supported by ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol). Note that\nthe format of messages has changed, timestamps are printed in ISO8601 format.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4601"},"#4601"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5326"},"#5326"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"#5313"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30"},"#30")),(0,r.kt)("p",null,"In order to provide a new flag in the topology file which enables ledger peers\nwhen the chain is close to the tip, we continued to work on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"#4530"),". This is\ncurrently in review, the consensus team will need to provide us with the new\napi. This feature is useful for two reasons: makes it easier to maintain\na topology file, it will also limit the traffic on public roots generated by\nfor example full node wallets and distribute it to ledger peers."),(0,r.kt)("p",null,"We also continued to work on a blog post which describes the journey of design\n& implementation of the dynamic P2P network layer. Too be announced soon :). "),(0,r.kt)("h3",{id:"other-smaller-changes"},"Other smaller changes"),(0,r.kt)("p",null,"We limit the concurrency of resolving dns names. Up to 8 root peers or ledger\npeers DNS names are resolved concurrently, and at most 2 local root peer DNS\nnames. See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4596"},"#4596"),"."),(0,r.kt)("p",null,"We fixed handshake query timeout in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4603"},"#4603"),"."),(0,r.kt)("p",null,"We renamed one of the block-fetch decision constructors as requested by the\nconsensus team, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4608"},"#4608"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/876c34e9.eaf9747b.js b/assets/js/876c34e9.eaf9747b.js new file mode 100644 index 00000000000..d797b8b6749 --- /dev/null +++ b/assets/js/876c34e9.eaf9747b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85369],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=d(a),c=n,m=p["".concat(s,".").concat(c)]||p[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var d=2;d<i;d++)o[d]=a[d];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},94306:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-04-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-04-27-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-27-hydra.md",source:"@site/blog/2023-04-27-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-27T00:00:00.000Z",formattedDate:"April 27, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.11,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-27-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-04-28-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-21-hydra"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:d},p="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team held their Monthly review meeting and drafted the\nreport which likely is published next week. They put the spec into the\nrepository and website, addressed a user issue and fixed the TUI peer list.\nFurthermore, they updated dependencies, conducted a Twitter space on Auctions\nuse cases, covered the rollback bug with tests and implemented a solution.\nLooking ahead, their goals for next week include releasing 0.10.0, implementing\ntimed transactions support, writing a Query API ADR, and grooming work items\nlike off-chain benchmarks."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Held the Monthly review meeting and drafted the report (to be published next week)"),(0,n.kt)("li",{parentName:"ul"},"Added the spec into the repository\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693")," and published on\n",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/core-concepts/specification"},"the\nwebsite")),(0,n.kt)("li",{parentName:"ul"},"Groom and addressed user issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/823"},"#823")),(0,n.kt)("li",{parentName:"ul"},"Covered the rollback bug with tests and implemented a solution (to be reviewed) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Fixed the TUI peer list"),(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to match ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node")," master"),(0,n.kt)("li",{parentName:"ul"},"Conducted a twitter space on Auctions use cases")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Release 0.10.0"),(0,n.kt)("li",{parentName:"ul"},"Support timed transactions solution drafted and validated API with users"),(0,n.kt)("li",{parentName:"ul"},"Write Query API ADR and groom a concrete step"),(0,n.kt)("li",{parentName:"ul"},"Groom and solve ",(0,n.kt)("inlineCode",{parentName:"li"},"PostTxOnChainFailed")," UX problem ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/832"},"#832")),(0,n.kt)("li",{parentName:"ul"},"Groom off-chain benchmarks idea ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186")," and turn it into a ","\u201c","feature","\u201d")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/878c8163.fc733a29.js b/assets/js/878c8163.fc733a29.js new file mode 100644 index 00000000000..25e61c63289 --- /dev/null +++ b/assets/js/878c8163.fc733a29.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45932],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=s(n),d=a,h=u["".concat(p,".").concat(d)]||u[d]||m[d]||o;return n?r.createElement(h,l(l({ref:t},c),{},{components:n})):r.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[u]="string"==typeof e?e:a,l[1]=i;for(var s=2;s<o;s++)l[s]=n[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},91329:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-09-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-14-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-14-db-sync.md",source:"@site/blog/2023-09-14-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-09-14T00:00:00.000Z",formattedDate:"September 14, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.47,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-09-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-15-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-12-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],c={toc:s},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have created a DBSync tag ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-1-1-0")," which can follow sanchonet. Also\nthe team has ran a number of benchmarks and tests for the new options/flavours of DBSync\nand prepared a blogpost which summorises them, for downstream components."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Integration of node-8.3.x and support for Sanchonet on Conway\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1498"},"#1498")),(0,a.kt)("li",{parentName:"ul"},"Simplifications of new feautures\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1496"},"#1496")),(0,a.kt)("li",{parentName:"ul"},"Makes it impossible to restart DBSync with different schema options and adds\ntests for them\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1466"},"#1466")),(0,a.kt)("li",{parentName:"ul"},"CI fixes\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1494"},"#1494"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1491"},"#1491")),(0,a.kt)("li",{parentName:"ul"},"Prepared a blogpost about different DBSync options\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/blob/blog/blog/blog.pdf"},"blog"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/884eee03.9c216150.js b/assets/js/884eee03.9c216150.js new file mode 100644 index 00000000000..1af05faedda --- /dev/null +++ b/assets/js/884eee03.9c216150.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54975],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},m=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),d=u(a),c=n,h=d["".concat(p,".").concat(c)]||d[c]||s[c]||l;return a?r.createElement(h,o(o({ref:t},m),{},{components:a})):r.createElement(h,o({ref:t},m))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=c;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var u=2;u<l;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},99054:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>s,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-12-06-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-12-06-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-06-ledger.md",source:"@site/blog/2023-12-06-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-12-06T00:00:00.000Z",formattedDate:"December 6, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.53,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-12-06-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-12-06-mithril"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway",id:"conway",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],m={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This period we reached a major milestone, namely we now have an initial version of Conway\nconformance testing working. We are now able to generate random valid data with the help\nof constraint based testing framework, apply that data to Conway Ledger rules and verify\nthat the output matches to the one produced by the executable version of the Formal Ledger\nSpecification, when it is applied to the same random data."),(0,n.kt)("p",null,"We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get\nConstitutional Committee query is complete and tested. Various improvements to the\ntesting tools. Addition of more test cases."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway"},"Conway"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3888"},"pull-3888")," - Add checks for valid ProtVer when a proposal is a HardFork"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3902"},"pull-3902")," - Fix pvCanFollow usage in Conway and improve clarity in Shelley"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3855"},"pull-3855")," - Remove unreachable proposals"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3903"},"pull-3903")," - Add lenient decoder for ",(0,n.kt)("inlineCode",{parentName:"li"},"Addr")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3878"},"pull-3878")," - Committee query - implement next epoch change")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3893"},"pull-3893")," - Move ",(0,n.kt)("inlineCode",{parentName:"li"},"tree-diff")," dependency to tests together with all instances"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3896"},"pull-3896")," - Fix Brute force failure"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3904"},"pull-3904")," - New ListWhere Pred added to the Constrained Solver."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3907"},"pull-3907")," - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3883"},"pull-3883")," - Committee QuerySpec Imp Test"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3909"},"pull-3909")," - Make ",(0,n.kt)("inlineCode",{parentName:"li"},"impAnn")," a bit more useful, by making the logs scoped by ",(0,n.kt)("inlineCode",{parentName:"li"},"impAnn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3908"},"pull-3908")," - Use upstream testing instances for very basic types"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3912"},"pull-3912")," - Removed call to tail, and the ","'","watchPulser","'"," test"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3852"},"pull-3852")," - Added constrained generators to conformance tests - Part 1")),(0,n.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3891"},"pull-3891")," - Bump plutus to 1.17")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8864b77b.cb1a7306.js b/assets/js/8864b77b.cb1a7306.js new file mode 100644 index 00000000000..f6b386a106d --- /dev/null +++ b/assets/js/8864b77b.cb1a7306.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[61908],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(n),u=r,g=d["".concat(c,".").concat(u)]||d[u]||p[u]||i;return n?a.createElement(g,o(o({ref:t},m),{},{components:n})):a.createElement(g,o({ref:t},m))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},21318:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-03-08-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-03-08-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-performance-and-tracing.md",source:"@site/blog/2023-03-08-performance-and-tracing.md",title:"Performance & tracing update",description:"* Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.",date:"2023-03-08T00:00:00.000Z",formattedDate:"March 8, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.805,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-03-08-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-08-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-03-crypto"}},c={authorsImageUrls:[void 0]},s=[{value:"1.35.6 release",id:"1356-release",level:3},{value:"Analysis pipeline",id:"analysis-pipeline",level:3},{value:"Open Sourcing",id:"open-sourcing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:s},d="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate."),(0,r.kt)("li",{parentName:"ul"},"New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users."),(0,r.kt)("li",{parentName:"ul"},"Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination."),(0,r.kt)("li",{parentName:"ul"},"Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.")),(0,r.kt)("h1",{id:"performance"},"Performance"),(0,r.kt)("h3",{id:"1356-release"},"1.35.6 release"),(0,r.kt)("p",null,"Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health."),(0,r.kt)("h3",{id:"analysis-pipeline"},"Analysis pipeline"),(0,r.kt)("p",null,"Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better\ndifferentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance.\nAdditionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking\ndata more easily accessible."),(0,r.kt)("h3",{id:"open-sourcing"},"Open Sourcing"),(0,r.kt)("p",null,"As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable\nthird parties to make use of that data much more easily, by having reliable guidelines and a working example."),(0,r.kt)("h1",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make\nthe switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process."),(0,r.kt)("h1",{id:"infrastructure"},"Infrastructure"),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8914fa7e.0fe96f3b.js b/assets/js/8914fa7e.0fe96f3b.js new file mode 100644 index 00000000000..eef65f99fa2 --- /dev/null +++ b/assets/js/8914fa7e.0fe96f3b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15347],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),l=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},u=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),h=l(n),c=o,m=h["".concat(s,".").concat(c)]||h[c]||d[c]||i;return n?a.createElement(m,r(r({ref:t},u),{},{components:n})):a.createElement(m,r({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=c;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[h]="string"==typeof e?e:o,r[1]=p;for(var l=2;l<i;l++)r[l]=n[l];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},17177:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var a=n(87462),o=(n(67294),n(3905));const i={title:"Consensus Team Update",slug:"2022-11-16-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},r=void 0,p={permalink:"/cardano-updates/2022-11-16-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-consensus.md",source:"@site/blog/2022-11-16-consensus.md",title:"Consensus Team Update",description:"High-level summary",date:"2022-11-16T00:00:00.000Z",formattedDate:"November 16, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:5.06,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-11-16-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-18-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-16-node-cli-api"}},s={authorsImageUrls:[void 0]},l=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"High-level status report",id:"high-level-status-report",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Finish the UTxO HD prototype",id:"finish-the-utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:3},{value:"Benchmarking the CSJ prototype",id:"benchmarking-the-csj-prototype",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3},{value:"Support",id:"support",level:3}],u={toc:l},h="wrapper";function d(e){let{components:t,...i}=e;return(0,o.kt)(h,(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,o.kt)("p",null,'During the past two weeks, the consensus team started documenting the\nimplementation of the UTxO HD feature and continued developing tests for it. As\npart of our work on UTxO HD, we improved the Haskell support for LMDB. We also\nspent time working on the LSM tree prototype, and designed a parameter tuning\nalgorithm for it. Regarding our work on Genesis, our investigation of the\n"plateaus" pointed at the ',(0,o.kt)("inlineCode",{parentName:"p"},"TICKF"),' slowdown on era boundaries as culprit. This\nled us to developing a caching strategy that will not only remove the\naforementioned "plateaus", but can help alleviating the growing block production\ndelay on epoch switch. We also helped reviewing the block forge credential\nhotswap feature, which is intended for use in the adoption of P2P.'),(0,o.kt)("p",null,"We also worked on paying technical debt and fostering collaboration. In\nparticular, we improved the ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim")," framework, which is crucial for testing and\nsimulating Cardano components. We also removed thunks that appeared on era\ntranslations, and improved our diffusion pipelining feature. We are working on a\npresentation for explaining Praos and Genesis."),(0,o.kt)("h2",{id:"high-level-status-report"},"High-level status report"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Finish the UTxO HD prototype: in progress.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"We added documentation for this feature."),(0,o.kt)("li",{parentName:"ul"},"We developed the second version of the mempool tests."),(0,o.kt)("li",{parentName:"ul"},"We fixed benchmarks that were inflating the speedup we observed in the\nanti-diff implementation of sequences of differences. Speedups are now in the\nrange of ","[3.33, 4.75]",", which remain significant."),(0,o.kt)("li",{parentName:"ul"},"We continued improving Haskell LMDB support."),(0,o.kt)("li",{parentName:"ul"},'We finished implementing a "parameter tuning algorithm" for the LSM tree\nprototype. This enables us to run experiments to check the correctness of\nthe algorithm.'))),(0,o.kt)("li",{parentName:"ul"},"Genesis: in progress.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},'Work investigating the "plateaus" in the ',(0,o.kt)("inlineCode",{parentName:"li"},"ChainSync")," jumping prototype\npointed to the ",(0,o.kt)("inlineCode",{parentName:"li"},"TICKF")," slowdown on era boundaries as culprit."))),(0,o.kt)("li",{parentName:"ul"},"Tech debt:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"We improved the capabilities of our ",(0,o.kt)("inlineCode",{parentName:"li"},"io-sim")," library, which is crucial for\ntesting and simulating Cardano components."),(0,o.kt)("li",{parentName:"ul"},"We removed thunks from epoch translations in the ledger."),(0,o.kt)("li",{parentName:"ul"},"We added Linux CI support for ",(0,o.kt)("inlineCode",{parentName:"li"},"lmdb-simple"),"."),(0,o.kt)("li",{parentName:"ul"},"We got pending diffusion pipelining improvements merged."))),(0,o.kt)("li",{parentName:"ul"},"Fostering collaboration:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"We are working on a explanation of Praos and Genesis protocols."))),(0,o.kt)("li",{parentName:"ul"},"Support:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},'Investigation of CSJ "plateaus" led us to developing a caching strategy for\n',(0,o.kt)("inlineCode",{parentName:"li"},"TICKF"),' that will not only remove these "plateaus", but can help alleviating\nthe growing block production delay on epoch switch.'),(0,o.kt)("li",{parentName:"ul"},"We reviewed the block forge credential hotswapping feature which is intended\nfor use in the adoption of P2P.")))),(0,o.kt)("h2",{id:"workstreams"},"Workstreams"),(0,o.kt)("h3",{id:"finish-the-utxo-hd-prototype"},"Finish the UTxO HD prototype"),(0,o.kt)("p",null,"We merged PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4060"},"#4060"),", which adds a report documenting the UTxO HD\nfeature, and puts emphasis in explaining how the mempool works in combination\nwith UTxO HD."),(0,o.kt)("p",null,"We opened a draft PR with the second iteration of the property tests for the\nmempool (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4076"},"#4076"),")."),(0,o.kt)("p",null,"We fixed the ",(0,o.kt)("inlineCode",{parentName:"p"},"Arbitrary")," instances for keys and values in ",(0,o.kt)("inlineCode",{parentName:"p"},"DiffSeq")," benchmarks\n(",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4143"},"#4143"),"). The problem was that we were testing with mostly small\nvalues, which artificially boosted the performance gains we saw on benhcmarks.\nSpeedups are now in the range of ","[3.33, 4.75]"," across the different\nconfigurations."),(0,o.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,o.kt)("p",null,"We focused on incorporating feedback on the monadic cursor API PR (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"#1"),").\nThis required us to make small tweaks to ",(0,o.kt)("inlineCode",{parentName:"p"},"quickcheck-lockstep")," to test the new\nAPI. We also updated the backing store property tests to use the new version of\nthe monadic cursor API."),(0,o.kt)("h3",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,o.kt)("p",null,'We worked on the LSM tree prototype. In particular: finished implementing a\n"parameter tuning algorithm" that adapts the LSM tree design based on factors\nlike:'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"workload"),(0,o.kt)("li",{parentName:"ul"},"machine specs, "),(0,o.kt)("li",{parentName:"ul"},"and characteristics of the data being stored. ")),(0,o.kt)("p",null,"We are now running experiments to gather results and cross-reference them with\nexisting experimental results from the LSM tree paper to see if the algorithm is\nworking correctly."),(0,o.kt)("h3",{id:"benchmarking-the-csj-prototype"},"Benchmarking the CSJ prototype"),(0,o.kt)("p",null,'We focused on investigating the "plateaus" in the ',(0,o.kt)("inlineCode",{parentName:"p"},"ChainSync")," tip, which turned\nout to be due to the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," bug which we previously were only aware of in the\ncontext of the long forging times near epoch boundaries. For the most drastic\npatch by @nfrisby to speed up ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF"),", full sync is speeding up by 7%."),(0,o.kt)("p",null,"The following plot shows that by caching the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," the ",(0,o.kt)("inlineCode",{parentName:"p"},"ChainSync")," tip and the\n",(0,o.kt)("inlineCode",{parentName:"p"},"VolatileDB")," tip progress at the same rate."),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(29287).Z,width:"765",height:"445"})),(0,o.kt)("p",null,"The plot below shows the speedup observed by caching the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," rule wrt the\nbaseline."),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(17885).Z,width:"773",height:"445"})),(0,o.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,o.kt)("p",null,"After addressing the PR comments, we merged PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/16"},"#16"),", which implements\nthe ",(0,o.kt)("inlineCode",{parentName:"p"},"MonadCatch")," instance for ",(0,o.kt)("inlineCode",{parentName:"p"},"STM"),". This extends the capability of our ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim"),"\nlibrary, which is crucial for testing and simulating Cardano components PR #16\nclosed ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/1461"},"#1461"),". This new feature was published as version ",(0,o.kt)("inlineCode",{parentName:"p"},"0.4.0.0"),"\nof ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim"),"."),(0,o.kt)("p",null,"We continued with our work fixing the ",(0,o.kt)("inlineCode",{parentName:"p"},"NoThunk")," errors required for enabling\nnightly tests, with the help of ",(0,o.kt)("inlineCode",{parentName:"p"},"TVarInvariant")," checks in ",(0,o.kt)("inlineCode",{parentName:"p"},"strict-stm")," and\n",(0,o.kt)("inlineCode",{parentName:"p"},"nothunks")," libraries. We proposed fixes in ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger")," that took care of\nthunks that appeared in era translations (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3143"},"#3143"),"). The fixes will be\nintegrated back into consensus when ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger")," approves and publish the\nchanges introduced in ",(0,o.kt)("inlineCode",{parentName:"p"},"#3143"),"."),(0,o.kt)("p",null,"We added CI support for ",(0,o.kt)("inlineCode",{parentName:"p"},"lmdb-simple")," (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/2"},"#2"),"). We currently test the build on\na Linux environment only."),(0,o.kt)("p",null,"We got pending diffusion pipelining PRs (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3857"},"#3857"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3860"},"#3860"),",\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3856"},"#3856"),") merged, after rebasing and addressing feedback."),(0,o.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,o.kt)("p",null,"@nfrisby finished a visualisation tool and outlined scripts for the Praos and\nGenesis explanation presentations. The idea is to produce a video that gives an\noverview of these protocols."),(0,o.kt)("h3",{id:"support"},"Support"),(0,o.kt)("p",null,"We started working on caching the computation of the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," rule\n(",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4054"},"#4054"),"), since this was blocking our benchmarking work for\nGenesis. In addition, this issue has the Cardano community ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4421"},"quite\nconcerned"),", so we are hoping the work done in caching the\ncomputation of the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," rule can help alleviating the growing block\nproduction delay on epoch switch."),(0,o.kt)("p",null,"We reviewed the block forge credential hotswapping PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3800"},"#3800")," from the\nnetworking team, which is intended for use in the adoption of P2P."))}d.isMDXComponent=!0},17885:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-16-comparing-TICKF-batch-c6570a71c4a5d53b10cb7309d2cc742c.png"},29287:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-16-removed-stuttering-e49aa27a0e549f0195373203da971ba7.png"}}]); \ No newline at end of file diff --git a/assets/js/89211367.d2f211db.js b/assets/js/89211367.d2f211db.js new file mode 100644 index 00000000000..dc52293cf56 --- /dev/null +++ b/assets/js/89211367.d2f211db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97421],{89635:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/33","page":33,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/32","nextPage":"/cardano-updates/page/34","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/89931013.c6ff4cfa.js b/assets/js/89931013.c6ff4cfa.js new file mode 100644 index 00000000000..8cb15c8aff6 --- /dev/null +++ b/assets/js/89931013.c6ff4cfa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[10173],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,r,a=function(e,t){if(null==e)return{};var i,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(i),d=a,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return i?r.createElement(c,o(o({ref:t},s),{},{components:i})):r.createElement(c,o({ref:t},s))}));function c(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,i)}d.displayName="MDXCreateElement"},34101:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-04-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-04-06-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-06-mithril.md",source:"@site/blog/2023-04-06-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-04-06T00:00:00.000Z",formattedDate:"April 6, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.075,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-04-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-07-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-05-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(h,(0,r.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team released a new ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2313.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2313.0"))," distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages."),(0,a.kt)("p",null,"Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.6"),"."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2313.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2313.0"))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that implements a relational store in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"epoch_settings")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/813"},"#813")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signed-entity-type")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/815"},"#815")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"certificate")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/817"},"#817")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"open_message")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/827"},"#827")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signer_registration")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/828"},"#828")))),(0,a.kt)("li",{parentName:"ul"},"Completed the refactoring of the dependency injection of the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/823"},"#823")),(0,a.kt)("li",{parentName:"ul"},"Completed the cleanup of the multi-signer of the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/824"},"#824")),(0,a.kt)("li",{parentName:"ul"},"Completed the upgrade of the Cardano node to ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35.6")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/843"},"#843"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/89a43a90.47af50cd.js b/assets/js/89a43a90.47af50cd.js new file mode 100644 index 00000000000..ea32bcb1858 --- /dev/null +++ b/assets/js/89a43a90.47af50cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[82939],{76907:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/sre/page/3","page":3,"postsPerPage":5,"totalPages":3,"totalCount":15,"previousPage":"/cardano-updates/tags/sre/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/8a6fc2ec.f5b11d20.js b/assets/js/8a6fc2ec.f5b11d20.js new file mode 100644 index 00000000000..1a689bce120 --- /dev/null +++ b/assets/js/8a6fc2ec.f5b11d20.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22154],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(r),h=a,m=s["".concat(u,".").concat(h)]||s[h]||c[h]||l;return r?n.createElement(m,o(o({ref:t},d),{},{components:r})):n.createElement(m,o({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,o=new Array(l);o[0]=h;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:a,o[1]=i;for(var p=2;p<l;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}h.displayName="MDXCreateElement"},82391:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-01-19-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-01-19-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-19-ledger.md",source:"@site/blog/2023-01-19-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-01-19T00:00:00.000Z",formattedDate:"January 19, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.665,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-01-19-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-01-20-sre"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-01-14-db-sync"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Restructuring the ledger state",id:"restructuring-the-ledger-state",level:3},{value:"PDF hosting",id:"pdf-hosting",level:3},{value:"Powering the new ledger API",id:"powering-the-new-ledger-api",level:3},{value:"Constraint-based generators",id:"constraint-based-generators",level:3},{value:"Technical debt",id:"technical-debt",level:3}],d={toc:p},s="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The ledger team completed some preliminary ground work in preparation for CIP-1694\n(restructuring the ledger state),\nfixed the PDF hosting problem (mostly the formal specs),\nbuilt out more of the new user-friendly ledger API,\nfinished a proof of concept for constraint-based generators for property tests\n(with the hopes of being able to replace our trace generators one day),\nand addressed technical debt."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("h3",{id:"restructuring-the-ledger-state"},"Restructuring the ledger state"),(0,a.kt)("p",null,"The existing governance structures will be replace in the conway ledger era,\nas described in CIP-1694.\nIn particular, the ledger rules will be restructured as follows:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"}," BBODY\n |\n |-------------------------------|\n v v\n TICK LEDGERS\n | |\n |---------| |\n v v v\n RUPD ~NEWEPOCH~ ~LEDGER~\n | |\n |----------| |--------|-------------------|-----------|\n v v v v v\n ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+\n | | |\n |---------|------------| v |\n v v v DELPL v\n SNAP POOLREAP -UPEC- | UTXO\n |--------| |\n v v v\n POOL DELEG ~UTXOS~\n\n-..- Removed\n+..+ Added\n~..~ Modified\n")),(0,a.kt)("p",null,"Moreover, the ledger state will also be restructured in accordance with the new rules.\nIn the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT.\nWe have also adapted all the data structures in the ledger state."),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3216"},"pull-3216"))),(0,a.kt)("h3",{id:"pdf-hosting"},"PDF hosting"),(0,a.kt)("p",null,"We now build all of our PDFs using a GitHub action which is triggered by pushing a tag\nwith a specific form, ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-ledger-spec-YYYY-MM-DD"),".\nThe action creates a GitHub release containing the PDFs.\nThe links in the main ledger README now point to the PDFs in the latest release."),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3245"},"pull-3245")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3260"},"pull-3260"))),(0,a.kt)("h3",{id:"powering-the-new-ledger-api"},"Powering the new ledger API"),(0,a.kt)("p",null,"We have now removed all the ",(0,a.kt)("inlineCode",{parentName:"p"},"HasField")," instances from the protocol parameter data types,\nand replaced them with lenses.\nThis is probably the last major restructuring that the ledger team will do on the code base\nfor the API for a while\n(the Plutus tools team will be working on it next, see ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/5"},"here"),").\nWe also added a new helpful function ",(0,a.kt)("inlineCode",{parentName:"p"},"ensureMinCoinTxOut"),"."),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3242"},"pull-3242")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3248"},"pull-3248"))),(0,a.kt)("h3",{id:"constraint-based-generators"},"Constraint-based generators"),(0,a.kt)("p",null,"Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks\nwhich span several epochs, mimicking a real network.\nThese tests are, in theory, excellent for checking properties.\nThey are, however, very difficult to maintain and are not as random as we would like\n(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks)."),(0,a.kt)("p",null,"We would like to switch to tests which instead generate a random ledger state representative\nof not just an initial state, generate a single random valid block, and then test our properties.\nThe hope is that these will be much more random and easier to maintain."),(0,a.kt)("p",null,"We have finished a proof of concept are encouraged that this approach could work!"),(0,a.kt)("p",null,"See:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"))),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3244"},"pull-3244")," massive CI speedup"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3249"},"pull-3249")," better types for fees in the protocol parameters"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3264"},"pull-3264")," move our annotator code to the ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-ledger-binary")," package where it belongs"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3239"},"pull-3239")," move the ",(0,a.kt)("inlineCode",{parentName:"li"},"Wdrls")," type to the ",(0,a.kt)("inlineCode",{parentName:"li"},"Core")," module.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8a766cbb.70e76067.js b/assets/js/8a766cbb.70e76067.js new file mode 100644 index 00000000000..33fda96f6fc --- /dev/null +++ b/assets/js/8a766cbb.70e76067.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24212],{4627:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/tags/consensus","allTagsPath":"/cardano-updates/tags","count":32}')}}]); \ No newline at end of file diff --git a/assets/js/8b4d9039.1f86965b.js b/assets/js/8b4d9039.1f86965b.js new file mode 100644 index 00000000000..8d3d4c0597c --- /dev/null +++ b/assets/js/8b4d9039.1f86965b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55202],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=l(n),m=a,f=p["".concat(c,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(f,s(s({ref:t},u),{},{components:n})):r.createElement(f,s({ref:t},u))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var l=2;l<o;l++)s[l]=n[l];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},81007:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-04-19-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-04-19-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-19-consensus.md",source:"@site/blog/2023-04-19-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-04-19T00:00:00.000Z",formattedDate:"April 19, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.77,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-04-19-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-20-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-19-performance-and-tracing"}},c={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This week the consensus team continued working on the improved DB lock mechanism\nfor UTxO-HD, and modifications to the mempool benchmarks that this prototype\nrequires."),(0,a.kt)("p",null,"On the Genesis front we validated that the fragment size calculation in\n",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch")," is a major performance sink for ChainSync Jumping. By removing it\nwe will get performance that is acceptably close to that of the baseline. We\nalso started investigating a performance fix that does not alter the existing\nbaseline behavior too much. In addition we reviewed our Genesis attack vector\ncalculations."),(0,a.kt)("p",null,"On the support front we released Consensus 0.4, and we are working on improving\nour release process, to support the Cardano-wide efforts in this area. We also\nperformed an analysis on the number of file descriptors that consensus use. This\ninformation can be used by the node operators to check if the number of file\ndescriptors they want to support are enough."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8bfc66fb.c75678d4.js b/assets/js/8bfc66fb.c75678d4.js new file mode 100644 index 00000000000..ba0ae60c600 --- /dev/null +++ b/assets/js/8bfc66fb.c75678d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15623],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=a,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||i;return r?n.createElement(h,o(o({ref:t},s),{},{components:r})):n.createElement(h,o({ref:t},s))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},69907:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-07-07-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-07-07-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-crypto.md",source:"@site/blog/2023-07-07-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.795,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-07-07-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-07-12-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-07-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"kes_agent",id:"kes_agent",level:3},{value:"Mithril",id:"mithril",level:3},{value:"Sidechains",id:"sidechains",level:3},{value:"CIPs and community",id:"cips-and-community",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sidechains: First version of snark-based ATMS"),(0,a.kt)("li",{parentName:"ul"},"mithril: Full node verifier"),(0,a.kt)("li",{parentName:"ul"},"kes_agent: Keep progress, and prepare CIP and CPS"),(0,a.kt)("li",{parentName:"ul"},"CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP")),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("h3",{id:"kes_agent"},"kes_agent"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"KES Agent CIP/CSP. Preparing documents. Will become public in the future."),(0,a.kt)("li",{parentName:"ul"},"KES Agent testsuite (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/14"},"https://github.com/input-output-hk/kes-agent/issues/14"),")"),(0,a.kt)("li",{parentName:"ul"},"RawBearer abstraction in ouroboros-network-framework (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395"},"https://github.com/input-output-hk/ouroboros-network/pull/4395"),")"),(0,a.kt)("li",{parentName:"ul"},"Maintaining required changes to cardano-base for KES Agent (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"https://github.com/input-output-hk/cardano-base/pull/317"),")")),(0,a.kt)("h3",{id:"mithril"},"Mithril"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Final review of the implementation of Full Node Verifier ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"),".\nIncluded benchmarks and further tests.")),(0,a.kt)("h3",{id:"sidechains"},"Sidechains"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Schnorr signature implemented"),(0,a.kt)("li",{parentName:"ul"},"ATMS signature implemented"),(0,a.kt)("li",{parentName:"ul"},"First benchmarks show that for the committe size we expect, we need 2^21 constraints. ")),(0,a.kt)("h3",{id:"cips-and-community"},"CIPs and community"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Addressed some review comments in ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/506"},"#PR506")),(0,a.kt)("li",{parentName:"ul"},"Worked with the communityt on ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/524"},"#PR524")," to include Keccak as part of the next Plutus release.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8c574ba2.ca3a46e5.js b/assets/js/8c574ba2.ca3a46e5.js new file mode 100644 index 00000000000..5c0ed537690 --- /dev/null +++ b/assets/js/8c574ba2.ca3a46e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78183],{60540:a=>{a.exports=JSON.parse('{"label":"performance-tracing","permalink":"/cardano-updates/quarterly/tags/performance-tracing","allTagsPath":"/cardano-updates/quarterly/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/8c6dbeca.57f339f6.js b/assets/js/8c6dbeca.57f339f6.js new file mode 100644 index 00000000000..6f52ee0490c --- /dev/null +++ b/assets/js/8c6dbeca.57f339f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96162],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=s(r),d=i,g=c["".concat(u,".").concat(d)]||c[d]||m[d]||n;return r?a.createElement(g,o(o({ref:t},p),{},{components:r})):a.createElement(g,o({ref:t},p))}));function g(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var s=2;s<n;s++)o[s]=r[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},32688:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Crypto Team Update",slug:"2023-02-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-17-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-crypto.md",source:"@site/blog/2023-02-17-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.43,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-02-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-02-21-db-sync"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-17-goedel"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"MuSig2",id:"musig2",level:3}],p={toc:s},c="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,i.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration."),(0,i.kt)("li",{parentName:"ul"},"cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus."),(0,i.kt)("li",{parentName:"ul"},"KES agent: using snockets and making things testable in IOSim"),(0,i.kt)("li",{parentName:"ul"},"MuSig2: started implementation in rust.")),(0,i.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,i.kt)("h3",{id:"mithril"},"Mithril"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Transmute helpers merged ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/722"},"PR#722")),(0,i.kt)("li",{parentName:"ul"},"We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope. "),(0,i.kt)("li",{parentName:"ul"},"We are working in a modification of KES to require caller to allocate the secret key buffer."),(0,i.kt)("li",{parentName:"ul"},"Proposed a solution for signer registration of ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/wiki/Mithril-registration-procedure#cost"},"Mithril"),".")),(0,i.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus/tree/kwxm/BLS12_381/prototype/plutus-benchmark/bls-benchmarks"},"proof"),".",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Results are promising, with using only 23% of the execution budget to verify a realistic proof. "),(0,i.kt)("li",{parentName:"ul"},"Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril."))),(0,i.kt)("li",{parentName:"ul"},"KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this."),(0,i.kt)("li",{parentName:"ul"},"Conversion finally merged ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/344"},"PR#344"),".")),(0,i.kt)("h3",{id:"kes-agent"},"KES agent"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation"),(0,i.kt)("li",{parentName:"ul"},"Figuring out how to go from fake file descriptor to write the raw bytes")),(0,i.kt)("h3",{id:"musig2"},"MuSig2"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8c75942c.5e08e3a4.js b/assets/js/8c75942c.5e08e3a4.js new file mode 100644 index 00000000000..cb8afdde6ce --- /dev/null +++ b/assets/js/8c75942c.5e08e3a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3530],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>c});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},h=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(r),d=i,c=s["".concat(p,".").concat(d)]||s[d]||m[d]||n;return r?a.createElement(c,o(o({ref:t},h),{},{components:r})):a.createElement(c,o({ref:t},h))}));function c(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:i,o[1]=l;for(var u=2;u<n;u++)o[u]=r[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},6905:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-02-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-09-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-09-mithril.md",source:"@site/blog/2023-02-09-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-02-09T00:00:00.000Z",formattedDate:"February 9, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.01,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-02-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-10-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-08-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(s,(0,a.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team released a new ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2304.1"},(0,i.kt)("inlineCode",{parentName:"a"},"2304.1"))," distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store."),(0,i.kt)("p",null,"Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version ",(0,i.kt)("inlineCode",{parentName:"p"},"1.35.5")," on their ",(0,i.kt)("inlineCode",{parentName:"p"},"devnet")," and infrastructure."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2304.1"},(0,i.kt)("inlineCode",{parentName:"a"},"2304.1"))),(0,i.kt)("li",{parentName:"ul"},"Fixed a bug that prevented some signers to sign with ",(0,i.kt)("inlineCode",{parentName:"li"},"2304.0-prerelease")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/716"},"#716")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an ",(0,i.kt)("inlineCode",{parentName:"li"},"EraChecker")," that checks if an era is active ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/708"},"#708")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an ",(0,i.kt)("inlineCode",{parentName:"li"},"EraReader")," that gathers era activation data ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/709"},"#709")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an ",(0,i.kt)("inlineCode",{parentName:"li"},"EraReader")," adapter with on chain transaction as source ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/710"},"#710")),(0,i.kt)("li",{parentName:"ul"},"Completed the relational design of the aggregator store ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/476"},"#476")),(0,i.kt)("li",{parentName:"ul"},"Completed adding a new SPO on the ",(0,i.kt)("inlineCode",{parentName:"li"},"testing-preview")," network ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/729"},"#729")),(0,i.kt)("li",{parentName:"ul"},"Completed the upgrade of the Cardano node to ",(0,i.kt)("inlineCode",{parentName:"li"},"1.35.5")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/725"},"#725")),(0,i.kt)("li",{parentName:"ul"},"Fixed flakiness in the CI ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/734"},"#734"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8ccf5d9f.108f5ee1.js b/assets/js/8ccf5d9f.108f5ee1.js new file mode 100644 index 00000000000..8d00e7e2e61 --- /dev/null +++ b/assets/js/8ccf5d9f.108f5ee1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[66649],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),h=n,m=c["".concat(u,".").concat(h)]||c[h]||d[h]||o;return r?a.createElement(m,i(i({ref:t},s),{},{components:r})):a.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}h.displayName="MDXCreateElement"},78367:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-10-14-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-14-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-14-ledger.md",source:"@site/blog/2022-10-14-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-10-14T00:00:00.000Z",formattedDate:"October 14, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.03,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-10-14-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-14-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-05-consensus"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Completed Technical Debt",id:"completed-technical-debt",level:3},{value:"In-progress Technical Debt",id:"in-progress-technical-debt",level:3}],s={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The ledger team is still primarily focused on addressing\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues?q=is%3Aissue+is%3Aopen+label%3A%22%3Acredit_card%3A+technical-debt%22"},"technical"),"\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/3"},"debt"),".\nWe now have the infrastructure for versioning our serialization schemes,\nwhich we continue to put into action.\nWe have made first steps towards getting proper support for the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger repository"),"\n(in particular, we've added nix builds and\ncontinuous integration support).\nWe are wrapping up an investigation of the performance of a critical\nfunction used by the consensus layer for leader checks.\nFinally, we are improving the packaging and versioning of our code."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"completed-technical-debt"},"Completed Technical Debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of\nour code lives in the ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-ledger-shelley")," package, though with hindsight we can say that\nmuch of it should live in ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-ledger-core"),".\nWe continue to move things to ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-ledger-core"),", and have much more to come. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3059"},"pull-3059"),"]"),(0,n.kt)("li",{parentName:"ul"},"We now have the infrastructure to support ",(0,n.kt)("strong",{parentName:"li"},"versioned")," serialization schemes.\nThe inability to do this has caused us a lot difficulties,\nsuch as [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3003"},"issue-3003"),"], [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2965"},"issue-2965"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2444"},"issue-2444"),"].\nWe are still in the process of switching to the versioned serialization scheme\n(such as [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3078"},"pull-3078"),"]),\nbut the infrastructure was completed in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3063"},"pull-3063"),"]."),(0,n.kt)("li",{parentName:"ul"},"We now have proper nix and CI support for the formal ledger project. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/19"},"pull-19"),"]"),(0,n.kt)("li",{parentName:"ul"},"A separate team is helping bring support for\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP"),"\nto all the cardano-node repositories.\nWe have been helping out with this effort.")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A separate team continues working on upgrading all the\ncardano-node repositories to work with ghc 9.2.4.\nWe have been helping out with this effort.")),(0,n.kt)("h3",{id:"in-progress-technical-debt"},"In-progress Technical Debt"),(0,n.kt)("p",null,"We also have several fairly large pull-requests in review\nthat we are working on."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"In an on-going attempt to build out a more user-friendly API,\nwe continue to remove ",(0,n.kt)("inlineCode",{parentName:"li"},"HasField")," instances in place of using micro-lenses.\nThe protocol parameters, in particular, are being worked on. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3045"},"pull-3045"),"]"),(0,n.kt)("li",{parentName:"ul"},"We are also renaming record fields to be consistent across the repository. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3062"},"pull-3062"),"]"),(0,n.kt)("li",{parentName:"ul"},"We are now cleaning up all the work we did to understand the performance\nof the TICKF transition. We have some improvements to the computatation\nas well. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3068"},"pull-3068"),"]"),(0,n.kt)("li",{parentName:"ul"},"We are adding more documentation, in particular to our ",(0,n.kt)("inlineCode",{parentName:"li"},"Twiddler")," functionality. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3073"},"pull-3073"),"]"),(0,n.kt)("li",{parentName:"ul"},"The formal ledger is adding support for finite set theory. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/20"},"pull-20"),"]")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8cd47ea9.cf455658.js b/assets/js/8cd47ea9.cf455658.js new file mode 100644 index 00000000000..baf19e04096 --- /dev/null +++ b/assets/js/8cd47ea9.cf455658.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58628],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(a),h=n,m=u["".concat(p,".").concat(h)]||u[h]||d[h]||i;return a?r.createElement(m,o(o({ref:t},c),{},{components:a})):r.createElement(m,o({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<i;s++)o[s]=a[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},31550:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2022-10-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-10-21-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-21-hydra.md",source:"@site/blog/2022-10-21-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-10-21T00:00:00.000Z",formattedDate:"October 21, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.97,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-10-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-10-27-crypto"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-19-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],c={toc:s},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team reviewed and addressed several open comments on the\nnew HeadV1 specification, completing a list the of identified gaps between\nspecification and implementation while doing so. In the wake of the recent\ndemonstration of SundaeSwap running their DEX in a Hydra Head, they met with\nthem to capture feature ideas & incorporate their feedback on the roadmap, as\nwell as potential research avenues."),(0,n.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Had the monthly review meeting, a bit earlier than expected: ",(0,n.kt)("a",{parentName:"li",href:"https://input-output.atlassian.net/wiki/spaces/HYDRA/pages/3650813953/Monthly+report+-+October+2022"},"https://input-output.atlassian.net/wiki/spaces/HYDRA/pages/3650813953/Monthly+report+-+October+2022")),(0,n.kt)("li",{parentName:"ul"},"Reviewed and addressed several open comments on HeadV1 specification."),(0,n.kt)("li",{parentName:"ul"},"Completed the list of identified gaps between specification and implementation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Had two meetings with SundaeSwap to incorporate their feedback (on research and on the roadmap)."),(0,n.kt)("li",{parentName:"ul"},"Some small fixes on TUI and our docker images. ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/538"},"#538")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/562"},"#562")),(0,n.kt)("li",{parentName:"ul"},"Met with the internal audit team and clarified scope.")),(0,n.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete the last two items required for a version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.8.0"),"."),(0,n.kt)("li",{parentName:"ul"},"Cut the next release, version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.8.0")),(0,n.kt)("li",{parentName:"ul"},"Get backup/recovery ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/187"},"#187")," done with proper event sourcing (ADR18)"),(0,n.kt)("li",{parentName:"ul"},"Have the CI build macos artifacts")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d0075ff.7598228c.js b/assets/js/8d0075ff.7598228c.js new file mode 100644 index 00000000000..9673c793f79 --- /dev/null +++ b/assets/js/8d0075ff.7598228c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[99750],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),d=o,m=c["".concat(u,".").concat(d)]||c[d]||h[d]||a;return n?r.createElement(m,s(s({ref:t},p),{},{components:n})):r.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:o,s[1]=i;for(var l=2;l<a;l++)s[l]=n[l];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},65389:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-09-20-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-20-consensus.md",source:"@site/blog/2023-09-20-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-09-20T00:00:00.000Z",formattedDate:"September 20, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.82,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-22-performance-and-tracing"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-20-mithril"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Support",id:"support",level:3}],p={toc:l},c="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks.\nWe are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough.\nOn the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain.\nWe also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway."),(0,o.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/349"},"349"),"). System level benchmark results are pending."),(0,o.kt)("li",{parentName:"ul"},"Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"344"),"), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run."),(0,o.kt)("li",{parentName:"ul"},"We also brought the ",(0,o.kt)("inlineCode",{parentName:"li"},"UTxO-HD")," branch up to date with node version ",(0,o.kt)("inlineCode",{parentName:"li"},"8.4.0"),".")),(0,o.kt)("h3",{id:"genesis"},"Genesis"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain.\nWe are now drafting the final self-contained argument. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4157"},"4157"),")")),(0,o.kt)("h3",{id:"support"},"Support"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We debugged a bad parameter update on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Babbage")," to ",(0,o.kt)("inlineCode",{parentName:"li"},"Conway")," transition in the SanchoNet testnet (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/339"},"339"),").\nA superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/340"},"340"),", ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/354"},"354"),", and ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/355"},"355"),")\nHowever we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ",(0,o.kt)("inlineCode",{parentName:"li"},"ConsensusProtocol")," type class and the ",(0,o.kt)("inlineCode",{parentName:"li"},"HardForkBlock")," combinator (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/345"},"345")," and ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/346"},"346"),"). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d209506.e4591885.js b/assets/js/8d209506.e4591885.js new file mode 100644 index 00000000000..2744533c84c --- /dev/null +++ b/assets/js/8d209506.e4591885.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32936],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=s(a),m=n,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||i;return a?r.createElement(h,o(o({ref:t},p),{},{components:a})):r.createElement(h,o({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<i;s++)o[s]=a[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},58373:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Crypto Team Update",slug:"2023-01-20-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-20-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-crypto.md",source:"@site/blog/2023-01-20-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-01-20-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-01-25-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-20-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3}],p={toc:s},c="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: We explored whether some uses of ",(0,n.kt)("inlineCode",{parentName:"li"},"transmute")," could be removed, but it resulted in considerable regression. "),(0,n.kt)("li",{parentName:"ul"},"cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: An inconsistency between ",(0,n.kt)("inlineCode",{parentName:"li"},"contra-tracer")," available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the ",(0,n.kt)("inlineCode",{parentName:"li"},"contra-tracer")," used by consensus. ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/675"},"PR#675"),". We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing. "),(0,n.kt)("li",{parentName:"ul"},"We are writing a RFP for the audit of the core library. ")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A problem with Nix is blocking merge of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#341")),(0,n.kt)("li",{parentName:"ul"},"Plutus team ran ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus/blob/kwxm/BLS12_381/prototype/plutus-benchmark/bls-benchmarks/Main.hs"},"benchmarks")," of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution."),(0,n.kt)("li",{parentName:"ul"},"Team is fully digesting the Plonk paper. "),(0,n.kt)("li",{parentName:"ul"},"There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used. ")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A little unforseen delay has been caused by a mismatch in the use of ",(0,n.kt)("inlineCode",{parentName:"li"},"contra-tracer"),". The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255/commits/39b2d9473aa296976825248360a73cf066065431"},"doing the change"),", but still the CI is not happy."),(0,n.kt)("li",{parentName:"ul"},"The ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317/commits/39b2d9473aa296976825248360a73cf066065431"},"same")," was needed for the KES agents prerequisites ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"PR#317"),"."),(0,n.kt)("li",{parentName:"ul"},"We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d306cf9.aa58ca4c.js b/assets/js/8d306cf9.aa58ca4c.js new file mode 100644 index 00000000000..9ef89605bd3 --- /dev/null +++ b/assets/js/8d306cf9.aa58ca4c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18144],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(r),c=n,d=m["".concat(s,".").concat(c)]||m[c]||h[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},9865:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-11-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-01-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-01-mithril.md",source:"@site/blog/2023-11-01-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-01T00:00:00.000Z",formattedDate:"November 1, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.895,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-01-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-27-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},m="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the ",(0,n.kt)("inlineCode",{parentName:"p"},"release-mainnet")," aggregator."),(0,n.kt)("p",null,"Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P Networking - Proof of Concept")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Build ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-common")," and ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," in WASM PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1284"},"#1284")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Fix ",(0,n.kt)("inlineCode",{parentName:"strong"},"devnet")," Mithril Docker images")," ","[#1272]","(",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1272"},"https://github.com/input-output-hk/mithril/issues/1272")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1311"},"#1311")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano UTxO set PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Client regressions in snapshot list and download")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1321"},"#1321"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d3da32e.efff0598.js b/assets/js/8d3da32e.efff0598.js new file mode 100644 index 00000000000..d1b05c2aba0 --- /dev/null +++ b/assets/js/8d3da32e.efff0598.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[84877],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(r),m=n,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||o;return r?a.createElement(h,l(l({ref:t},u),{},{components:r})):a.createElement(h,l({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var p=2;p<o;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},92122:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Node Release Team Update",slug:"2022-11-02-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-11-02-release",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-release.md",source:"@site/blog/2022-11-02-release.md",title:"Node Release Team Update",description:"Node Reelease Update",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:.445,hasTruncateMarker:!1,authors:[{name:"Samuel Leathers",title:"Service Reliability Manager",url:"https://github.com/disassembler",imageURL:"https://github.com/disassembler.png",key:"disassembler"}],frontMatter:{title:"Node Release Team Update",slug:"2022-11-02-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-02-node-cli-api"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-11-02-system-test"}},s={authorsImageUrls:[void 0]},p=[{value:"Node Reelease Update",id:"node-reelease-update",level:2},{value:"2022-10-19 - 2022-11-02",id:"2022-10-19---2022-11-02",level:2},{value:"Executive Summary",id:"executive-summary",level:3},{value:"Completed",id:"completed",level:3},{value:"In Progress",id:"in-progress",level:3}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"node-reelease-update"},"Node Reelease Update"),(0,n.kt)("h2",{id:"2022-10-19---2022-11-02"},"2022-10-19 - 2022-11-02"),(0,n.kt)("h3",{id:"executive-summary"},"Executive Summary"),(0,n.kt)("p",null,"The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset,\na temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8."),(0,n.kt)("p",null,"1.35.4 release candidates have been created and are being tested internally and externally."),(0,n.kt)("h3",{id:"completed"},"Completed"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/commits/1.35.4-rc1"},"1.35.4-rc1 tag")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/commits/1.35.4-rc1"},"1.35.4-rc2 tag (config changes only for preview)")),(0,n.kt)("li",{parentName:"ul"},"[CHaP Migration]"," (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4540"},"https://github.com/input-output-hk/cardano-node/pull/4540"),")")),(0,n.kt)("h3",{id:"in-progress"},"In Progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/commits/release/1.35"},"Release 1.35.4")),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.4_rc1/src_docs/source/test_results/node/tag_1_35_4_rc1.rst"},"Test Status")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-updates/2022-08-12-sre"},"Cicero CI Migration")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8e410d22.c34ee40e.js b/assets/js/8e410d22.c34ee40e.js new file mode 100644 index 00000000000..00508033219 --- /dev/null +++ b/assets/js/8e410d22.c34ee40e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25272],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>d});var a=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,a,n=function(e,t){if(null==e)return{};var i,a,n={},r=Object.keys(e);for(a=0;a<r.length;a++)i=r[a],t.indexOf(i)>=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)i=r[a],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},h=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var i=e.components,n=e.mdxType,r=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(i),c=n,d=u["".concat(p,".").concat(c)]||u[c]||m[c]||r;return i?a.createElement(d,o(o({ref:t},h),{},{components:i})):a.createElement(d,o({ref:t},h))}));function d(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=i.length,o=new Array(r);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<r;s++)o[s]=i[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,i)}c.displayName="MDXCreateElement"},54212:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=i(87462),n=(i(67294),i(3905));const r={title:"Mithril Team Update",slug:"2023-03-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-23-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-23-mithril.md",source:"@site/blog/2023-03-23-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-03-23T00:00:00.000Z",formattedDate:"March 23, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.615,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-03-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-03-23-db-sync"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-22-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:s},u="wrapper";function m(e){let{components:t,...i}=e;return(0,n.kt)(u,(0,a.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team released a new ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2310.0"},(0,n.kt)("inlineCode",{parentName:"a"},"2310.0"))," distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images."),(0,n.kt)("p",null,"Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano ",(0,n.kt)("inlineCode",{parentName:"p"},"mainnet")," and they have fixed some bugs. "),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the epic that implements eras behavior switch ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/707"},"#707"),":",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Completed handling the API version switch at era transition ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/727"},"#727")))),(0,n.kt)("li",{parentName:"ul"},"Worked on the epic that implements a relational store in the aggregator ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Completed on the migration/adaptation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"stake_pool")," table ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/787"},"#787")),(0,n.kt)("li",{parentName:"ul"},"Worked on the migration/adaptation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"epoch_settings")," table ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/813"},"#813")),(0,n.kt)("li",{parentName:"ul"},"Worked on the migration/adaptation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"signed-entity-type")," table ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/815"},"#815")),(0,n.kt)("li",{parentName:"ul"},"Completed the creation of a stake distribution service ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/799"},"#799")))),(0,n.kt)("li",{parentName:"ul"},"Completed the testing of Mithril with Cardano ",(0,n.kt)("inlineCode",{parentName:"li"},"mainnet")," network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/777"},"#777")),(0,n.kt)("li",{parentName:"ul"},"Completed qualifying the computation of the stake distribution ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/810"},"#810")),(0,n.kt)("li",{parentName:"ul"},"Completed the testing of the Docker client in the ",(0,n.kt)("inlineCode",{parentName:"li"},"Mithril Client multi-platform test")," workflow ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/794"},"#794")),(0,n.kt)("li",{parentName:"ul"},"Worked on bugs and optimizations:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Fixed a bug that made computation of the stake distribution occur multiple times during an epoch ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/804"},"#804")),(0,n.kt)("li",{parentName:"ul"},"Fixed a bug that created deadlocks on the SQLite connection ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/807"},"#807")),(0,n.kt)("li",{parentName:"ul"},"Optimized the error message and the behavior of the signer node when KES keys have expired ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/820"},"#820")),(0,n.kt)("li",{parentName:"ul"},"Upgraded the infrastructure of the ",(0,n.kt)("inlineCode",{parentName:"li"},"testing-preview")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"pre-release-preview")," networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/801"},"#801")),(0,n.kt)("li",{parentName:"ul"},"Re-genesis of the ",(0,n.kt)("inlineCode",{parentName:"li"},"testing-preview")," network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/803"},"#803")),(0,n.kt)("li",{parentName:"ul"},"Re-genesis of the ",(0,n.kt)("inlineCode",{parentName:"li"},"pre-release-preview")," network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/818"},"#818"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8ed15298.d65354c1.js b/assets/js/8ed15298.d65354c1.js new file mode 100644 index 00000000000..d04ee12d635 --- /dev/null +++ b/assets/js/8ed15298.d65354c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[9928],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function o(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),d=u(a),h=r,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||i;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=h;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[d]="string"==typeof t?t:r,l[1]=o;for(var u=2;u<i;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},5378:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-07-04-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-07-04-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-04-node-cli-api.md",source:"@site/blog/2023-07-04-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-07-04T00:00:00.000Z",formattedDate:"July 4, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.495,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-07-04-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-07-04-db-sync"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-30-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},d="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-06-21---2023-07-04"},"2023-06-21 - 2023-07-04"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Started integration of conway era into the cardano-api,"),(0,r.kt)("li",{parentName:"ul"},'Pre-release of cardano-cli 8.2.1 which enables creating goveranance "Update constitution" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.'),(0,r.kt)("li",{parentName:"ul"},"Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities."),(0,r.kt)("li",{parentName:"ul"},"Continue refactoring cardano-testnet"),(0,r.kt)("li",{parentName:"ul"},"CI and docs house keeping on the new cardnao-cli and cardano-api repositories")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/60"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.7.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/44"},"Release 8.2.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/39"},"Use new function-based API instead of using query data types directly"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/94"},"Release cardano-api 8.7")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/92"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.6.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/90"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.2.0.0.1.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/88"},"Backport: Add era phantom type parameter to Certificate")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/86"},"Parameterise ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate")," type with phantom ",(0,r.kt)("inlineCode",{parentName:"a"},"era")," type argument")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/85"},"Voting procedure and proposal procedure updates")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/84"},"Parameterise ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate")," with ",(0,r.kt)("inlineCode",{parentName:"a"},"era"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/83"},"Parameterise ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate")," type with phantom ",(0,r.kt)("inlineCode",{parentName:"a"},"era")," type argument")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/79"},"Add contributing guide")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/77"},"Unified ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra")," constraint summoning")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/70"},"Update CHaP index")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/41"},"CIP-1694 API - Part 1"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5356"},"cardano-node top level error handler")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5353"},"Turn on some traces by default"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5364"},"Report payment address and UTxOs in testnets")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5362"},"New Conway ",(0,r.kt)("inlineCode",{parentName:"a"},"stake-snapshot")," tests"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/79"},"Add contributing guide")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/33"},"Release workflow description")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5353"},"Turn on some traces by default"))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/75"},"Add PR changelog check")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/71"},"Fix stylish haskell in github action workflow")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/62"},"Enable CI on PRs from forks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/53"},"Remove merge_group trigger from changelog check CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/46"},"Add PR changelog check. Add core-tech group to GHA description codeowners.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/41"},"Fix stylish haskell in github action workflow")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/40"},"Enable CI in PRs from forks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/48"},"Add contributing guide"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8f7e10a3.d241f9ad.js b/assets/js/8f7e10a3.d241f9ad.js new file mode 100644 index 00000000000..541dd950e2d --- /dev/null +++ b/assets/js/8f7e10a3.d241f9ad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72033],{79573:a=>{a.exports=JSON.parse('{"title":"Tutorial - Basics","description":"5 minutes to learn the most important Docusaurus concepts.","slug":"/category/tutorial---basics","permalink":"/cardano-updates/docs/category/tutorial---basics","navigation":{"previous":{"title":"Tutorial Intro","permalink":"/cardano-updates/docs/intro"},"next":{"title":"Create a Page","permalink":"/cardano-updates/docs/tutorial-basics/create-a-page"}}}')}}]); \ No newline at end of file diff --git a/assets/js/8fddd37c.2e76cb01.js b/assets/js/8fddd37c.2e76cb01.js new file mode 100644 index 00000000000..e96abea0590 --- /dev/null +++ b/assets/js/8fddd37c.2e76cb01.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25778],{55797:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/26","page":26,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/25","nextPage":"/cardano-updates/page/27","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/8fe062a7.d7311ede.js b/assets/js/8fe062a7.d7311ede.js new file mode 100644 index 00000000000..77812fc1354 --- /dev/null +++ b/assets/js/8fe062a7.d7311ede.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21597],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=s(a),d=n,g=c["".concat(p,".").concat(d)]||c[d]||m[d]||o;return a?r.createElement(g,l(l({ref:t},u),{},{components:a})):r.createElement(g,l({ref:t},u))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var s=2;s<o;s++)l[s]=a[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},17331:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-10-27-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-10-27-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-sre.md",source:"@site/blog/2023-10-27-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-10-27T00:00:00.000Z",formattedDate:"October 27, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.405,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-10-27-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-27-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-25-mithril"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3}],u={toc:s},c="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground")," stack")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Adds offchain-metadata-tools, dbsync sanchonet updates: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/b197e22...b1f1cbd"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"General package updates, modules improvements and template recipes to support network migration from world to playground ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/17"},"cardano-parts-pull-17"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Bumps cardano-db-sync-ng to sancho-2-0-0 tag"),(0,n.kt)("li",{parentName:"ul"},"Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play"),(0,n.kt)("li",{parentName:"ul"},"Adds more machine system bins and devShell bins for scripting and debug purposes"),(0,n.kt)("li",{parentName:"ul"},"Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module"),(0,n.kt)("li",{parentName:"ul"},"Adds profile-cardano-node-topology module for a simplified interface to most common topology needs"),(0,n.kt)("li",{parentName:"ul"},"Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs"),(0,n.kt)("li",{parentName:"ul"},"Adds a topology function to filter self from group machines with an allowList for matching infixes"),(0,n.kt)("li",{parentName:"ul"},"Adds metadata-server and related offchain-metadata-tools bins from capkgs"),(0,n.kt)("li",{parentName:"ul"},"Updates justfile template with:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"a new query-all recipe for getting status of multiple concurrent running environments"),(0,n.kt)("li",{parentName:"ul"},"a new set-default-cardano-env recipe for fast switching between environments"),(0,n.kt)("li",{parentName:"ul"},"a new start-demo recipe for forking a custom env into conway"),(0,n.kt)("li",{parentName:"ul"},"a new start-node recipe for generic environment start"),(0,n.kt)("li",{parentName:"ul"},"a new stop-node recipe for generic environment stop"),(0,n.kt)("li",{parentName:"ul"},"updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions"),(0,n.kt)("li",{parentName:"ul"},"updated query-tip recipe to a generic query tip compatible with each environment")))))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migrates sanchonet from world, prepares further migration and support automation: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/4"},"cardano-playground-pull-4"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8fea44ca.9d9d62e9.js b/assets/js/8fea44ca.9d9d62e9.js new file mode 100644 index 00000000000..4a59f8a7503 --- /dev/null +++ b/assets/js/8fea44ca.9d9d62e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97517],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(n),c=o,m=d["".concat(l,".").concat(c)]||d[c]||h[c]||r;return n?a.createElement(m,s(s({ref:t},u),{},{components:n})):a.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,s=new Array(r);s[0]=c;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:o,s[1]=i;for(var p=2;p<r;p++)s[p]=n[p];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},11611:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2023-01-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-01-25-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-25-consensus.md",source:"@site/blog/2023-01-25-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-01-25T00:00:00.000Z",formattedDate:"January 25, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.27,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-01-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-26-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-01-25-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Support",id:"support",level:3}],u={toc:p},d="wrapper";function h(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"During the past two weeks, the consensus team finished the testing activities\naround the UTxO-HD prototype. This is a very important milestone which will\nenable us to run system-level tests and benchmarks, as well as start refactoring\nand cleaning the prototype. Regarding our Genesis workstream, we elaborated a\nroadmap that gives an indication of the remaining work. We also continued our\nwork on benchmarking chain-sync-jumping. We also continued working on improving\nthe way we handle blocks from the future, and advancing the integration of the\nnew VRF and KES crypto."),(0,o.kt)("h2",{id:"workstreams"},"Workstreams"),(0,o.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,o.kt)("p",null,"As the prototype is nearing its completion, it was important to have enough\nconfidence that we will be able to move additional parts of the ledger state\nonto disk. We worked together with the Ledger team to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4296"},"elaborate a\nsketch")," on how the UTxO-HD design would accommodate the migration of\nadditional data from memory to disk. This gave us enough confidence that the\ncurrent architecture will be extensible in the future."),(0,o.kt)("p",null,"On the testing front, we ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4274"},"added")," property-based tests for the UTxO-HD\ntype classes. "),(0,o.kt)("p",null,"We also ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4289"},"enabled disabled components"),", and addressed several\ntechnical debt issues:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Implement ",(0,o.kt)("inlineCode",{parentName:"li"},"splitSized")," anti-diff split (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4269"},"#4269"),"), and integrate it\ninto consensus (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4273"},"#4273"),")."),(0,o.kt)("li",{parentName:"ul"},"Renaming of ",(0,o.kt)("inlineCode",{parentName:"li"},"peekVal")," to ",(0,o.kt)("inlineCode",{parentName:"li"},"peekMDBVal")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/7"},"#7"),").")),(0,o.kt)("p",null,"We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We\nfound a race condition in the LMDB backing store, which ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4283"},"we fixed"),".\nAfter the fix we were able to successfully run these benchmarks. The results\nwere published by ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4295"},"this pull request"),"."),(0,o.kt)("p",null,"We used our ",(0,o.kt)("inlineCode",{parentName:"p"},"db-analyser")," tool to benchmark the cost of reading keys and\nflushing values to disk. The following plot shows the duration of these disk\noperation in relation to the main ledger operations, where we can see that the\ncost of the former are comparatively low. The spike at the beginning of the\ngraph is when, at the start of the Shelley era, the ",(0,o.kt)("em",{parentName:"p"},"entire")," UTxO set is flushed\nto disk."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"UTxO-HD read and flush benchmarks",src:n(90595).Z,width:"1600",height:"800"})),(0,o.kt)("p",null,"After months of hard work adding tests for the prototype, we are ready to run\nend-to-end tests on the node, and system level benchmarks. This signals a very\nimportant milestone for the UTxO-HD workstream \ud83c\udf89."),(0,o.kt)("h3",{id:"genesis"},"Genesis"),(0,o.kt)("p",null,"We elaborated a ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/blob/a626c84f6df585dd27d735eb7eec73904a1f570e/ouroboros-consensus/docs/2023-Jan-Genesis-roadmap.md"},"high-level decomposition")," of the remaining\nwork for Genesis. We also continued benchmarking the chain-sync-jumping\nhappy-path."),(0,o.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,o.kt)("p",null,"We continued working on improving the way we handle blocks from the future."),(0,o.kt)("h3",{id:"support"},"Support"),(0,o.kt)("p",null,"We completed the mapping of ",(0,o.kt)("inlineCode",{parentName:"p"},"Crypto")," to ",(0,o.kt)("inlineCode",{parentName:"p"},"HeaderCrypto")," and body ",(0,o.kt)("inlineCode",{parentName:"p"},"Crypto"),".\n",(0,o.kt)("inlineCode",{parentName:"p"},"HeaderCrypto")," is moved to ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-protocol-tpraos"),". We created a draft ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3262"},"pull\nrequest")," to facilitate compiling consensus."))}h.isMDXComponent=!0},90595:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks-6b129a1acaa4bb48443ee81add51fd39.png"}}]); \ No newline at end of file diff --git a/assets/js/90bf9c2d.ecec42d7.js b/assets/js/90bf9c2d.ecec42d7.js new file mode 100644 index 00000000000..f615c092bed --- /dev/null +++ b/assets/js/90bf9c2d.ecec42d7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32035],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>d});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,r,a=function(e,t){if(null==e)return{};var i,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(i),c=a,d=s["".concat(p,".").concat(c)]||s[c]||m[c]||n;return i?r.createElement(d,o(o({ref:t},h),{},{components:i})):r.createElement(d,o({ref:t},h))}));function d(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,i)}c.displayName="MDXCreateElement"},91041:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-05-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-04-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-04-mithril.md",source:"@site/blog/2023-05-04-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-05-04T00:00:00.000Z",formattedDate:"May 4, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.56,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-05-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-05-node-cli-api"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-03-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(s,(0,r.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.7"),"."),(0,a.kt)("p",null,"Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implements generic signing/verification of entity services ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"Certifier")," service in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/850"},"#850")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the signable builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Mithril Stake Distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/851"},"#851")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the artifact builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Mithril Stake Distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/870"},"#870")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the signable builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Full Immutables Snapshot")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/852"},"#852")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the artifact builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Full Immutables Snapshot")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/871"},"#871")),(0,a.kt)("li",{parentName:"ul"},"Completed the adaptation of the aggregator runtime to use the signable builder service ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/853"},"#853")),(0,a.kt)("li",{parentName:"ul"},"Worked on the adaptation of the signer runtime to use the signable builder service ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/854"},"#854")),(0,a.kt)("li",{parentName:"ul"},"Completed the definition of the entity service interface for verification/restoration ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/868"},"#868")),(0,a.kt)("li",{parentName:"ul"},"Completed the refactoring of the ",(0,a.kt)("inlineCode",{parentName:"li"},"OpenMessage")," type ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/878"},"#878")))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic that simplifies the multi-signer in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/398"},"#398"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the extraction of the single signature registration from the multi-signer ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/643"},"#643")))),(0,a.kt)("li",{parentName:"ul"},"Completed the upgrade of the Cardano node to version ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35.7")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/881"},"#881")),(0,a.kt)("li",{parentName:"ul"},"Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/873"},"#873"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/90cc522f.bcba69c4.js b/assets/js/90cc522f.bcba69c4.js new file mode 100644 index 00000000000..44080a46e4d --- /dev/null +++ b/assets/js/90cc522f.bcba69c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75696],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(s,".").concat(c)]||d[c]||h[c]||o;return a?r.createElement(m,i(i({ref:t},u),{},{components:a})):r.createElement(m,i({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},73887:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-04-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-21-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-21-hydra.md",source:"@site/blog/2023-04-21-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-21T00:00:00.000Z",formattedDate:"April 21, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.26,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-21-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-27-hydra"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-04-21-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team worked on several fronts, including fixing state\nmachine continuity on-chain, discussing voting project solutions, exploring\nadding Hydra support to kupo, and improving API navigation with a sidebar. The\nteam also updated dependencies and fixed issues in their test suites. Moving\nforward, the team plans to hold the next monthly review meeting, address a user\nissue, prepare for the 0.10.0 release, and work on a dirt road fix for the\nrollbacks issue with proper test coverage."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fixed scripts to enforce state machine continuity on-chain ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/777"},"#777"),"."),(0,n.kt)("li",{parentName:"ul"},"Took part in a twitter space on ",(0,n.kt)("a",{parentName:"li",href:"https://twitter.com/thepizzaknight_/status/1647833904282320896"},"\u201c","Scaling Cardano","\u201d"),"."),(0,n.kt)("li",{parentName:"ul"},"Joined a CBIA meeting to discuss Cardano network protocols & how to specify them."),(0,n.kt)("li",{parentName:"ul"},"Discussed potential solutions of ensuring vote uniqueness in the voting project."),(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to match ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node")," master to prepare for upcoming releases and hard-forks"),(0,n.kt)("li",{parentName:"ul"},"Explored adding Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/CardanoSolutions/kupo/pull/117"},"support to kupo"),", a lightweight Cardano chain indexer - some more work required."),(0,n.kt)("li",{parentName:"ul"},"Improved navigation of the API Reference with a sidebar, see ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/api-reference/"},"unstable API version"),"."),(0,n.kt)("li",{parentName:"ul"},"Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting (join via ",(0,n.kt)("a",{parentName:"li",href:"https://discord.gg/inputoutput?event=1097863746216538194"},"Discord")," or ",(0,n.kt)("a",{parentName:"li",href:"https://www.addevent.com/event/ck16794110"},"AddEvent"),") & report"),(0,n.kt)("li",{parentName:"ul"},"Dirt road fix for rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")," properly covered by a test."),(0,n.kt)("li",{parentName:"ul"},"Groom and ideally address user issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/823"},"#823"),"."),(0,n.kt)("li",{parentName:"ul"},"Put the spec into the repo ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693")," and prepare release 0.10.0.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/90f359c5.bdc4672e.js b/assets/js/90f359c5.bdc4672e.js new file mode 100644 index 00000000000..e98cd9826d7 --- /dev/null +++ b/assets/js/90f359c5.bdc4672e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[66891],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var i=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?r(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,i,n=function(e,t){if(null==e)return{};var a,i,n={},r=Object.keys(e);for(i=0;i<r.length;i++)a=r[i],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)a=r[i],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=i.createContext({}),p=function(e){var t=i.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=p(e.components);return i.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),c=p(a),m=n,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||r;return a?i.createElement(h,l(l({ref:t},s),{},{components:a})):i.createElement(h,l({ref:t},s))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,l=new Array(r);l[0]=m;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<r;p++)l[p]=a[p];return i.createElement.apply(null,l)}return i.createElement.apply(null,a)}m.displayName="MDXCreateElement"},83762:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>p});var i=a(87462),n=(a(67294),a(3905));const r={title:"SRE Team Update",slug:"2022-08-12-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2022-08-12-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-sre.md",source:"@site/blog/2022-10-28-sre.md",title:"SRE Team Update",description:"High level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:3.04,hasTruncateMarker:!1,authors:[{name:"Michael Fellinger",title:"SRE Team Lead",url:"https://github.com/manveru",imageURL:"https://github.com/manveru.png",key:"manveru"}],frontMatter:{title:"SRE Team Update",slug:"2022-08-12-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Team Update",permalink:"/cardano-updates/2022-10-28-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-10-27-crypto"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"OpenZiti",id:"openziti",level:3},{value:"Cicero & Tullia Integrations",id:"cicero--tullia-integrations",level:3},{value:"Cicero & Tullia Features",id:"cicero--tullia-features",level:3},{value:"Spongix",id:"spongix",level:3},{value:"Bugs",id:"bugs",level:3}],s={toc:p},c="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,i.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team is heavily working on the Equinix Metal migration, replacing Hydra\nwith Cicero, and a new version of Spongix."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"openziti"},"OpenZiti"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work is ongoing on our OpenZiti integration into Bitte in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte/compare/zt"},"bitte-zt"),"]."),(0,n.kt)("li",{parentName:"ul"},"CI-World deployment of Darwin CI Ziti service in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/commit/d40f4d19187a2128b6f0d63bde7e3f9a33071994"},"ci-world-commit-d40f4d"),"]."),(0,n.kt)("li",{parentName:"ul"},"Multiple issues filed, and a lot of discussion with the OpenZiti developers,\nwe're making pretty rapid progress thanks to them."),(0,n.kt)("li",{parentName:"ul"},"Work on getting Equinix baremetal machines integrated into AWS World Bitte\nclusters utilizing a Ziti ZTNA network overlay to bridge the networking of\nthe two environments and get IAM extension to Equinix machine for Nomad\nclient onboarding."),(0,n.kt)("li",{parentName:"ul"},"A Nix Flake for most of our OpenZiti dependencies including the Console,\nController, Edge Tunnel, and Router is now at [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/johnalotoski/openziti-bins"},"openziti-bins"),"]."),(0,n.kt)("li",{parentName:"ul"},"The Flake also includes a WiP NixOS modules for these components."),(0,n.kt)("li",{parentName:"ul"},"Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with\nno issues seen so far"),(0,n.kt)("li",{parentName:"ul"},"Moved the console to traefik routing service (",(0,n.kt)("inlineCode",{parentName:"li"},"zac.$DOMAIN"),") and\ncontroller/edge router stay at ",(0,n.kt)("inlineCode",{parentName:"li"},"zt.$DOMAIN"),", but have registered consul\nservices")),(0,n.kt)("h3",{id:"cicero--tullia-integrations"},"Cicero & Tullia Integrations"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Added webhook for [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/haskell.nix"},"haskell.nix"),"]."),(0,n.kt)("li",{parentName:"ul"},"Finished Cicero CI action for [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-addresses/pull/205"},"cardano-addresses-pull-205"),"]."),(0,n.kt)("li",{parentName:"ul"},"Fixed cardano-prelude cicero action in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-prelude/pull/176#issuecomment-1280947946"},"cardano-prelude-pull-176"),"]."),(0,n.kt)("li",{parentName:"ul"},"Fixed the ",(0,n.kt)("inlineCode",{parentName:"li"},"abcird-stdlib/publish")," action [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc/pull/104"},"abcirdc-pull-104"),"]"),(0,n.kt)("li",{parentName:"ul"},"fix error on vm-bigdisk flake configs [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cicero/pull/66"},"cicero-pull-66"),"]."),(0,n.kt)("li",{parentName:"ul"},"Helped with Cicero actions and answered questions for [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus"},"plutus"),"]\n[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-prelude"},"cardano-prelude"),"], and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc"},"abcirdc"),"]."),(0,n.kt)("li",{parentName:"ul"},"Merged [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/323"},"cardano-base-pull-323"),"] for Tullia on cardano-base."),(0,n.kt)("li",{parentName:"ul"},"Merged Cicero action in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ogmios/pull/5"},"cardano-ogmios-pull-5"),"]."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-explorer-app/pull/427"},"cardano-explorer-app-pull-427"),"] to add Tullia and Cicero."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3097"},"cardano-ledger-pull-3097"),"] to add Cicero CI action."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4489"},"cardano-node-pull-4489"),"] to add Tullia and Cicero, including\nOS-agnostic jobs."),(0,n.kt)("li",{parentName:"ul"},"Opened [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4108"},"ouroboros-network-pull-4108"),"] to add Cicero action."),(0,n.kt)("li",{parentName:"ul"},"Reviewed [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/plutus/pull/4918"},"plutus-pull-4918"),"] and helped test it."),(0,n.kt)("li",{parentName:"ul"},"Update Tullia in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc/pull/97"},"abcirdc-pull-97"),"] to build if a tag is given.")),(0,n.kt)("h3",{id:"cicero--tullia-features"},"Cicero & Tullia Features"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improvements to Tullia task aggregation to make [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-addresses"},"cardano-addresses"),"] build\ncorrectly."),(0,n.kt)("li",{parentName:"ul"},"Better tullia CUE lib default for tags [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/tullia/commit/4df3c5d956f1b062b950643da12768ae71acf245"},"tullia-commit-4df3c5d"),"]."),(0,n.kt)("li",{parentName:"ul"},"Put ",(0,n.kt)("inlineCode",{parentName:"li"},"cache.nixos.org")," back in ",(0,n.kt)("inlineCode",{parentName:"li"},"cache.iog.io"),"'s upstreams. This is now\nconsidered a public cache again, and without it some Cicero evaluations had\nto build huge packages."),(0,n.kt)("li",{parentName:"ul"},"Started working on a flake-parts module for Tullia."),(0,n.kt)("li",{parentName:"ul"},"Started working on cutting down Tullia task build time by putting facts in\nJSON files."),(0,n.kt)("li",{parentName:"ul"},"Fixed running into kernel arg limit by reading tullia's DAG from a file"),(0,n.kt)("li",{parentName:"ul"},"Merged [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/tullia/pull/9"},"tullia-pull-9"),"] that fixes several issues related to error reporting.\nand escaping."),(0,n.kt)("li",{parentName:"ul"},"Added Mac builders in Cicero on CI-World."),(0,n.kt)("li",{parentName:"ul"},"Started work on Tullia invocation caching.")),(0,n.kt)("h3",{id:"spongix"},"Spongix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A lot of progress on an SQlite backed version of Spongix, it already supports\nthe full HTTP binary cache protocol but still lacks comprehensive testing and\nsome tuning, as well as recursive lookups."),(0,n.kt)("li",{parentName:"ul"},"First steps in the implementation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"nix-daemon")," ",(0,n.kt)("inlineCode",{parentName:"li"},"ssh-ng")," protocol so\nSpongix can be used via SSH and we can get rid of basic auth.")),(0,n.kt)("h3",{id:"bugs"},"Bugs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Discovered Cicero bug where Nomad reschedules cause the Github commit status\nto get stuck in ",(0,n.kt)("inlineCode",{parentName:"li"},"pending")),(0,n.kt)("li",{parentName:"ul"},"Discovered Cicero race condition bug around concurrent transactions for\ncodependent actions."),(0,n.kt)("li",{parentName:"ul"},"Fixed tullia task order bug in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-addresses"},"cardano-addresses"),"]"),(0,n.kt)("li",{parentName:"ul"},"Diagnose Cicero action not triggered in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/abcirdc"},"abcirdc"),"]"),(0,n.kt)("li",{parentName:"ul"},"Fixed meta/description of the Tullia package in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/tullia/pull/7"},"tullia-pull-7"),"]"),(0,n.kt)("li",{parentName:"ul"},"Add Vault token loop alerts in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/bitte-cells/pull/40"},"bitte-cells-pull-40"),"]"),(0,n.kt)("li",{parentName:"ul"},"Ongoing investigation on recurring Patroni and nomad-follower issues related\nto token rotation.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9136968b.5abe266e.js b/assets/js/9136968b.5abe266e.js new file mode 100644 index 00000000000..1440d521b59 --- /dev/null +++ b/assets/js/9136968b.5abe266e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4986],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=p(r),d=n,h=s["".concat(u,".").concat(d)]||s[d]||m[d]||i;return r?a.createElement(h,o(o({ref:t},c),{},{components:r})):a.createElement(h,o({ref:t},c))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},99124:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-03-31-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-31-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-crypto.md",source:"@site/blog/2023-03-31-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.105,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-03-31-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-05-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-31-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3},{value:"MuSig2",id:"musig2",level:3}],c={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: Started looking into full-node verifier"),(0,n.kt)("li",{parentName:"ul"},"cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties."),(0,n.kt)("li",{parentName:"ul"},"KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent. "),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Included BLS12-381 & JubJub to halo2curves"),(0,n.kt)("li",{parentName:"ul"},"MuSig2: Final modifs to C version.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started designing how a full-node verifier would work. Issue comming in the next couple of weeks. ")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"BLS12-381 branch merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"),". "),(0,n.kt)("li",{parentName:"ul"},"Testing strategy for BLS bindings:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Test-vectors for Groth16, and simple BLS signatures ready."),(0,n.kt)("li",{parentName:"ul"},"Test-vectors with different library, and created by different engineer. ")))),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Resolved issues of circular dependency"),(0,n.kt)("li",{parentName:"ul"},"Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same. "),(0,n.kt)("li",{parentName:"ul"},"Opened a PR for raw bearer branch in ouroboros network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395"},"PR4395")),(0,n.kt)("li",{parentName:"ul"},"Resolved a bug where the agent node did not properly closed connections"),(0,n.kt)("li",{parentName:"ul"},"Updated version of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/70"},"IOSim")," allowed us to finish a first version of KES agent.")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Included ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/iquerejeta/halo2curves/commit/1ccf987b772dcfaa3c1e3439a4a28f23fcf07c7a"},"BLS12-381")," curve to our branch of halo2curves"),(0,n.kt)("li",{parentName:"ul"},"Included ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/iquerejeta/halo2curves/commit/3f20edb2ed112733a0a0986b0a0386c1b9bc439f"},"JubJub")," to our branch of halo2curves ")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Minor reorg ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/42"},"PR#42")),(0,n.kt)("li",{parentName:"ul"},"Started including fuzz testing for deserialisation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/43"},"PR#"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/913aac40.95dd1cb5.js b/assets/js/913aac40.95dd1cb5.js new file mode 100644 index 00000000000..0ffe18cdec1 --- /dev/null +++ b/assets/js/913aac40.95dd1cb5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92846],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>d});var a=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,a,n=function(e,t){if(null==e)return{};var i,a,n={},r=Object.keys(e);for(a=0;a<r.length;a++)i=r[a],t.indexOf(i)>=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)i=r[a],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},h=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var i=e.components,n=e.mdxType,r=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(i),c=n,d=u["".concat(p,".").concat(c)]||u[c]||m[c]||r;return i?a.createElement(d,o(o({ref:t},h),{},{components:i})):a.createElement(d,o({ref:t},h))}));function d(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=i.length,o=new Array(r);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<r;s++)o[s]=i[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,i)}c.displayName="MDXCreateElement"},97344:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=i(87462),n=(i(67294),i(3905));const r={title:"Mithril Team Update",slug:"2023-03-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-23-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-23-mithril.md",source:"@site/blog/2023-03-23-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-03-23T00:00:00.000Z",formattedDate:"March 23, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.615,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-03-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-03-23-db-sync"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-22-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:s},u="wrapper";function m(e){let{components:t,...i}=e;return(0,n.kt)(u,(0,a.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team released a new ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2310.0"},(0,n.kt)("inlineCode",{parentName:"a"},"2310.0"))," distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images."),(0,n.kt)("p",null,"Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano ",(0,n.kt)("inlineCode",{parentName:"p"},"mainnet")," and they have fixed some bugs. "),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the epic that implements eras behavior switch ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/707"},"#707"),":",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Completed handling the API version switch at era transition ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/727"},"#727")))),(0,n.kt)("li",{parentName:"ul"},"Worked on the epic that implements a relational store in the aggregator ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Completed on the migration/adaptation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"stake_pool")," table ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/787"},"#787")),(0,n.kt)("li",{parentName:"ul"},"Worked on the migration/adaptation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"epoch_settings")," table ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/813"},"#813")),(0,n.kt)("li",{parentName:"ul"},"Worked on the migration/adaptation of the ",(0,n.kt)("inlineCode",{parentName:"li"},"signed-entity-type")," table ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/815"},"#815")),(0,n.kt)("li",{parentName:"ul"},"Completed the creation of a stake distribution service ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/799"},"#799")))),(0,n.kt)("li",{parentName:"ul"},"Completed the testing of Mithril with Cardano ",(0,n.kt)("inlineCode",{parentName:"li"},"mainnet")," network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/777"},"#777")),(0,n.kt)("li",{parentName:"ul"},"Completed qualifying the computation of the stake distribution ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/810"},"#810")),(0,n.kt)("li",{parentName:"ul"},"Completed the testing of the Docker client in the ",(0,n.kt)("inlineCode",{parentName:"li"},"Mithril Client multi-platform test")," workflow ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/794"},"#794")),(0,n.kt)("li",{parentName:"ul"},"Worked on bugs and optimizations:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Fixed a bug that made computation of the stake distribution occur multiple times during an epoch ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/804"},"#804")),(0,n.kt)("li",{parentName:"ul"},"Fixed a bug that created deadlocks on the SQLite connection ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/807"},"#807")),(0,n.kt)("li",{parentName:"ul"},"Optimized the error message and the behavior of the signer node when KES keys have expired ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/820"},"#820")),(0,n.kt)("li",{parentName:"ul"},"Upgraded the infrastructure of the ",(0,n.kt)("inlineCode",{parentName:"li"},"testing-preview")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"pre-release-preview")," networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/801"},"#801")),(0,n.kt)("li",{parentName:"ul"},"Re-genesis of the ",(0,n.kt)("inlineCode",{parentName:"li"},"testing-preview")," network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/803"},"#803")),(0,n.kt)("li",{parentName:"ul"},"Re-genesis of the ",(0,n.kt)("inlineCode",{parentName:"li"},"pre-release-preview")," network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/818"},"#818"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/91595845.dbcc8865.js b/assets/js/91595845.dbcc8865.js new file mode 100644 index 00000000000..338cec8018b --- /dev/null +++ b/assets/js/91595845.dbcc8865.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51268],{3905:(t,e,a)=>{a.d(e,{Zo:()=>s,kt:()=>d});var r=a(67294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?o(Object(a),!0).forEach((function(e){n(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function u(t,e){if(null==t)return{};var a,r,n=function(t,e){if(null==t)return{};var a,r,n={},o=Object.keys(t);for(r=0;r<o.length;r++)a=o[r],e.indexOf(a)>=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r<o.length;r++)a=o[r],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var l=r.createContext({}),p=function(t){var e=r.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},s=function(t){var e=p(t.components);return r.createElement(l.Provider,{value:e},t.children)},c="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},m=r.forwardRef((function(t,e){var a=t.components,n=t.mdxType,o=t.originalType,l=t.parentName,s=u(t,["components","mdxType","originalType","parentName"]),c=p(a),m=n,d=c["".concat(l,".").concat(m)]||c[m]||h[m]||o;return a?r.createElement(d,i(i({ref:e},s),{},{components:a})):r.createElement(d,i({ref:e},s))}));function d(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var o=a.length,i=new Array(o);i[0]=m;var u={};for(var l in e)hasOwnProperty.call(e,l)&&(u[l]=e[l]);u.originalType=t,u[c]="string"==typeof t?t:n,i[1]=u;for(var p=2;p<o;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},3573:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>u,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Crypto Team Update",slug:"2023-05-12-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,u={permalink:"/cardano-updates/2023-05-12-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-crypto.md",source:"@site/blog/2023-05-12-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.095,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-05-12-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-17-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-12-goedel"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"cardano-base",id:"cardano-base",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},c="wrapper";function h(t){let{components:e,...a}=t;return(0,n.kt)(c,(0,r.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-base: Include final tests for BLS signature. Further adaptations for KES agent. "),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"RawBearer API in ouroboros-network-framework (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395)"},"https://github.com/input-output-hk/ouroboros-network/pull/4395)"),"; this is needed for KES Agent. Review ongoing."),(0,n.kt)("li",{parentName:"ul"},"Facilitate BLS test vectors in Haskell test suite (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/408"},"https://github.com/input-output-hk/cardano-base/pull/408"),")"),(0,n.kt)("li",{parentName:"ul"},"Add the SignKeyWithKES type to cardano-base (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/389"},"https://github.com/input-output-hk/cardano-base/pull/389"),")"),(0,n.kt)("li",{parentName:"ul"},"Restructuring and simplifying the MLocking code in cardano-base (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/404"},"https://github.com/input-output-hk/cardano-base/pull/404"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/405"},"https://github.com/input-output-hk/cardano-base/pull/405"),"), getting rid of the purpose-built MonadMLock etc. typeclasses in the process"),(0,n.kt)("li",{parentName:"ul"},"Merging the DSIGN and DSIGNM APIs such that the same phantom type can be used to select both the pure and mlocked versions of the same DSIGN algorithm (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/411"},"https://github.com/input-output-hk/cardano-base/pull/411"),")"),(0,n.kt)("li",{parentName:"ul"},"Simplifying the KES API into a single KESAlgorithm typeclass, merging the KESSignAlgorithm class into it (this is possible due to the simplifications from #404). (Same PR as above: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/411"},"https://github.com/input-output-hk/cardano-base/pull/411"),")."),(0,n.kt)("li",{parentName:"ul"},"Update CIP-0381 with new plutus built-in functions, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/506"},"#506"),". In particular hash_to_curve now takes as input a secon input for the Domain Separation Tag (DST), and we limit to have a maximu size of 255 bytes. ")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Opened PR in halo2curves to include BLS12-381 and JubJub, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/privacy-scaling-explorations/halo2curves/pull/38"},"#38")),(0,n.kt)("li",{parentName:"ul"},"Addition constraint over JubJub merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sidechains-zk/pull/10"},"#10"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/91831590.028d52d9.js b/assets/js/91831590.028d52d9.js new file mode 100644 index 00000000000..855fb27b6cc --- /dev/null +++ b/assets/js/91831590.028d52d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29121],{50864:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/91b05c51.41ca190f.js b/assets/js/91b05c51.41ca190f.js new file mode 100644 index 00000000000..a19b5b4f6ac --- /dev/null +++ b/assets/js/91b05c51.41ca190f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17490],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(r),d=a,f=s["".concat(p,".").concat(d)]||s[d]||m[d]||o;return r?n.createElement(f,i(i({ref:t},c),{},{components:r})):n.createElement(f,i({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:a,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},34691:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"Network Team Update",slug:"2022-12-12-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-12-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-12-network.md",source:"@site/blog/2022-12-12-network.md",title:"Network Team Update",description:"High level summary",date:"2022-12-12T00:00:00.000Z",formattedDate:"December 12, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"},{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:.43,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-12-12-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-12-14-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-12-09-crypto"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:u},s="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"In last sprint the team focused on preparations for the conference talk at\n",(0,a.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/"},"OPODIS 2022"),". We also worked on preparations to publish ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," and related\npackages on Hackage (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"PR #57"),", ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/60"},"PR #60"),")."),(0,a.kt)("p",null,"We also started reviewing:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"ouroboros-network")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"cardano-ledger"),"\nrepositories for open-source readiness (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4218"},"PR #4128"),").")),(0,a.kt)("p",null,"We prepared a PR which changes how ",(0,a.kt)("inlineCode",{parentName:"p"},"node-to-node")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol\nversiones are serialised in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," log (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4691"},"PR #4691"),")."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/924be064.77e5f297.js b/assets/js/924be064.77e5f297.js new file mode 100644 index 00000000000..bba8eb00387 --- /dev/null +++ b/assets/js/924be064.77e5f297.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21798],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=u(r),h=n,d=c["".concat(p,".").concat(h)]||c[h]||m[h]||i;return r?a.createElement(d,o(o({ref:t},s),{},{components:r})):a.createElement(d,o({ref:t},s))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=r[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}h.displayName="MDXCreateElement"},93825:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-01-06-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-06-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-06-crypto.md",source:"@site/blog/2023-01-06-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-01-06T00:00:00.000Z",formattedDate:"January 6, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.46,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-01-06-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-01-11-performance-and-tracing"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-05-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"MuSig2",id:"musig2",level:3},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Cryptography handbook",id:"cryptography-handbook",level:3}],s={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The four open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"MuSig2: The API features (error handling) has been merged. "),(0,n.kt)("li",{parentName:"ul"},"Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures."),(0,n.kt)("li",{parentName:"ul"},"cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: We keep progressing with KES secure forgetting implementation.")),(0,n.kt)("p",null,"We also started working in the cryptography engineering handbook, which will be a cross team effort."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Merged the more granular error handling mechanism ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/33"},"PR#33"))),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes/commit/9de00835ed354cbb8d37838f6cee57930ea9fd3d"},"Version 0.1.1"),", which was published in ",(0,n.kt)("a",{parentName:"li",href:"https://crates.io/crates/kes-summed-ed25519"},"crates.io"),". "),(0,n.kt)("li",{parentName:"ul"},"Updated new KES format to mithril library ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/674"},"PR 674")),(0,n.kt)("li",{parentName:"ul"},"We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/531"},"PR 531")),(0,n.kt)("li",{parentName:"ul"},"We keep progressing on reducing the use of ",(0,n.kt)("inlineCode",{parentName:"li"},"transmute")," in ",(0,n.kt)("inlineCode",{parentName:"li"},"mithril-stm"),".")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nothing new to report. Still working in merging these PRs. We are only missing nix merge of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/520"},"PR#520")," and the updates on VRF will be merged.")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255#issuecomment-1362601518"},"PR#255"),".")),(0,n.kt)("h3",{id:"cryptography-handbook"},"Cryptography handbook"),(0,n.kt)("p",null,"We have made available the (temporary) cryptography handbook ",(0,n.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cryptography_spec/"},"https://input-output-hk.github.io/cryptography_spec/"),", and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/925feafa.07b667eb.js b/assets/js/925feafa.07b667eb.js new file mode 100644 index 00000000000..adc94d8b479 --- /dev/null +++ b/assets/js/925feafa.07b667eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[19773],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),c=i,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||n;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:i,o[1]=l;for(var s=2;s<n;s++)o[s]=r[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},67358:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-02-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-23-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-23-mithril.md",source:"@site/blog/2023-02-23-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-02-23T00:00:00.000Z",formattedDate:"February 23, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.47,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-02-23-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-24-hydra"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-23-performance-and-tracing"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...r}=e;return(0,i.kt)(m,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team released a new ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2306.0"},(0,i.kt)("inlineCode",{parentName:"a"},"2306.0"))," distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes\u2019 CLI that allows generating and signing an era marker\u2019s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2306.0"},(0,i.kt)("inlineCode",{parentName:"a"},"2306.0"))),(0,i.kt)("li",{parentName:"ul"},"Completed the epic that implements signer versions deployment monitoring ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/718"},"#718"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the implementation an event producer/consumer via channel ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/738"},"#738")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation of a database and its configuration to save the events on the consumer side ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/740"},"#740")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation of events and sending them on the channel on the producer side ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/741"},"#741")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation of the signer registration event ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/742"},"#742")),(0,i.kt)("li",{parentName:"ul"},"Completed the creation a query to extract the node versions stakes distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/743"},"#743")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements eras behavior switch ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/707"},"#707"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the loading of era reader adapters from config in the signer and the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/732"},"#732")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an era cli command in the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/755"},"#755")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of a dynamic matrix of cases in CI end to end tests ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/760"},"#760")))),(0,i.kt)("li",{parentName:"ul"},"Fixed some bugs:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fixed the unsupported ",(0,i.kt)("inlineCode",{parentName:"li"},"unixepoch()")," function ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/757"},"#757")),(0,i.kt)("li",{parentName:"ul"},"Fixed the problem that prevented some signers from signing on the ",(0,i.kt)("inlineCode",{parentName:"li"},"testing-preview")," network ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/730"},"#730")),(0,i.kt)("li",{parentName:"ul"},"Update SQLite version to ",(0,i.kt)("inlineCode",{parentName:"li"},"3.40")," in aggregator infrastructure ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/765"},"#765"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9291df2e.9b87d940.js b/assets/js/9291df2e.9b87d940.js new file mode 100644 index 00000000000..8a56f5c39e3 --- /dev/null +++ b/assets/js/9291df2e.9b87d940.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62302],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=i,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||n;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:i,o[1]=l;for(var s=2;s<n;s++)o[s]=r[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},32194:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-10-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-04-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-04-mithril.md",source:"@site/blog/2023-10-04-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-04T00:00:00.000Z",formattedDate:"October 4, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.15,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-04-consensus"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-02-network"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/discussions/1273"},"on implementing Mithril in a light wallet")," to receive feedback and contributions from the community."),(0,i.kt)("p",null,"They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks."),(0,i.kt)("p",null,"Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Created the discussion ",(0,i.kt)("strong",{parentName:"li"},"Implement Mithril in a light wallet")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/discussions/1273"},"#1273")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Run client in browser WASM PoC")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1254"},"#1254")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Benchmark aggregator performances")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1220"},"#1220")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Add SPO tickers in explorer")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1185"},"#1185")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Add a non ",(0,i.kt)("inlineCode",{parentName:"strong"},"404")," status code on the aggregator endpoint")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1103"},"#1103")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Use source attribute in errors")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1265"},"#1265")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Create a SPO checklist for KES keys update")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1267"},"#1267")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Configure status page and alerting")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1277"},"#1277")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Upgrade dependencies")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1274"},"#1274"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/934a8f8d.939addfb.js b/assets/js/934a8f8d.939addfb.js new file mode 100644 index 00000000000..f7a961adf51 --- /dev/null +++ b/assets/js/934a8f8d.939addfb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36370],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),c=p(n),d=a,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return n?r.createElement(h,l(l({ref:t},s),{},{components:n})):r.createElement(h,l({ref:t},s))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:a,l[1]=i;for(var p=2;p<o;p++)l[p]=n[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},81779:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-11-09-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-11-09-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-09-db-sync.md",source:"@site/blog/2023-11-09-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-11-09T00:00:00.000Z",formattedDate:"November 9, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.485,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-11-09-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-10-sre"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-08-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],s={toc:p},c="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have created new tag ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-2-2-0"),", which integrates missing Conway feautures and some minor fix\ntags ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-2-1-0"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"sancho-2-0-1"),".\nWe have completed the initial implementation for the bootstrap instance objective."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Add a new ",(0,a.kt)("inlineCode",{parentName:"li"},"--disable-gov")," flag which disabled Conway ferautures\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1558"},"#1558")),(0,a.kt)("li",{parentName:"ul"},"Fix of the committee key size\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1544"},"#1544")),(0,a.kt)("li",{parentName:"ul"},"Workaround a ledger issue with unregistered pools\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1542"},"#1542")),(0,a.kt)("li",{parentName:"ul"},"Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1539"},"#1539")),(0,a.kt)("li",{parentName:"ul"},"Rename offline to offchain\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1533"},"#1533")),(0,a.kt)("li",{parentName:"ul"},"Transfer existing tests to Conway era\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1529"},"#1529"),(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1547"},"#1547"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.12b4c978.js b/assets/js/935f2afb.12b4c978.js new file mode 100644 index 00000000000..fc8a71822b9 --- /dev/null +++ b/assets/js/935f2afb.12b4c978.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80053],{1109:a=>{a.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"defaultSidebar":[{"type":"link","label":"Tutorial Intro","href":"/cardano-updates/docs/intro","docId":"intro"},{"type":"category","label":"Tutorial - Basics","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Create a Page","href":"/cardano-updates/docs/tutorial-basics/create-a-page","docId":"tutorial-basics/create-a-page"},{"type":"link","label":"Create a Document","href":"/cardano-updates/docs/tutorial-basics/create-a-document","docId":"tutorial-basics/create-a-document"},{"type":"link","label":"Create a Blog Post","href":"/cardano-updates/docs/tutorial-basics/create-a-blog-post","docId":"tutorial-basics/create-a-blog-post"},{"type":"link","label":"Markdown Features","href":"/cardano-updates/docs/tutorial-basics/markdown-features","docId":"tutorial-basics/markdown-features"},{"type":"link","label":"Deploy your site","href":"/cardano-updates/docs/tutorial-basics/deploy-your-site","docId":"tutorial-basics/deploy-your-site"},{"type":"link","label":"Congratulations!","href":"/cardano-updates/docs/tutorial-basics/congratulations","docId":"tutorial-basics/congratulations"}],"href":"/cardano-updates/docs/category/tutorial---basics"},{"type":"category","label":"Tutorial - Extras","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Manage Docs Versions","href":"/cardano-updates/docs/tutorial-extras/manage-docs-versions","docId":"tutorial-extras/manage-docs-versions"},{"type":"link","label":"Translate your site","href":"/cardano-updates/docs/tutorial-extras/translate-your-site","docId":"tutorial-extras/translate-your-site"}],"href":"/cardano-updates/docs/category/tutorial---extras"}]},"docs":{"intro":{"id":"intro","title":"Tutorial Intro","description":"Let\'s discover Docusaurus in less than 5 minutes.","sidebar":"defaultSidebar"},"tutorial-basics/congratulations":{"id":"tutorial-basics/congratulations","title":"Congratulations!","description":"You have just learned the basics of Docusaurus and made some changes to the initial template.","sidebar":"defaultSidebar"},"tutorial-basics/create-a-blog-post":{"id":"tutorial-basics/create-a-blog-post","title":"Create a Blog Post","description":"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...","sidebar":"defaultSidebar"},"tutorial-basics/create-a-document":{"id":"tutorial-basics/create-a-document","title":"Create a Document","description":"Documents are groups of pages connected through:","sidebar":"defaultSidebar"},"tutorial-basics/create-a-page":{"id":"tutorial-basics/create-a-page","title":"Create a Page","description":"Add Markdown or React files to src/pages to create a standalone page:","sidebar":"defaultSidebar"},"tutorial-basics/deploy-your-site":{"id":"tutorial-basics/deploy-your-site","title":"Deploy your site","description":"Docusaurus is a static-site-generator (also called Jamstack).","sidebar":"defaultSidebar"},"tutorial-basics/markdown-features":{"id":"tutorial-basics/markdown-features","title":"Markdown Features","description":"Docusaurus supports Markdown and a few additional features.","sidebar":"defaultSidebar"},"tutorial-extras/manage-docs-versions":{"id":"tutorial-extras/manage-docs-versions","title":"Manage Docs Versions","description":"Docusaurus can manage multiple versions of your docs.","sidebar":"defaultSidebar"},"tutorial-extras/translate-your-site":{"id":"tutorial-extras/translate-your-site","title":"Translate your site","description":"Let\'s translate docs/intro.md to French.","sidebar":"defaultSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/93729337.24640633.js b/assets/js/93729337.24640633.js new file mode 100644 index 00000000000..4f0b54bb2b2 --- /dev/null +++ b/assets/js/93729337.24640633.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85845],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=u(r),m=a,y=s["".concat(c,".").concat(m)]||s[m]||d[m]||o;return r?n.createElement(y,l(l({ref:t},p),{},{components:r})):n.createElement(y,l({ref:t},p))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},82597:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"DB-sync Team Update",slug:"2023-01-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-01-14-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-14-db-sync.md",source:"@site/blog/2023-01-14-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-01-14T00:00:00.000Z",formattedDate:"January 14, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.36,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-01-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-19-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-13-hydra"}},c={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:u},s="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"After spending the last months on improving DBSync and releasing ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.0")," the DBSync team focused\nthe last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the\nnew leger core and ghc-9.2.4"),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Integrate CHaP\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1331"},"#1331")),(0,a.kt)("li",{parentName:"ul"},"Integrate new ledger core ",(0,a.kt)("inlineCode",{parentName:"li"},"0.1.1.1")," and ghc-9.2\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1332"},"#1332")),(0,a.kt)("li",{parentName:"ul"},"Technical debt: Add code formatter fourmolu\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1334"},"#1334")),(0,a.kt)("li",{parentName:"ul"},"Preparing and tracking Conway and UTxO integration")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/93b15a8c.d2a93a61.js b/assets/js/93b15a8c.d2a93a61.js new file mode 100644 index 00000000000..164c44f95e5 --- /dev/null +++ b/assets/js/93b15a8c.d2a93a61.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[14582],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(r),h=a,m=u["".concat(s,".").concat(h)]||u[h]||d[h]||o;return r?n.createElement(m,i(i({ref:t},c),{},{components:r})):n.createElement(m,i({ref:t},c))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}h.displayName="MDXCreateElement"},34989:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2022-10-27-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-27-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-27-crypto.md",source:"@site/blog/2022-10-27-crypto.md",title:"Crypto Team Update",description:"High level overview",date:"2022-10-27T00:00:00.000Z",formattedDate:"October 27, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.095,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-10-27-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2022-08-12-sre"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-21-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"SECP built-ins",id:"secp-built-ins",level:3},{value:"KES agent",id:"kes-agent",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to\nmeeting the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/issues/315"},"acceptance criteria")," in cardano-base,\nwhich lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and\nwe are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution,\nbut also progressing on the implementation."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"secp-built-ins"},"SECP built-ins"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"(missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/313"},"PR 313")),(0,a.kt)("li",{parentName:"ul"},"CIP-0049 was addressed in the editors meeting, and ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/250"},"PR 250")," was merged"),(0,a.kt)("li",{parentName:"ul"},"The unit-tests ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/320"},"PR 320")," is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.")),(0,a.kt)("h3",{id:"kes-agent"},"KES agent"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them."),(0,a.kt)("li",{parentName:"ul"},"We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/94133299.4eaf7b31.js b/assets/js/94133299.4eaf7b31.js new file mode 100644 index 00000000000..18cfd86879c --- /dev/null +++ b/assets/js/94133299.4eaf7b31.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48275],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=n.createContext({}),d=function(e){var t=n.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=d(e.components);return n.createElement(u.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),p=d(a),h=r,m=p["".concat(u,".").concat(h)]||p[h]||c[h]||o;return a?n.createElement(m,i(i({ref:t},s),{},{components:a})):n.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},87687:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-09-30-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-09-30-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-30-ledger.md",source:"@site/blog/2022-09-30-ledger.md",title:"Ledger Team Update",description:"Ledger Update",date:"2022-09-30T00:00:00.000Z",formattedDate:"September 30, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.285,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-09-30-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-04-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-09-27-network"}},u={authorsImageUrls:[void 0]},d=[{value:"Ledger Update",id:"ledger-update",level:2},{value:"Technical debt issues completed",id:"technical-debt-issues-completed",level:3},{value:"Technical debt in progress",id:"technical-debt-in-progress",level:3}],s={toc:d},p="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(p,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"ledger-update"},"Ledger Update"),(0,r.kt)("p",null,"We have continued focusing nearly entirely on addressing technical debt.\nA lot of design work has begun for the next ledger era,\nbut we do not yet have anything concrete to share."),(0,r.kt)("h3",{id:"technical-debt-issues-completed"},"Technical debt issues completed"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/1676"},"issue-1676"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/2992"},"pull-2992"),"] We have finally removed the ledger dependency on the\n",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-prelude")," package. It was barely used in the ledger repository, and it added a dependency\nthat we did not want to maintain. It was a bit difficult to remove, and we had\nto coordinate removing it from cardano-base.\nA lot ended up going into ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/2992"},"pull-2992"),", due to the coordination effort, and we ended\nup updating Plutus as well.\nThis means that we've now also made a lot of progress on the problematic cost model serialization\nissues described in ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2902"},"issue-2902"),".\nIn particular, after we resolve ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3014"},"issue-3014"),", we will not have to wait an epoch before\nreleasing a cost model for a new version of Plutus, as we had to do for the Vasil HF."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3046"},"issue-3046"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3055"},"pull-3055"),"] We moved a module that is now only used in Byron to a Byron package."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3047"},"issue-3047"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3054"},"pull-3054"),"] We improved the interface to the ",(0,r.kt)("inlineCode",{parentName:"li"},"Value")," (multi-asset) type."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3044"},"pull-3044"),"] We debugged and fixed a tricky compilation issue. Certain kinds of field updates\nwere adding approximately 20 minutes to our compile time!"),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2932"},"issue-2932"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3036"},"pull-3036"),"] As a part of our ongoing re-organization of the codebase, we\nhave added a ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardano.Ledger.[Era].Core")," module to each ledger era that has a TxBody class.\nMost classes defined in the era should go in this new module.\nWe also re-export the ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardno.Ledger.Core")," module and the previous ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardano.Ledger.[Era].Core"),"\nmodules from each era.")),(0,r.kt)("h3",{id:"technical-debt-in-progress"},"Technical debt in progress"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3034"},"issue-3034"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3035"},"issue-3035"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/4421"},"node-issue-4421"),"] We are continuing to write benchmarks to understand exactly where\nall the time is being spent on executing the ",(0,r.kt)("inlineCode",{parentName:"li"},"TICKF")," transition.\nThe consolidation of the per-stake-credential stake distribution to the per-stake-pool\ndistribution does seem to account for a large amount of time (near a second as written, which we\nhave down to about half a second with some optimizations),\nbut this does not account for everything.\nApplying the reward update may also be a big contributing factor."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3033"},"pull-3033"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3038"},"pull-3038"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3041"},"pull-3041"),"] A separate team is working on upgrading all the\ncardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort."),(0,r.kt)("li",{parentName:"ul"},"The nix scripts used to build our new\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger model"),"\ndo not work consistently for everyone, and we have been working on fixing these issues."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3014"},"issue-3014"),"] We are still working on adding a versioning scheme to all of the ledger\nserializers.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9440f007.f4a7587d.js b/assets/js/9440f007.f4a7587d.js new file mode 100644 index 00000000000..d9beab84d89 --- /dev/null +++ b/assets/js/9440f007.f4a7587d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98254],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,a=function(e,t){if(null==e)return{};var n,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=p(n),h=a,m=u["".concat(l,".").concat(h)]||u[h]||c[h]||r;return n?o.createElement(m,i(i({ref:t},d),{},{components:n})):o.createElement(m,i({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var p=2;p<r;p++)i[p]=n[p];return o.createElement.apply(null,i)}return o.createElement.apply(null,n)}h.displayName="MDXCreateElement"},59255:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var o=n(87462),a=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2022-12-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-12-14-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-consensus.md",source:"@site/blog/2022-12-14-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.995,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-12-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-15-mithril"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2022-12-14-db-sync"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD prototype",id:"utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:3},{value:"Genesis",id:"genesis",level:3},{value:"New VRF and KES crypto integration",id:"new-vrf-and-kes-crypto-integration",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],d={toc:p},u="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,o.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks, the Consensus team finalized the QSM tests for the\nbacking store and Mempool on the UTxO-HD branch with important discoveries\nregarding parallel QSM testing. We also worked with the Ledger team to envisage\nthe modifications that are required in Ledger and Consensus to accommodate the\nchanges in the crypto VRF and KES. The ",(0,a.kt)("inlineCode",{parentName:"p"},"db-analyser")," now supports bechmarking\nthe ledger operations, which will allow us to identify, debug, and profile\npotential performance problems. We drafted a document that defines how to manage\nthe versions of Consensus-related packages. The top level documentation of\n",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," now features a description of the consensus components and\nprovides a hyperlinked map to the modules documentation."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD prototype"),(0,a.kt)("p",null,"Whereas we had passing sequential state-machine tests for the mempool, the\nparallel case proved to be more challenging than we thought. The operation of\nadding a list of transactions to the mempool is not atomic and, as a result,\nwhen adding a list of transactions, transactions from other processes can be\nadded in between. The mempool implementation handles this correctly, however\nthis required us to ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4076"},"redesign")," the parallel model we had to take\nthe lack of atomicity into account."),(0,a.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,a.kt)("p",null,"We finished refactoring the backing store property tests. The second review\nround is ongoing."),(0,a.kt)("h3",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,a.kt)("p",null,"We are working on benchmarking (in terms of time and number of IO operations)\nfetching/looking up data from disk."),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"We worked on the design of a mechanism to prevent a DoS attack on our Genesis\ndesign related to rollbacks. This was arguably the biggest outstanding question."),(0,a.kt)("p",null,"During the discussions around Genesis, we noticed a design boundary that nicely\ndelineates a fundamental component. We almost have a full Haskell prototype of\nit. It will be very nicely self-contained, perhaps even usable in the ultimate\nimplementation!"),(0,a.kt)("h3",{id:"new-vrf-and-kes-crypto-integration"},"New VRF and KES crypto integration"),(0,a.kt)("p",null,"We collaborated with the Ledger team on preparing the ledger state and crypto\ntypes to avoid huge allocation on the epoch boundary when changing aspects of\nthe crypto that will only manifest in headers, not in the ledger states."),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("p",null,"We merged the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4014"},"pull-request")," that adds a support to ",(0,a.kt)("inlineCode",{parentName:"p"},"db-analyser")," for\nbenchmarking ledger operations. This will allow us to identify, debug, and\nprofile potential performance problems. The benchmark focus on the main 5 ledger\noperations that are involved in chain syncing, block forging, and block\nvalidation, namely:"),(0,a.kt)("ol",{start:0},(0,a.kt)("li",{parentName:"ol"},"Forecast."),(0,a.kt)("li",{parentName:"ol"},"Header tick."),(0,a.kt)("li",{parentName:"ol"},"Header application."),(0,a.kt)("li",{parentName:"ol"},"Block tick."),(0,a.kt)("li",{parentName:"ol"},"Block application.")),(0,a.kt)("p",null,"The following figure shows a plot of the benchmarking results for the first 65\nmillion blocks (approximately) of the Cardano chain. The thin yellow lines under\nthe x-axis show the epoch boundaries, whereas the thick yellow lines correspond\nto the era transitions."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(2666).Z,width:"1600",height:"800"})),(0,a.kt)("p",null,"As we can see in this figure, era and epoch boundaries require more computation\ntime. The ledger team are aware of this problem, and we are working to improve\nthis situation."),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4207"},"drafted a document")," motivating and defining how Consensus (and\npossibly other core teams) will/should manage our package versions. This\npull-request garnered many great discussions from our team members and other\nteams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et\nal. We want to thank you all for your input, and we found this discussion very\nenlightening!"),(0,a.kt)("p",null,"We merged the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4197"},"pull request")," that adds an overview of consensus to\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/ouroboros-network/"},"top level\ndocumentation")," of\nouroboros-network. This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation."))}c.isMDXComponent=!0},2666:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/2022-12-14-ledger-ops-benchmark-c46be3db45ff5480ed104e0d520711a6.png"}}]); \ No newline at end of file diff --git a/assets/js/9450fd8f.f4c685b8.js b/assets/js/9450fd8f.f4c685b8.js new file mode 100644 index 00000000000..c6c98db8f32 --- /dev/null +++ b/assets/js/9450fd8f.f4c685b8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45410],{9804:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/18","page":18,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/17","nextPage":"/cardano-updates/page/19","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/94780c38.71d2b83d.js b/assets/js/94780c38.71d2b83d.js new file mode 100644 index 00000000000..e31ad5bca1a --- /dev/null +++ b/assets/js/94780c38.71d2b83d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58925],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=u(r),m=a,y=s["".concat(c,".").concat(m)]||s[m]||d[m]||o;return r?n.createElement(y,l(l({ref:t},p),{},{components:r})):n.createElement(y,l({ref:t},p))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},99178:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"DB-sync Team Update",slug:"2023-01-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-01-14-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-14-db-sync.md",source:"@site/blog/2023-01-14-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-01-14T00:00:00.000Z",formattedDate:"January 14, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.36,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-01-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-19-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-13-hydra"}},c={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:u},s="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"After spending the last months on improving DBSync and releasing ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.0")," the DBSync team focused\nthe last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the\nnew leger core and ghc-9.2.4"),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Integrate CHaP\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1331"},"#1331")),(0,a.kt)("li",{parentName:"ul"},"Integrate new ledger core ",(0,a.kt)("inlineCode",{parentName:"li"},"0.1.1.1")," and ghc-9.2\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1332"},"#1332")),(0,a.kt)("li",{parentName:"ul"},"Technical debt: Add code formatter fourmolu\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1334"},"#1334")),(0,a.kt)("li",{parentName:"ul"},"Preparing and tracking Conway and UTxO integration")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/948ff80d.35bdc0f3.js b/assets/js/948ff80d.35bdc0f3.js new file mode 100644 index 00000000000..0ab06115549 --- /dev/null +++ b/assets/js/948ff80d.35bdc0f3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88767],{31306:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/10","page":10,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/9","nextPage":"/cardano-updates/tags/hydra/page/11","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/94a907c9.b1899393.js b/assets/js/94a907c9.b1899393.js new file mode 100644 index 00000000000..ea56646fb66 --- /dev/null +++ b/assets/js/94a907c9.b1899393.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23941],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(a),u=r,g=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return a?n.createElement(g,l(l({ref:t},s),{},{components:a})):n.createElement(g,l({ref:t},s))}));function g(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:r,l[1]=i;for(var c=2;c<o;c++)l[c]=a[c];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}u.displayName="MDXCreateElement"},44751:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-03-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-03-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-goedel.md",source:"@site/blog/2023-03-03-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.815,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-03-03-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-03-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-03-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint the team has been working on drafts of two papers and one\ntechnical report, improving the deltaQ tutorial, consulting on\nperformance design, and the Djed paper has been accepted for\npublication."),(0,r.kt)("h2",{id:"details"},"Details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing draft of DeltaQSD algebra paper for FORTE 2023")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Extending the technical report on which the above paper is based")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Consulting with an external company on performance engineering of Plutus contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Planning improvements and collecting material for the deltaQ\ntutorial based on experience with systems that manage risk at\nmultiple timescales")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing sections on the communication language and idempontency\nlaws for draft paper about verifying design refinements for\ndistributed system design")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Studying Cardano chain sync protocol")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'"Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin\nProtocol" has been accepted for publication at IEEE ICBC 2023'))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/94c6d911.ce947e81.js b/assets/js/94c6d911.ce947e81.js new file mode 100644 index 00000000000..a97dcd86aa1 --- /dev/null +++ b/assets/js/94c6d911.ce947e81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[44501],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,f=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=r[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},14130:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2022-11-16-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2022-11-16-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-performance-and-tracing.md",source:"@site/blog/2022-11-16-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2022-11-16T00:00:00.000Z",formattedDate:"November 16, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.635,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2022-11-16-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-16-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-11-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"P2P performance investigation is ongoing, in support of the networking team."),(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support."),(0,a.kt)("li",{parentName:"ol"},"Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing."),(0,a.kt)("li",{parentName:"ol"},"On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started."),(0,a.kt)("li",{parentName:"ol"},"We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends."),(0,a.kt)("p",null,"We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing."),(0,a.kt)("p",null,"A number of smaller workbench, data analysis & reporting improvements have been made."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/94dc91d7.e956eef6.js b/assets/js/94dc91d7.e956eef6.js new file mode 100644 index 00000000000..e9f8becb289 --- /dev/null +++ b/assets/js/94dc91d7.e956eef6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6683],{59277:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/56","page":56,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/55","nextPage":"/cardano-updates/page/57","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/95f12e12.89a759bd.js b/assets/js/95f12e12.89a759bd.js new file mode 100644 index 00000000000..8341e849e92 --- /dev/null +++ b/assets/js/95f12e12.89a759bd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[84727],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=u(n),h=r,m=d["".concat(l,".").concat(h)]||d[h]||c[h]||o;return n?a.createElement(m,i(i({ref:t},p),{},{components:n})):a.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var u=2;u<o;u++)i[u]=n[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},67975:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Quarterly Update",slug:"2023-01-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/quarterly/2023-01-18-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-18-consensus.md",source:"@site/quarterly/2023-01-18-consensus.md",title:"Consensus Quarterly Update",description:"Consensus Quarterly Update",date:"2023-01-18T00:00:00.000Z",formattedDate:"January 18, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:3.205,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Quarterly Update",slug:"2023-01-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2023-04-03-ledger"},nextItem:{title:"Network Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-13-network"}},l={authorsImageUrls:[void 0]},u=[{value:"Consensus Quarterly Update",id:"consensus-quarterly-update",level:2},{value:"2022-12 - 2023-01",id:"2022-12---2023-01",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Support",id:"support",level:4},{value:"Conway era",id:"conway-era",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4},{value:"Support",id:"support-1",level:4},{value:"Tech debt",id:"tech-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration-1",level:4},{value:"Risks",id:"risks",level:3},{value:"UTxO HD",id:"utxo-hd-2",level:4}],p={toc:u},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"consensus-quarterly-update"},"Consensus Quarterly Update"),(0,r.kt)("h2",{id:"2022-12---2023-01"},"2022-12 - 2023-01"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("p",null,"The prototype is feature complete and thoroughly tested at the consensus level.\nIn particular, we invested a lot of time in writing property-test for the\nmempool, and other crucial new parts of the prototype. Now we are ready to run\nintegration tests and system-level benchmarks."),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("p",null,"We identified and fixed a slowdown in cross-era forecasting that was inhibiting\nour efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7%\nspeedup in full sync times in the baseline."),(0,r.kt)("p",null,"We also started prototyping a self-contained implementation of the Genesis\ndynamics (in particular of the parts intentionally not part of the ChainSync\nJumping prototype) that furthered our understanding of subtleties and edge\ncases."),(0,r.kt)("h4",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We worked on designing integration of new VRF and KES crypto into consensus.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Crypto")," class was split into two parts: ",(0,r.kt)("inlineCode",{parentName:"li"},"Crypto")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"HeaderCrypto"),"."),(0,r.kt)("li",{parentName:"ul"},"With the Ledger team's help, we refactored ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-ledger")," to use a proxy\ntype for VRF.")))),(0,r.kt)("h4",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"PR went through its second review round. It is about to be merged, but it got\ndelayed due to people's availability during Christmas break.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We improved the capabilities of our ",(0,r.kt)("inlineCode",{parentName:"li"},"io-sim")," library, which is key for testing\nand simulating Cardano components."),(0,r.kt)("li",{parentName:"ul"},"We removed thunks from epoch translations in the ledger, which is important\nfor reducing memory consumption of the Cardano node.")),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We added a tutorial on how to instantiate the Consensus layer to run custom\nledgers. This should be a valuable resource to people looking to roll their\nown custom blockchain (either for commercial or research purposes)."),(0,r.kt)("li",{parentName:"ul"},"We added an overview of consensus to the ",(0,r.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/ouroboros-network/"},"top level\ndocumentation")," of\nouroboros-network. This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Evaluate the extensibility of the prototype. Moving the UTxO to disk is only\nthe first step towards reducing the memory requirements of Cardano node, and\nensuring its long term sustainability. In the future, we plan on moving other\nlarge maps, such as delegation maps. The prototype should be able to\naccommodate these changes without any major modifications."),(0,r.kt)("li",{parentName:"ul"},"Start the integration with other downstream components, such as the wallet and\ndb-sync. The idea is to identify and address any potential pain points that\nmight arise during this integration."),(0,r.kt)("li",{parentName:"ul"},"Run integration tests and system-level benchmarks.")),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish benchmarking and tuning the fast-path ChainSync Jumping prototype"),(0,r.kt)("li",{parentName:"ul"},"Expand and optimize the self-contained implementation of the Disconnect Rule\n(including density comparisons and the LoE)"),(0,r.kt)("li",{parentName:"ul"},"Develop documentation and smoke tests for these components."),(0,r.kt)("li",{parentName:"ul"},"Start modifying the ChainSync Client for the LoP and LoR.")),(0,r.kt)("h4",{id:"support-1"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Help the Network team with diagnosing performance regression in block\nproduction.")),(0,r.kt)("h4",{id:"tech-debt"},"Tech debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Fix property-test failures concerning iterators (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3999"},"#3999")," and\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4183"},"#4183"),").")),(0,r.kt)("h4",{id:"fostering-collaboration-1"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4145"},"mapping consensus"),".")),(0,r.kt)("h3",{id:"risks"},"Risks"),(0,r.kt)("h4",{id:"utxo-hd-2"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Moving other parts of the ledger state to disk might require a major redesign\nof the prototype. For instance, if it turns out that the epoch change rules\nrequire access to the ",(0,r.kt)("em",{parentName:"li"},"full")," ledger state. If this is the case, we might\naccept this risk and do the redesign after the initial release of UTxO-HD."),(0,r.kt)("li",{parentName:"ul"},"Integration with downstream clients might require more work than we\nanticipate."),(0,r.kt)("li",{parentName:"ul"},"Access to the benchmarking's team time and resources."),(0,r.kt)("li",{parentName:"ul"},"Benchmarking results might show significant performance degradation, which\nwill require additional work if such performance degradation is not accepted\nby other stakeholders."),(0,r.kt)("li",{parentName:"ul"},"The prototype's performance might not be accepted by other stakeholders. Here\nwe need to clearly communicate that this is necessary to ensure that as the\nblockchain size grows, the node can operate within reasonable memory\nconstraints.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/960e3390.9a5d2160.js b/assets/js/960e3390.9a5d2160.js new file mode 100644 index 00000000000..1ffa77f3252 --- /dev/null +++ b/assets/js/960e3390.9a5d2160.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24913],{57070:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/mithril/page/4","page":4,"postsPerPage":5,"totalPages":7,"totalCount":34,"previousPage":"/cardano-updates/tags/mithril/page/3","nextPage":"/cardano-updates/tags/mithril/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/965e9e9a.ae2a813a.js b/assets/js/965e9e9a.ae2a813a.js new file mode 100644 index 00000000000..5ae9642061a --- /dev/null +++ b/assets/js/965e9e9a.ae2a813a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[37595],{27622:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/tags/ledger","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/9668e24b.a1fef7db.js b/assets/js/9668e24b.a1fef7db.js new file mode 100644 index 00000000000..d96d4f181d7 --- /dev/null +++ b/assets/js/9668e24b.a1fef7db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68044],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),m=a,d=h["".concat(s,".").concat(m)]||h[m]||c[m]||i;return r?n.createElement(d,o(o({ref:t},u),{},{components:r})):n.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},14624:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Mithril Team Update",slug:"2023-09-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-20-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-20-mithril.md",source:"@site/blog/2023-09-20-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-09-20T00:00:00.000Z",formattedDate:"September 20, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.935,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-09-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-20-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-15-goedel"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports. "),(0,a.kt)("p",null,"Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Add snapshot compression parameters in infrastructure deployments")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1200"},"#1200")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Add Cloudflare protection of infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/986"},"#986")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Record statistics about the downloaded snapshot in the aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1127"},"#1127")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Error refactoring")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/798"},"#798")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Activate Cloudflare protection of infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1230"},"#1230")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Release new ",(0,a.kt)("inlineCode",{parentName:"strong"},"2337")," distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1219"},"#1219")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Upgrade dependencies")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1238"},"#1238"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/97407dee.1346e5b9.js b/assets/js/97407dee.1346e5b9.js new file mode 100644 index 00000000000..e9d23e02e1b --- /dev/null +++ b/assets/js/97407dee.1346e5b9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47263],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=u(n),h=r,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||o;return n?a.createElement(m,s(s({ref:t},p),{},{components:n})):a.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:r,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},53615:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Quarterly Update",slug:"2023-04-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/quarterly/2023-04-25-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-25-consensus.md",source:"@site/quarterly/2023-04-25-consensus.md",title:"Consensus Quarterly Update",description:"Consensus Quarterly Update",date:"2023-04-25T00:00:00.000Z",formattedDate:"April 25, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:2.3,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Quarterly Update",slug:"2023-04-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"SRE Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-sre"},nextItem:{title:"Network Q1 2023 Update",permalink:"/cardano-updates/quarterly/2023-04-04-network"}},l={authorsImageUrls:[void 0]},u=[{value:"Consensus Quarterly Update",id:"consensus-quarterly-update",level:2},{value:"2023-01 - 2023-03",id:"2023-01---2023-03",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Support",id:"support",level:4},{value:"Conway era",id:"conway-era",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4},{value:"Support",id:"support-1",level:4},{value:"Tech debt",id:"tech-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration-1",level:4}],p={toc:u},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"consensus-quarterly-update"},"Consensus Quarterly Update"),(0,r.kt)("h2",{id:"2023-01---2023-03"},"2023-01 - 2023-03"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We finished the testing activities for the prototype, which involved adding\nnew tests, and fixing and enabling temporarily disabled tests."),(0,r.kt)("li",{parentName:"ul"},"We spent a substantial amount of effort refactoring and cleaning the\nprototype."),(0,r.kt)("li",{parentName:"ul"},"We audited the UTxO HD prototype to make sure it can accommodate the migration\nof other tables (eg stake-keys registration) from memory to disk. The result\nof the audit was positive."),(0,r.kt)("li",{parentName:"ul"},"We ran ad-hoc benchmarks for reading keys and flushing values to disk. No\nunexpected costs found."),(0,r.kt)("li",{parentName:"ul"},"We ran the first system level benchmarks. The performance regressions reported\nwere due to an unrealistic snapshotting rate. We need to re-run them again\nafter we design a more fine grained locking mechanism.")),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We elaborated a roadmap of the remaining work for Genesis."),(0,r.kt)("li",{parentName:"ul"},"We presented the design to the IOG Researchers and PNSol on February 20. The\ndesign was well received. We updated the Genesis design with the researcher's\nfeedback.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We plugged the new DoS vector identified during the aforementioned\npresentation."))),(0,r.kt)("li",{parentName:"ul"},"We developed a generator for adversarial leader schedules that satisfy key\nOuroboros properties, which will be used to test the Genesis design.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The generator enables use of smaller Ouroboros parameters, which makes\nextrema more likely and counterxamples easier interpret."))),(0,r.kt)("li",{parentName:"ul"},"We wrote up the latest design iteration."),(0,r.kt)("li",{parentName:"ul"},"We continued benchmarking the Chain Sync Jumping prototype. In particular:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We debugged the prototype's performance regression, and unmasked the\nactual cause by patching our initial theory (bad queuing behavior)"),(0,r.kt)("li",{parentName:"ul"},"We identified and validated the actual cause (a pathological case in\nBlockFetch tiebreaker).")))),(0,r.kt)("h4",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother\nto serve a local immutable DB.")),(0,r.kt)("h4",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We integrated the Conway era into consensus.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We fixed a bug with followers, which was discovered by property tests."),(0,r.kt)("li",{parentName:"ul"},"We developed a DSL for specifying and running ChainDB test cases."),(0,r.kt)("li",{parentName:"ul"},"We fixed failing tests with iterators."),(0,r.kt)("li",{parentName:"ul"},"We created micro-benchmarks for adding transactions to the mempool.")),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We released a new technical documentation site for consensus."),(0,r.kt)("li",{parentName:"ul"},"We factored out several packages to external repositories. Some of this work\noriginated in the UTxO HD workstream.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/28"},"https://github.com/input-output-hk/ouroboros-consensus/issues/28"))),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/33"},"https://github.com/input-output-hk/ouroboros-consensus/issues/33")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/32"},"https://github.com/input-output-hk/ouroboros-consensus/issues/32")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/31"},"https://github.com/input-output-hk/ouroboros-consensus/issues/31"))),(0,r.kt)("h4",{id:"support-1"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Design Consensus side of hardfork-enactment in the Voltaire phase\n(",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4180"},"#4180"),")."),(0,r.kt)("li",{parentName:"ul"},"Estimate the number of file descriptors Consensus needs\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/20"},"#20"),".")),(0,r.kt)("h4",{id:"tech-debt"},"Tech debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define\nfor consensus. Pick one and implement benchmarks for it.")),(0,r.kt)("h4",{id:"fostering-collaboration-1"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Onboard a new team member.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/97cbe67b.9fa74904.js b/assets/js/97cbe67b.9fa74904.js new file mode 100644 index 00000000000..97fcf03876b --- /dev/null +++ b/assets/js/97cbe67b.9fa74904.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48221],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,r,a=function(e,t){if(null==e)return{};var i,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(i),d=a,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return i?r.createElement(c,o(o({ref:t},s),{},{components:i})):r.createElement(c,o({ref:t},s))}));function c(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,i)}d.displayName="MDXCreateElement"},70314:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-04-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-04-06-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-06-mithril.md",source:"@site/blog/2023-04-06-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-04-06T00:00:00.000Z",formattedDate:"April 6, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.075,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-04-06-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-07-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-05-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(h,(0,r.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team released a new ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2313.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2313.0"))," distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages."),(0,a.kt)("p",null,"Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.6"),"."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2313.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2313.0"))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that implements a relational store in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"epoch_settings")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/813"},"#813")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signed-entity-type")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/815"},"#815")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"certificate")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/817"},"#817")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"open_message")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/827"},"#827")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signer_registration")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/828"},"#828")))),(0,a.kt)("li",{parentName:"ul"},"Completed the refactoring of the dependency injection of the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/823"},"#823")),(0,a.kt)("li",{parentName:"ul"},"Completed the cleanup of the multi-signer of the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/824"},"#824")),(0,a.kt)("li",{parentName:"ul"},"Completed the upgrade of the Cardano node to ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35.6")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/843"},"#843"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/97daee08.077f549d.js b/assets/js/97daee08.077f549d.js new file mode 100644 index 00000000000..ef6ffc6c7dc --- /dev/null +++ b/assets/js/97daee08.077f549d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32070],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var h=a.createContext({}),p=function(e){var t=a.useContext(h),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(h.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,h=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=p(r),c=i,d=s["".concat(h,".").concat(c)]||s[c]||m[c]||n;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var h in t)hasOwnProperty.call(t,h)&&(l[h]=t[h]);l.originalType=e,l[s]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<n;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},43729:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>h,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>p});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-03-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-09-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-09-mithril.md",source:"@site/blog/2023-03-09-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-03-09T00:00:00.000Z",formattedDate:"March 9, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.42,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-03-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-10-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-08-consensus"}},h={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(s,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano ",(0,i.kt)("inlineCode",{parentName:"p"},"mainnet")," and computes the stake distribution with the optimized unreleased Cardano CLI command."),(0,i.kt)("p",null,"Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements eras behavior switch ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/707"},"#707"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the deployment of the era behavior switch to the test networks ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/752"},"#752")),(0,i.kt)("li",{parentName:"ul"},"Completed the enhancement of datum generation for era markers ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/786"},"#786")),(0,i.kt)("li",{parentName:"ul"},"Worked on handling the API version with an era switch ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/727"},"#727")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements a relational store in the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Worked on the migration/adaptation of the ",(0,i.kt)("inlineCode",{parentName:"li"},"stake_pool")," table ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/787"},"#787")))),(0,i.kt)("li",{parentName:"ul"},"Completed the refactoring of errors in the signer and aggregator state machines ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/665"},"#665")),(0,i.kt)("li",{parentName:"ul"},"Worked on testing Mithril with a ",(0,i.kt)("inlineCode",{parentName:"li"},"mainnet")," Cardano network ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/777"},"#777")),(0,i.kt)("li",{parentName:"ul"},"Worked on fixing bugs with the Docker client image:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fixed a bug that made the Docker client container crash at startup ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/769"},"#769")),(0,i.kt)("li",{parentName:"ul"},"Fixed a bug that prevented the restoration of a snapshot with a Docker client ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/791"},"#791")),(0,i.kt)("li",{parentName:"ul"},"Worked on testing the Docker client in the ",(0,i.kt)("inlineCode",{parentName:"li"},"Mithril Client multi-platform test")," workflow ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/794"},"#794"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/98277053.8204ac95.js b/assets/js/98277053.8204ac95.js new file mode 100644 index 00000000000..967b7fa5f22 --- /dev/null +++ b/assets/js/98277053.8204ac95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[66602],{16938:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra","page":1,"postsPerPage":5,"totalPages":11,"totalCount":55,"nextPage":"/cardano-updates/tags/hydra/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/986e43da.f541f01c.js b/assets/js/986e43da.f541f01c.js new file mode 100644 index 00000000000..5053e8851f2 --- /dev/null +++ b/assets/js/986e43da.f541f01c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6807],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(r),g=n,h=d["".concat(u,".").concat(g)]||d[g]||c[g]||o;return r?a.createElement(h,l(l({ref:t},p),{},{components:r})):a.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=g;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s<o;s++)l[s]=r[s];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}g.displayName="MDXCreateElement"},61934:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2023-02-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-02-02-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-02-ledger.md",source:"@site/blog/2023-02-02-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-02-02T00:00:00.000Z",formattedDate:"February 2, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.23,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-02-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-03-hydra"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-27-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Ledger evolution CIP",id:"ledger-evolution-cip",level:3},{value:"Serialization issues",id:"serialization-issues",level:3},{value:"New tests",id:"new-tests",level:3},{value:"Progress on a better cost model serialization situation.",id:"progress-on-a-better-cost-model-serialization-situation",level:3},{value:"Nightly tests",id:"nightly-tests",level:3},{value:"Constraint based generators",id:"constraint-based-generators",level:3}],p={toc:s},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"Much of the work the past two weeks involved integration efforts,\ncleaning up and debugging some serialization issues,\nadding tests, and work on large projects that are still ongoing.\nWe also released a CIP this week that aims to make the ledger\na registered CIP category."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"ledger-evolution-cip"},"Ledger evolution CIP"),(0,n.kt)("p",null,"We published a\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/456"},"CIP"),"\nthat will make the Cardano ledger a registered category of the CIP process."),(0,n.kt)("h3",{id:"serialization-issues"},"Serialization issues"),(0,n.kt)("p",null,"We had previously thought that we had found a serialization problem with the redeemers,\nbut it turned out to just be particularly confusing code.\nWe have now clarified the issue for the future."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3263"},"pull-3263"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3269"},"pull-3269"),", and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3268"},"pull-3268"),"."),(0,n.kt)("p",null,"Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3277"},"pull-3277"),"."),(0,n.kt)("h3",{id:"new-tests"},"New tests"),(0,n.kt)("p",null,"We added a new property test suite for some of our custom containers."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3270"},"pull-3270"),"."),(0,n.kt)("h3",{id:"progress-on-a-better-cost-model-serialization-situation"},"Progress on a better cost model serialization situation."),(0,n.kt)("p",null,"We are still working our way through ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/2902"},"issue-2902"),".\nTowards this end, we are now properly gating the new flexible encoders\nuntil version 9."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3274"},"pull-3274"),"."),(0,n.kt)("h3",{id:"nightly-tests"},"Nightly tests"),(0,n.kt)("p",null,"We are still experimenting with moving more CI actions to GitHub actions."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3276"},"pull-3276"),"."),(0,n.kt)("h3",{id:"constraint-based-generators"},"Constraint based generators"),(0,n.kt)("p",null,"We continue to add to our proof of concept for constraint based generators.\nSee the previous ledger update for more information about this project."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/98b2ca25.58b9f52d.js b/assets/js/98b2ca25.58b9f52d.js new file mode 100644 index 00000000000..ae9901b4d4a --- /dev/null +++ b/assets/js/98b2ca25.58b9f52d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1435],{27627:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/cli-api/page/6","page":6,"postsPerPage":5,"totalPages":6,"totalCount":27,"previousPage":"/cardano-updates/tags/cli-api/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/98e6984f.26f25dbd.js b/assets/js/98e6984f.26f25dbd.js new file mode 100644 index 00000000000..55f0bceb4cd --- /dev/null +++ b/assets/js/98e6984f.26f25dbd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[19861],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),c=n,d=h["".concat(s,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},80648:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-12-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-15-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-15-mithril.md",source:"@site/blog/2022-12-15-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2022-12-15T00:00:00.000Z",formattedDate:"December 15, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.11,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2022-12-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-16-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-12-14-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team has released the new distribution ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2248.1"},(0,n.kt)("inlineCode",{parentName:"a"},"2248.1"))," of their nodes. They have published the first version of the Mithril cryptographic library on ",(0,n.kt)("a",{parentName:"p",href:"https://crates.io/crates/mithril-stm"},(0,n.kt)("inlineCode",{parentName:"a"},"crates.io")),", the Rust community\u2019s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots."),(0,n.kt)("p",null,"Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implemented removing verification key and stake from single signatures ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/619"},"#619")),(0,n.kt)("li",{parentName:"ul"},"Completed the extraction of the signer registration from the multi-signer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/642"},"#642")),(0,n.kt)("li",{parentName:"ul"},"Completed the extraction of the certificate creation from the multi-signer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/638"},"#638")),(0,n.kt)("li",{parentName:"ul"},"Implemented a workflow to test client binaries (Linux / MacOS / Windows) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/601"},"#601")),(0,n.kt)("li",{parentName:"ul"},"Completed the signature of the artifacts produced by the CI ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/587"},"#587")),(0,n.kt)("li",{parentName:"ul"},"Fixed the protocol parameters transition ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/627"},"#627")),(0,n.kt)("li",{parentName:"ul"},"Worked on optimizing the snapshot digest computation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/510"},"#510")),(0,n.kt)("li",{parentName:"ul"},"Worked on enforcing the API protocol versions in the client and signer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/633"},"#633")),(0,n.kt)("li",{parentName:"ul"},"Worked on deactivating the non certified signer registration mode ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/621"},"#621")),(0,n.kt)("li",{parentName:"ul"},"Worked on the re-genesis of the test networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/651"},"#651"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9945c128.4d1fc2f5.js b/assets/js/9945c128.4d1fc2f5.js new file mode 100644 index 00000000000..b26292de909 --- /dev/null +++ b/assets/js/9945c128.4d1fc2f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89325],{41340:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/mithril/page/5","page":5,"postsPerPage":5,"totalPages":7,"totalCount":34,"previousPage":"/cardano-updates/tags/mithril/page/4","nextPage":"/cardano-updates/tags/mithril/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/996aa714.48a86a7d.js b/assets/js/996aa714.48a86a7d.js new file mode 100644 index 00000000000..ef3b46d2f04 --- /dev/null +++ b/assets/js/996aa714.48a86a7d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70594],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=c(r),p=a,h=m["".concat(s,".").concat(p)]||m[p]||d[p]||o;return r?n.createElement(h,i(i({ref:t},u),{},{components:r})):n.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}p.displayName="MDXCreateElement"},73172:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2022-12-14-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-12-14-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-performance-and-tracing.md",source:"@site/blog/2022-12-14-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:3.095,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2022-12-14-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-14-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-12-12-network"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],u={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment."),(0,a.kt)("li",{parentName:"ol"},"A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload."),(0,a.kt)("p",null,"We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical."),(0,a.kt)("p",null,"To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.")),(0,a.kt)("p",null,"All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further."),(0,a.kt)("p",null,"In addition, we're still pursuing our performance-enhancing rework of the new tracing internals."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends."),(0,a.kt)("p",null,"Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it.\nThis means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis.\nThis will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports."),(0,a.kt)("p",null,"A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches.\nPreviously we only had automation for two aspects separately, so we only could either:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"compare individual runs (used for different node configurations / versions)"),(0,a.kt)("li",{parentName:"ul"},"collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version)\nNaturally, combining these two capabilities was a long-desired feature of our analysis pipeline.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/99881079.7399a249.js b/assets/js/99881079.7399a249.js new file mode 100644 index 00000000000..653c2da0441 --- /dev/null +++ b/assets/js/99881079.7399a249.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53004],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(n),p=a,h=d["".concat(s,".").concat(p)]||d[p]||m[p]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},38772:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-05-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-05-17-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-performance-and-tracing.md",source:"@site/blog/2023-05-17-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-05-17T00:00:00.000Z",formattedDate:"May 17, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:3.21,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-05-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-17-mithril"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-05-12-crypto"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Analysis",id:"analysis",level:3},{value:"Open Sourcing",id:"open-sourcing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"Performance & Tracing Meetup",id:"performance--tracing-meetup",level:3},{value:"Offboarding",id:"offboarding",level:3}],u={toc:c},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes."),(0,a.kt)("li",{parentName:"ul"},"New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: First steps on implementing incremental analysis have been untertaken."),(0,a.kt)("li",{parentName:"ul"},"Open Sourcing: Exhaustive dataflow charts for both our analysis tool ",(0,a.kt)("inlineCode",{parentName:"li"},"locli")," and our ",(0,a.kt)("inlineCode",{parentName:"li"},"workbanch")," have been merged to ",(0,a.kt)("inlineCode",{parentName:"li"},"master")),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster."),(0,a.kt)("li",{parentName:"ul"},"P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland."),(0,a.kt)("li",{parentName:"ul"},"Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"As a compiler switch to GHC 9.2.7 for ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),"'s default build environment is around the corner, we're setting up our benchmarking cluster to\nhandle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This\nalso involves choosing a reliable baseline as reference point for inter-version comparisons. "),(0,a.kt)("p",null,"Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet,\nwe strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to\nbe balanced against resource demand for all our cluster's nodes."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some\nquality-of-life details that have changed required us to revision the system documentation."),(0,a.kt)("h3",{id:"analysis"},"Analysis"),(0,a.kt)("p",null,"As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been\nnormally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a\nhuge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken. "),(0,a.kt)("h3",{id:"open-sourcing"},"Open Sourcing"),(0,a.kt)("p",null,"A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking\ncopmonents more accessible. As a result, detailed charts for both our LogObject CLI ",(0,a.kt)("inlineCode",{parentName:"p"},"locli")," and our ",(0,a.kt)("inlineCode",{parentName:"p"},"workbench")," have been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". "),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting\nthose profiles of our ",(0,a.kt)("inlineCode",{parentName:"p"},"workbench")," that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality\nof the nomad cloud backend. "),(0,a.kt)("p",null,"Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster."),(0,a.kt)("h3",{id:"performance--tracing-meetup"},"Performance & Tracing Meetup"),(0,a.kt)("p",null,"We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive\ndays together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future.\nAlso, it was a great opportunity to finally meet in person."),(0,a.kt)("h3",{id:"offboarding"},"Offboarding"),(0,a.kt)("p",null,"Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation\nof team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/999e2b46.b9eca61e.js b/assets/js/999e2b46.b9eca61e.js new file mode 100644 index 00000000000..8552c3d715b --- /dev/null +++ b/assets/js/999e2b46.b9eca61e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76433],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(h,i(i({ref:t},c),{},{components:n})):a.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var p=2;p<o;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},25360:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-06-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-06-14-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-14-consensus.md",source:"@site/blog/2023-06-14-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-06-14T00:00:00.000Z",formattedDate:"June 14, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.115,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-06-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-15-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-14-performance-and-tracing"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the ",(0,r.kt)("inlineCode",{parentName:"p"},"Byron")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"TPraos")," eras do not need to be checkpointed for an MVP.\nThere is one remaining question (which applies also to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Praos"),' era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated "Limit on Patience" timeout sufficiently bounds how long the adversary can inflate a victim\'s overall sync time.'),(0,r.kt)("p",null,"On the UTxO-HD front, the prototype branch was rebased on top of the latest ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," ",(0,r.kt)("inlineCode",{parentName:"p"},"main")," branch and integrated on top of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node 8.1.1-pre"),". As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD.\nWe managed to run a node again with UTxO-HD enabled.\nWe also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),", which uncovered a performance regression on the Network component when using ",(0,r.kt)("inlineCode",{parentName:"p"},"GHC-9.2/9.4"),". This is being addressed."),(0,r.kt)("p",null,"Regarding our support activities, we Released ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-sim-0.2.0.0")," and are in the process of preparing the 8.2 release of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/99b0bd12.4ff93e6b.js b/assets/js/99b0bd12.4ff93e6b.js new file mode 100644 index 00000000000..fbadac5f6b3 --- /dev/null +++ b/assets/js/99b0bd12.4ff93e6b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59798],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),d=l(n),h=o,m=d["".concat(s,".").concat(h)]||d[h]||c[h]||a;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=h;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[d]="string"==typeof e?e:o,i[1]=p;for(var l=2;l<a;l++)i[l]=n[l];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}h.displayName="MDXCreateElement"},17110:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>p,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-06-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-06-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-12-network.md",source:"@site/blog/2023-06-12-network.md",title:"Network Team Update",description:"Network Update",date:"2023-06-12T00:00:00.000Z",formattedDate:"June 12, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.205,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-06-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-14-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-06-09-crypto"}},s={authorsImageUrls:[void 0]},l=[{value:"Network Update",id:"network-update",level:2},{value:"Key contributions and advances",id:"key-contributions-and-advances",level:3},{value:"New <code>cardano-ping</code> / <code>cardano-cli ping</code> release",id:"new-cardano-ping--cardano-cli-ping-release",level:4},{value:"Other smaller contributions",id:"other-smaller-contributions",level:3}],u={toc:l},d="wrapper";function c(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"network-update"},"Network Update"),(0,o.kt)("h3",{id:"key-contributions-and-advances"},"Key contributions and advances"),(0,o.kt)("p",null,"We merged ",(0,o.kt)("inlineCode",{parentName:"p"},"light peer sharing")," feature, which allows to include inbound peers\ninto outbound governor known peers. This is the primary way for new\nunregistered nodes to enter the network, which then can be shared using peer\nsharing. Note that peer sharing is an experimental feature which is disabled\nuntil genesis & eclipse evasion as fully implemented. See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3596"},"#3596"),"."),(0,o.kt)("p",null,"We are making progress reviewing eclipse evasion, ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"#3886"),"."),(0,o.kt)("p",null,"We fixed another bug in local root peers. We found out that if the local roots\nwhere ignored until the first domain name was resolved, see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4583"},"#4583"),". The bug\nfix was backported and released in ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.8.1.1"),"."),(0,o.kt)("p",null,"We re-started working on dynamically enabling block forging to address issue\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"#3159"),", which will enable us to release ",(0,o.kt)("inlineCode",{parentName:"p"},"P2P")," on block producing nodes. See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/140"},"#140"),"."),(0,o.kt)("h4",{id:"new-cardano-ping--cardano-cli-ping-release"},"New ",(0,o.kt)("inlineCode",{parentName:"h4"},"cardano-ping")," / ",(0,o.kt)("inlineCode",{parentName:"h4"},"cardano-cli ping")," release"),(0,o.kt)("p",null,"We prepared a new release of ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ping")," library which supports the new\nquery feature (query supported versions). See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4589"},"#4589"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4593"},"#4593")," and ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"#5313"),".\nThe new version of ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," will use ",(0,o.kt)("inlineCode",{parentName:"p"},"ISO8601")," formatted\ntimestamps; also the formatting of ping results is slightly improved, and it\nwill introduce the new ",(0,o.kt)("inlineCode",{parentName:"p"},"--query-versions")," (",(0,o.kt)("inlineCode",{parentName:"p"},"-Q"),") switch. If the remote site\nsupports the query parameter, the command will print:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"redacted-ip:port network rtt: 0.064\nredacted-ip:port handshake rtt: 0.064010896s\nredacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat\norAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]\n")),(0,o.kt)("p",null,"otherwise it will print the negotiation results"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"redacted-ip:port network rtt: 0.045\nredacted-ip:port handshake rtt: 0.101867615s\nredacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder\n")),(0,o.kt)("p",null,"Note that in that case ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," offers ",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorAndResponder"),", which\nallows us to detect whether the remote side is an ",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorOnly")," or\n",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorAndResponder"),". Also ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," will no longer announce\nitself as ",(0,o.kt)("inlineCode",{parentName:"p"},"InitiatorAndResponder"),", except for the case mentioned above."),(0,o.kt)("h3",{id:"other-smaller-contributions"},"Other smaller contributions"),(0,o.kt)("p",null,"On a request from the Marlow Team, we published haddocks of ",(0,o.kt)("inlineCode",{parentName:"p"},"typed-protocols"),",\nwhich are now available ",(0,o.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/typed-protocols/"},"here")," (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/40"},"#40"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/41"},"#41"),")."),(0,o.kt)("p",null,"We made a new release of ",(0,o.kt)("inlineCode",{parentName:"p"},"strict-stm-1.1.0.1")," on Hackage, which fixed a bug in\npackage description file, ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/101"},"#101")," ."),(0,o.kt)("p",null,"We also helped to debug a deadlock when using named pipes on Windows in the new\n",(0,o.kt)("inlineCode",{parentName:"p"},"RawBearer")," API. The API is being used to store secret keys only in memory.\nThe PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395"},"#4395")," is under review."),(0,o.kt)("p",null,"We also have two more PRs which are under review:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"#4530"),": enabling ledger peers on a fixed number of slots before the tip of the chain;"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4580"},"#4580"),": a PR which fixes inconsistencies in one of our cddl specs.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9a01d9b0.da592dca.js b/assets/js/9a01d9b0.da592dca.js new file mode 100644 index 00000000000..5080476c23e --- /dev/null +++ b/assets/js/9a01d9b0.da592dca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21158],{78905:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/23","page":23,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/22","nextPage":"/cardano-updates/page/24","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/9a03c440.55017adb.js b/assets/js/9a03c440.55017adb.js new file mode 100644 index 00000000000..7110cdf9cc6 --- /dev/null +++ b/assets/js/9a03c440.55017adb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16959],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),d=a,f=m["".concat(c,".").concat(d)]||m[d]||p[d]||o;return r?n.createElement(f,i(i({ref:t},u),{},{components:r})):n.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=r[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},66401:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2023-02-23-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i="High level summary",l={permalink:"/cardano-updates/2023-02-23-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-23-performance-and-tracing.md",source:"@site/blog/2023-02-23-performance-and-tracing.md",title:"Performance & tracing update",description:"* SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.",date:"2023-02-23T00:00:00.000Z",formattedDate:"February 23, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.245,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-02-23-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-23-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-22-consensus"}},c={authorsImageUrls:[void 0]},s=[{value:"SECP",id:"secp",level:3},{value:"UTxO-HD",id:"utxo-hd",level:3},{value:"1.35.6 release",id:"1356-release",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"NixOps backend",id:"nixops-backend",level:3}],u={toc:s},m="wrapper";function p(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork."),(0,a.kt)("li",{parentName:"ul"},"Release benchmarking: we performed a round of benchmarks for the 1.35.6 release."),(0,a.kt)("li",{parentName:"ul"},"UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup."),(0,a.kt)("li",{parentName:"ul"},"New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.")),(0,a.kt)("h1",{id:"performance"},"Performance"),(0,a.kt)("h3",{id:"secp"},"SECP"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead."),(0,a.kt)("li",{parentName:"ol"},"The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run."),(0,a.kt)("li",{parentName:"ol"},"The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking. ")),(0,a.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop."),(0,a.kt)("li",{parentName:"ol"},"We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.")),(0,a.kt)("h3",{id:"1356-release"},"1.35.6 release"),(0,a.kt)("p",null,"Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible."),(0,a.kt)("h1",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients."),(0,a.kt)("li",{parentName:"ol"},"Locality assumptions were removed and job monitoring was refactored."),(0,a.kt)("li",{parentName:"ol"},"To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster."),(0,a.kt)("li",{parentName:"ol"},"We're currently evaluating different options for genesis distribution in said cluster.")),(0,a.kt)("h3",{id:"nixops-backend"},"NixOps backend"),(0,a.kt)("p",null,"The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9a4c05df.566cf4df.js b/assets/js/9a4c05df.566cf4df.js new file mode 100644 index 00000000000..0db01dfb640 --- /dev/null +++ b/assets/js/9a4c05df.566cf4df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68077],{23401:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/cli-api/page/2","page":2,"postsPerPage":5,"totalPages":6,"totalCount":27,"previousPage":"/cardano-updates/tags/cli-api","nextPage":"/cardano-updates/tags/cli-api/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/9b5ce5fa.860ab49e.js b/assets/js/9b5ce5fa.860ab49e.js new file mode 100644 index 00000000000..b7a1a3490d4 --- /dev/null +++ b/assets/js/9b5ce5fa.860ab49e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75501],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(r),m=i,d=c["".concat(s,".").concat(m)]||c[m]||h[m]||a;return r?n.createElement(d,o(o({ref:t},u),{},{components:r})):n.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},64213:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var n=r(87462),i=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-11-08-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-08-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-08-mithril.md",source:"@site/blog/2023-11-08-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-08T00:00:00.000Z",formattedDate:"November 8, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.805,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-08-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-08-ledger"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-01-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},c="wrapper";function h(e){let{components:t,...r}=e;return(0,i.kt)(c,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files."),(0,i.kt)("p",null,"Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Prototype a P2P relay with ",(0,i.kt)("inlineCode",{parentName:"strong"},"libp2p"))," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,i.kt)("inlineCode",{parentName:"strong"},"mithril-client")," library")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1311"},"#1311")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},"Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,i.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,i.kt)("li",{parentName:"ul"},"Completed the issue ",(0,i.kt)("strong",{parentName:"li"},"Client Docker package is incorrect")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1322"},"#1322"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9b6092d7.8ac0135c.js b/assets/js/9b6092d7.8ac0135c.js new file mode 100644 index 00000000000..4aec0959d9c --- /dev/null +++ b/assets/js/9b6092d7.8ac0135c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48990],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},u),{},{components:n})):r.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},90436:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2022-12-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-12-14-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-db-sync.md",source:"@site/blog/2022-12-14-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.73,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2022-12-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-12-14-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-14-node-cli-api"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DBSync team continued testing release ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.0"),". The QA team has reported that no issues have\nbeen found. The DBSync team also worked on cherry-picks back to master and on fixing bugs."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Release is cherry-picked back to master, which uses the new rollback mechanism which uses\nreverse indexes, same as the release\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1320"},"#1320"),"\nThis also fixes a bug number of issues on master."),(0,a.kt)("li",{parentName:"ul"},"Depenencies upgrade and CHaP integration\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1324"},"#1324")),(0,a.kt)("li",{parentName:"ul"},"AdaPots fix ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1323"},"#1323"),". This\nfixes an issue where the per epoch AdaPots didn't match the epoch boundary, but\nthey also included changes from the first block of the epoch."),(0,a.kt)("li",{parentName:"ul"},"Deposits Event fix ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3212"},"#3212"),". This pr\nadjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the\nnumber of queries that db-sync does during syncing an make syncing faster.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9b7a95a2.ff1a9f67.js b/assets/js/9b7a95a2.ff1a9f67.js new file mode 100644 index 00000000000..a82d2bfd4c9 --- /dev/null +++ b/assets/js/9b7a95a2.ff1a9f67.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7266],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),h=p(n),c=a,d=h["".concat(l,".").concat(c)]||h[c]||m[c]||o;return n?r.createElement(d,s(s({ref:t},u),{},{components:n})):r.createElement(d,s({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=c;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[h]="string"==typeof e?e:a,s[1]=i;for(var p=2;p<o;p++)s[p]=n[p];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}c.displayName="MDXCreateElement"},54972:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-10-18-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-18-consensus.md",source:"@site/blog/2022-10-18-consensus.md",title:"Consensus Team Update",description:"High-level summary",date:"2022-10-18T00:00:00.000Z",formattedDate:"October 18, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:3.225,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-10-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-19-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-14-hydra"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"High-level status report",id:"high-level-status-report",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Finish the UTxO HD prototype",id:"finish-the-utxo-hd-prototype",level:3},{value:"Era transition property tests",id:"era-transition-property-tests",level:4},{value:"Mempool state-machine tests",id:"mempool-state-machine-tests",level:4},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"Benchmarking the CSJ prototype",id:"benchmarking-the-csj-prototype",level:3}],u={toc:p},h="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(h,(0,r.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,a.kt)("p",null,"During the past two weeks, the consensus team worked on adding property test for\ndifferent aspects of the UTxO HD prototype: era transitions, mempool, and\nbacking store. Thanks to these tests we were able to uncover a bug in the\nprototype. On the Genesis front, we benchmarked a different version of the\nChainSync jumping prototype to try to improve its performance, but this did not\nresult in any noticeable speedup."),(0,a.kt)("h2",{id:"high-level-status-report"},"High-level status report"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Finish the UTxO HD prototype: on track.",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We focused on increasing test coverage for the UTxO-HD prototype:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We started implementing Cadano-eras transition property-tests."),(0,a.kt)("li",{parentName:"ul"},"We started implementing state-machine property-tests for the mempool."),(0,a.kt)("li",{parentName:"ul"},"We merged the mempool rewrite."),(0,a.kt)("li",{parentName:"ul"},"We started working on state-machine tests for the backing store. This\nuncovered a bug in the range-read implementation of the LMDB backing\nstore."))))),(0,a.kt)("li",{parentName:"ul"},"Genesis: on track.",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We benchmarked a version of the Genesis ChainSync Jumping prototype that\nspreads out the ChainSync updates over a longer period of time. This did not\nresult in any noticeable speedup."),(0,a.kt)("li",{parentName:"ul"},"We investigated the overhead introduced by non-ChainSync components, but no\nconclusions could be drawn from the benchmarks we ran.")))),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"finish-the-utxo-hd-prototype"},"Finish the UTxO HD prototype"),(0,a.kt)("p",null,"We focused on increasing test coverage for the UTxO HD prototype. We also merged\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4049"},"mempool\nrewrite"),"."),(0,a.kt)("h4",{id:"era-transition-property-tests"},"Era transition property tests"),(0,a.kt)("p",null,"We started implementing ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4043"},"Cardano era transition property\ntests"),",\nwhich are needed for making sure that the ledger tables get updated in the\nright way when we move from one era to the next. There are at the moment two\nimportant transitions."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Byron to Shelley: where all the UTxO is transferred from in-memory Byron\nstate (which has no tables) to the ledger tables of the Shelley state."),(0,a.kt)("li",{parentName:"ul"},"Shelley to Allegra: where the AVVM addresses must be deleted.")),(0,a.kt)("p",null,"We have tests for the Byron to Shelley transitions. We are working on adding\nthe remaining ones."),(0,a.kt)("h4",{id:"mempool-state-machine-tests"},"Mempool state-machine tests"),(0,a.kt)("p",null,"We started implementing ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4044"},"state-machine property tests for the\nmempool"),".\nThe mempool is currently tested via pure property tests, and use a ledger\nstate without tables. With the introduction of UTxO HD, testing the concurrent\nbehavior of the mempool became of crucial importance (eg now we have to\nacquire locks to flush the backing store). In addition, we need to test a\nledger state with tables. These needs led to the creation of a new set of\nproperty tests. In particular we aim to run parallel state-machine tests that\nexercise the mempool in a way similar to how the node would make use of it."),(0,a.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,a.kt)("p",null,"We started working on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4081"},"state-machine tests for the backing\nstore")," that UTxO\nHD uses. The property tests uncovered errors in the range-reads implementation\nof the LMDB backing store. To facilitate fixing this bug, we made\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"changes")," to the Haskell\nLMDB bindings."),(0,a.kt)("h3",{id:"benchmarking-the-csj-prototype"},"Benchmarking the CSJ prototype"),(0,a.kt)("p",null,"Prompted by previous benchmarks showing significant improvements in sync time by\nusing more capabilities, we implemented a way to spread out the ChainSync\nupdates over a larger period instead of firing them all at the same time. This\ndidn't result in a noticeable speedup."),(0,a.kt)("p",null,"We also benchmarked the prototype with CSJ disabled (such that just the dynamo\npeer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule\nout/confirm overhead by non-ChainSync (mainly BlockFetch) related components.\nThis results in era-specific behavior (speed is like the prototype in Byron, but\nlike the baseline in Shelley). This deserves a closer look in the future."),(0,a.kt)("p",null,"This diagram shows the respective syncing progress, starting at Genesis and\ncontinuing a good part into Shelley (with the dashed line indicating the\nByron-to-Shelley transition)."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Red: baseline"),(0,a.kt)("li",{parentName:"ul"},"Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps."),(0,a.kt)("li",{parentName:"ul"},"Blue: like Green, jumps are spread out."),(0,a.kt)("li",{parentName:"ul"},"Orange: variant with no jumping, to measure unrelated overhead.")),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(35555).Z,width:"654",height:"459"})))}m.isMDXComponent=!0},35555:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/happy-path-csj-prototype-bench-2-e23d2986ddef0a187df9ce336b2db116.svg"}}]); \ No newline at end of file diff --git a/assets/js/9ba26136.1faa833c.js b/assets/js/9ba26136.1faa833c.js new file mode 100644 index 00000000000..e8fe9fd771b --- /dev/null +++ b/assets/js/9ba26136.1faa833c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62231],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),s=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):p(p({},t),e)),r},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=s(r),h=n,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||a;return r?o.createElement(m,p(p({ref:t},u),{},{components:r})):o.createElement(m,p({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,p=new Array(a);p[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:n,p[1]=i;for(var s=2;s<a;s++)p[s]=r[s];return o.createElement.apply(null,p)}return o.createElement.apply(null,r)}h.displayName="MDXCreateElement"},19146:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>p,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var o=r(87462),n=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-10-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},p=void 0,i={permalink:"/cardano-updates/2023-10-15-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-15-network.md",source:"@site/blog/2023-10-15-network.md",title:"Network Team Update",description:"High-level overview of sprint 46",date:"2023-10-15T00:00:00.000Z",formattedDate:"October 15, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.59,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-10-15-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-18-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-13-hydra"}},l={authorsImageUrls:[void 0]},s=[{value:"High-level overview of sprint 46",id:"high-level-overview-of-sprint-46",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"Towards Typed Protocols 0.2.0.0",id:"towards-typed-protocols-0200",level:3},{value:"Peer Sharing",id:"peer-sharing",level:3},{value:"Tech Debt",id:"tech-debt",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,o.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-46"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+46%22"},"sprint 46")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We continued reviewing of bootstrap peers, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4555"},"ouroboros-network#4555"),"."),(0,n.kt)("h3",{id:"towards-typed-protocols-0200"},"Towards Typed Protocols 0.2.0.0"),(0,n.kt)("p",null,"We diagnosed the performance regression of the new design. The work on\n",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols")," will be postponed. For more details see the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/3"},"typed-protocols#3"),". As an outcome of the performance debugging we prepared\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4691"},"PR")," which updates the ",(0,n.kt)("inlineCode",{parentName:"p"},"demo-ping-pong")," and\n",(0,n.kt)("inlineCode",{parentName:"p"},"demo-chain-sync")," applications."),(0,n.kt)("h3",{id:"peer-sharing"},"Peer Sharing"),(0,n.kt)("p",null,"We made progress in review of ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4644"},"ouroboros-network#4644"),", which simplifies the\npeer sharing and fixes the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4642"},"ouroboros-network#4642")," issue."),(0,n.kt)("h3",{id:"tech-debt"},"Tech Debt"),(0,n.kt)("p",null,"We reviewed the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3836"},"ouroboros-network#3836")," PR which inspects all the uses of\n",(0,n.kt)("inlineCode",{parentName:"p"},"error")," in ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),". The PR was prepared by Galois."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9bcfaf7c.459a8722.js b/assets/js/9bcfaf7c.459a8722.js new file mode 100644 index 00000000000..477cf7f8742 --- /dev/null +++ b/assets/js/9bcfaf7c.459a8722.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27850],{13927:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/48","page":48,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/47","nextPage":"/cardano-updates/page/49","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/9c662d1f.abf660e9.js b/assets/js/9c662d1f.abf660e9.js new file mode 100644 index 00000000000..57ab6789310 --- /dev/null +++ b/assets/js/9c662d1f.abf660e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75773],{23714:a=>{a.exports=JSON.parse('{"label":"mithril","permalink":"/cardano-updates/tags/mithril","allTagsPath":"/cardano-updates/tags","count":34}')}}]); \ No newline at end of file diff --git a/assets/js/9c7979b1.e1cf42fe.js b/assets/js/9c7979b1.e1cf42fe.js new file mode 100644 index 00000000000..d59667898c5 --- /dev/null +++ b/assets/js/9c7979b1.e1cf42fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31757],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),i=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=i(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),s=i(a),m=n,h=s["".concat(u,".").concat(m)]||s[m]||d[m]||o;return a?r.createElement(h,l(l({ref:t},c),{},{components:a})):r.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var u in t)hasOwnProperty.call(t,u)&&(p[u]=t[u]);p.originalType=e,p[s]="string"==typeof e?e:n,l[1]=p;for(var i=2;i<o;i++)l[i]=a[i];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},71635:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>p,toc:()=>i});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-08-18-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-08-18-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-sre.md",source:"@site/blog/2023-08-18-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.66,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-08-18-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-18-network"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-17-crypto"}},u={authorsImageUrls:[void 0]},i=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Inputs-check",id:"inputs-check",level:3}],c={toc:i},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet and shelley-qa environments were updated to 8.2.1-pre."),(0,n.kt)("li",{parentName:"ul"},"Work on two new repos utilizing ",(0,n.kt)("a",{parentName:"li",href:"https://flake.parts"},"flake parts")," for cardano cluster generation, automation and operation.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"cardano-parts")," -- Nix flake parts for cardano clusters"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground")," -- Cardano testnet clusters")))),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano p2p relay and alert threshold adjustments: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/c4a04cc...5a0eabe"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"cardano-parts"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Misc improvements to perf cluster functionality: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf/compare/0944c40...d3a8644"},"cardano-perf-compare"))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improve explorer topology generation alerting: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/109"},"cardano-world-pull-109")),(0,n.kt)("li",{parentName:"ul"},"Update p2p configs: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/110"},"cardano-world-pull-110"))),(0,n.kt)("h3",{id:"inputs-check"},"Inputs-check"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A flake parts module to check input closure sizes recursively for optimization considerations: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/inputs-check"},"inputs-check"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9c96fa11.ea8e50f7.js b/assets/js/9c96fa11.ea8e50f7.js new file mode 100644 index 00000000000..d56cc62a7f8 --- /dev/null +++ b/assets/js/9c96fa11.ea8e50f7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90178],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(a),c=n,h=d["".concat(u,".").concat(c)]||d[c]||m[c]||o;return a?r.createElement(h,i(i({ref:t},p),{},{components:a})):r.createElement(h,i({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},42764:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-31-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-31-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-hydra.md",source:"@site/blog/2023-03-31-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.82,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-31-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-31-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-31-ledger"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},d="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra continued work on finishing mainnet compatibility. The\nsemi-automated smoke tests and some missing documentation is still preventing\nfrom calling that fully done. They fixed smaller issues and made a step in the\nHead protocol more robust. Besides development, they met with interested people\nfrom the community who want to get started collaborating on communication and\nmarketing materials."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Groomed and followed-up on ",(0,n.kt)("inlineCode",{parentName:"li"},"GetUTxO")," user request discussion ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/discussions/797"},"#797")),(0,n.kt)("li",{parentName:"ul"},"Fixed ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")," crashes after forks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/560"},"#560")),(0,n.kt)("li",{parentName:"ul"},"Made ",(0,n.kt)("inlineCode",{parentName:"li"},"collectCom")," more robust and aligned with spec ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/786"},"#786")),(0,n.kt)("li",{parentName:"ul"},"Completed configurable API feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/380"},"#380")),(0,n.kt)("li",{parentName:"ul"},"Met potential contributors about Hydra communication and marketing materials"),(0,n.kt)("li",{parentName:"ul"},"Versioned documentation: we have a ",(0,n.kt)("inlineCode",{parentName:"li"},"unstable")," bleeding edge version available as well now, seperate from the last released version")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Follow-up backlog and roadmap clean-up"),(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713")," (documentation updates)"),(0,n.kt)("li",{parentName:"ul"},"Integrate Hydra specification into repository ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9cab6d73.47f4f611.js b/assets/js/9cab6d73.47f4f611.js new file mode 100644 index 00000000000..b421bdc6cd0 --- /dev/null +++ b/assets/js/9cab6d73.47f4f611.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93203],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>d});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),p=u(a),m=n,d=p["".concat(s,".").concat(m)]||p[m]||c[m]||o;return a?r.createElement(d,i(i({ref:t},h),{},{components:a})):r.createElement(d,i({ref:t},h))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},72305:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-07-07-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-07-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-hydra.md",source:"@site/blog/2023-07-07-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.865,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-07-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-07-goedel"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-07-sre"}},s={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},p="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week the Hydra team accomplished some nice progress. They secured the\nnetwork layer further by implementing authentication of the messages between the\npeers in the Head protocol. In the process they also managed to separate\nHeartBeat messages from the protocol ones which somewhat improved the quality of\ncode in Hydra. The team also finished work related to sending only transaction\nids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark\npublishing on the website."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"Implemented")," authenticated messages"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"Implemented")," send only transaction ids in ReqSn messages"),(0,n.kt)("li",{parentName:"ul"},"Separate ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/969"},"HeartBeat")," messages from the core network protocol messages"),(0,n.kt)("li",{parentName:"ul"},"Publish multiple pre-defined ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/947"},"benchmarks")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/967"},"Fixed")," a smoke-test issue where funds would not be returned to the faucet"),(0,n.kt)("li",{parentName:"ul"},"Found a bug in the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-ghsa-c8qp-cv4h-vcc4/pull/1"},"off-chain signature\nverification"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Spike on performance improvements of event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/913"},"#913")),(0,n.kt)("li",{parentName:"ul"},"Add new endpoint for submitting client transactions"),(0,n.kt)("li",{parentName:"ul"},"Remove commit from internal wallet")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9ce37f6e.77804269.js b/assets/js/9ce37f6e.77804269.js new file mode 100644 index 00000000000..38abfb1b58b --- /dev/null +++ b/assets/js/9ce37f6e.77804269.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[66764],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(a),d=n,m=h["".concat(s,".").concat(d)]||h[d]||c[d]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},79098:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-12-01-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-12-01-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-01-hydra.md",source:"@site/blog/2023-12-01-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-12-01T00:00:00.000Z",formattedDate:"December 1, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.865,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-12-01-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-12-04-performance-and-tracing"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-29-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],u={toc:p},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team conducted a packed Monthly Review meeting,\nfeaturing demonstrations and the preparation of the monthly report. They\naddressed flakiness in tests and enhanced the logs json schema,\nimproving overall test reliability. Additionally, the team successfully\nbuilt MacOS ARM64 (",(0,n.kt)("inlineCode",{parentName:"p"},"aarch64-darwin"),") binaries in CI, expanding platform\nsupport. They further improved the network configuration by detecting\nincompatible persisted states, contributing to overall system\nrobustness. Finally, the team released version 0.14.0, highlighting\ntheir commitment to delivering regular updates and improvements."),(0,n.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly Review\n",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/1-iv8IveUzA2KrJV_Kqrgx4ts05Ow0zjM"},"meeting"),"\npacked with demonstrations and prepared monthly report\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1189"},"#","1189")),(0,n.kt)("li",{parentName:"ul"},"Fixed several flaky tests and improved the logs json schema\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1188"},"#","1188"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1190"},"#","1190"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1192"},"#","1192")),(0,n.kt)("li",{parentName:"ul"},"Built MacOS ARM64 (",(0,n.kt)("inlineCode",{parentName:"li"},"aarch64-darwin"),") binaries in CI\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1182"},"#","1182")),(0,n.kt)("li",{parentName:"ul"},"Improved network configuration by detecting incompatible persisted\nstates ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1174"},"#","1174")),(0,n.kt)("li",{parentName:"ul"},"Released version 0.14.0")),(0,n.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Start work on incremental decommit"),(0,n.kt)("li",{parentName:"ul"},"Continue shepherding contributed PRs to completion"),(0,n.kt)("li",{parentName:"ul"},"Finish stateless-observation work"),(0,n.kt)("li",{parentName:"ul"},"Open a head on a Conway network")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9d43e047.df69749e.js b/assets/js/9d43e047.df69749e.js new file mode 100644 index 00000000000..71935da7f44 --- /dev/null +++ b/assets/js/9d43e047.df69749e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78148],{29117:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/29","page":29,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/28","nextPage":"/cardano-updates/page/30","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/9d7869bb.35b4854a.js b/assets/js/9d7869bb.35b4854a.js new file mode 100644 index 00000000000..a6823287321 --- /dev/null +++ b/assets/js/9d7869bb.35b4854a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[37734],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){l(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,l=function(e,t){if(null==e)return{};var a,r,l={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=u(a),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||n;return a?r.createElement(h,o(o({ref:t},d),{},{components:a})):r.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,o=new Array(n);o[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:l,o[1]=i;for(var u=2;u<n;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}s.displayName="MDXCreateElement"},91509:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>i,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-09-01-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-09-01-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-ledger.md",source:"@site/blog/2023-09-01-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.355,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-09-01-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-01-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-09-01-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3},{value:"Testing",id:"testing",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"Broadly speaking the Ledger team focused on a few main areas of Conway era:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Creation of voting state snapshots in order to correctly delay ratification for one epoch"),(0,l.kt)("li",{parentName:"ul"},"Validation of the Governance Actions sequencing and ordering"),(0,l.kt)("li",{parentName:"ul"},"Proper expiry of DReps and Proposal Procedures"),(0,l.kt)("li",{parentName:"ul"},"Expanding Conway Genesis functionality"),(0,l.kt)("li",{parentName:"ul"},"Utilization of some of the new Protocol Parameters in ledger validation rules")),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway-era"},"Conway era"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3659"},"pull-3659")," - Validate Network for ProposalProcedure and TreasuryWithdrawal"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3637"},"pull-3637")," - Avoid using sequence of tuples, by adding GovActionId to GovActionState"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3651"},"pull-3651")," - Inactive DReps"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3664"},"pull-3664")," - Track proposal expiry"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3668"},"pull-3668")," - Add min committee size predicate to NewCommittee"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3669"},"pull-3669")," - Add Proposal deposit check against PParam"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3676"},"pull-3676")," - Fix inactive PoolStake not counting as Drep Stake"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3635"},"pull-3635")," - Make snapshots of GovActionsState"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3670"},"pull-3670")," - Validate previously enacted govAction"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3694"},"pull-3694")," - Improve error reporting on the positive coin decoder"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3674"},"pull-3674")," - Added RATIFY thresholds"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3684"},"pull-3684")," - Add proposal delaying, remove predicate failure from ENACT"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3688"},"pull-3688")," - DRep Refunds and update evalTransactionBalance")),(0,l.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3677"},"pull-3677")," - Minor patch that fixes the DRep distribution computation"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3686"},"pull-3686")," - Post patch release fixup"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3695"},"pull-3695")," - Changelog for cardano-node-8.3 release"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3683"},"pull-3683")," - Add two new bench mark programs")),(0,l.kt)("h3",{id:"testing"},"Testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3662"},"pull-3662")," - Equality on raw types")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9dce568f.09ea27c7.js b/assets/js/9dce568f.09ea27c7.js new file mode 100644 index 00000000000..bc32fe6afa8 --- /dev/null +++ b/assets/js/9dce568f.09ea27c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35029],{35560:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/network","page":1,"postsPerPage":5,"totalPages":5,"totalCount":24,"nextPage":"/cardano-updates/tags/network/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/9dee36e7.c9cec439.js b/assets/js/9dee36e7.c9cec439.js new file mode 100644 index 00000000000..714aef547c8 --- /dev/null +++ b/assets/js/9dee36e7.c9cec439.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58744],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),i=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=i(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),s=i(a),m=n,h=s["".concat(u,".").concat(m)]||s[m]||d[m]||o;return a?r.createElement(h,l(l({ref:t},c),{},{components:a})):r.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var u in t)hasOwnProperty.call(t,u)&&(p[u]=t[u]);p.originalType=e,p[s]="string"==typeof e?e:n,l[1]=p;for(var i=2;i<o;i++)l[i]=a[i];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},57912:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>p,toc:()=>i});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-08-18-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-08-18-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-sre.md",source:"@site/blog/2023-08-18-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.66,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-08-18-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-18-network"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-17-crypto"}},u={authorsImageUrls:[void 0]},i=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-perf",id:"cardano-perf",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Inputs-check",id:"inputs-check",level:3}],c={toc:i},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet and shelley-qa environments were updated to 8.2.1-pre."),(0,n.kt)("li",{parentName:"ul"},"Work on two new repos utilizing ",(0,n.kt)("a",{parentName:"li",href:"https://flake.parts"},"flake parts")," for cardano cluster generation, automation and operation.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"cardano-parts")," -- Nix flake parts for cardano clusters"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground")," -- Cardano testnet clusters")))),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano p2p relay and alert threshold adjustments: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/c4a04cc...5a0eabe"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"cardano-parts"))),(0,n.kt)("h3",{id:"cardano-perf"},"Cardano-perf"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Misc improvements to perf cluster functionality: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf/compare/0944c40...d3a8644"},"cardano-perf-compare"))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New repo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Improve explorer topology generation alerting: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/109"},"cardano-world-pull-109")),(0,n.kt)("li",{parentName:"ul"},"Update p2p configs: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/110"},"cardano-world-pull-110"))),(0,n.kt)("h3",{id:"inputs-check"},"Inputs-check"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A flake parts module to check input closure sizes recursively for optimization considerations: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/inputs-check"},"inputs-check"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.47006cd4.js b/assets/js/9e4087bc.47006cd4.js new file mode 100644 index 00000000000..c1b0c61b66a --- /dev/null +++ b/assets/js/9e4087bc.47006cd4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53608],{63169:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});var r=a(67294),l=a(39960),n=a(95999),c=a(1944),m=a(93285);function s(e){let{year:t,posts:a}=e;return r.createElement(r.Fragment,null,r.createElement("h3",null,t),r.createElement("ul",null,a.map((e=>r.createElement("li",{key:e.metadata.date},r.createElement(l.Z,{to:e.metadata.permalink},e.metadata.formattedDate," - ",e.metadata.title))))))}function i(e){let{years:t}=e;return r.createElement("section",{className:"margin-vert--lg"},r.createElement("div",{className:"container"},r.createElement("div",{className:"row"},t.map(((e,t)=>r.createElement("div",{key:t,className:"col col--4 margin-vert--lg"},r.createElement(s,e)))))))}function o(e){let{archive:t}=e;const a=(0,n.I)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),l=(0,n.I)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),s=function(e){const t=e.reduceRight(((e,t)=>{const a=t.metadata.date.split("-")[0],r=e.get(a)??[];return e.set(a,[t,...r])}),new Map);return Array.from(t,(e=>{let[t,a]=e;return{year:t,posts:a}}))}(t.blogPosts);return r.createElement(r.Fragment,null,r.createElement(c.d,{title:a,description:l}),r.createElement(m.Z,null,r.createElement("header",{className:"hero hero--primary"},r.createElement("div",{className:"container"},r.createElement("h1",{className:"hero__title"},a),r.createElement("p",{className:"hero__subtitle"},l))),r.createElement("main",null,s.length>0&&r.createElement(i,{years:s}))))}}}]); \ No newline at end of file diff --git a/assets/js/9e570fef.3918b741.js b/assets/js/9e570fef.3918b741.js new file mode 100644 index 00000000000..483b53ccf27 --- /dev/null +++ b/assets/js/9e570fef.3918b741.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32925],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},m=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),s=c(r),d=a,g=s["".concat(p,".").concat(d)]||s[d]||u[d]||o;return r?n.createElement(g,l(l({ref:t},m),{},{components:r})):n.createElement(g,l({ref:t},m))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:a,l[1]=i;for(var c=2;c<o;c++)l[c]=r[c];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},62129:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-09-15-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-15-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-goedel.md",source:"@site/blog/2023-09-15-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.44,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-09-15-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-20-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-15-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],m={toc:c},s="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"working on collating and open sourcing performance analysis prototype")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"improvements to Ouroboros Praos specification in Isabelle")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"working on formalising chain sync mini-protocol")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"reviewing an alternatice semantics for DeltaQ")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Seminar talk at U. Bergen on algebraic properties of timeliness"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9e834cf3.1e4d257a.js b/assets/js/9e834cf3.1e4d257a.js new file mode 100644 index 00000000000..46ea8d8d0b5 --- /dev/null +++ b/assets/js/9e834cf3.1e4d257a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24941],{36262:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/13","page":13,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/12","nextPage":"/cardano-updates/page/14","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/9e9bda24.2571a9f9.js b/assets/js/9e9bda24.2571a9f9.js new file mode 100644 index 00000000000..b67691d21bd --- /dev/null +++ b/assets/js/9e9bda24.2571a9f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48679],{30570:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/50","page":50,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/49","nextPage":"/cardano-updates/page/51","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/9f70a142.92a32352.js b/assets/js/9f70a142.92a32352.js new file mode 100644 index 00000000000..f80bc8d4f46 --- /dev/null +++ b/assets/js/9f70a142.92a32352.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6169],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),m=s(r),h=n,g=m["".concat(u,".").concat(h)]||m[h]||c[h]||i;return r?a.createElement(g,l(l({ref:t},p),{},{components:r})):a.createElement(g,l({ref:t},p))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[m]="string"==typeof e?e:n,l[1]=o;for(var s=2;s<i;s++)l[s]=r[s];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}h.displayName="MDXCreateElement"},4756:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2022-12-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2022-12-09-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-crypto.md",source:"@site/blog/2022-12-09-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2022-12-09T00:00:00.000Z",formattedDate:"December 9, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.39,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-12-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-12-12-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-09-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"MuSig2",id:"musig2",level:3},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:2}],p={toc:s},m="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The four open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency. "),(0,n.kt)("li",{parentName:"ul"},"Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe. "),(0,n.kt)("li",{parentName:"ul"},"cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"[Still in progress]"," We are introducing a more granular error handling mechanism ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/33"},"PR#33")),(0,n.kt)("li",{parentName:"ul"},"We merged the API redesig ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/35"},"PR#35")),(0,n.kt)("li",{parentName:"ul"},"We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/36"},"PR#36"))),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We merged the individual signature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/620"},"PR#620")),(0,n.kt)("li",{parentName:"ul"},"We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes/commits/master"},"kes repo"),") ")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nothing new to report. Still working in merging these PRs. "),(0,n.kt)("li",{parentName:"ul"},"We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a ",(0,n.kt)("a",{parentName:"li",href:"https://gitlab.haskell.org/ghc/ghc/-/issues/22564"},"bug in GHC"))),(0,n.kt)("h2",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We keep progressing in the secure forgetting PR and resolving some bugs on memory handling ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"PR#255")),(0,n.kt)("li",{parentName:"ul"},"Fixed a 'use-after-free' bug in the KES agent.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9f761678.efd79bb9.js b/assets/js/9f761678.efd79bb9.js new file mode 100644 index 00000000000..20378dd151c --- /dev/null +++ b/assets/js/9f761678.efd79bb9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[278],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),c=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(r),m=n,h=s["".concat(u,".").concat(m)]||s[m]||d[m]||o;return r?a.createElement(h,i(i({ref:t},p),{},{components:r})):a.createElement(h,i({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var c=2;c<o;c++)i[c]=r[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},32230:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2023-04-28-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-28-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-crypto.md",source:"@site/blog/2023-04-28-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-04-28T00:00:00.000Z",formattedDate:"April 28, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.26,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-04-28-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-05-01-db-sync"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-28-goedel"}},u={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3}],p={toc:c},s="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library."),(0,n.kt)("li",{parentName:"ul"},"KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction."),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Started implementing ECC chip of JubJub over BLS12-381.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"#255")," finally merged \ud83c\udf89"),(0,n.kt)("li",{parentName:"ul"},"Additional tests for BLS bindings ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/384"},"#384")),(0,n.kt)("li",{parentName:"ul"},"Open PR for including test vectors created with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/zkcrypto/bls12_381"},"zkscrypto"),"'s library, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/397"},"PR#397"))),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/389"},"PR#389"),"."),(0,n.kt)("li",{parentName:"ul"},"Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"#317"),"."),(0,n.kt)("li",{parentName:"ul"},"Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim"),(0,n.kt)("li",{parentName:"ul"},"Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes"),(0,n.kt)("li",{parentName:"ul"},"Refactor MonadSodium into MonadMLock ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/388"},"PR#388"),".")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)"),(0,n.kt)("li",{parentName:"ul"},"Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9f7c2154.b8bd5c7b.js b/assets/js/9f7c2154.b8bd5c7b.js new file mode 100644 index 00000000000..c3a253e237c --- /dev/null +++ b/assets/js/9f7c2154.b8bd5c7b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32472],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?o(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},o=Object.keys(t);for(n=0;n<o.length;n++)a=o[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)a=o[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,p=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),d=u(a),m=r,s=d["".concat(p,".").concat(m)]||d[m]||h[m]||o;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[d]="string"==typeof t?t:r,l[1]=i;for(var u=2;u<o;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},35890:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-12-28-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-12-28-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-28-node-cli-api.md",source:"@site/blog/2022-12-28-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-12-28T00:00:00.000Z",formattedDate:"December 28, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.325,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-12-28-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-05-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-16-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function h(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-12-28---2023-01-10"},"2022-12-28 - 2023-01-10"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4762"},"Fix hedgehog-extras sha hash")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4759"},"Update hegehog-extras bounds")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4751"},"GitHub token fix")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4743"},"Use setup-haskell action")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4738"},"Use Github Action to install libsecp256k1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4714"},"Update index state and hedgehog-extras.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4710"},"Cleaned cabal files")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4737"},"Add cache versioning")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4742"},"Delete obsolete scripts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4746"},"Use SECURITY.md published in Cardano Engineering Handbook"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4749"},"Filter out duplicate collateral inputs in tx build cmds")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4754"},"Optimise query stake-snapshot command"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Copyright updates"))),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9fba849d.b41ee22a.js b/assets/js/9fba849d.b41ee22a.js new file mode 100644 index 00000000000..aa3e434330d --- /dev/null +++ b/assets/js/9fba849d.b41ee22a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[82941],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>d});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),s=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),h=s(a),m=n,d=h["".concat(l,".").concat(m)]||h[m]||c[m]||o;return a?r.createElement(d,i(i({ref:t},u),{},{components:a})):r.createElement(d,i({ref:t},u))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[h]="string"==typeof e?e:n,i[1]=p;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},14990:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>p,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-11-04-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2022-11-04-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-hydra.md",source:"@site/blog/2022-11-04-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-11-04T00:00:00.000Z",formattedDate:"November 4, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.935,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-04-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-11-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-04-mithril"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:s},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun ",(0,n.kt)("inlineCode",{parentName:"p"},"preview")," network, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},"0.8.0 release notes"),". They also completed implementation of ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/adr/18/"},"ADR18")," and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-poc/issues/195#issuecomment-1300503557"},"#195")," and alignment of the specification document with auditors."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete and merge ADR18 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/579"},"#579")),(0,n.kt)("li",{parentName:"ul"},"Re-deploy hydra scripts to respun ",(0,n.kt)("inlineCode",{parentName:"li"},"preview")," network, see ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},"0.8.0 release notes")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/595"},"#595")),(0,n.kt)("li",{parentName:"ul"},"Have first gap of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/452"},"#452")," in review."),(0,n.kt)("li",{parentName:"ul"},"Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot."),(0,n.kt)("li",{parentName:"ul"},"Engineering meeting to discuss hard forks and protocol parameter updates ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/195#issuecomment-1300503557"},"#195")),(0,n.kt)("li",{parentName:"ul"},"Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions."),(0,n.kt)("li",{parentName:"ul"},"Drafted project scope for an external audit RFP.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement event-sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Answer the internal auditor","\u2019","s questions"),(0,n.kt)("li",{parentName:"ul"},"Have a draft RFP ready for a first review internally"),(0,n.kt)("li",{parentName:"ul"},"Close some gaps ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/452"},"#452"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a040c838.3f6e8559.js b/assets/js/a040c838.3f6e8559.js new file mode 100644 index 00000000000..363820d64e6 --- /dev/null +++ b/assets/js/a040c838.3f6e8559.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[9499],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=n,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return r?a.createElement(h,i(i({ref:t},s),{},{components:r})):a.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},85704:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2023-06-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-09-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-crypto.md",source:"@site/blog/2023-06-09-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-06-09T00:00:00.000Z",formattedDate:"June 9, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.705,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-06-09-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-12-network"},nextItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-06-09-developer-experience"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"cardano-base",id:"cardano-base",level:3},{value:"Mithril",id:"mithril",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-base: E2E tests for BLS bindings and KES agent "),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Implement ECC chip and Rescue hash primitives for ATMS"),(0,n.kt)("li",{parentName:"ul"},"mithril: Full node verifier")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"RawBearer API in ouroboros-network-framework (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395)"},"https://github.com/input-output-hk/ouroboros-network/pull/4395)"),"; blocked due to issue with windows' localSnocket. Trying to resolve."),(0,n.kt)("li",{parentName:"ul"},"Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"#317"),"."),(0,n.kt)("li",{parentName:"ul"},"Above, blocked by the simplification of typeclasses ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/404"},"#404"),"."),(0,n.kt)("li",{parentName:"ul"},"Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings")),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implementation of Full Node Verifier ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"))),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sidechains-zk/tree/master/prover/src/ecc"},"ECC chip")," implemented for JubJub over BLS12-381"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sidechains-zk/tree/master/prover/src/rescue"},"Rescue chip")," implemented for hashing."),(0,n.kt)("li",{parentName:"ul"},"Currently working on Schnorr signature (which uses the above constraints)")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a0d18a99.9c37ba0b.js b/assets/js/a0d18a99.9c37ba0b.js new file mode 100644 index 00000000000..939a555fceb --- /dev/null +++ b/assets/js/a0d18a99.9c37ba0b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62767],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),d=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=d(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=d(r),m=n,g=s["".concat(u,".").concat(m)]||s[m]||c[m]||o;return r?a.createElement(g,l(l({ref:t},p),{},{components:r})):a.createElement(g,l({ref:t},p))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:n,l[1]=i;for(var d=2;d<o;d++)l[d]=r[d];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},11960:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-11-07-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/quarterly/2022-11-07-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-07-ledger.md",source:"@site/quarterly/2022-11-07-ledger.md",title:"Ledger Team Update",description:"Ledger Quarterly Update",date:"2022-11-07T00:00:00.000Z",formattedDate:"November 7, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/quarterly/tags/ledger"}],readingTime:1.255,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-07-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/quarterly/2022-11-09-network"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/quarterly/2022-10-07-node-cli-api"}},u={authorsImageUrls:[void 0]},d=[{value:"Ledger Quarterly Update",id:"ledger-quarterly-update",level:2},{value:"2022-09 - 2022-11-04",id:"2022-09---2022-11-04",level:2},{value:"Next steps",id:"next-steps",level:2}],p={toc:d},s="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"ledger-quarterly-update"},"Ledger Quarterly Update"),(0,n.kt)("h2",{id:"2022-09---2022-11-04"},"2022-09 - 2022-11-04"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We finished a minimal ledger era capable of master key rotation.\nThis will be re-purposed our upcoming work."),(0,n.kt)("li",{parentName:"ul"},"We have the humble beginnings of a proper ledger API."),(0,n.kt)("li",{parentName:"ul"},"We improved the problematic cost model serialization\n(recall the song and dance about updating the cost model one epoch after the hard fork)."),(0,n.kt)("li",{parentName:"ul"},"We have added benchmarks for problematic areas."),(0,n.kt)("li",{parentName:"ul"},"Massive repository restructure and cleanup.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Unified and consistent variable name schemes (not completely finished, but nearly there)."),(0,n.kt)("li",{parentName:"ul"},"Massive reduction in type constraints, which causes a lot of developer friction,\nin our code and also downstream."),(0,n.kt)("li",{parentName:"ul"},"More organized module structures."),(0,n.kt)("li",{parentName:"ul"},"Improved generators for our property tests."),(0,n.kt)("li",{parentName:"ul"},"We removed our dependency on cardano-prelude."))),(0,n.kt)("li",{parentName:"ul"},"The formal ledger model has come a long way.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"We created a fork of Agda that provides some meta-programming support for the ledger rules."),(0,n.kt)("li",{parentName:"ul"},"We have a large amount of the basic UTxO support in the model."),(0,n.kt)("li",{parentName:"ul"},"We can generate a good looking PDF from the model."),(0,n.kt)("li",{parentName:"ul"},"We can produce Haskell from the model."),(0,n.kt)("li",{parentName:"ul"},"We have a nice finite set theory library that we can use for many of the ledger rules."),(0,n.kt)("li",{parentName:"ul"},"We have nix support for the model.")))),(0,n.kt)("h2",{id:"next-steps"},"Next steps"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Individual tracking of deposits. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3113"},"issue-3113"),"]"),(0,n.kt)("li",{parentName:"ul"},"Versioned CBOR encoders/decoders. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3014"},"issue-3014"),"]"),(0,n.kt)("li",{parentName:"ul"},"New ledger era transaction body (and the surround work associated with it)."),(0,n.kt)("li",{parentName:"ul"},"Designs for the next ledger era.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a0fc6770.402665bb.js b/assets/js/a0fc6770.402665bb.js new file mode 100644 index 00000000000..b6918edb446 --- /dev/null +++ b/assets/js/a0fc6770.402665bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59158],{94032:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/db-sync/page/2","page":2,"postsPerPage":5,"totalPages":3,"totalCount":14,"previousPage":"/cardano-updates/tags/db-sync","nextPage":"/cardano-updates/tags/db-sync/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/a14fd889.9bf1cea0.js b/assets/js/a14fd889.9bf1cea0.js new file mode 100644 index 00000000000..e499c643739 --- /dev/null +++ b/assets/js/a14fd889.9bf1cea0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87326],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=n,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<a;s++)o[s]=r[s];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},16410:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-10-18-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-18-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-18-mithril.md",source:"@site/blog/2023-10-18-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-18T00:00:00.000Z",formattedDate:"October 18, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.07,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-18-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-18-consensus"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-15-network"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay."),(0,n.kt)("p",null,"Finally, they enhanced the CI/CD to publish multiple packages to ",(0,n.kt)("a",{parentName:"p",href:"https://crates.io/"},"crates.io")," and started improving the developer experience with the Mithril devnet."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published the security advisory ",(0,n.kt)("strong",{parentName:"li"},"Mithril relay could expose Cardano block producer internal IP when updated")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/security/advisories/GHSA-9m3h-72xj-x2gq"},"#GHSA-9m3h-72xj-x2gq")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P Networking - Proof of Concept")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate a library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1141"},"#1141")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano transactions history PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"ProtocolKeyRegistration")," creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1187"},"#1187")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Publish multiple packages to ",(0,n.kt)("inlineCode",{parentName:"strong"},"crates.io"))," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1298"},"#1298")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Rename public key published in releases")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1292"},"#1292")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Mithril networks infrastructure maintenance")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1218"},"#1218")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Fix ",(0,n.kt)("inlineCode",{parentName:"strong"},"devnet")," Mithril Docker images")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1272"},"#1272"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a1597564.186e8185.js b/assets/js/a1597564.186e8185.js new file mode 100644 index 00000000000..956e603385a --- /dev/null +++ b/assets/js/a1597564.186e8185.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60715],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(r),g=n,h=d["".concat(u,".").concat(g)]||d[g]||c[g]||o;return r?a.createElement(h,l(l({ref:t},p),{},{components:r})):a.createElement(h,l({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=g;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s<o;s++)l[s]=r[s];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}g.displayName="MDXCreateElement"},33286:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2023-02-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-02-02-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-02-ledger.md",source:"@site/blog/2023-02-02-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-02-02T00:00:00.000Z",formattedDate:"February 2, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.23,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-02-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-03-hydra"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-27-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Ledger evolution CIP",id:"ledger-evolution-cip",level:3},{value:"Serialization issues",id:"serialization-issues",level:3},{value:"New tests",id:"new-tests",level:3},{value:"Progress on a better cost model serialization situation.",id:"progress-on-a-better-cost-model-serialization-situation",level:3},{value:"Nightly tests",id:"nightly-tests",level:3},{value:"Constraint based generators",id:"constraint-based-generators",level:3}],p={toc:s},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"Much of the work the past two weeks involved integration efforts,\ncleaning up and debugging some serialization issues,\nadding tests, and work on large projects that are still ongoing.\nWe also released a CIP this week that aims to make the ledger\na registered CIP category."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"ledger-evolution-cip"},"Ledger evolution CIP"),(0,n.kt)("p",null,"We published a\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/456"},"CIP"),"\nthat will make the Cardano ledger a registered category of the CIP process."),(0,n.kt)("h3",{id:"serialization-issues"},"Serialization issues"),(0,n.kt)("p",null,"We had previously thought that we had found a serialization problem with the redeemers,\nbut it turned out to just be particularly confusing code.\nWe have now clarified the issue for the future."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3263"},"pull-3263"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3269"},"pull-3269"),", and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3268"},"pull-3268"),"."),(0,n.kt)("p",null,"Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3277"},"pull-3277"),"."),(0,n.kt)("h3",{id:"new-tests"},"New tests"),(0,n.kt)("p",null,"We added a new property test suite for some of our custom containers."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3270"},"pull-3270"),"."),(0,n.kt)("h3",{id:"progress-on-a-better-cost-model-serialization-situation"},"Progress on a better cost model serialization situation."),(0,n.kt)("p",null,"We are still working our way through ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/2902"},"issue-2902"),".\nTowards this end, we are now properly gating the new flexible encoders\nuntil version 9."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3274"},"pull-3274"),"."),(0,n.kt)("h3",{id:"nightly-tests"},"Nightly tests"),(0,n.kt)("p",null,"We are still experimenting with moving more CI actions to GitHub actions."),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3276"},"pull-3276"),"."),(0,n.kt)("h3",{id:"constraint-based-generators"},"Constraint based generators"),(0,n.kt)("p",null,"We continue to add to our proof of concept for constraint based generators.\nSee the previous ledger update for more information about this project."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a1ac97eb.58460967.js b/assets/js/a1ac97eb.58460967.js new file mode 100644 index 00000000000..5ae2a2a1094 --- /dev/null +++ b/assets/js/a1ac97eb.58460967.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36463],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(a),m=r,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},25274:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-11-30-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2022-11-30-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-node-cli-api.md",source:"@site/blog/2022-11-30-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-11-30T00:00:00.000Z",formattedDate:"November 30, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.01,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-11-30-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-30-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-30-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-11-30---2022-12-13"},"2022-11-30 - 2022-12-13"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped. "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4675"},"Append tx output in cli transaction build command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4592"},"Update Error messages in cardano-cli"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4675"},"Replace Data.Map with Data.Map.Strict")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4708"},"Update Github actions"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a1b4c76a.51af9271.js b/assets/js/a1b4c76a.51af9271.js new file mode 100644 index 00000000000..9bdbb315b50 --- /dev/null +++ b/assets/js/a1b4c76a.51af9271.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[8765],{48796:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/14","page":14,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/13","nextPage":"/cardano-updates/page/15","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/a1cde312.838f2c04.js b/assets/js/a1cde312.838f2c04.js new file mode 100644 index 00000000000..7637d5ea04b --- /dev/null +++ b/assets/js/a1cde312.838f2c04.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90748],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},h=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,d=s["".concat(u,".").concat(m)]||s[m]||c[m]||o;return r?a.createElement(d,i(i({ref:t},h),{},{components:r})):a.createElement(d,i({ref:t},h))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},47553:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Hydra Team Update",slug:"2023-07-28-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-28-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-28-hydra.md",source:"@site/blog/2023-07-28-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-28T00:00:00.000Z",formattedDate:"July 28, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.005,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-28-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-07-31-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-27-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},s="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"During this week, the Hydra team achieved significant progress in various areas.\nThey conducted the monthly review meeting for July, which continously ensures\ntransparent communication and project evaluation. The team migrated the core\nlogic of the node to an event-sourced architecture and incremental writes of\nevents to persistence, enhancing the project","\u2019","s performance and maintainability.\nFurthermore, the team added the ability to read protocol parameters via the API\nand fixed the CI workflows to support pull requests from forks of external\ncontributors, streamlining the development process for community involvement."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Held the monthly review meeting for July (",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/14ANZ3efuxgXpYK94EBWxZLR9TtN7voru/"},"recording"),")"),(0,n.kt)("li",{parentName:"ul"},"Migrate the core logic of the node to an event-sourced architecture ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/999"},"#999")),(0,n.kt)("li",{parentName:"ul"},"Updated persistence to faster incremental writes of events ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1000"},"#1000")),(0,n.kt)("li",{parentName:"ul"},"Added ability to read protocol parameters via API ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/735"},"#735")),(0,n.kt)("li",{parentName:"ul"},"Fix CI workflows to support pull requests from forks of external contributors ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/993"},"#993")),(0,n.kt)("li",{parentName:"ul"},"Updated to GHC 9.2.8 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1005"},"#1005")),(0,n.kt)("li",{parentName:"ul"},"Prepared an updated use cases section on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family"},"https://hydra.family")," (published with next release)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Publish monthly report"),(0,n.kt)("li",{parentName:"ul"},"Complete user transaction submission work ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/966"},"#966")),(0,n.kt)("li",{parentName:"ul"},"Remove commit from internal wallet (deprecated) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/954"},"#954"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a1d1f035.546a3e7f.js b/assets/js/a1d1f035.546a3e7f.js new file mode 100644 index 00000000000..62f9fed0d6f --- /dev/null +++ b/assets/js/a1d1f035.546a3e7f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91282],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),d=o,m=c["".concat(u,".").concat(d)]||c[d]||h[d]||a;return n?r.createElement(m,s(s({ref:t},p),{},{components:n})):r.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:o,s[1]=i;for(var l=2;l<a;l++)s[l]=n[l];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},39065:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-09-20-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-20-consensus.md",source:"@site/blog/2023-09-20-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-09-20T00:00:00.000Z",formattedDate:"September 20, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.82,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-09-20-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-22-performance-and-tracing"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-20-mithril"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Support",id:"support",level:3}],p={toc:l},c="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks.\nWe are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough.\nOn the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain.\nWe also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway."),(0,o.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/349"},"349"),"). System level benchmark results are pending."),(0,o.kt)("li",{parentName:"ul"},"Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"344"),"), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run."),(0,o.kt)("li",{parentName:"ul"},"We also brought the ",(0,o.kt)("inlineCode",{parentName:"li"},"UTxO-HD")," branch up to date with node version ",(0,o.kt)("inlineCode",{parentName:"li"},"8.4.0"),".")),(0,o.kt)("h3",{id:"genesis"},"Genesis"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain.\nWe are now drafting the final self-contained argument. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4157"},"4157"),")")),(0,o.kt)("h3",{id:"support"},"Support"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We debugged a bad parameter update on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Babbage")," to ",(0,o.kt)("inlineCode",{parentName:"li"},"Conway")," transition in the SanchoNet testnet (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/339"},"339"),").\nA superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/340"},"340"),", ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/354"},"354"),", and ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/355"},"355"),")\nHowever we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ",(0,o.kt)("inlineCode",{parentName:"li"},"ConsensusProtocol")," type class and the ",(0,o.kt)("inlineCode",{parentName:"li"},"HardForkBlock")," combinator (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/345"},"345")," and ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/346"},"346"),"). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a1d4a798.53b252bf.js b/assets/js/a1d4a798.53b252bf.js new file mode 100644 index 00000000000..b601fa283f7 --- /dev/null +++ b/assets/js/a1d4a798.53b252bf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25353],{3905:(e,n,t)=>{t.d(n,{Zo:()=>m,kt:()=>h});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=a.createContext({}),s=function(e){var n=a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=s(e.components);return a.createElement(c.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(t),u=r,h=d["".concat(c,".").concat(u)]||d[u]||p[u]||i;return t?a.createElement(h,o(o({ref:n},m),{},{components:t})):a.createElement(h,o({ref:n},m))}));function h(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=u;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=t[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},53712:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=t(87462),r=(t(67294),t(3905));const i={title:"Performance & Tracing Update",slug:"2023-11-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-17-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-17-performance-and-tracing.md",source:"@site/blog/2023-11-17-performance-and-tracing.md",title:"Performance & Tracing Update",description:"High level summary",date:"2023-11-17T00:00:00.000Z",formattedDate:"November 17, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.585,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & Tracing Update",slug:"2023-11-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-17-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-11-16-network"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Development",id:"development",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"Workbench",id:"workbench",level:3}],m={toc:s},d="wrapper";function p(e){let{components:n,...t}=e;return(0,r.kt)(d,(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: Release benchmarking for node ",(0,r.kt)("inlineCode",{parentName:"li"},"8.6.0")," as well as benchmarks scrutinizing GHC versions and the new tracing system."),(0,r.kt)("li",{parentName:"ul"},"Development: PlutusV3 capability of our workload generator has been implemented."),(0,r.kt)("li",{parentName:"ul"},"Tracing: First round of optimization of the ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-tracer")," service has completed, awaiting validation."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: A significant PR has landed addressing automation features and debugging capabilites."),(0,r.kt)("li",{parentName:"ul"},"Workbench: Configurable remote environments and improvements to run documentation have been merged to ",(0,r.kt)("inlineCode",{parentName:"li"},"master"),".")),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"We've performed and analyzed a full set of benchmarks for node ",(0,r.kt)("inlineCode",{parentName:"p"},"8.6.0"),", both in comparison to recent release tags\nand mainnet version ",(0,r.kt)("inlineCode",{parentName:"p"},"8.1.2"),". A lot of development work has entered the system since then, so it is crucial\nwe can rule out any potential performance risks for the next mainnet release. "),(0,r.kt)("p",null,"Additionally, we've been benchmarking GHC9.6.3 builds of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform. "),(0,r.kt)("p",null,"A last set of benchmarks was dedicated to the new tracing system with node ",(0,r.kt)("inlineCode",{parentName:"p"},"8.6.0"),". We were able to show that\nthere is no performance risk to enabling the new system, even when forwarding all trace messages to a ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-tracer"),"\nservice on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression."),(0,r.kt)("h3",{id:"development"},"Development"),(0,r.kt)("p",null,"For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes\nto the execution budgets by developing specialized workloads."),(0,r.kt)("h3",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," service has received its first batch of optimizations. Profiling output is promising; to measure\nperformance for a long service run time, we're currently equipping the service binary with the same capability to\nemit regular resource traces as ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". Analysis of those will be the basis for validating this and possible future optimization efforts."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"Many improvements for the nomad backend have been implemented and merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),". This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service,\nmore detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables\nour team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred."),(0,r.kt)("h3",{id:"workbench"},"Workbench"),(0,r.kt)("p",null,"Our performance workbench has seen upgrades in documenting and reporting ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler.\nWhen alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential. "),(0,r.kt)("p",null,"Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a1f2945e.cd202afc.js b/assets/js/a1f2945e.cd202afc.js new file mode 100644 index 00000000000..e0f25fb78f5 --- /dev/null +++ b/assets/js/a1f2945e.cd202afc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87407],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),m=u(a),h=r,s=m["".concat(l,".").concat(h)]||m[h]||d[h]||i;return a?n.createElement(s,o(o({ref:t},c),{},{components:a})):n.createElement(s,o({ref:t},c))}));function s(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=h;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[m]="string"==typeof e?e:r,o[1]=p;for(var u=2;u<i;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},18936:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-09-26-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-09-26-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-26-node-cli-api.md",source:"@site/blog/2023-09-26-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-09-26T00:00:00.000Z",formattedDate:"September 26, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.68,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-09-26-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-27-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-22-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-09-13---2023-09-26"},"2023-09-13 - 2023-09-26"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.4.0-pre"},"cardano-node 8.4.0-pre")," release suitable for SanchoNet."),(0,r.kt)("li",{parentName:"ul"},"CLI continues making progress integrating governance features. During this sprint we integrated the ",(0,r.kt)("strong",{parentName:"li"},"info")," and ",(0,r.kt)("strong",{parentName:"li"},"new-committee")," governance actions."),(0,r.kt)("li",{parentName:"ul"},"The team continued moving to the ERA top-level commands structure. Removed ",(0,r.kt)("inlineCode",{parentName:"li"},"--conway-era")," flag from the legacy commands making conway era commands only accessible via ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli conway"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"stake-pool")," command is now under the ERA top level structure."),(0,r.kt)("li",{parentName:"ul"},"API continues integration with governance features, it is worth to higlight that now ",(0,r.kt)("em",{parentName:"li"},"ProposeNewCommitee")," uses the right key type (cc-cold)")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/302"},"Disambiguate 2-n flags in governance new-committee action")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/298"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.10.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/295"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.20.2"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/292"},"cardano-cli: add governance create-info command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/287"},"Release 8.9.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/286"},"Export ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.CLI.Legacy.Options.pLegacyCardanoEra")," for cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/284"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"SomeWitness")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"SomeSigningWitness"),". Rename constructors to avoid name conflicts.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/283"},"Update cardano-api to 8.20.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/282"},"Remove unused governance-related code")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/281"},"Fix typo in stake-pool help text and clarify drep queries arguments")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/280"},"Remove redundant conversions in JSON friendly instances ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/279"},"Regularise era based command structure")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/277"},"Simplify era handling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/276"},"Remove ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/275"},"Era-based ",(0,r.kt)("inlineCode",{parentName:"a"},"stake-pool")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/274"},"Fix git revision in ",(0,r.kt)("inlineCode",{parentName:"a"},"version")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/273"},"cardano-cli-8.8.0.0"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/265"},"Organise eon re-exports. Export ",(0,r.kt)("inlineCode",{parentName:"a"},"MaryEraOnwards"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/264"},"cardano-api-internal: ProposeNewCommittee: StakeKey -> CommitteeColdKey")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/262"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.21.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/256"},"Delete unused eon constraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/255"},"Export ByronEraOnly")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/254"},"Replace only ",(0,r.kt)("inlineCode",{parentName:"a"},"AdaSupportedInEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"MultiAssetSupportedInEra")," with eons")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/250"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.20.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/249"},"Add JSON instance for Hash GenesisKey ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/248"},"Support more ledger constraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/247"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"FeatureInEra")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"Eon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/246"},"Release 8.20.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/245"},"Fix DRep Stake and DRep Stake queries for empty lists")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/244"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"TxFeesExplicitInEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"TxFeesImplicitInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/243"},"Fix typos in some deserialization error messages")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/240"},"Fix querying for dreps in ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction build")," in eras before conway"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5480"},"Trace Configuration Trace Message Enhancement")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5474"},"Bump versions for cardano-node-8.4.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5467"},"Updated dependencies for cardano-node-8.4.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5466"},"cardano-node: reduce orphan instances"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5474"},"Bump versions for cardano-node-8.4.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5471"},"Update to cardano-cli 8.9.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5467"},"Updated dependencies for cardano-node-8.4.0-pre"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a2a63bac.f350ae76.js b/assets/js/a2a63bac.f350ae76.js new file mode 100644 index 00000000000..1d53b692f36 --- /dev/null +++ b/assets/js/a2a63bac.f350ae76.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16002],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(a),d=n,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||i;return a?r.createElement(c,o(o({ref:t},s),{},{components:a})):r.createElement(c,o({ref:t},s))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},54903:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-06-09-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-09-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-hydra.md",source:"@site/blog/2023-06-09-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-09T00:00:00.000Z",formattedDate:"June 9, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.18,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-09-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-06-09-developer-experience"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-06-08-db-sync"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team worked on multiple fronts. They finished the\ninvestigation about the broken head on mainnet and re-opened their persistent\nhead instance. The team also fixed the monthly report publication on their\nwebsite and started sketching ideas and further improvements. Also, they are on\nthe last mile to deliver a new feature which will allow parties to commit funds\nfrom extern wallets. Finally the team started to work on optimizing the\nperformance on their benchmarks."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finished investigation on broken head on mainnet ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/897"},"#897")," and re-opened it."),(0,n.kt)("li",{parentName:"ul"},"Added support for externally committing regular utxo ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/887"},"#887")),(0,n.kt)("li",{parentName:"ul"},"Fix monthly report publication on docs website and published the ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-05"},"monthly report"),". Odd problems when publishing monthly report:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Make us think about if we should change something about the website ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/908"},"#908")),(0,n.kt)("li",{parentName:"ul"},"Open issue to docusaurus ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/facebook/docusaurus/issues/9036"},"#9036")))),(0,n.kt)("li",{parentName:"ul"},"Fixed a bug in the benchmark process ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/910"},"#910")),(0,n.kt)("li",{parentName:"ul"},"Explored performance of the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node"),"{.verbatim} and identified a\nbottleneck."),(0,n.kt)("li",{parentName:"ul"},"Timed transaction feature is being used by the auction project \ud83c\udf89 ")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete performance analysis and start/plan improvements and provide\nregular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186")),(0,n.kt)("li",{parentName:"ul"},"Add hydra as tool to developer platform ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/872"},"#872"),"."),(0,n.kt)("li",{parentName:"ul"},"Authenticate network messages ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"#727"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete journey for external commits using multiple script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"Start implementing ",(0,n.kt)("em",{parentName:"li"},"Option B")," for external commits ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a2ee852b.3deb7f04.js b/assets/js/a2ee852b.3deb7f04.js new file mode 100644 index 00000000000..929f2dce86b --- /dev/null +++ b/assets/js/a2ee852b.3deb7f04.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95208],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,a=function(e,t){if(null==e)return{};var n,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),c=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,h=d["".concat(l,".").concat(m)]||d[m]||p[m]||r;return n?o.createElement(h,s(s({ref:t},u),{},{components:n})):o.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,s=new Array(r);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,s[1]=i;for(var c=2;c<r;c++)s[c]=n[c];return o.createElement.apply(null,s)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},15302:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var o=n(87462),a=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2023-05-03-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-05-03-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-03-consensus.md",source:"@site/blog/2023-05-03-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-05-03T00:00:00.000Z",formattedDate:"May 3, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.755,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-05-03-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-04-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-03-performance-and-tracing"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:2},{value:"Fostering collaboration",id:"fostering-collaboration",level:2}],u={toc:c},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks we made some important progress in the Genesis design.\nIt seems the ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch")," logic need not be modified for Genesis, although this\nneeds to be confirmed. We started a DoS mitigation handbook and updated our\nconceptual component diagram to guide the Genesis design. We engaged with the\nIOG researchers to work on the Limit on Patience attack vector, work in this\narea is still ongoing. We sketched a design to decouple the CPU load of the node\nfrom its responsiveness to the socket. Finally, we discussed with Networking our\napproach to lower the performance impact of the BlockFetch decision logic, and\ngot green light from them."),(0,a.kt)("p",null,"We migrated the consensus code to a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus"},"new\nrepository"),", splitting\nit from the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," repository, and released version 0.6 of\nConsensus."),(0,a.kt)("p",null,"We also merged the mempool fairness improvement to main branch."),(0,a.kt)("p",null,"Another significant enhancement to our documentation was the addition of an\nexplanation of the hardfork combinator forecast horizon."),(0,a.kt)("p",null,"See the sections below for more details."),(0,a.kt)("h2",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"We reviewed the ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch")," design documentation, and added some source-code\ncomments that emphasize certain properties of the decisions the ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch"),"\nlogic makes that are helping us confirm that Genesis does not require any\nchanges to ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch"),". We are waiting on input from our former system\narchitect to verify this."),(0,a.kt)("p",null,"We migrated and updated the conceptual component diagram in the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),"\nrepository which helps us situate the Genesis design and argument."),(0,a.kt)("p",null,"We engaged with the IOG researchers about the Genesis design. We sketched out a\nway to address the concern that the Limit on Patiente (LoP) attack vector duty\ncycle is indeed low, but it's still non-trivial to ultimately conclude it's\nsufficiently low."),(0,a.kt)("p",null,"We also sketched a design to decouple the CPU load of the node from its\nresponsiveness to the socket, since the LoP is a relatively tight timeout, and\nnode performance bugs inducing seconds-worth of latency are unfortunately\nfamiliar phenomena."),(0,a.kt)("h2",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/62"},"added an\nexplanation")," of\na question that we had to explain many times about the exact behavior of the\nhardfork combinator forecast horizon."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a34b3179.fc92e4ec.js b/assets/js/a34b3179.fc92e4ec.js new file mode 100644 index 00000000000..c5fb3eaddcf --- /dev/null +++ b/assets/js/a34b3179.fc92e4ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22254],{94029:a=>{a.exports=JSON.parse('{"label":"crypto","permalink":"/cardano-updates/tags/crypto","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/a3889346.f4b45fc1.js b/assets/js/a3889346.f4b45fc1.js new file mode 100644 index 00000000000..150212711e9 --- /dev/null +++ b/assets/js/a3889346.f4b45fc1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49769],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=n.createContext({}),d=function(e){var t=n.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=d(e.components);return n.createElement(u.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),p=d(a),h=r,m=p["".concat(u,".").concat(h)]||p[h]||c[h]||o;return a?n.createElement(m,i(i({ref:t},s),{},{components:a})):n.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},8838:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-09-30-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-09-30-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-30-ledger.md",source:"@site/blog/2022-09-30-ledger.md",title:"Ledger Team Update",description:"Ledger Update",date:"2022-09-30T00:00:00.000Z",formattedDate:"September 30, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.285,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-09-30-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-10-04-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-09-27-network"}},u={authorsImageUrls:[void 0]},d=[{value:"Ledger Update",id:"ledger-update",level:2},{value:"Technical debt issues completed",id:"technical-debt-issues-completed",level:3},{value:"Technical debt in progress",id:"technical-debt-in-progress",level:3}],s={toc:d},p="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(p,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"ledger-update"},"Ledger Update"),(0,r.kt)("p",null,"We have continued focusing nearly entirely on addressing technical debt.\nA lot of design work has begun for the next ledger era,\nbut we do not yet have anything concrete to share."),(0,r.kt)("h3",{id:"technical-debt-issues-completed"},"Technical debt issues completed"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/1676"},"issue-1676"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/2992"},"pull-2992"),"] We have finally removed the ledger dependency on the\n",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-prelude")," package. It was barely used in the ledger repository, and it added a dependency\nthat we did not want to maintain. It was a bit difficult to remove, and we had\nto coordinate removing it from cardano-base.\nA lot ended up going into ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/2992"},"pull-2992"),", due to the coordination effort, and we ended\nup updating Plutus as well.\nThis means that we've now also made a lot of progress on the problematic cost model serialization\nissues described in ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2902"},"issue-2902"),".\nIn particular, after we resolve ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3014"},"issue-3014"),", we will not have to wait an epoch before\nreleasing a cost model for a new version of Plutus, as we had to do for the Vasil HF."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3046"},"issue-3046"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3055"},"pull-3055"),"] We moved a module that is now only used in Byron to a Byron package."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3047"},"issue-3047"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3054"},"pull-3054"),"] We improved the interface to the ",(0,r.kt)("inlineCode",{parentName:"li"},"Value")," (multi-asset) type."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3044"},"pull-3044"),"] We debugged and fixed a tricky compilation issue. Certain kinds of field updates\nwere adding approximately 20 minutes to our compile time!"),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2932"},"issue-2932"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3036"},"pull-3036"),"] As a part of our ongoing re-organization of the codebase, we\nhave added a ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardano.Ledger.[Era].Core")," module to each ledger era that has a TxBody class.\nMost classes defined in the era should go in this new module.\nWe also re-export the ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardno.Ledger.Core")," module and the previous ",(0,r.kt)("inlineCode",{parentName:"li"},"Cardano.Ledger.[Era].Core"),"\nmodules from each era.")),(0,r.kt)("h3",{id:"technical-debt-in-progress"},"Technical debt in progress"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3034"},"issue-3034"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3035"},"issue-3035"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/4421"},"node-issue-4421"),"] We are continuing to write benchmarks to understand exactly where\nall the time is being spent on executing the ",(0,r.kt)("inlineCode",{parentName:"li"},"TICKF")," transition.\nThe consolidation of the per-stake-credential stake distribution to the per-stake-pool\ndistribution does seem to account for a large amount of time (near a second as written, which we\nhave down to about half a second with some optimizations),\nbut this does not account for everything.\nApplying the reward update may also be a big contributing factor."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3033"},"pull-3033"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3038"},"pull-3038"),"][",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3041"},"pull-3041"),"] A separate team is working on upgrading all the\ncardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort."),(0,r.kt)("li",{parentName:"ul"},"The nix scripts used to build our new\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger model"),"\ndo not work consistently for everyone, and we have been working on fixing these issues."),(0,r.kt)("li",{parentName:"ul"},"[",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3014"},"issue-3014"),"] We are still working on adding a versioning scheme to all of the ledger\nserializers.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a48d66c0.554b9825.js b/assets/js/a48d66c0.554b9825.js new file mode 100644 index 00000000000..b5b0c79167b --- /dev/null +++ b/assets/js/a48d66c0.554b9825.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[77965],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),s=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),u=s(n),d=r,h=u["".concat(l,".").concat(d)]||u[d]||p[d]||i;return n?a.createElement(h,o(o({ref:t},m),{},{components:n})):a.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:r,o[1]=c;for(var s=2;s<i;s++)o[s]=n[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},69029:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-09-07-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,c={permalink:"/cardano-updates/2023-09-07-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-07-performance-and-tracing.md",source:"@site/blog/2023-09-07-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-09-07T00:00:00.000Z",formattedDate:"September 7, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.3,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-09-07-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-07-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-06-consensus"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:s},u="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack."),(0,r.kt)("li",{parentName:"ul"},"Infrastructure: Various improvements of our analysis pipeline have been merged to ",(0,r.kt)("inlineCode",{parentName:"li"},"master"),", supporting safe log truncation."),(0,r.kt)("li",{parentName:"ul"},"Tracing: Namespace consistency checks have been merged to ",(0,r.kt)("inlineCode",{parentName:"li"},"master")," along with a curated configuration for benchmarking."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.")),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer. "),(0,r.kt)("p",null,"With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance. "),(0,r.kt)("p",null,"The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack."),(0,r.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,r.kt)("p",null,"As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation\noperation that keeps the interdependencies of block events intact. "),(0,r.kt)("p",null,"Truncation might happen at a slightly different point\nin time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time."),(0,r.kt)("h3",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"Consistency checking of namespace implementation and configuration when using the new system has been completed.\nThis feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," shows inconsistencies with the namespaces the system provides - and hence needs attention. "),(0,r.kt)("p",null,"Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many\ndetailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the\nfirst real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a572b6ff.fac7438c.js b/assets/js/a572b6ff.fac7438c.js new file mode 100644 index 00000000000..bce66cfdff4 --- /dev/null +++ b/assets/js/a572b6ff.fac7438c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56618],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=s(n),p=a,h=d["".concat(l,".").concat(p)]||d[p]||m[p]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},18104:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-08-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-08-04-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-performance-and-tracing.md",source:"@site/blog/2023-08-04-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.76,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-08-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-08-04-network"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-04-sre"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:s},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version ",(0,a.kt)("inlineCode",{parentName:"li"},"8.2.0"),"."),(0,a.kt)("li",{parentName:"ul"},"Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"8.2.0")," version of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," required adjustment of some of the sanity checks that are part of our benchmarking\ncluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint\nwhen using it as default for a running node. "),(0,a.kt)("p",null,"A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any\ninconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node.\nThis feature adds another layer of robustness to the whole system."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler\nversions. We've future-proofed our benchmarking code."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend\naccordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant. "),(0,a.kt)("p",null,"The validation phase is ongoing. We were able to perform successful runs and analyses for various ",(0,a.kt)("inlineCode",{parentName:"p"},"8.x")," node versions, including ",(0,a.kt)("inlineCode",{parentName:"p"},"8.2.0-pre"),". With parallel runs on the current cluster, we hope to measure the same effects we've observed with the\nnomad backend - which will be a big step towards production use."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a5bf291f.f146d996.js b/assets/js/a5bf291f.f146d996.js new file mode 100644 index 00000000000..e9b1d75b222 --- /dev/null +++ b/assets/js/a5bf291f.f146d996.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30907],{97577:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/open-source","page":1,"postsPerPage":5,"totalPages":1,"totalCount":1,"blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/a6238997.20176f92.js b/assets/js/a6238997.20176f92.js new file mode 100644 index 00000000000..5125f77d86e --- /dev/null +++ b/assets/js/a6238997.20176f92.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49904],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function d(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=d(e,["components","mdxType","originalType","parentName"]),s=c(n),m=o,g=s["".concat(l,".").concat(m)]||s[m]||p[m]||a;return n?r.createElement(g,i(i({ref:t},u),{},{components:n})):r.createElement(g,i({ref:t},u))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var d={};for(var l in t)hasOwnProperty.call(t,l)&&(d[l]=t[l]);d.originalType=e,d[s]="string"==typeof e?e:o,i[1]=d;for(var c=2;c<a;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},46010:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>d,toc:()=>c});var r=n(87462),o=(n(67294),n(3905));const a={title:"Incident Report",slug:"2023-04-17-ledger",authors:"kevinhammond",tags:["ledger"],hide_table_of_contents:!1},i=void 0,d={permalink:"/cardano-updates/2023-04-17-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-17-incident.md",source:"@site/blog/2023-04-17-incident.md",title:"Incident Report",description:"Incident reporting: Cardano block production temporary outage",date:"2023-04-17T00:00:00.000Z",formattedDate:"April 17, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.38,hasTruncateMarker:!1,authors:[{name:"Kevin Hammond",title:"Head of Software Engineering, Cardano Core",url:"https://github.com/kevinhammond",imageURL:"https://github.com/kevinhammond.png",key:"kevinhammond"}],frontMatter:{title:"Incident Report",slug:"2023-04-17-ledger",authors:"kevinhammond",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-19-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-14-goedel"}},l={authorsImageUrls:[void 0]},c=[{value:"Incident reporting: Cardano block production temporary outage",id:"incident-reporting-cardano-block-production-temporary-outage",level:2},{value:"Further Details",id:"further-details",level:3}],u={toc:c},s="wrapper";function p(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"incident-reporting-cardano-block-production-temporary-outage"},"Incident reporting: Cardano block production temporary outage"),(0,o.kt)("p",null,"On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a \u2018critical\u2019 incident, thus warranting immediate response and investigation by IOG engineers.\nThe investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue \u2013 a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite.\nFollowing successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version.\nWith the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue."),(0,o.kt)("h3",{id:"further-details"},"Further Details"),(0,o.kt)("p",null,"You can read more details on the incident and how it was managed from SundaeSwap\u2019s Pi Lanningham ",(0,o.kt)("a",{parentName:"p",href:"https://www.314pool.com/post/cardano-post-mortem-1"},"here"),". Thanks again to all the community for its support in identifying and fixing this bug."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a687dd04.bb48cff5.js b/assets/js/a687dd04.bb48cff5.js new file mode 100644 index 00000000000..483518cc1cd --- /dev/null +++ b/assets/js/a687dd04.bb48cff5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26026],{3905:(e,a,t)=>{t.d(a,{Zo:()=>c,kt:()=>h});var r=t(67294);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?o(Object(t),!0).forEach((function(a){n(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}function s(e,a){if(null==e)return{};var t,r,n=function(e,a){if(null==e)return{};var t,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],a.indexOf(t)>=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],a.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var i=r.createContext({}),p=function(e){var a=r.useContext(i),t=a;return e&&(t="function"==typeof e?e(a):l(l({},a),e)),t},c=function(e){var a=p(e.components);return r.createElement(i.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},m=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(t),m=n,h=d["".concat(i,".").concat(m)]||d[m]||u[m]||o;return t?r.createElement(h,l(l({ref:a},c),{},{components:t})):r.createElement(h,l({ref:a},c))}));function h(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var o=t.length,l=new Array(o);l[0]=m;var s={};for(var i in a)hasOwnProperty.call(a,i)&&(s[i]=a[i]);s.originalType=e,s[d]="string"==typeof e?e:n,l[1]=s;for(var p=2;p<o;p++)l[p]=t[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,t)}m.displayName="MDXCreateElement"},59536:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>i,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var r=t(87462),n=(t(67294),t(3905));const o={title:"SRE Team Update",slug:"2023-10-13-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,s={permalink:"/cardano-updates/2023-10-13-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-sre.md",source:"@site/blog/2023-10-13-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-10-13T00:00:00.000Z",formattedDate:"October 13, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:2.595,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-10-13-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-10-13-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-11-mithril"}},i={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Sanchonet-demo",id:"sanchonet-demo",level:3}],c={toc:p},d="wrapper";function u(e){let{components:a,...t}=e;return(0,n.kt)(d,(0,r.Z)({},c,t,{components:a,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet environment was updated to 8.5.0-pre."),(0,n.kt)("li",{parentName:"ul"},"Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Various improvements and fixes including:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Add GHA cron schedule"),(0,n.kt)("li",{parentName:"ul"},"Add nix auto-gc to avoid running out of storage during large package set builds"),(0,n.kt)("li",{parentName:"ul"},"Add new packages to capkgs"),(0,n.kt)("li",{parentName:"ul"},"Reduce runner storage requirement leaving more room for builds"),(0,n.kt)("li",{parentName:"ul"},"Restructure capkgs attribute names to avoid package name collisions"),(0,n.kt)("li",{parentName:"ul"},"Return to non-musl builds for cardano packages to retain journald compatability"),(0,n.kt)("li",{parentName:"ul"},"Update cache usage to from file level to folder level to reduce network and latency overhead"),(0,n.kt)("li",{parentName:"ul"},"Commit diff: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/a274b72...b197e22"},"capkgs-compare"))))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/16"},"cardano-parts-pull-16")),(0,n.kt)("li",{parentName:"ul"},"Dbsync, smash, faucet and more: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/15"},"cardano-parts-pull-15"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes"),(0,n.kt)("li",{parentName:"ul"},"Adds nginx vhost metrics exporter profile"),(0,n.kt)("li",{parentName:"ul"},"Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down"),(0,n.kt)("li",{parentName:"ul"},"Adds bash *-ng autocompletion compatible wrappers"),(0,n.kt)("li",{parentName:"ul"},"Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview"),(0,n.kt)("li",{parentName:"ul"},"Adds downstream grafana cloud dashboard as templates"),(0,n.kt)("li",{parentName:"ul"},"Adds downstream grafana cloud alerts as templates"),(0,n.kt)("li",{parentName:"ul"},"Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish"),(0,n.kt)("li",{parentName:"ul"},"Updates the basic profile with IOG cache and commonly used bins"),(0,n.kt)("li",{parentName:"ul"},"Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning"),(0,n.kt)("li",{parentName:"ul"},"Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks"),(0,n.kt)("li",{parentName:"ul"},"Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets"),(0,n.kt)("li",{parentName:"ul"},"Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration"),(0,n.kt)("li",{parentName:"ul"},"Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion"),(0,n.kt)("li",{parentName:"ul"},"Updates the colmena template with dbsync, smash, faucet machines profiles and roles"),(0,n.kt)("li",{parentName:"ul"},"Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns"),(0,n.kt)("li",{parentName:"ul"},"Bumps capkgs node-ng to 8.5.0-pre")))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Dbsync, smash, faucet and more: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/3"},"cardano-playground-pull-3"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview"),(0,n.kt)("li",{parentName:"ul"},"Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts"),(0,n.kt)("li",{parentName:"ul"},"Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change"),(0,n.kt)("li",{parentName:"ul"},"Optimizes machine sizes"),(0,n.kt)("li",{parentName:"ul"},"Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets"),(0,n.kt)("li",{parentName:"ul"},"Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion"),(0,n.kt)("li",{parentName:"ul"},"Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning"),(0,n.kt)("li",{parentName:"ul"},"Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration")))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update sanchonet network to cardano-node 8.5.0: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/c8a480fa7cdb6eff4f8b4565450c57361ddfdec4"},"cardano-world-commit"))),(0,n.kt)("h3",{id:"sanchonet-demo"},"Sanchonet-demo"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo/commit/4124465c0c663d11c8cf4ef80af18a5246f89b31"},"sanchonet-demo-commit"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a69f0deb.4d5ff44c.js b/assets/js/a69f0deb.4d5ff44c.js new file mode 100644 index 00000000000..25600029c02 --- /dev/null +++ b/assets/js/a69f0deb.4d5ff44c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2773],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=u(a),h=r,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||i;return a?n.createElement(s,l(l({ref:t},c),{},{components:a})):n.createElement(s,l({ref:t},c))}));function s(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=h;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[d]="string"==typeof e?e:r,l[1]=o;for(var u=2;u<i;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},67900:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-07-18-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-07-18-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-18-node-cli-api.md",source:"@site/blog/2023-07-18-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-07-18T00:00:00.000Z",formattedDate:"July 18, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.065,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-07-18-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-20-goedel"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-14-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-07-05---2023-07-18"},"2023-07-05 - 2023-07-18"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Integrate Conway certificates in cardano-api"),(0,r.kt)("li",{parentName:"ul"},"Prepare cardano-cli and cardano-api for cardano-node 8.1.2"),(0,r.kt)("li",{parentName:"ul"},"Tagged cardano-cli 8.3.0.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Query for the hash of the constitution (Conway)"),(0,r.kt)("li",{parentName:"ul"},"Ability to create votes and governance actions"))),(0,r.kt)("li",{parentName:"ul"},"Tagged cardano-cli 8.3.1.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Make it build with ghc-9.6"))),(0,r.kt)("li",{parentName:"ul"},"Upgrade to optparse-applicative-fork-0.18.1.0 for parsing command line options")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/74"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"optparse-applicative-fork-0.18.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/72"},"Integrate cardano-api changes for fixed Show and Eq instances for Proposal type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/68"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.3.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/67"},"Add alonzo era to ",(0,r.kt)("inlineCode",{parentName:"a"},"Parser AnyShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/66"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"sbe")," variable name for the type is ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/65"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.3.0.0")))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/123"},"Fix ghc version CPP")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/122"},"Add a HasTypeProxy constraint to getVerificationKey")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/119"},"Incorporate remaining ledger certificates")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/117"},"Release cardano-api 8.8.1.0, cardano-api-gen 8.1.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/115"},"Fix Eq, Show for Proposal type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/112"},"Wire up remaining governance actions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/108"},"Export ",(0,r.kt)("inlineCode",{parentName:"a"},"withShelleyBasedEraConstraintsForLedger"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/106"},"Remove unnecessary constraint")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/104"},"Make it build with ghc-9.6")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/103"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraints")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/102"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.8.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/101"},"Add CastVerificationKeyRole StakePoolKey StakeKey instance")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/99"},"Update ledger and consensus")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/98"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"era")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"sbe")," when type is ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5391"},"Fix Shutdown test for new exit codes"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5387"},"Fix markdown links"))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/69"},"Apply ",(0,r.kt)("inlineCode",{parentName:"a"},"stylish-haskell")," to project"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.3167acc2.js b/assets/js/a6aa9e1f.3167acc2.js new file mode 100644 index 00000000000..7cfaf6538b5 --- /dev/null +++ b/assets/js/a6aa9e1f.3167acc2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93089],{80046:(e,t,a)=>{a.r(t),a.d(t,{default:()=>u});var n=a(67294),r=a(86010),l=a(52263),i=a(1944),o=a(35281),s=a(39058),c=a(99703),m=a(90197),g=a(79985);function p(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,l.Z)(),{blogDescription:r,blogTitle:o,permalink:s}=t,c="/"===s?a:o;return n.createElement(n.Fragment,null,n.createElement(i.d,{title:c,description:r}),n.createElement(m.Z,{tag:"blog_posts_list"}))}function d(e){const{metadata:t,items:a,sidebar:r}=e;return n.createElement(s.Z,{sidebar:r},n.createElement(g.Z,{items:a}),n.createElement(c.Z,{metadata:t}))}function u(e){return n.createElement(i.FG,{className:(0,r.Z)(o.k.wrapper.blogPages,o.k.page.blogListPage)},n.createElement(p,e),n.createElement(d,e))}},99703:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(67294),r=a(95999),l=a(32244);function i(e){const{metadata:t}=e,{previousPage:a,nextPage:i}=t;return n.createElement("nav",{className:"pagination-nav","aria-label":(0,r.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},a&&n.createElement(l.Z,{permalink:a,title:n.createElement(r.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")}),i&&n.createElement(l.Z,{permalink:i,title:n.createElement(r.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries"),isNext:!0}))}},79985:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(67294),r=a(9460),l=a(30390);function i(e){let{items:t,component:a=l.Z}=e;return n.createElement(n.Fragment,null,t.map((e=>{let{content:t}=e;return n.createElement(r.n,{key:t.metadata.permalink,content:t},n.createElement(a,null,n.createElement(t,null)))})))}}}]); \ No newline at end of file diff --git a/assets/js/a6afc437.c755f9a0.js b/assets/js/a6afc437.c755f9a0.js new file mode 100644 index 00000000000..c4ae4233c07 --- /dev/null +++ b/assets/js/a6afc437.c755f9a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[69565],{87737:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/a6e1d45a.affc557f.js b/assets/js/a6e1d45a.affc557f.js new file mode 100644 index 00000000000..e40ad9bc804 --- /dev/null +++ b/assets/js/a6e1d45a.affc557f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[8737],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),s=u(a),m=n,c=s["".concat(p,".").concat(m)]||s[m]||h[m]||i;return a?r.createElement(c,o(o({ref:t},d),{},{components:a})):r.createElement(c,o({ref:t},d))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},30221:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-10-27-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-27-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-hydra.md",source:"@site/blog/2023-10-27-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-27T00:00:00.000Z",formattedDate:"October 27, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.895,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-27-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-01-mithril"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-27-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],d={toc:u},s="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team fixed the ",(0,n.kt)("inlineCode",{parentName:"p"},"gen-hydra-keys")," command to avoid\noverwriting existing keys, and resolved issues related to the rewritten\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-tui"),'. They also worked on a \\"dirt road\\" implementation for the\n\\"Ignored init tx\\" notification, improving the robustness of the system.'),(0,n.kt)("p",null,"The team finalized preparations for the Cardano Summit presentation, including\nimplementation of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-poll")," example DApp."),(0,n.kt)("p",null,'If you happen to read this and attend the Summit in Dubai, make sure to check\nout our Masterclass about \\"Developing Hydra + Mithril for Scaling Cardano\\" on\nFriday, November 3 at 14:00-15:30 local time in the \\"Al Dar\\" room!'),(0,n.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fix ",(0,n.kt)("inlineCode",{parentName:"li"},"gen-hydra-keys")," command to not overwrite existing keys\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1136"},"#1136")),(0,n.kt)("li",{parentName:"ul"},"Fixed the rewritten ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tui"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1113"},"#1113"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1137"},"#1137")),(0,n.kt)("li",{parentName:"ul"},"Finalized cardano summit preparation\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1109"},"#1109")),(0,n.kt)("li",{parentName:"ul"},"Implemented the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-poll")," example DApp ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-scaling/hydra-poll"},"link to\nrepository")),(0,n.kt)("li",{parentName:"ul"},'Dirt road implementation for \\"Ignored init tx\\" notification\n',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/529"},"#529"))),(0,n.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Attend cardano summit and deliver presentation"),(0,n.kt)("li",{parentName:"ul"},"Clarify / close user created issues"),(0,n.kt)("li",{parentName:"ul"},"Build ",(0,n.kt)("inlineCode",{parentName:"li"},"aarch64-darwin")," binaries in CI")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a6e5ff3c.f8f8d3c0.js b/assets/js/a6e5ff3c.f8f8d3c0.js new file mode 100644 index 00000000000..39decb94bc0 --- /dev/null +++ b/assets/js/a6e5ff3c.f8f8d3c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78153],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(a),h=n,m=p["".concat(s,".").concat(h)]||p[h]||u[h]||o;return a?r.createElement(m,i(i({ref:t},c),{},{components:a})):r.createElement(m,i({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},3868:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-18-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-18-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-hydra.md",source:"@site/blog/2023-08-18-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.13,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-18-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-18-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-18-ledger"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],c={toc:d},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version 0.12.0, a significant update that\nbrings support for cardano-node 8.1.2, along with performance enhancements and\nvarious API improvements. Additionally, the team successfully onboarded a new\ncontributor who is now actively participating in operating a Hydra Head. They\ntook part in a meeting of the Intersect open source committee and prepared the\nHydra master-class for RareEvo, an educational initiative for the community."),(0,n.kt)("p",null,"If you happen to be at RareEvo, register for the Hydra master-class ",(0,n.kt)("a",{parentName:"p",href:"https://docs.google.com/forms/d/1Q9KIxwKeyZeNrKDBiYWceYjnbxIxaEwC8Eo5LWxSa2g/viewform?edit_requested=true"},"using this\nform"),".\nWe hope to make it possible to follow along on-line as well and will announce\ndetails on the Hydra announcements channel on the ",(0,n.kt)("a",{parentName:"p",href:"https://discord.gg/Qq5vNTg9PT"},"IOG discord\nserver"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released version 0.12.0 which adds support for cardano-node 8.1.2, performance\nand several API improvements. ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.12.0"},"Release notes")),(0,n.kt)("li",{parentName:"ul"},"Replaced commit via websocket with external draft + submit. ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/954"},"#954")),(0,n.kt)("li",{parentName:"ul"},"Onboarded new contributor to the point where he actively participates in operating a Head now."),(0,n.kt)("li",{parentName:"ul"},"Joined a first meeting of the Intersect open source committee"),(0,n.kt)("li",{parentName:"ul"},"Prepared the Hydra master-class for RareEvo.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting"),(0,n.kt)("li",{parentName:"ul"},"Run the Hydra master-class at RareEvo!"),(0,n.kt)("li",{parentName:"ul"},"Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff"),(0,n.kt)("li",{parentName:"ul"},"Clear out red bin items (technical debt)"),(0,n.kt)("li",{parentName:"ul"},"Groom network resilience and explorer features")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a7418040.313e46d8.js b/assets/js/a7418040.313e46d8.js new file mode 100644 index 00000000000..f31559f4a6a --- /dev/null +++ b/assets/js/a7418040.313e46d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16886],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,a=function(e,t){if(null==e)return{};var r,i,a={},n=Object.keys(e);for(i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(r),c=a,d=m["".concat(s,".").concat(c)]||m[c]||h[c]||n;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<n;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},43603:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>p});var i=r(87462),a=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-11-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-15-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-15-mithril.md",source:"@site/blog/2023-11-15-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-15T00:00:00.000Z",formattedDate:"November 15, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.92,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-15-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-11-14-node-cli-api"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},m="wrapper";function h(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files."),(0,a.kt)("p",null,"Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Prototype a P2P relay with ",(0,a.kt)("inlineCode",{parentName:"strong"},"libp2p"))," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,a.kt)("inlineCode",{parentName:"strong"},"mithril-client")," library")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1311"},"#1311")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Fix certificate hashes re-computation in aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1343"},"#1343")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("strong",{parentName:"li"},"Remove ",(0,a.kt)("inlineCode",{parentName:"strong"},"unstable")," tag in ",(0,a.kt)("inlineCode",{parentName:"strong"},"unstable")," release")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1235"},"#1235")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a7a31948.7327cf2d.js b/assets/js/a7a31948.7327cf2d.js new file mode 100644 index 00000000000..ed186235ea7 --- /dev/null +++ b/assets/js/a7a31948.7327cf2d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85943],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),u=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return r.createElement(i.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,h=d["".concat(i,".").concat(m)]||d[m]||s[m]||o;return a?r.createElement(h,l(l({ref:t},c),{},{components:a})):r.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p[d]="string"==typeof e?e:n,l[1]=p;for(var u=2;u<o;u++)l[u]=a[u];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},91654:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>p,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-09-29-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-09-29-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-sre.md",source:"@site/blog/2023-09-29-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.68,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-09-29-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-29-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-27-mithril"}},i={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.4.0-pre"},"8.4.0-pre"),"."),(0,n.kt)("li",{parentName:"ul"},"The use of cardano-node ",(0,n.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/inputoutput/cardano-node"},"docker hub")," will be deprecated in preference of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pkgs/container/cardano-node"},"GHCR"))),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Refactor parsing scripts, add github action automation, various bugfixes and cleanup: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/c2c7680...a274b72"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/14"},"cardano-parts-pull-8"))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/2"},"cardano-playground"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update sanchonet network to cardano-node 8.4.0: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/compare/8cb559a...3edafb9"},"cardano-world-compare")),(0,n.kt)("li",{parentName:"ul"},"Rotate KES on shelley-qa: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/8301b044ad106ff8ca71dcbbdb5b17fe9ec6fc6d"},"cardano-world-commit"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a8723288.631293b3.js b/assets/js/a8723288.631293b3.js new file mode 100644 index 00000000000..d08ccf2d4c3 --- /dev/null +++ b/assets/js/a8723288.631293b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86673],{51115:a=>{a.exports=JSON.parse('{"label":"sre","permalink":"/cardano-updates/tags/sre","allTagsPath":"/cardano-updates/tags","count":15}')}}]); \ No newline at end of file diff --git a/assets/js/a8738e5f.f18e47da.js b/assets/js/a8738e5f.f18e47da.js new file mode 100644 index 00000000000..cab67b29e7c --- /dev/null +++ b/assets/js/a8738e5f.f18e47da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[99881],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>d});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,r,a=function(e,t){if(null==e)return{};var i,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(i),c=a,d=s["".concat(p,".").concat(c)]||s[c]||m[c]||n;return i?r.createElement(d,o(o({ref:t},h),{},{components:i})):r.createElement(d,o({ref:t},h))}));function d(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,i)}c.displayName="MDXCreateElement"},67461:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-04-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-04-20-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-20-mithril.md",source:"@site/blog/2023-04-20-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-04-20T00:00:00.000Z",formattedDate:"April 20, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.245,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-04-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-04-21-ledger"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-20-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(s,(0,r.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team released a new ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2315.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2315.0"))," distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures."),(0,a.kt)("p",null,"Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2315.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2315.0"))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic that implements a relational store in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signed_entity")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/816"},"#816")),(0,a.kt)("li",{parentName:"ul"},"Completed the creation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signer")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/814"},"#814")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"single_signature")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/829"},"#829")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implement generic signing/verification of entity services ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the definition of the interface of the generic entity service for signing ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/847"},"#847")),(0,a.kt)("li",{parentName:"ul"},"Worked on the implementation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"Certifier")," service in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/850"},"#850")),(0,a.kt)("li",{parentName:"ul"},"Completed the extension of the ",(0,a.kt)("inlineCode",{parentName:"li"},"SignedEntityType")," type ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/848"},"#848")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"Tick")," service in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/849"},"#849")),(0,a.kt)("li",{parentName:"ul"},"Worked on implementing the signable builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Mithril Stake Distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/851"},"#851"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a9019578.618a0894.js b/assets/js/a9019578.618a0894.js new file mode 100644 index 00000000000..861d91dc90d --- /dev/null +++ b/assets/js/a9019578.618a0894.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4497],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(a),s=r,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},d),{},{components:a})):n.createElement(h,i({ref:t},d))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},65934:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-10-04-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-04-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-04-node-cli-api.md",source:"@site/blog/2022-10-04-node-cli-api.md",title:"Node API & CLI Team Update",description:"Node-Api-Cli Update",date:"2022-10-04T00:00:00.000Z",formattedDate:"October 4, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.98,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-10-04-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-10-04-db-sync"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-30-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"Node-Api-Cli Update",id:"node-api-cli-update",level:2},{value:"2022-10-04 - 2022-10-18",id:"2022-10-04---2022-10-18",level:2},{value:"Executive Summary",id:"executive-summary",level:3},{value:"Completed",id:"completed",level:3},{value:"cardano-cli",id:"cardano-cli",level:4},{value:"cardano-api",id:"cardano-api",level:4},{value:"cardano-node",id:"cardano-node",level:4},{value:"In Progress",id:"in-progress",level:3},{value:"cardano-cli",id:"cardano-cli-1",level:4},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"node-api-cli-update"},"Node-Api-Cli Update"),(0,r.kt)("h2",{id:"2022-10-04---2022-10-18"},"2022-10-04 - 2022-10-18"),(0,r.kt)("h3",{id:"executive-summary"},"Executive Summary"),(0,r.kt)("p",null,"The majority of the team's time was spent between getting ",(0,r.kt)("inlineCode",{parentName:"p"},"1.34.4")," ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli"),"."),(0,r.kt)("h3",{id:"completed"},"Completed"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4504"},"GHC 9.2.4 preparations"))),(0,r.kt)("h4",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[Serenity]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4491"},"Separate IO from txBuild and txBuildRaw functions"))),(0,r.kt)("h4",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4501"},"TxWitness text envelope format does not roundtrip in Shelley era"))),(0,r.kt)("h4",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4526"},"Fix MacOS GHA CI"))),(0,r.kt)("h3",{id:"in-progress"},"In Progress"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4508"},"Release 1.34.4"))),(0,r.kt)("h4",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4538"},"Fix query era mismatch bug in transaction build command")),(0,r.kt)("li",{parentName:"ul"},"[Serenity]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4516"},"Condense Read and Validation modules in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4276"},"Add tx-mempool command to CLI"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4482"},"Return Lovelace for calculateMinimumUTxO")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a9347c1b.a93f84b5.js b/assets/js/a9347c1b.a93f84b5.js new file mode 100644 index 00000000000..b03a55675e8 --- /dev/null +++ b/assets/js/a9347c1b.a93f84b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76323],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>c});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},h=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(r),d=i,c=s["".concat(p,".").concat(d)]||s[d]||m[d]||n;return r?a.createElement(c,o(o({ref:t},h),{},{components:r})):a.createElement(c,o({ref:t},h))}));function c(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:i,o[1]=l;for(var u=2;u<n;u++)o[u]=r[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},95829:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-02-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-09-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-09-mithril.md",source:"@site/blog/2023-02-09-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-02-09T00:00:00.000Z",formattedDate:"February 9, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.01,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-02-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-10-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-08-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(s,(0,a.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team released a new ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2304.1"},(0,i.kt)("inlineCode",{parentName:"a"},"2304.1"))," distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store."),(0,i.kt)("p",null,"Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version ",(0,i.kt)("inlineCode",{parentName:"p"},"1.35.5")," on their ",(0,i.kt)("inlineCode",{parentName:"p"},"devnet")," and infrastructure."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2304.1"},(0,i.kt)("inlineCode",{parentName:"a"},"2304.1"))),(0,i.kt)("li",{parentName:"ul"},"Fixed a bug that prevented some signers to sign with ",(0,i.kt)("inlineCode",{parentName:"li"},"2304.0-prerelease")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/716"},"#716")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an ",(0,i.kt)("inlineCode",{parentName:"li"},"EraChecker")," that checks if an era is active ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/708"},"#708")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an ",(0,i.kt)("inlineCode",{parentName:"li"},"EraReader")," that gathers era activation data ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/709"},"#709")),(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of an ",(0,i.kt)("inlineCode",{parentName:"li"},"EraReader")," adapter with on chain transaction as source ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/710"},"#710")),(0,i.kt)("li",{parentName:"ul"},"Completed the relational design of the aggregator store ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/476"},"#476")),(0,i.kt)("li",{parentName:"ul"},"Completed adding a new SPO on the ",(0,i.kt)("inlineCode",{parentName:"li"},"testing-preview")," network ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/729"},"#729")),(0,i.kt)("li",{parentName:"ul"},"Completed the upgrade of the Cardano node to ",(0,i.kt)("inlineCode",{parentName:"li"},"1.35.5")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/725"},"#725")),(0,i.kt)("li",{parentName:"ul"},"Fixed flakiness in the CI ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/734"},"#734"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/aa4c9cc8.6f769daf.js b/assets/js/aa4c9cc8.6f769daf.js new file mode 100644 index 00000000000..b899eabb90a --- /dev/null +++ b/assets/js/aa4c9cc8.6f769daf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[50919],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=u(a),m=n,c=h["".concat(s,".").concat(m)]||h[m]||d[m]||i;return a?r.createElement(c,o(o({ref:t},p),{},{components:a})):r.createElement(c,o({ref:t},p))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},13503:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-05-19-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-19-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-19-hydra.md",source:"@site/blog/2023-05-19-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-05-19T00:00:00.000Z",formattedDate:"May 19, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.045,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-05-19-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-24-node-cli-api"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-17-consensus"}},s={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:u},h="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the "Coding Standards" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete validation of timed transactions feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/196"},"#196"),"."),(0,n.kt)("li",{parentName:"ul"},"Write ","\u201c","ops","\u201d"," instructions and troubleshooting ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/569"},"#569")," and improve logs."),(0,n.kt)("li",{parentName:"ul"},"Remove ",(0,n.kt)("inlineCode",{parentName:"li"},"--ledger-genesis")," argument to hydra-node options ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/863"},"#863"),"."),(0,n.kt)("li",{parentName:"ul"},"Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/877"},"#877"),"."),(0,n.kt)("li",{parentName:"ul"},"Use nix to build test binaries to increase CI speed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/867"},"#867"),"."),(0,n.kt)("li",{parentName:"ul"},"Updated our ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/wiki/Coding-Standards"},"Coding Standards"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting."),(0,n.kt)("li",{parentName:"ul"},'Have a first end-to-end journey for external commits implementing "Option A" ',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),"."),(0,n.kt)("li",{parentName:"ul"},"Integrate spanish translation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/866"},"#866"),"."),(0,n.kt)("li",{parentName:"ul"},"Improve and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"),"."),(0,n.kt)("li",{parentName:"ul"},"Allow commit transactions with multiple UTxO ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/774"},"#774"),"."),(0,n.kt)("li",{parentName:"ul"},"Explored stateless observation and refined hydra explorer ticket ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/696"},"#696"),".")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/aafd9eaa.e577fb53.js b/assets/js/aafd9eaa.e577fb53.js new file mode 100644 index 00000000000..855dce80032 --- /dev/null +++ b/assets/js/aafd9eaa.e577fb53.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89083],{25543:a=>{a.exports=JSON.parse('{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing","allTagsPath":"/cardano-updates/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/ab4c3279.cc8e8278.js b/assets/js/ab4c3279.cc8e8278.js new file mode 100644 index 00000000000..b9fbdbc862c --- /dev/null +++ b/assets/js/ab4c3279.cc8e8278.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72690],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function u(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),h=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=h(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),s=h(a),c=n,m=s["".concat(l,".").concat(c)]||s[c]||d[c]||i;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var u={};for(var l in t)hasOwnProperty.call(t,l)&&(u[l]=t[l]);u.originalType=e,u[s]="string"==typeof e?e:n,o[1]=u;for(var h=2;h<i;h++)o[h]=a[h];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},67660:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>u,toc:()=>h});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-09-22-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,u={permalink:"/cardano-updates/2023-09-22-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-22-hydra.md",source:"@site/blog/2023-09-22-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-22T00:00:00.000Z",formattedDate:"September 22, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.035,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-22-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-26-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-22-performance-and-tracing"}},l={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:h},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team conducted the monthly review meeting in\ncollaboration with Mithril, enhancing project coordination."),(0,n.kt)("p",null,"The team improved the gen-hydra-key node command for smoother usability\nand identified concrete steps to enhance network resiliency in feature\nitems ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188"),",\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1080"},"#1080"),", and\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1079"},"#1079"),".\nAdditionally, they contributed the aiken-mode editor integration to the\naiken-lang organization, updated dependencies to utilize cardano-api\n8.20, and published the Hydra security advisory CVE-2023-42806 with a\nworkaround available for users."),(0,n.kt)("p",null,"These efforts demonstrate the team\\'s commitment to project improvement,\nsecurity, and open-source community collaboration."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Conducted the monthly review meeting together with Mithril"),(0,n.kt)("li",{parentName:"ul"},"Improved gen-hydra-key node command\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1077"},"#1077")),(0,n.kt)("li",{parentName:"ul"},"Established a clear plan to improve resiliency of network and manifested\nfeature items ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188"),",\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1080"},"#1080")," and\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1079"},"#1079")),(0,n.kt)("li",{parentName:"ul"},"Moved ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/aiken-lang/aiken-mode"},"aiken-mode")," (created by SN)\nto aiken-lang organization"),(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to using cardano-api 8.20\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1075"},"#1075")),(0,n.kt)("li",{parentName:"ul"},"Published security advisory\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq"},"CVE-2023-42806"),"\n(workaround available)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Write-up the monthly report for September"),(0,n.kt)("li",{parentName:"ul"},'Finish "network resilience to disconnects"\n',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"Finish kupo integration with hydra\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1078"},"#1078")),(0,n.kt)("li",{parentName:"ul"},"Discuss and decide on using aiken or not"),(0,n.kt)("li",{parentName:"ul"},"Address the published security advisory\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq"},"CVE-2023-42806"),"\n(to not require workaround)"),(0,n.kt)("li",{parentName:"ul"},"Ideally, release 0.13.0")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ac12bff3.f511d815.js b/assets/js/ac12bff3.f511d815.js new file mode 100644 index 00000000000..ae5a4023dec --- /dev/null +++ b/assets/js/ac12bff3.f511d815.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[4608],{66384:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/49","page":49,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/48","nextPage":"/cardano-updates/page/50","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ac56cb0b.5e036803.js b/assets/js/ac56cb0b.5e036803.js new file mode 100644 index 00000000000..708134d24bf --- /dev/null +++ b/assets/js/ac56cb0b.5e036803.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39329],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),l=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},u=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),h=l(n),c=o,m=h["".concat(s,".").concat(c)]||h[c]||d[c]||i;return n?a.createElement(m,r(r({ref:t},u),{},{components:n})):a.createElement(m,r({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=c;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[h]="string"==typeof e?e:o,r[1]=p;for(var l=2;l<i;l++)r[l]=n[l];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},7640:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var a=n(87462),o=(n(67294),n(3905));const i={title:"Consensus Team Update",slug:"2022-11-16-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},r=void 0,p={permalink:"/cardano-updates/2022-11-16-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-consensus.md",source:"@site/blog/2022-11-16-consensus.md",title:"Consensus Team Update",description:"High-level summary",date:"2022-11-16T00:00:00.000Z",formattedDate:"November 16, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:5.06,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-11-16-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-18-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-16-node-cli-api"}},s={authorsImageUrls:[void 0]},l=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"High-level status report",id:"high-level-status-report",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Finish the UTxO HD prototype",id:"finish-the-utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:3},{value:"Benchmarking the CSJ prototype",id:"benchmarking-the-csj-prototype",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3},{value:"Support",id:"support",level:3}],u={toc:l},h="wrapper";function d(e){let{components:t,...i}=e;return(0,o.kt)(h,(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,o.kt)("p",null,'During the past two weeks, the consensus team started documenting the\nimplementation of the UTxO HD feature and continued developing tests for it. As\npart of our work on UTxO HD, we improved the Haskell support for LMDB. We also\nspent time working on the LSM tree prototype, and designed a parameter tuning\nalgorithm for it. Regarding our work on Genesis, our investigation of the\n"plateaus" pointed at the ',(0,o.kt)("inlineCode",{parentName:"p"},"TICKF"),' slowdown on era boundaries as culprit. This\nled us to developing a caching strategy that will not only remove the\naforementioned "plateaus", but can help alleviating the growing block production\ndelay on epoch switch. We also helped reviewing the block forge credential\nhotswap feature, which is intended for use in the adoption of P2P.'),(0,o.kt)("p",null,"We also worked on paying technical debt and fostering collaboration. In\nparticular, we improved the ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim")," framework, which is crucial for testing and\nsimulating Cardano components. We also removed thunks that appeared on era\ntranslations, and improved our diffusion pipelining feature. We are working on a\npresentation for explaining Praos and Genesis."),(0,o.kt)("h2",{id:"high-level-status-report"},"High-level status report"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Finish the UTxO HD prototype: in progress.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"We added documentation for this feature."),(0,o.kt)("li",{parentName:"ul"},"We developed the second version of the mempool tests."),(0,o.kt)("li",{parentName:"ul"},"We fixed benchmarks that were inflating the speedup we observed in the\nanti-diff implementation of sequences of differences. Speedups are now in the\nrange of ","[3.33, 4.75]",", which remain significant."),(0,o.kt)("li",{parentName:"ul"},"We continued improving Haskell LMDB support."),(0,o.kt)("li",{parentName:"ul"},'We finished implementing a "parameter tuning algorithm" for the LSM tree\nprototype. This enables us to run experiments to check the correctness of\nthe algorithm.'))),(0,o.kt)("li",{parentName:"ul"},"Genesis: in progress.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},'Work investigating the "plateaus" in the ',(0,o.kt)("inlineCode",{parentName:"li"},"ChainSync")," jumping prototype\npointed to the ",(0,o.kt)("inlineCode",{parentName:"li"},"TICKF")," slowdown on era boundaries as culprit."))),(0,o.kt)("li",{parentName:"ul"},"Tech debt:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"We improved the capabilities of our ",(0,o.kt)("inlineCode",{parentName:"li"},"io-sim")," library, which is crucial for\ntesting and simulating Cardano components."),(0,o.kt)("li",{parentName:"ul"},"We removed thunks from epoch translations in the ledger."),(0,o.kt)("li",{parentName:"ul"},"We added Linux CI support for ",(0,o.kt)("inlineCode",{parentName:"li"},"lmdb-simple"),"."),(0,o.kt)("li",{parentName:"ul"},"We got pending diffusion pipelining improvements merged."))),(0,o.kt)("li",{parentName:"ul"},"Fostering collaboration:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"We are working on a explanation of Praos and Genesis protocols."))),(0,o.kt)("li",{parentName:"ul"},"Support:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},'Investigation of CSJ "plateaus" led us to developing a caching strategy for\n',(0,o.kt)("inlineCode",{parentName:"li"},"TICKF"),' that will not only remove these "plateaus", but can help alleviating\nthe growing block production delay on epoch switch.'),(0,o.kt)("li",{parentName:"ul"},"We reviewed the block forge credential hotswapping feature which is intended\nfor use in the adoption of P2P.")))),(0,o.kt)("h2",{id:"workstreams"},"Workstreams"),(0,o.kt)("h3",{id:"finish-the-utxo-hd-prototype"},"Finish the UTxO HD prototype"),(0,o.kt)("p",null,"We merged PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4060"},"#4060"),", which adds a report documenting the UTxO HD\nfeature, and puts emphasis in explaining how the mempool works in combination\nwith UTxO HD."),(0,o.kt)("p",null,"We opened a draft PR with the second iteration of the property tests for the\nmempool (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4076"},"#4076"),")."),(0,o.kt)("p",null,"We fixed the ",(0,o.kt)("inlineCode",{parentName:"p"},"Arbitrary")," instances for keys and values in ",(0,o.kt)("inlineCode",{parentName:"p"},"DiffSeq")," benchmarks\n(",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4143"},"#4143"),"). The problem was that we were testing with mostly small\nvalues, which artificially boosted the performance gains we saw on benhcmarks.\nSpeedups are now in the range of ","[3.33, 4.75]"," across the different\nconfigurations."),(0,o.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,o.kt)("p",null,"We focused on incorporating feedback on the monadic cursor API PR (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"#1"),").\nThis required us to make small tweaks to ",(0,o.kt)("inlineCode",{parentName:"p"},"quickcheck-lockstep")," to test the new\nAPI. We also updated the backing store property tests to use the new version of\nthe monadic cursor API."),(0,o.kt)("h3",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,o.kt)("p",null,'We worked on the LSM tree prototype. In particular: finished implementing a\n"parameter tuning algorithm" that adapts the LSM tree design based on factors\nlike:'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"workload"),(0,o.kt)("li",{parentName:"ul"},"machine specs, "),(0,o.kt)("li",{parentName:"ul"},"and characteristics of the data being stored. ")),(0,o.kt)("p",null,"We are now running experiments to gather results and cross-reference them with\nexisting experimental results from the LSM tree paper to see if the algorithm is\nworking correctly."),(0,o.kt)("h3",{id:"benchmarking-the-csj-prototype"},"Benchmarking the CSJ prototype"),(0,o.kt)("p",null,'We focused on investigating the "plateaus" in the ',(0,o.kt)("inlineCode",{parentName:"p"},"ChainSync")," tip, which turned\nout to be due to the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," bug which we previously were only aware of in the\ncontext of the long forging times near epoch boundaries. For the most drastic\npatch by @nfrisby to speed up ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF"),", full sync is speeding up by 7%."),(0,o.kt)("p",null,"The following plot shows that by caching the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," the ",(0,o.kt)("inlineCode",{parentName:"p"},"ChainSync")," tip and the\n",(0,o.kt)("inlineCode",{parentName:"p"},"VolatileDB")," tip progress at the same rate."),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(29287).Z,width:"765",height:"445"})),(0,o.kt)("p",null,"The plot below shows the speedup observed by caching the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," rule wrt the\nbaseline."),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(17885).Z,width:"773",height:"445"})),(0,o.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,o.kt)("p",null,"After addressing the PR comments, we merged PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/16"},"#16"),", which implements\nthe ",(0,o.kt)("inlineCode",{parentName:"p"},"MonadCatch")," instance for ",(0,o.kt)("inlineCode",{parentName:"p"},"STM"),". This extends the capability of our ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim"),"\nlibrary, which is crucial for testing and simulating Cardano components PR #16\nclosed ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/1461"},"#1461"),". This new feature was published as version ",(0,o.kt)("inlineCode",{parentName:"p"},"0.4.0.0"),"\nof ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim"),"."),(0,o.kt)("p",null,"We continued with our work fixing the ",(0,o.kt)("inlineCode",{parentName:"p"},"NoThunk")," errors required for enabling\nnightly tests, with the help of ",(0,o.kt)("inlineCode",{parentName:"p"},"TVarInvariant")," checks in ",(0,o.kt)("inlineCode",{parentName:"p"},"strict-stm")," and\n",(0,o.kt)("inlineCode",{parentName:"p"},"nothunks")," libraries. We proposed fixes in ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger")," that took care of\nthunks that appeared in era translations (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3143"},"#3143"),"). The fixes will be\nintegrated back into consensus when ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger")," approves and publish the\nchanges introduced in ",(0,o.kt)("inlineCode",{parentName:"p"},"#3143"),"."),(0,o.kt)("p",null,"We added CI support for ",(0,o.kt)("inlineCode",{parentName:"p"},"lmdb-simple")," (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/2"},"#2"),"). We currently test the build on\na Linux environment only."),(0,o.kt)("p",null,"We got pending diffusion pipelining PRs (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3857"},"#3857"),", ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3860"},"#3860"),",\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3856"},"#3856"),") merged, after rebasing and addressing feedback."),(0,o.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,o.kt)("p",null,"@nfrisby finished a visualisation tool and outlined scripts for the Praos and\nGenesis explanation presentations. The idea is to produce a video that gives an\noverview of these protocols."),(0,o.kt)("h3",{id:"support"},"Support"),(0,o.kt)("p",null,"We started working on caching the computation of the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," rule\n(",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4054"},"#4054"),"), since this was blocking our benchmarking work for\nGenesis. In addition, this issue has the Cardano community ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4421"},"quite\nconcerned"),", so we are hoping the work done in caching the\ncomputation of the ",(0,o.kt)("inlineCode",{parentName:"p"},"TICKF")," rule can help alleviating the growing block\nproduction delay on epoch switch."),(0,o.kt)("p",null,"We reviewed the block forge credential hotswapping PR ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3800"},"#3800")," from the\nnetworking team, which is intended for use in the adoption of P2P."))}d.isMDXComponent=!0},17885:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-16-comparing-TICKF-batch-c6570a71c4a5d53b10cb7309d2cc742c.png"},29287:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-16-removed-stuttering-e49aa27a0e549f0195373203da971ba7.png"}}]); \ No newline at end of file diff --git a/assets/js/ac87db6a.c0500c01.js b/assets/js/ac87db6a.c0500c01.js new file mode 100644 index 00000000000..8f44570bc8f --- /dev/null +++ b/assets/js/ac87db6a.c0500c01.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62703],{20637:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/4","page":4,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/3","nextPage":"/cardano-updates/tags/hydra/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ac8a5a87.fb97dd70.js b/assets/js/ac8a5a87.fb97dd70.js new file mode 100644 index 00000000000..8360098cf62 --- /dev/null +++ b/assets/js/ac8a5a87.fb97dd70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25853],{33480:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"2023-Q2-consensus","metadata":{"permalink":"/cardano-updates/quarterly/2023-Q2-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-consensus.md","source":"@site/quarterly/2023-Q2-consensus.md","title":"Consensus Q2 2023 Update","description":"2023-04 -- 2023-06","date":"2023-12-07T21:19:58.000Z","formattedDate":"December 7, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/quarterly/tags/consensus"}],"readingTime":4.47,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Q2 2023 Update","slug":"2023-Q2-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"nextItem":{"title":"Network Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-network"}},"content":"## 2023-04 -- 2023-06\\n\\n### Main achievements\\n\\n#### UTxO HD\\n\\n- We finished a major prototype refactoring, which includes:\\n - A better and finer grained DB lock mechanism.\\n - Elimination of race conditions.\\n - Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance.\\n - Architectural simplifications and performance improvements.\\n- We implemented a new package to support db-sync integration with UTxO-HD.\\n- We ran another set of ad-hoc benchmarks:\\n - We uncovered a performance regression on the Network component when using `GHC-9.2/9.4`.\\n - The synchronization and replay speed are as expected.\\n - However, we uncovered memory consumption issues (see figure below).\\n - The in-memory backend is consuming more memory than the baseline.\\n - The LMDB backend shows an unexpected memory usage peak.\\n - Investigation on these issues is ongoing.\\n- We integrated the latest changes in `main` branch.\\n - This required a re-design of the mempool to include the mempool fairness\\n improvement.\\n\\n![](/images/consensus/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks.png)\\n\\n#### Genesis\\n\\n- The Genesis work for this PI focused on an high-priority issue from the IOG Researchers\' feedback on the proposal.\\n - This particular question was not anticipated when the Q2 PI was planned.\\n - As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized.\\n - That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package.\\n- The IOG Researchers\' feedback on the design was very valuable. It had two primary effects.\\n- Outcome 1: We re-introduced distinct behaviors when the node is \\"syncing\\" versus when it is \\"caught up\\".\\n - This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated.\\n - The additional design complexity is relatively small.\\n- Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.\\n - The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era.\\n - All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras.\\n - Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later.\\n - The primary invention was a model for bounding how much benefit the adversary\'s long-range attack could possibly gain from Praos\'s natural short forks.\\n- Relevant questions that the IOG Researchers are still assessing.\\n - These do not block the Genesis implementation, but do affect the ultimate values of specific parameters.\\n - Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?\\n - Question 2: what is the upper bound on how much grinding can improve the adversary\'s leader schedule within some Genesis window?\\n\\n#### Support\\n- We performed an analysis on number of file descriptors used by Consensus, this\\n information can be used by the node operators to check if the number of file\\n descriptors they want to support are enough, thus improving the user (eg node\\n operator) experience.\\n- We implemented a mempool fairness improvement, by which transactions are\\n guaranteed to be processed irrespective of their size.\\n\\n#### Technical debt\\n\\n- We fixed a bug in followers logic, which was discovered by our `QuickCheck`\\nproperty tests.\\n- We created an [immutable DB\\n server](https://github.com/input-output-hk/ouroboros-consensus/pull/68). This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results.\\n- We created a [`db-truncater`](https://github.com/input-output-hk/ouroboros-consensus/pull/70) tool, which can be used in disaster recovery and benchmarking scenarios.\\n- We created a [benchmarks comparison tool](https://github.com/input-output-hk/ouroboros-consensus/pull/161) that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance *improvements* introduced by the Ledger team in version `0.6.0.0` of Consensus wrt version `0.5.0.0`.\\n\\n![](/images/consensus/2023-Q2-beacon-graph.png)\\n\\n#### Fostering collaboration\\n\\n- We released `fs-sim` as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project.\\n- We migrated the consensus code to a [new repository](https://github.com/input-output-hk/ouroboros-consensus), splitting\\nit from the `ouroboros-network` repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases).\\n- We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users).\\n- We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.\\n\\n### Next steps\\n\\n#### UTxO HD\\n\\n- We will [get UTxO-HD ready for handover](https://github.com/input-output-hk/ouroboros-consensus/issues/28).\\n\\n#### Genesis\\n\\n- We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work."},{"id":"2023-Q2-network","metadata":{"permalink":"/cardano-updates/quarterly/2023-Q2-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-network.md","source":"@site/quarterly/2023-Q2-network.md","title":"Network Q2 2023 Update","description":"2023-04 - 2023-06","date":"2023-12-07T21:19:58.000Z","formattedDate":"December 7, 2023","tags":[{"label":"network","permalink":"/cardano-updates/quarterly/tags/network"}],"readingTime":5.145,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Q2 2023 Update","slug":"2023-Q2-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-consensus"},"nextItem":{"title":"SRE Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-sre"}},"content":"## 2023-04 - 2023-06\\n\\n### Main achievements\\n\\n#### Eclipse Evasion\\n\\nWe finalised the design of eclipse evasion and implemented its mechanism which\\nrelays on connectivity to _big ledger peers_. _Big ledger peers_ are the\\nlargest ledger peers which accumulate 90% of stake (currently there are less\\nthan 1000 of them). The outbound governor has new targets for _known_,\\n_established_ and _active_ big ledger peers which work in a similar way that\\nsuch targets work for ledger peers. The [ouroboros-network#4662] PR is\\ncurrently in review.\\n\\nAs part of this work we also identified a bug which would prevent a node to\\nconnect to itself. Such connections are not easily detectable and are expected\\nto be dropped by the churn mechanism, nonetheless they should not be buggy.\\nThe failure was discovered thanks to our e2e simulation of diffusion using\\n`io-sim` & property based testing.\\n\\nThe PR also refactors the heart of the `ouroboros-network` interface reducing\\ntechnical debt that would otherwise accumulate.\\n\\nWe also identified a possible improvement in the churn mechanism, which will be\\nimplemented in Q3. Churn needs to await for peers to terminate, we can\\nimprove the synchronisation. [ouroboros-network#4617]\\n\\n#### Ecosystem P2P Deployment Progress\\n\\nWe reached __50% of stake in hands of SPOs who run at least on P2P relay__. Now\\nalso Emurgo and CF are running some P2P relays. Also 20% of IOG relays are\\nrunning in P2P mode.\\n\\n![P2P Progress](/images/network/2023-07-06-p2p-progress.png)\\n\\n#### Peer Sharing\\n\\nWe implemented _bootstrapping for peer sharing_ (also known as light peer\\nsharing). New downstream (inbound) peers are now added to the _known peers_ of\\nthe _outbound governor_. Together with peer sharing this allows for non\\nregistered relays to propagate through the network. [ouroboros-network#3596]\\n\\n_Please note that peer sharing is disabled by default and is not considered safe\\nuntil Bootstrap Peers (see below) or Genesis is implemented._\\n\\n#### Diffusion (P2P)\\n\\n- We designed a feature which will reduce the load on IOG relays (in future\\n also run by CF & Emurgo). The feature consists of two parts. A new source\\n of peers called _bootstrap peers_ (obtained from via an https request), the\\n ability to switch from bootstrap peers to ledger peers if the node is synced\\n (we are collaborating with the consensus team on the interface [Bootstrap\\n Peers IER][bootstrap-ier]). This feature will be completed in Q3.\\n [ouroboros-network#4530]\\n\\n- We published a blog post about [P2P design & implementation][p2p-blog].\\n\\n- Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections:\\n [ouroboros-network#4559].\\n\\n- We merged changes which allow the consensus layer to start / stop block\\n forging thread. This will allow to deploy P2P block producing nodes which\\n serve as a live backup node. [ouroboros-consensus#140]\\n\\n- We fixed a few bugs in local root peers DNS resolution service:\\n [ouroboros-network#4583], [ouroboros-network#4571].\\n\\n- We limited concurrency of DNS name resolutions: [ouroboros-network#4596].\\n\\n- Galois Inc implemented query option for Handshake: [ouroboros-network#4256].\\n\\n- We fixed handshake query timeout: [ouroboros-network#4608].\\n\\n- We implemented warm valency for local root peers. This can help when using\\n DNS names in local root peers which resolve to many IP addresses. [ouroboros-network#4575]\\n\\n- We merged handshake changes which allow query protocol versions. Thanks to\\n James Parker from Galois Inc.: [ouroboros-network#4256], [cardano-cli#30].\\n\\n### Other Improvements & Developments\\n\\n#### CDDL\\n\\n- We added `node-to-node` and `node-to-client` CDDL specs / tests for encoding\\n of `NodeToNodeVersionData` and `NodeToClientVersionData`. \\n\\n- We clarified an inconsistency between CDDL spec and implementation which is\\n highly polymorphic. We designed and implemented a fix for `tx-submission`\\n and `local-tx-submission` mini-protocols. Specs for other mini-protocols will\\n be improved at a later stage. [ouroboros-network#4580]\\n\\n#### [Cardano Ping][cardano-ping]\\n\\n- `cardano-ping` command was deprecated in favour of `cardano-cli ping` (the\\n transition was done by the `node` team).\\n\\n- Support for `node-to-client` protocol using Unix sockets.\\n [ouroboros-network#4601]\\n\\n- Support for `NodeToNodeV_11` and `NodeToClientV_16`, [ouroboros-network#4587]\\n\\n- `cardano-cli ping` is now using _ISO8601_ format for timestamps. Formatting of\\n messages was improved. [ouroboros-network#4593]\\n\\n- `cardano-cli ping` has a new `--query-versions` flag which allows to query\\n supported versions by the remote node. This is supported by\\n `cardano-node-8.1.0`. [ouroboros-network#4589], [cardano-node#5313], [cardano-cli#30]\\n\\n#### [IOSim][io-sim]\\n\\n- We fixed timeouts & delays in `io-classes` in a series of PRs: [io-sim#81],\\n [io-sim#82], [io-sim#86], [io-sim#87].\\n\\n- We released `strict-stm-1.1.0.1` on Hackage which fixed a bug in package\\n description file: [io-sim#101].\\n\\n#### [Typed Protocols][typed-protocols]\\n\\n- We published haddocks of `typed-protocols` at\\n https://input-output-hk.github.io/typed-protocols\\n\\n#### [Cardano Client][cardano-client]\\n\\n- We fixed a bug in `cardano-client-0.1.0.2` release which results in clients\\n (e.g. `db-sync`) negotiate an experimental protocol version.\\n\\n#### Technical debt\\n\\n- After the split between consensus & network, we made `cardano-client`\\n independent of `ouroboros-consensus-diffusion`: [ouroboros-network#4526].\\n\\n- We wrap all exceptions in `DiffusionError`: [ouroboros-network#4537], [cardano-node#5356].\\n\\n#### CI improvements\\n\\n- We switched to use GitHub merge queues in `ouroboros-network`, `io-sim` and\\n `typed-protocols` repositories; [typed-protocols#30], [ouroboros-network#4546].\\n\\n- We cleaned & updated scripts which run on CI.\\n\\n- We implemented a script to verify & release packages on CHaP; [ouroboros-network#4542], [ouroboros-network#4573].\\n\\n- We implemented a new CI script and cleaned existing ones:\\n [ouroboros-network#4572].\\n\\n- We don\'t install cryptographic libraries on CI anymore as none of our\\n packages requires them; [ouroboros-network#4539].\\n\\n- Improved caching of dependencies: [ouroboros-network#4553].\\n\\n- We made it possible to trigger building haddock manually:\\n [ouroboros-network#4549].\\n\\n#### GHC 9.4 & 9.6\\n\\nWe made all repositories under our control compile with `ghc-9.4` and `ghc-9.6`\\nwhich includes `ouroboros-network`, `io-sim`, `typed-protocols` and\\n`Win32-network`.\\n\\n### Next steps\\n\\nWe will continue towards our [aspirational roadmap][roadmap].\\n\\n* We will continue reviewing eclipse evasion.\\n* As [ouroboros-consensus#140] was merged, we are making progress towards\\n releasing P2P on block production nodes. We hope to analyse performance\\n regression on such nodes observed on the benchmarking cluster. [roadmap-3887]\\n* We are also focused on [roadmap-3969]. Note that it was expanded in Q2.\\n\\n\\n[typed-protocols]: https://github.com/input-output-hk/typed-protocols\\n[typed-protocols#30]: https://github.com/input-output-hk/typed-protocols/pull/30\\n\\n[io-sim]: https://github.com/input-output-hk/io-sim\\n[io-sim#81]: https://github.com/input-output-hk/io-sim/pull/81\\n[io-sim#82]: https://github.com/input-output-hk/io-sim/pull/82\\n[io-sim#86]: https://github.com/input-output-hk/io-sim/pull/86\\n[io-sim#87]: https://github.com/input-output-hk/io-sim/pull/87\\n[io-sim#101]: https://github.com/input-output-hk/io-sim/pull/101\\n\\n\\n[cardano-node#5313]: https://github.com/input-output-hk/cardano-node/pull/5313\\n[cardano-node#5356]: https://github.com/input-output-hk/cardano-node/pull/5356\\n[cardano-cli#30]: https://github.com/input-output-hk/cardano-cli/pull/30/\\n\\n[cardano-client]: https://github.com/input-output-hk/ouroboros-network/blob/master/cardano-client\\n[cardano-ping]: https://github.com/input-output-hk/ouroboros-network/blob/master/cardano-ping\\n[ouroboros-network#3596]: https://github.com/input-output-hk/ouroboros-network/issues/3596\\n[ouroboros-network#4256]: https://github.com/input-output-hk/ouroboros-network/pull/4256\\n[ouroboros-network#4256]: https://github.com/input-output-hk/ouroboros-network/pull/4256\\n[ouroboros-network#4526]: https://github.com/input-output-hk/ouroboros-network/pull/4526\\n[ouroboros-network#4530]: https://github.com/input-output-hk/ouroboros-network/issues/4530\\n[ouroboros-network#4537]: https://github.com/input-output-hk/ouroboros-network/issues/4537\\n[ouroboros-network#4539]: https://github.com/input-output-hk/ouroboros-network/issues/4539\\n[ouroboros-network#4540]: https://github.com/input-output-hk/ouroboros-network/issues/4540\\n[ouroboros-network#4542]: https://github.com/input-output-hk/ouroboros-network/issues/4542\\n[ouroboros-network#4546]: https://github.com/input-output-hk/ouroboros-network/pull/4546\\n[ouroboros-network#4549]: https://github.com/input-output-hk/ouroboros-network/issues/4549\\n[ouroboros-network#4553]: https://github.com/input-output-hk/ouroboros-network/issues/4553\\n[ouroboros-network#4559]: https://github.com/input-output-hk/ouroboros-network/pull/4559\\n[ouroboros-network#4571]: https://github.com/input-output-hk/ouroboros-network/pull/4571\\n[ouroboros-network#4572]: https://github.com/input-output-hk/ouroboros-network/pull/4572\\n[ouroboros-network#4573]: https://github.com/input-output-hk/ouroboros-network/pull/4573\\n[ouroboros-network#4575]: https://github.com/input-output-hk/ouroboros-network/pull/4575\\n[ouroboros-network#4580]: https://github.com/input-output-hk/ouroboros-network/pull/4580\\n[ouroboros-network#4583]: https://github.com/input-output-hk/ouroboros-network/pull/4583\\n[ouroboros-network#4587]: https://github.com/input-output-hk/ouroboros-network/pull/4587\\n[ouroboros-network#4589]: https://github.com/input-output-hk/ouroboros-network/pull/4589\\n[ouroboros-network#4593]: https://github.com/input-output-hk/ouroboros-network/pull/4593\\n[ouroboros-network#4596]: https://github.com/input-output-hk/ouroboros-network/pull/4596\\n[ouroboros-network#4601]: https://github.com/input-output-hk/ouroboros-network/pull/4601\\n[ouroboros-network#4608]: https://github.com/input-output-hk/ouroboros-network/pull/4608\\n[ouroboros-network#4662]: https://github.com/input-output-hk/ouroboros-network/pull/4662\\n\\n[bootstrap-ier]: https://github.com/input-output-hk/ouroboros-consensus/blob/fbb8c8ee97517809dec0d0c8ae3fae9b8d272caf/docs/website/docs/bootstrap-peers-IER.md\\n[ouroboros-consensus#140]: https://github.com/input-output-hk/ouroboros-consensus/pull/140\\n\\n[io-sim-blog]: https://engineering.iog.io/2023-04-14-io-sim-annoucement\\n[p2p-blog]: https://engineering.iog.io/2023-06-28-p2p\\n\\n[roadmap]: https://github.com/orgs/input-output-hk/projects/39/views/30\\n[roadmap-3887]: https://github.com/orgs/input-output-hk/projects/39/views/30?pane=issue&itemId=6875505\\n[roadmap-3969]: https://github.com/orgs/input-output-hk/projects/39/views/30?pane=issue&itemId=8920085"},{"id":"2023-Q2-sre","metadata":{"permalink":"/cardano-updates/quarterly/2023-Q2-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-sre.md","source":"@site/quarterly/2023-Q2-sre.md","title":"SRE Q2 2023 Update","description":"2023-04 - 2023-06","date":"2023-12-07T21:19:58.000Z","formattedDate":"December 7, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/quarterly/tags/sre"}],"readingTime":0.68,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Q2 2023 Update","slug":"2023-Q2-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Network Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-network"},"nextItem":{"title":"Performance & Tracing Q3 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q3-performance-and-tracing"}},"content":"## 2023-04 - 2023-06\\n\\n### Main achievements\\n\\nIn addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:\\n- Expanding the darwin CI cluster and adding aarch64 builder support\\n- Adding bare metal capability to bitte clusters\\n- Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality\\n- Creation of pool performance analysis queries and scripting\\n- Migration of testnet metadata server to cardano-world\\n- Cardano shelley qa migration to cardano-world\\n- Cardano sanchonet environment spin up to test Conway era functionality\\n- Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature\\n\\n### Next steps\\n\\n- Continue with the conversion of mainnet to using p2p topology"},{"id":"2023-Q3-performance-and-tracing","metadata":{"permalink":"/cardano-updates/quarterly/2023-Q3-performance-and-tracing","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q3-performance-and-tracing.md","source":"@site/quarterly/2023-Q3-performance-and-tracing.md","title":"Performance & Tracing Q3 2023 Update","description":"2023-07 - 2023-09","date":"2023-12-07T21:19:58.000Z","formattedDate":"December 7, 2023","tags":[{"label":"performance-tracing","permalink":"/cardano-updates/quarterly/tags/performance-tracing"}],"readingTime":3.27,"hasTruncateMarker":false,"authors":[{"name":"Michael Karg","title":"Performance and Tracing Team Lead","url":"https://github.com/mgmeier","imageURL":"https://github.com/mgmeier.png","key":"mgmeier"}],"frontMatter":{"title":"Performance & Tracing Q3 2023 Update","slug":"2023-Q3-performance-and-tracing","authors":"mgmeier","tags":["performance-tracing"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Q2 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q2-sre"},"nextItem":{"title":"SRE Q3 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q3-sre"}},"content":"## 2023-07 - 2023-09\\n\\n### Main achievements\\n\\n* Release benchmarking\\n* Developing and running UTxO-HD benchmarks - in-memory flavour\\n* P2P benchmarks, facilitating rollout\\n* Production-readiness of the new Nomad cluster has been reached\\n* Optimization of and introspection capability for the new tracing system\\n* GHC9 performance investigation (and possible remedy)\\n* Conensus QTAs: first real-world application of prototype\\n#### Release benchmarking\\n\\nOngoing release benchmarking is a crucial safeguard to `cardano-node`\'s release cycle from a performance perspective. We\'ve performed and analyzed benchmarks for node versions `8.2.x` to `8.5` throughout Q3.\\n\\n#### UTxO-HD benchmarks\\n\\nTargeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery.\\n\\n#### P2P benchmarks\\n\\nIn Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature.\\n\\n#### New nomad cluster\\n\\nThe new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received \\nvarious rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest\\nof our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it\\nready for production use.\\n\\n#### New tracing system\\n\\nOur new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that\\nit is roughly on par with the legacy system while offering a richer feature set and greater flexibility. \\n\\nAdditionally, in Q3 we equipped the system with an introspection capability. This is now used for generating\\nend user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system.\\n\\n#### GHC9 performance\\n\\nIn Q3, a joint investigation with DevX into GHC9\'s behaviour revealed where and how GHC9 misses opportunities for\\noptimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable\\nthose optimizations - which is still being validated.\\n\\n#### Consensus QTAs\\n\\nIn collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations\'\\nperformance characteristics. It\'s now applicable, and being applied, to a real-world task - namely\\ngathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds.\\n\\n### Next steps\\n\\n#### Benchmarking:\\n\\nIn Q4, the focus will be on:\\n* facilitating the next mainnet release\\n* benchmarking runs in the Conway era\\n* developing benchmarks / workloads for Conway-exclusive actions\\n* implementing a specialized benchmark setup for the UTxO-HD on-disk variant\\n* developing new Plutus benchmarks to safeguard Plutus V3\\n* benchmarks regarding the rollout of P2P\\n\\n#### Performance\\n\\nFor certain blocking performance issues we\'ve located the cause, or even found a solution in a cross-team effort. In Q4 we\'ll advance that work to ensure the ongoing\\nrelease cycle for mainnet, as well as make GHC9 become a viable release platform.\\n\\n#### New tracing system\\n\\nFor the new tracing system, we\'ll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support.\\n\\n#### UTxO-HD monitoring\\n\\nWe\'ll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way.\\n\\n#### Nomad backend\\n\\nFrom Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad.\\n\\n#### Workbench\\n\\nWe will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with `cardano-node`.\\n\\n#### Consensus component QTAs (co-development)\\n\\nIn Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation."},{"id":"2023-Q3-sre","metadata":{"permalink":"/cardano-updates/quarterly/2023-Q3-sre","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q3-sre.md","source":"@site/quarterly/2023-Q3-sre.md","title":"SRE Q3 2023 Update","description":"2023-07 - 2023-09","date":"2023-12-07T21:19:58.000Z","formattedDate":"December 7, 2023","tags":[{"label":"sre","permalink":"/cardano-updates/quarterly/tags/sre"}],"readingTime":0.905,"hasTruncateMarker":false,"authors":[{"name":"John Lotoski","title":"Service Reliability Engineer","url":"https://github.com/johnalotoski","imageURL":"https://github.com/johnalotoski.png","key":"johnalotoski"}],"frontMatter":{"title":"SRE Q3 2023 Update","slug":"2023-Q3-sre","authors":"johnalotoski","tags":["sre"],"hide_table_of_contents":false},"prevItem":{"title":"Performance & Tracing Q3 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q3-performance-and-tracing"},"nextItem":{"title":"Consensus Quarterly Update","permalink":"/cardano-updates/quarterly/2023-04-25-consensus"}},"content":"## 2023-07 - 2023-09\\n\\n### Main achievements\\n\\nIn addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:\\n* Completion of mainnet relay networking conversion to p2p topology\\n* Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality\\n* Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines\\n* Creation of a nix content addressed packages repository, [capkgs](https://github.com/input-output-hk/capkgs):\\n * To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells\\n* Creation of a cardano performance benchmarking cluster, [cardano-perf](https://github.com/input-output-hk/cardano-perf):\\n * To replace legacy cluster benchmark tooling\\n* Creation of a cardano cluster composition repository, [cardano-parts](https://github.com/input-output-hk/cardano-parts):\\n * For enabling multi-cluster, multi-role cardano network deployments\\n* Creation of a cardano testnets repository, [cardano-playground](https://github.com/input-output-hk/cardano-playground):\\n * Utilizing cardano-parts for testnet deployments\\n* Creation of a sanchonet demo repository, [sanchonet-demo](https://github.com/input-output-hk/sanchonet-demo):\\n * Utilizing cardano-parts for fast sanchonet test environment and demo purposes\\n\\n### Next steps\\n\\n* Continue with migration of cardano-world testnets to cardano-playground\\n* Proceed with spinup of mainnet p2p bootstrap cluster\\n* Scale down mainnet non-p2p legacy cluster at the appropriate time"},{"id":"2023-04-25-consensus","metadata":{"permalink":"/cardano-updates/quarterly/2023-04-25-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-25-consensus.md","source":"@site/quarterly/2023-04-25-consensus.md","title":"Consensus Quarterly Update","description":"Consensus Quarterly Update","date":"2023-04-25T00:00:00.000Z","formattedDate":"April 25, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/quarterly/tags/consensus"}],"readingTime":2.3,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Quarterly Update","slug":"2023-04-25-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"SRE Q3 2023 Update","permalink":"/cardano-updates/quarterly/2023-Q3-sre"},"nextItem":{"title":"Network Q1 2023 Update","permalink":"/cardano-updates/quarterly/2023-04-04-network"}},"content":"## Consensus Quarterly Update\\n## 2023-01 - 2023-03\\n\\n### Main achievements\\n\\n#### UTxO HD\\n\\n- We finished the testing activities for the prototype, which involved adding\\n new tests, and fixing and enabling temporarily disabled tests.\\n- We spent a substantial amount of effort refactoring and cleaning the\\n prototype.\\n- We audited the UTxO HD prototype to make sure it can accommodate the migration\\n of other tables (eg stake-keys registration) from memory to disk. The result\\n of the audit was positive.\\n- We ran ad-hoc benchmarks for reading keys and flushing values to disk. No\\n unexpected costs found.\\n- We ran the first system level benchmarks. The performance regressions reported\\n were due to an unrealistic snapshotting rate. We need to re-run them again\\n after we design a more fine grained locking mechanism.\\n\\n#### Genesis\\n\\n- We elaborated a roadmap of the remaining work for Genesis.\\n- We presented the design to the IOG Researchers and PNSol on February 20. The\\n design was well received. We updated the Genesis design with the researcher\'s\\n feedback.\\n - We plugged the new DoS vector identified during the aforementioned\\n presentation.\\n- We developed a generator for adversarial leader schedules that satisfy key\\n Ouroboros properties, which will be used to test the Genesis design.\\n - The generator enables use of smaller Ouroboros parameters, which makes\\n extrema more likely and counterxamples easier interpret.\\n- We wrote up the latest design iteration.\\n- We continued benchmarking the Chain Sync Jumping prototype. In particular:\\n - We debugged the prototype\'s performance regression, and unmasked the\\n actual cause by patching our initial theory (bad queuing behavior)\\n - We identified and validated the actual cause (a pathological case in\\n BlockFetch tiebreaker).\\n\\n#### Support\\n\\n- We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother\\n to serve a local immutable DB.\\n\\n#### Conway era\\n\\n- We integrated the Conway era into consensus.\\n\\n#### Technical debt\\n\\n- We fixed a bug with followers, which was discovered by property tests.\\n- We developed a DSL for specifying and running ChainDB test cases.\\n- We fixed failing tests with iterators.\\n- We created micro-benchmarks for adding transactions to the mempool.\\n\\n#### Fostering collaboration\\n\\n- We released a new technical documentation site for consensus.\\n- We factored out several packages to external repositories. Some of this work\\n originated in the UTxO HD workstream.\\n\\n### Next steps\\n\\n#### UTxO HD\\n\\n- https://github.com/input-output-hk/ouroboros-consensus/issues/28\\n\\n#### Genesis\\n\\n- https://github.com/input-output-hk/ouroboros-consensus/issues/33\\n- https://github.com/input-output-hk/ouroboros-consensus/issues/32\\n- https://github.com/input-output-hk/ouroboros-consensus/issues/31\\n\\n#### Support\\n\\n- Design Consensus side of hardfork-enactment in the Voltaire phase\\n ([#4180](https://github.com/input-output-hk/ouroboros-network/issues/4180)).\\n- Estimate the number of file descriptors Consensus needs\\n [#20](https://github.com/input-output-hk/ouroboros-consensus/issues/20).\\n\\n#### Tech debt\\n\\n- Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define\\n for consensus. Pick one and implement benchmarks for it.\\n\\n#### Fostering collaboration\\n\\n- Onboard a new team member."},{"id":"2023-04-04-network","metadata":{"permalink":"/cardano-updates/quarterly/2023-04-04-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-04-network.md","source":"@site/quarterly/2023-04-04-network.md","title":"Network Q1 2023 Update","description":"2023-01 - 2023-03","date":"2023-04-04T00:00:00.000Z","formattedDate":"April 4, 2023","tags":[{"label":"network","permalink":"/cardano-updates/quarterly/tags/network"}],"readingTime":2.62,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Q1 2023 Update","slug":"2023-04-04-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Quarterly Update","permalink":"/cardano-updates/quarterly/2023-04-25-consensus"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/quarterly/2023-04-03-ledger"}},"content":"## 2023-01 - 2023-03\\n\\n### Main achievements\\n\\n#### Gradual dynamic P2P release on mainnet\\n\\nWe released two version of `cardano-node` with dynamic P2P capabilities:\\n\\n* [`1.35.6`][cardano-node-1.35.6]\\n - we found and fixed a bug in exception handling in `peer-state-actions`\\n [pull-4357]\\n - we found and fixed a busy loop when demoting a peer from hot to warm [pull-4385] \\n* [`1.35.7`][cardano-node-1.35.7]\\n - includes interoperability in the legacy non-p2p network stack [pull-4467]\\n* we fixed a busy loop of demotion & promotions: `warm -> hot -> warm`\\n [pull-4485] /it will be included in `cardano-node-8.0.0` release/.\\n\\nCurrently there are more than 200 P2P relays on mainnet.\\n\\n#### Peer Sharing\\n\\nWe implemented /peer sharing/ [pull-4019] which will be available as an\\nexperimental feature in one of the future `cardano-node` releases.\\n\\nWe implemented /light peer sharing/, e.g. adding inbound connections to the set\\nof known peers of the outbound governor, which allows to bootstrap relays not\\nregistered on chain. This complements peer sharing. The [pull-4277] is in\\nlate review stages.\\n\\n#### Eclipse Evasion\\n\\nWe finalised design of eclipse evasion and we started implementing it. We\\nhave an initial implementation (not merged). We are in the process of extending\\nour test suite to cover new implementation details: [issue-3886], [pull-4462].\\n\\n#### Cardano Network Service Assurance\\n\\nGalois has been making progress on _Cardano Network Service Assurance_ project.\\n\\n* In cardano-node, they have developed a `datapoint` abstraction that creates\\n a queue of (existing) log events, they now have two such `datapoint`s (of log\\n events) implemented.\\n\\n* They have developed a `datapoint` client executable that can connect to a node\\n which serves the \\"new tracing\\".\\n\\n* They have been exploring approaches for the consolidation and analysis of\\n `datapoint` data to extract actionable network health status.\\n\\n#### Cardano-Node\\n\\n* We made it possible to configure accepted connections limit [pull-4902].\\n\\n#### Testing improvements\\n\\n* We fixed a bug in network simulation implementation of TCP simultaneous open [pull-4265].\\n\\n* We introduced header-body split in the diffusion simulation [pull-4419] (in review).\\n\\n* We introduced initiator only nodes in the diffusion simulation [pull-4280].\\n\\n* We fixed a connection-manager test failure [issue-4370].\\n\\n#### Technical Debt\\n\\n* We refactored `Snocket` interface decoupling it from the multiplexer\\n [pull-4260]. This simplified some aspects of the KES agent implementation.\\n\\n* We introduces a record for CBOR codecs which are used for various data\\n structures by mini-protocol codecs [pull-4430].\\n\\n#### Documentation\\n\\n* We explained some limitations of CDDL in our technical report [pull-4351].\\n\\n#### IO-Sim\\n\\n* We fixed implementation of `MVar`\'s [pull-70].\\n\\n#### NoThunks\\n\\n* We published a new version of [`nothunks`] library to Hackage.\\n\\n### Next steps\\n\\n* Finish implementation & testing of eclipse evasion [issue-3886].\\n* Optimise connectivity to peers behind firewall [issue-4381].\\n* Finish the work on enabling block production dynamically to allow using P2P\\n on block producers [issue-3159].\\n* If time permits we would like also to reserve some time for finishing\\n publication of `io-sim` to Hackage.\\n\\n\\n[cardano-node-1.35.6]: https://github.com/input-output-hk/cardano-node/releases/tag/1.35.6\\n[cardano-node-1.35.7]: https://github.com/input-output-hk/cardano-node/releases/tag/1.35.7\\n\\n[pull-4019]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[pull-4277]: https://github.com/input-output-hk/ouroboros-network/pull/4277\\n[pull-4260]: https://github.com/input-output-hk/ouroboros-network/pull/4260\\n[pull-4265]: https://github.com/input-output-hk/ouroboros-network/pull/4265\\n[pull-4280]: https://github.com/input-output-hk/ouroboros-network/pull/4280\\n[pull-4351]: https://github.com/input-output-hk/ouroboros-network/pull/4351\\n[pull-4357]: https://github.com/input-output-hk/ouroboros-network/pull/4357\\n[pull-4385]: https://github.com/input-output-hk/ouroboros-network/pull/4385\\n[pull-4430]: https://github.com/input-output-hk/outoboros-network/pull/4430\\n[pull-4460]: https://github.com/input-output-hk/outoboros-network/pull/4460\\n[pull-4462]: https://github.com/input-output-hk/outoboros-network/pull/4462\\n[pull-4465]: https://github.com/input-output-hk/outoboros-network/pull/4465\\n[pull-4467]: https://github.com/input-output-hk/outoboros-network/pull/4467\\n[pull-4419]: https://github.com/input-output-hk/outoboros-network/pull/4419\\n\\n[pull-4902]: https://github.com/input-output-hk/cardano-node/pull/4902\\n\\n[issue-3159]: https://github.com/input-output-hk/ouroboros-network/issues/3159\\n[issue-3886]: https://github.com/input-output-hk/ouroboros-network/issues/3886\\n[issue-4370]: https://github.com/input-output-hk/ouroboros-network/issues/4370\\n[issue-4381]: https://github.com/input-output-hk/ouroboros-network/issues/4381\\n\\n[pull-70]: https://github.com/input-output-hk/io-sim/pull/70\\n\\n[`nothunks`]: https://hackage.haskell.org/package/nothunks"},{"id":"2023-04-03-ledger","metadata":{"permalink":"/cardano-updates/quarterly/2023-04-03-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-03-ledger.md","source":"@site/quarterly/2023-04-03-ledger.md","title":"Ledger Team Update","description":"Ledger Quarterly Update","date":"2023-04-03T00:00:00.000Z","formattedDate":"April 3, 2023","tags":[{"label":"ledger","permalink":"/cardano-updates/quarterly/tags/ledger"}],"readingTime":6.405,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2023-04-03-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Network Q1 2023 Update","permalink":"/cardano-updates/quarterly/2023-04-04-network"},"nextItem":{"title":"Consensus Quarterly Update","permalink":"/cardano-updates/quarterly/2023-01-18-consensus"}},"content":"## Ledger Quarterly Update\\n## 2023-01 - 2023-03\\n\\n### Main achievements\\n\\n#### CIPs\\n\\n* **Entering the Voltaire phase** -\\n CIP-1694 received a major update after participation in the design has expanded to\\n more and more people, including those who attended the Colorado workshop.\\n See [CIP-1694](https://github.com/cardano-foundation/CIPs/pull/380).\\n* **Ledger CIP category** -\\n The ledger team continues to embrace the CIP process, and has begun the process of\\n registering the ledger as an official CIP category.\\n See [CIP-84](https://github.com/cardano-foundation/CIPs/pull/456).\\n* **Ledger serialization** -\\n A CIP for the ledger serialization deprecation cycle has been accepted.\\n See [CIP-80](https://github.com/cardano-foundation/CIPs/tree/master/CIP-0080).\\n\\n#### Formal ledger model\\n\\nOur new formal specifications backed by Agda have seen a lot of progress.\\nThe majority of the ideas in CIP-1694 are now present, and we have made enough progress\\nthat we can now safely say that the PDF produced by the Agda model will be the\\nofficial ledger specification for the Conway ledger era.\\nSee [the repository](https://github.com/input-output-hk/formal-ledger-specifications).\\n\\n\\n#### Conway ledger era\\n\\nProgress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model.\\nThe major component still missing is the DRep stake distribution, which still presents some\\ntechnical challenges.\\n\\n[[pull-3176]]\\n[[pull-3216]]\\n[[pull-3226]]\\n[[pull-3291]]\\n[[pull-3326]]\\n[[pull-3330]]\\n[[pull-3339]]\\n\\n#### DRep stake distribution computation\\n\\nAdding another large stake distribution to the ledger state must proceed with caution.\\nWe do not want the memory used by the node to increase too much,\\nand performance problems can lead to reduced block production.\\nWe have prototyped, tested, and benchmarked several approaches that could give us\\nthe current DRep stake distribution at each epoch boundary.\\nThis has very important implications, since we want every ADA holder to be able to at any\\ntime (such as during a contentious vote) register themselves as a DRep and still have time\\nto vote themselves on the issue.\\n\\n[[pull-3344]]\\n[[pull-3353]]\\n[[pull-3364]]\\n\\n#### Integration work\\n\\nThe ledger has made some wonderful improvements over the past six months,\\nbut which entail a significant amount of integration efforts:\\n\\n* Our new versioned CBOR schemes\\n* Individual deposit tracking\\n* An improved cross-era interface utilizing lenses\\n* A new ledger API\\n* Re-arranging the ledger stake in preparation for CIP-1694\\n* Versioning our Haskell packages\\n using [CHaPs](https://github.com/input-output-hk/cardano-haskell-packages).\\n* Consistent conventions for variable names\\n\\n\\n[[pull-3279]]\\n[[pull-3282]]\\n[[pull-3288]]\\n[[pull-3289]]\\n[[pull-3292]]\\n[[pull-3297]]\\n[[pull-3298]]\\n[[pull-3299]]\\n[[pull-3300]]\\n[[pull-3302]]\\n[[pull-3303]]\\n[[pull-3308]]\\n[[pull-3342]]\\n[[pull-3345]]\\n[[pull-3356]]\\n[[pull-3357]]\\n[[pull-3360]]\\n[[pull-3361]]\\n[[pull-3363]]\\n[[pull-4349]]\\n[[pull-378]]\\n[[pull-376]]\\n[[pull-373]]\\n[[pull-370]]\\n[[pull-361]]\\n[[pull-4976]]\\n[[pull-5013]]\\n\\n#### Deposit tracking\\n\\nIndividual deposits (for stake credential and stake pool registrations) were not tracked by the ledger.\\nDeposits were returned according to the current protocol parameters.\\nWhen the values of these two protocol parameters change, the deposit pot\\nis adjusted by adding to, or removing from, the reserves.\\n\\nThis has several problems:\\n* Most people expect a deposit to be paid back exactly.\\n* We cannot increase the deposit amount once the reserves hits zero.\\n* If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials.\\n* Because of the problems above, it is going to be incredibly hard to ever change the values.\\n* There is a serious issue involving hard forks.\\n The consensus layer makes the decision about whether or not to enact a hard fork based on\\n the protocol parameter update state two stability windows before the end of the epoch.\\n However, the ledger will reject a protocol parameter update on the epoch boundary\\n if the deposit pot adjustments cannot be reconciled with the reseve pot.\\n This means that if quorum is met regarding changing the major protocol version,\\n but the update is rejected on the epoch boundary, consensus will change the era but the\\n ledger will not change the major protocol version, leaving the ledger in a split-brain state.\\n\\nBecause we never actually changed the values of the two deposits amounts in the protocol parameters\\non mainnet, we were able to retroactively change the behavior.\\nWe made the following changes:\\n * Individual deposits are tracked in the `DState`.\\n * The amount deposited is always returned.\\n\\n[[pull-3195]]\\n[[pull-3202]]\\n[[pull-3217]]\\n\\n#### New ledger API\\n\\nWe have significantly built up the ledger API.\\nWe will eventually replace much of the `cardano-api` in the node repository with this ledger API.\\n\\n[[pull-3242]]\\n[[pull-3248]]\\n[[pull-3328]]\\n\\n#### Constraint-based generators\\n\\nOur largest scale property tests generate an initial ledger state and a long sequence of valid blocks\\nwhich span several epochs, mimicking a real network.\\nThese tests are, in theory, excellent for checking properties.\\nThey are, however, very difficult to maintain and are not as random as we would like\\n(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).\\n\\nWe have a new declaritive infrastructure for building constraint-based generators,\\nwhich instead generate a random ledger state representative of not just an initial state,\\nbut also those representative of the end result of a long sequence of valid blocks.\\nMoreover, these generators are very fast and are much more random than our old generators.\\nBefore we can start using them for our existing property tests, however, we still need to\\nexpand them to generate a valid block for a given ledger state.\\n\\n[[pull-3219]]\\n\\n#### Technical debt\\n\\nWe continued to address technical debt as much as we can.\\n\\n[[pull-3167]]\\n[[pull-3170]]\\n[[pull-3172]]\\n[[pull-3175]]\\n[[pull-3184]]\\n[[pull-3205]]\\n[[pull-3208]]\\n[[pull-3210]]\\n[[pull-3212]]\\n[[pull-3218]]\\n[[pull-3222]]\\n[[pull-3223]]\\n[[pull-3224]]\\n[[pull-3225]]\\n[[pull-3229]]\\n[[pull-3239]]\\n[[pull-3241]]\\n[[pull-3244]]\\n[[pull-3245]]\\n[[pull-3249]]\\n[[pull-3260]]\\n[[pull-3263]]\\n[[pull-3264]]\\n[[pull-3268]]\\n[[pull-3269]]\\n[[pull-3270]]\\n[[pull-3274]]\\n[[pull-3276]]\\n[[pull-3277]]\\n[[pull-3286]]\\n[[pull-3290]]\\n[[pull-3295]]\\n[[pull-3296]]\\n[[pull-3306]]\\n[[pull-3307]]\\n[[pull-3310]]\\n[[pull-3311]]\\n[[pull-3316]]\\n[[pull-3320]]\\n[[pull-3323]]\\n[[pull-3327]]\\n[[pull-3331]]\\n[[pull-3332]]\\n[[pull-3333]]\\n[[pull-3338]]\\n[[pull-3341]]\\n[[pull-3347]]\\n[[pull-3350]]\\n[[pull-3351]]\\n[[pull-3352]]\\n[[pull-3354]]\\n\\n##### Critical fixes\\n\\nWe fixed two critical issues:\\n* Growing block production delay on the epoch boundary: [[pull-3209]]\\n* Unexpected node shutdown from `balanceR`: [[pull-3343]]\\n\\n### Next steps\\n\\n* **Conway spec** -\\n Complete the first version of the conway formal specification.\\n* **DRep stake distribution** -\\n Have the ledger compute the DRep stake distribution with acceptible performance.\\n* **Devnet ready** -\\n Have the Haskell implementation of the conway era in sync with the formal specification,\\n and integrate the changes with consensus and node.\\n All the details might not be finalized, but the wire specification and the API should\\n be stable so that conway can be placed on a devnet for tool builders to start integrating with.\\n* **Plutus V3** -\\n Integrate Plutus V3 into the ledger, including a new script context which supports DReps.\\n\\n### More details\\n\\nThis quarterly report was based off of the following fortnightly ones:\\n\\n* [2023-01-05](2023-01-05-ledger)\\n* [2023-01-19](2023-01-19-ledger)\\n* [2023-02-02](2023-02-02-ledger)\\n* [2023-02-17](2023-02-17-ledger)\\n* [2023-03-03](2023-03-03-ledger)\\n* [2023-03-17](2023-03-17-ledger)\\n* [2023-03-31](2023-03-31-ledger)\\n\\n[pull-3167]: https://github.com/input-output-hk/cardano-ledger/pull/3167\\n[pull-3170]: https://github.com/input-output-hk/cardano-ledger/pull/3170\\n[pull-3172]: https://github.com/input-output-hk/cardano-ledger/pull/3172\\n[pull-3175]: https://github.com/input-output-hk/cardano-ledger/pull/3175\\n[pull-3176]: https://github.com/input-output-hk/cardano-ledger/pull/3176\\n[pull-3184]: https://github.com/input-output-hk/cardano-ledger/pull/3184\\n[pull-3195]: https://github.com/input-output-hk/cardano-ledger/pull/3195\\n[pull-3202]: https://github.com/input-output-hk/cardano-ledger/pull/3202\\n[pull-3205]: https://github.com/input-output-hk/cardano-ledger/pull/3205\\n[pull-3208]: https://github.com/input-output-hk/cardano-ledger/pull/3208\\n[pull-3209]: https://github.com/input-output-hk/cardano-ledger/pull/3209\\n[pull-3210]: https://github.com/input-output-hk/cardano-ledger/pull/3210\\n[pull-3212]: https://github.com/input-output-hk/cardano-ledger/pull/3212\\n[pull-3214]: https://github.com/input-output-hk/cardano-ledger/pull/3214\\n[pull-3215]: https://github.com/input-output-hk/cardano-ledger/pull/3215\\n[pull-3216]: https://github.com/input-output-hk/cardano-ledger/pull/3216\\n[pull-3217]: https://github.com/input-output-hk/cardano-ledger/pull/3217\\n[pull-3218]: https://github.com/input-output-hk/cardano-ledger/pull/3218\\n[pull-3219]: https://github.com/input-output-hk/cardano-ledger/pull/3219\\n[pull-3222]: https://github.com/input-output-hk/cardano-ledger/pull/3222\\n[pull-3223]: https://github.com/input-output-hk/cardano-ledger/pull/3223\\n[pull-3224]: https://github.com/input-output-hk/cardano-ledger/pull/3224\\n[pull-3225]: https://github.com/input-output-hk/cardano-ledger/pull/3225\\n[pull-3226]: https://github.com/input-output-hk/cardano-ledger/pull/3226\\n[pull-3229]: https://github.com/input-output-hk/cardano-ledger/pull/3229\\n[pull-3239]: https://github.com/input-output-hk/cardano-ledger/pull/3239\\n[pull-3241]: https://github.com/input-output-hk/cardano-ledger/pull/3241\\n[pull-3242]: https://github.com/input-output-hk/cardano-ledger/pull/3242\\n[pull-3244]: https://github.com/input-output-hk/cardano-ledger/pull/3244\\n[pull-3245]: https://github.com/input-output-hk/cardano-ledger/pull/3245\\n[pull-3248]: https://github.com/input-output-hk/cardano-ledger/pull/3248\\n[pull-3249]: https://github.com/input-output-hk/cardano-ledger/pull/3249\\n[pull-3260]: https://github.com/input-output-hk/cardano-ledger/pull/3260\\n[pull-3263]: https://github.com/input-output-hk/cardano-ledger/pull/3263\\n[pull-3264]: https://github.com/input-output-hk/cardano-ledger/pull/3264\\n[pull-3268]: https://github.com/input-output-hk/cardano-ledger/pull/3268\\n[pull-3269]: https://github.com/input-output-hk/cardano-ledger/pull/3269\\n[pull-3270]: https://github.com/input-output-hk/cardano-ledger/pull/3270\\n[pull-3274]: https://github.com/input-output-hk/cardano-ledger/pull/3274\\n[pull-3276]: https://github.com/input-output-hk/cardano-ledger/pull/3276\\n[pull-3277]: https://github.com/input-output-hk/cardano-ledger/pull/3277\\n[pull-3279]: https://github.com/input-output-hk/cardano-ledger/pull/3279\\n[pull-3282]: https://github.com/input-output-hk/cardano-ledger/pull/3282\\n[pull-3286]: https://github.com/input-output-hk/cardano-ledger/pull/3286\\n[pull-3288]: https://github.com/input-output-hk/cardano-ledger/pull/3288\\n[pull-3289]: https://github.com/input-output-hk/cardano-ledger/pull/3289\\n[pull-3290]: https://github.com/input-output-hk/cardano-ledger/pull/3290\\n[pull-3291]: https://github.com/input-output-hk/cardano-ledger/pull/3291\\n[pull-3292]: https://github.com/input-output-hk/cardano-ledger/pull/3292\\n[pull-3295]: https://github.com/input-output-hk/cardano-ledger/pull/3295\\n[pull-3296]: https://github.com/input-output-hk/cardano-ledger/pull/3296\\n[pull-3297]: https://github.com/input-output-hk/cardano-ledger/pull/3297\\n[pull-3298]: https://github.com/input-output-hk/cardano-ledger/pull/3298\\n[pull-3299]: https://github.com/input-output-hk/cardano-ledger/pull/3299\\n[pull-3300]: https://github.com/input-output-hk/cardano-ledger/pull/3300\\n[pull-3302]: https://github.com/input-output-hk/cardano-ledger/pull/3302\\n[pull-3303]: https://github.com/input-output-hk/cardano-ledger/pull/3303\\n[pull-3306]: https://github.com/input-output-hk/cardano-ledger/pull/3306\\n[pull-3307]: https://github.com/input-output-hk/cardano-ledger/pull/3307\\n[pull-3308]: https://github.com/input-output-hk/cardano-ledger/pull/3308\\n[pull-3310]: https://github.com/input-output-hk/cardano-ledger/pull/3310\\n[pull-3311]: https://github.com/input-output-hk/cardano-ledger/pull/3311\\n[pull-3316]: https://github.com/input-output-hk/cardano-ledger/pull/3316\\n[pull-3320]: https://github.com/input-output-hk/cardano-ledger/pull/3320\\n[pull-3323]: https://github.com/input-output-hk/cardano-ledger/pull/3323\\n[pull-3326]: https://github.com/input-output-hk/cardano-ledger/pull/3326\\n[pull-3327]: https://github.com/input-output-hk/cardano-ledger/pull/3327\\n[pull-3328]: https://github.com/input-output-hk/cardano-ledger/pull/3328\\n[pull-3330]: https://github.com/input-output-hk/cardano-ledger/pull/3330\\n[pull-3331]: https://github.com/input-output-hk/cardano-ledger/pull/3331\\n[pull-3332]: https://github.com/input-output-hk/cardano-ledger/pull/3332\\n[pull-3333]: https://github.com/input-output-hk/cardano-ledger/pull/3333\\n[pull-3338]: https://github.com/input-output-hk/cardano-ledger/pull/3338\\n[pull-3339]: https://github.com/input-output-hk/cardano-ledger/pull/3339\\n[pull-3341]: https://github.com/input-output-hk/cardano-ledger/pull/3341\\n[pull-3342]: https://github.com/input-output-hk/cardano-ledger/pull/3342\\n[pull-3343]: https://github.com/input-output-hk/cardano-ledger/pull/3343\\n[pull-3344]: https://github.com/input-output-hk/cardano-ledger/pull/3344\\n[pull-3345]: https://github.com/input-output-hk/cardano-ledger/pull/3345\\n[pull-3347]: https://github.com/input-output-hk/cardano-ledger/pull/3347\\n[pull-3350]: https://github.com/input-output-hk/cardano-ledger/pull/3350\\n[pull-3351]: https://github.com/input-output-hk/cardano-ledger/pull/3351\\n[pull-3352]: https://github.com/input-output-hk/cardano-ledger/pull/3352\\n[pull-3353]: https://github.com/input-output-hk/cardano-ledger/pull/3353\\n[pull-3354]: https://github.com/input-output-hk/cardano-ledger/pull/3354\\n[pull-3356]: https://github.com/input-output-hk/cardano-ledger/pull/3356\\n[pull-3357]: https://github.com/input-output-hk/cardano-ledger/pull/3357\\n[pull-3360]: https://github.com/input-output-hk/cardano-ledger/pull/3360\\n[pull-3361]: https://github.com/input-output-hk/cardano-ledger/pull/3361\\n[pull-3363]: https://github.com/input-output-hk/cardano-ledger/pull/3363\\n[pull-3364]: https://github.com/input-output-hk/cardano-ledger/pull/3364\\n\\n[pull-4349]: https://github.com/input-output-hk/ouroboros-network/pull/4349\\n\\n[pull-378]: https://github.com/input-output-hk/cardano-base/pull/378\\n[pull-376]: https://github.com/input-output-hk/cardano-base/pull/376\\n[pull-373]: https://github.com/input-output-hk/cardano-base/pull/373\\n[pull-370]: https://github.com/input-output-hk/cardano-base/pull/370\\n[pull-361]: https://github.com/input-output-hk/cardano-base/pull/361\\n\\n[pull-4976]: https://github.com/input-output-hk/cardano-node/pull/4976\\n[pull-5013]: https://github.com/input-output-hk/cardano-node/pull/5013"},{"id":"2023-01-18-consensus","metadata":{"permalink":"/cardano-updates/quarterly/2023-01-18-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-18-consensus.md","source":"@site/quarterly/2023-01-18-consensus.md","title":"Consensus Quarterly Update","description":"Consensus Quarterly Update","date":"2023-01-18T00:00:00.000Z","formattedDate":"January 18, 2023","tags":[{"label":"consensus","permalink":"/cardano-updates/quarterly/tags/consensus"}],"readingTime":3.205,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Quarterly Update","slug":"2023-01-18-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/quarterly/2023-04-03-ledger"},"nextItem":{"title":"Network Quarterly Update","permalink":"/cardano-updates/quarterly/2023-01-13-network"}},"content":"## Consensus Quarterly Update\\n## 2022-12 - 2023-01\\n\\n### Main achievements\\n\\n#### UTxO HD\\n\\nThe prototype is feature complete and thoroughly tested at the consensus level.\\nIn particular, we invested a lot of time in writing property-test for the\\nmempool, and other crucial new parts of the prototype. Now we are ready to run\\nintegration tests and system-level benchmarks.\\n\\n#### Genesis\\n\\nWe identified and fixed a slowdown in cross-era forecasting that was inhibiting\\nour efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7%\\nspeedup in full sync times in the baseline.\\n\\nWe also started prototyping a self-contained implementation of the Genesis\\ndynamics (in particular of the parts intentionally not part of the ChainSync\\nJumping prototype) that furthered our understanding of subtleties and edge\\ncases.\\n\\n#### Support\\n\\n- We worked on designing integration of new VRF and KES crypto into consensus.\\n - `Crypto` class was split into two parts: `Crypto` and `HeaderCrypto`.\\n - With the Ledger team\'s help, we refactored `cardano-ledger` to use a proxy\\n type for VRF.\\n\\n#### Conway era\\n\\n- PR went through its second review round. It is about to be merged, but it got\\n delayed due to people\'s availability during Christmas break.\\n\\n#### Technical debt\\n\\n- We improved the capabilities of our `io-sim` library, which is key for testing\\n and simulating Cardano components.\\n- We removed thunks from epoch translations in the ledger, which is important\\n for reducing memory consumption of the Cardano node.\\n\\n#### Fostering collaboration\\n\\n- We added a tutorial on how to instantiate the Consensus layer to run custom\\n ledgers. This should be a valuable resource to people looking to roll their\\n own custom blockchain (either for commercial or research purposes).\\n- We added an overview of consensus to the [top level\\n documentation](https://input-output-hk.github.io/ouroboros-network/) of\\n ouroboros-network. This overview describes the consensus components and adds a\\n hyperlinked map to the modules documentation.\\n\\n### Next steps\\n\\n#### UTxO HD\\n\\n- Evaluate the extensibility of the prototype. Moving the UTxO to disk is only\\n the first step towards reducing the memory requirements of Cardano node, and\\n ensuring its long term sustainability. In the future, we plan on moving other\\n large maps, such as delegation maps. The prototype should be able to\\n accommodate these changes without any major modifications.\\n- Start the integration with other downstream components, such as the wallet and\\n db-sync. The idea is to identify and address any potential pain points that\\n might arise during this integration.\\n- Run integration tests and system-level benchmarks.\\n\\n#### Genesis\\n\\n- Finish benchmarking and tuning the fast-path ChainSync Jumping prototype\\n- Expand and optimize the self-contained implementation of the Disconnect Rule\\n (including density comparisons and the LoE)\\n- Develop documentation and smoke tests for these components.\\n- Start modifying the ChainSync Client for the LoP and LoR.\\n\\n#### Support\\n\\n- Help the Network team with diagnosing performance regression in block\\n production.\\n\\n#### Tech debt\\n\\n- Fix property-test failures concerning iterators ([#3999][issue-3999] and\\n [#4183][issue-4183]).\\n\\n#### Fostering collaboration\\n\\n- Finish [mapping consensus][issue-4145].\\n\\n### Risks \\n\\n#### UTxO HD\\n\\n- Moving other parts of the ledger state to disk might require a major redesign\\n of the prototype. For instance, if it turns out that the epoch change rules\\n require access to the *full* ledger state. If this is the case, we might\\n accept this risk and do the redesign after the initial release of UTxO-HD.\\n- Integration with downstream clients might require more work than we\\n anticipate.\\n- Access to the benchmarking\'s team time and resources.\\n- Benchmarking results might show significant performance degradation, which\\n will require additional work if such performance degradation is not accepted\\n by other stakeholders.\\n- The prototype\'s performance might not be accepted by other stakeholders. Here\\n we need to clearly communicate that this is necessary to ensure that as the\\n blockchain size grows, the node can operate within reasonable memory\\n constraints.\\n\\n[issue-4183]: https://github.com/input-output-hk/ouroboros-network/issues/4183\\n[issue-3999]: https://github.com/input-output-hk/ouroboros-network/issues/3999\\n[issue-4145]: https://github.com/input-output-hk/ouroboros-network/issues/4145"},{"id":"2023-01-13-network","metadata":{"permalink":"/cardano-updates/quarterly/2023-01-13-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-13-network.md","source":"@site/quarterly/2023-01-13-network.md","title":"Network Quarterly Update","description":"Network Quarterly Update","date":"2023-01-13T00:00:00.000Z","formattedDate":"January 13, 2023","tags":[{"label":"network","permalink":"/cardano-updates/quarterly/tags/network"}],"readingTime":4.125,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Quarterly Update","slug":"2023-01-13-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Quarterly Update","permalink":"/cardano-updates/quarterly/2023-01-18-consensus"},"nextItem":{"title":"Open-Source Update","permalink":"/cardano-updates/quarterly/2023-01-13-open-source"}},"content":"## Network Quarterly Update\\n## 2022-11 - 2023-01\\n\\n### Summary\\n\\nThe primary goal of the networking team was to focus on the single relay\\nrelease of P2P. We fixed a number of small late bugs, and concluded QA\\n& performance testing. Although it was discovered a regression in performance\\nof block production when P2P is enabled, relaying with P2P performs better\\ncomparing to a non p2p. We concluded that this is not a blocker for the Single\\nRelay Release which is planned shortly.\\n\\n[Peer sharing][pr #4019] has gone through review and final review is\\njust being done right now. After merging it will still be disabled (hidden\\nbehind a flag) as it\'s not safe without eclipse evasion. We started\\nimplementing light peer sharing (i.e. include inbound peers into known peer set\\nof the outbound governor).\\n\\nWe started a detailed eclipse evasion design, it will continue in the next\\nquarter.\\n\\nWe also made a major revision of package structure of the network packages. We\\nended up with a very clean dependency graph ([pr #4155]).\\n\\nArmando Santos delivered a talk at the [ODOPIS 2022] conference on principles\\nof distributed systems in Brussels. The slides are available [here][ODOPIS-slides].\\n\\nNeil Davies gave an invited seminar on `DeltaQ` at Universit\xe9 Catholique de\\nLouvain.\\n\\nWe also found and fixed a few of bugs:\\n\\n* a bug in keep alive mini-protocol which resulted in warm to cold transitions\\n to be always executed through a timeout path rather than do a clean demotion\\n ([pr #4168]).\\n\\n* fixed an assetion failure in the outbound governor ([issue #4177]) \\n\\n- we fixed DNS test failure [issue #4191]\\n\\n### Next steps\\n\\nWe will work towards the next release of P2P for block producer nodes. This includes:\\n\\n* analysing performance regression for BP nodes when using P2P\\n* finish the work on controlling the block forger through node kernel ([pr #3800])\\n* address [issue #3907] and write a script to analyse deployment of P2P relays\\n\\nWe would like also to push forward eclipse evasion. Although most of the work\\nhas be done already the release of `io-sim` on `Hackage` will happen in the\\nnext quarter.\\n\\nWe would also like to address [chain-sync timeout issue][issue #4244] recently\\ndiagnosed by Karl Knutsson.\\n\\nIf time permits we would also like to address some technical debt, especially:\\n\\n- [enable nothunk in diffusion tests][issue #3387]\\n- [refactor diffusion testnet simulation][issue #4085]\\n\\n### Risks\\n\\nThe performance regression for block producer with P2P needs to be investigated\\nin the near future. This is blocker for the release of P2P on BP nodes.\\n\\n### Detailed log\\n\\n#### Contributions to Ouroboros-Network\\n\\n- We added `TraceDemoteLocalAsynchronous`, which enables notification of critical issues for SPOs\\n- We fixed `cardano-ping` compatibility with `NodeToNodeV_10` (P2P, [pr #4165])\\n- We fixed a bug in demotion peers to cold which affected P2P nodes ([commit-61058aa5c2])\\n- Karl Knutsson enhanced `SendFetchRequest` ([commit-bb1c3dddee]), open-source contribution)\\n- We turned `SizeInBytes` into a newtype.\\n- We extended `CONTRIBUTING.md`, `README.md`, added `CODE_OF_CONDUCT`.\\n- We fixed DNS test failure [issue #4191]\\n- We fixed a simulation bug found in [issue #4258]\\n- [pr #4168]\\n- [issue #4177]\\n\\n#### Contributions to Cardano-Node\\n\\n- We maintained the Single Relay Release [pr #4612], (e.g. fixing CI issues,\\n Rebasing it when necessary, publishing packages to Cardano Haskell Packages);\\n- We enhanced `JSON` serialisation / deserialisation of `NodeToNodeVersion` and `NodeToClientVersion`;\\n\\n#### Contributions to IOSim\\n\\n- We started to use Cardano Haskell Packages for `IOSim` ([pr #48])\\n- We updated change log files\\n- We added support of `ghc-9.4` ([pr #50])\\n\\nWe also addressed the following issues in [pr #57] in order to prepare the package for publication on Hackage:\\n\\n- refactored `io-classes` timers API ([issue #46]);\\n- created a new package `si-timers` which exposes an interface using SI units\\n and is safe on 32-bit systems ([issue #59]);\\n- added monad transformers instances for classes defined in `io-classes` ([issue #58]);\\n- created `io-classes-mtl` package which includes (experimental) instances for monad transformers;\\n- provide `MonadMonotonicTimeNSec` in `io-classes` and `MonadMonotonicTime` in `si-timers` (so that `io-classes` follow the `base` package);\\n- added `registerCancellableDelay` in `si-timers` (which allowed us to hide fancy timer api and clean `io-classes`)\\n- added support for `js_HOST_ARCH` (the new GHC JS backend)\\n\\nNote the [pr #57] contains almost 40 commits, and was a major step forward for\\n`io-sim` ecosystem. We also prepared a draft [pr #4281] which updates\\n`ouroboros-network`.\\n\\nOther changes for `1.0.0.0` release on Hackage:\\n\\n- Refactored test suite ([pr #47])\\n- Updated documentation, cabal files, `CONTRIBUTING`, `SECURITY` documents, etc in [pr #60], currently under review.\\n\\n[commit-61058aa5c2]: https://github.com/input-output-hk/ouroboros-network/pull/4170/commits/61058aa5c28a144d723aae183d1745552d757334\\n[commit-bb1c3dddee]: https://github.com/input-output-hk/ouroboros-network/pull/4170/commits/bb1c3dddeea78949f531c144bb4f2669eddf7f47\\n[issue #3387]: https://github.com/input-output-hk/ouroboros-network/issues/3387\\n[issue #3907]: https://github.com/input-output-hk/ouroboros-network/issues/3907\\n[issue #4085]: https://github.com/input-output-hk/ouroboros-network/issues/4085\\n[issue #4168]: https://github.com/input-output-hk/ouroboros-network/issues/4168\\n[issue #4177]: https://github.com/input-output-hk/ouroboros-network/issues/4177\\n[issue #4191]: https://github.com/input-output-hk/ouroboros-network/issues/4191\\n[issue #4244]: https://github.com/input-output-hk/ouroboros-network/issues/4244\\n[issue #4258]: https://github.com/input-output-hk/ouroboros-network/issues/4258\\n[issue #46]: https://github.com/input-output-hk/io-sim/issues/46\\n[issue #58]: https://github.com/input-output-hk/io-sim/issues/58\\n[issue #59]: https://github.com/input-output-hk/io-sim/issues/59\\n[pr #3800]: https://github.com/input-output-hk/ouroboros-network/pull/3800\\n[pr #4019]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[pr #4155]: https://github.com/input-output-hk/ouroboros-network/pull/4155\\n[pr #4165]: https://github.com/input-output-hk/ouroboros-network/pull/4165\\n[pr #4281]: https://github.com/input-output-hk/cardano-node/pull/4281\\n[pr #4612]: https://github.com/input-output-hk/cardano-node/pull/4612\\n[pr #47]: https://github.com/input-output-hk/io-sim/pull/47\\n[pr #48]: https://github.com/input-output-hk/io-sim/pull/48\\n[pr #49]: https://github.com/input-output-hk/io-sim/pull/49\\n[pr #50]: https://github.com/input-output-hk/io-sim/pull/50\\n[pr #57]: https://github.com/input-output-hk/io-sim/pull/57\\n[pr #60]: https://github.com/input-output-hk/io-sim/pull/60\\n[ODOPIS 2022]: https://sites.uclouvain.be/OPODIS2022/armando-details.html\\n[ODOPIS-slides]: https://sites.uclouvain.be/OPODIS2022/slides/OPODIS2022-slides-Santos.pdf"},{"id":"2023-01-13-open-source","metadata":{"permalink":"/cardano-updates/quarterly/2023-01-13-open-source","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-13-open-source.md","source":"@site/quarterly/2023-01-13-open-source.md","title":"Open-Source Update","description":"Open Source Quarterly Update","date":"2023-01-13T00:00:00.000Z","formattedDate":"January 13, 2023","tags":[{"label":"open-source","permalink":"/cardano-updates/quarterly/tags/open-source"}],"readingTime":2.215,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Open-Source Update","slug":"2023-01-13-open-source","authors":"coot","tags":["open-source"],"hide_table_of_contents":false},"prevItem":{"title":"Network Quarterly Update","permalink":"/cardano-updates/quarterly/2023-01-13-network"},"nextItem":{"title":"Consensus Quarterly Update","permalink":"/cardano-updates/quarterly/2022-11-15-consensus"}},"content":"## Open Source Quarterly Update\\n## 2022-11 - 2023-01\\n\\n### Summary\\n\\nIn the last quarter the open-source initiative delivered a comprehensive report\\non the state of our repositories. As part of this work stream we\\nidentified the key open-source repositories for the cardano project across all\\nthe projects From a list of more than 500 repositories (some of which are\\nforks) we identified key repositories which constitute the core of Cardano.\\n20 of them were identified as to be transferred to the future MBO which will\\ngovern Cardano development. Some where excluded (like [`io-sim`] and\\n[`typed-protocols`]), to be govern by IOG, since they have a much broader\\napplication than Cardano itself, and thus we think their open-source future\\nwill be better outside of the Cardano umbrella.\\n\\nChristian Taylor identified a number of ways we can improve our repositories to\\nmake them more attractive for open-source contributions by analysing each of\\nthem. This includes adding or improving various documentation files, like\\n`CONTRIBUTING` files, adding code of conduct, improving readme files, issue\\n& pull request templates etc. Christian also computed various interesting\\nmetrics which gives a very good insight into the development practices: e.g.\\naverage merge ratio, average number of reviews, comments and many more! The\\npresentation is available [here][open-source-presentation].\\n\\nWe followed with work on the [Cardano Engineering Handbook][CEH]. We included\\na standard code of conduct which is now used by most important projects in the\\nCardano space. We included `cardano-node`\'s security policy and added\\na responsible disclosure policy. We also described how roles and\\nresponsibilities should be clarified. This progress was made by\\na collaborative effort of the Cardano Core, Plutus and Architecture teams, and\\nit wouldn\'t be possible without Michael Peyton Jones, Arnaud Bailly, Kevin\\nHammond, Jared Corduan and Marcin Szamotulski.\\n\\nWe also improved the documentation of key repositories, by adding description,\\nimproving their `README` file & `CONTRIBUTING` files, adding code of conducts\\nfollowing the [Cardano Engineering Handbook][CEH]. This includes improvements to:\\n\\n* [`ouroboros-network`] (both `network` & `consensus`)\\n* [`cardano-ledger`]\\n* [`cardano-node`]\\n\\nAnd also\\n\\n* [`io-sim`]\\n* [`typed-protocols`]\\n* [`cardano-prelude`] (work in progress)\\n\\nThe work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan. \\n\\n\\nIn this quarter we also identified a number of projects which can be published to\\n`Hackage` (Haskell\'s package repository) or `crate` (Rust package repository).\\nThe list contains 21 packages, 2 of which ([`hedgehog-extras`] and\\n[`quickcheck-dynamic`]) are already published on Hackage and another 5 (from\\nthe [`io-sim`] repository) are close to be published.\\n\\n\\n### Detailed log\\n\\nThe progress of the open-source project is tracked in [this project][open-source-project].\\n\\n[CEH]: https://input-output-hk.github.io/cardano-engineering-handbook/\\n[open-source-project]: https://github.com/orgs/input-output-hk/projects/60/views/1\\n[`cardano-ledger`]: https://github.com/input-output-hk/cardano-ledger\\n[`cardano-node`]: https://github.com/input-output-hk/cardano-node\\n[`cardano-prelude`]: https://github.com/input-output-hk/cardano-prelude\\n[`hedgehog-extras`]: https://hackage.haskell.org/package/hedgehog-extras\\n[`io-sim`]: https://github.com/input-output-hk/io-sim\\n[`ouroboros-network`]: https://github.com/input-output-hk/ouroboros-network\\n[`quickcheck-dynamic`]: https://hackage.haskell.org/package/quickcheck-dynamic\\n[`typed-protocols`]: https://github.com/input-output-hk/typed-protocols\\n[open-source-presentation]: https://docs.google.com/presentation/d/127IFEavlrZeeoFrVXFYWzSt0ugOkSL7isxjyM1vmMzQ"},{"id":"2022-11-15-consensus","metadata":{"permalink":"/cardano-updates/quarterly/2022-11-15-consensus","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-15-consensus.md","source":"@site/quarterly/2022-11-15-consensus.md","title":"Consensus Quarterly Update","description":"Consensus Quarterly Update","date":"2022-11-15T00:00:00.000Z","formattedDate":"November 15, 2022","tags":[{"label":"consensus","permalink":"/cardano-updates/quarterly/tags/consensus"}],"readingTime":3.655,"hasTruncateMarker":false,"authors":[{"name":"Damian Nadales","title":"Consensus Team Lead","url":"https://github.com/dnadales","imageURL":"https://github.com/dnadales.png","key":"dnadales"}],"frontMatter":{"title":"Consensus Quarterly Update","slug":"2022-11-15-consensus","authors":"dnadales","tags":["consensus"],"hide_table_of_contents":false},"prevItem":{"title":"Open-Source Update","permalink":"/cardano-updates/quarterly/2023-01-13-open-source"},"nextItem":{"title":"Network Team Update","permalink":"/cardano-updates/quarterly/2022-11-09-network"}},"content":"## Consensus Quarterly Update\\n## 2022-09 - 2022-11\\n\\n### Main achievements\\n\\n#### UTxO HD\\n\\n- As a consequence of the errors observed when running distributed mempool\\n benchmarks, we re-designed the UTxO HD mempool integration, which fixed these\\n errors and lead to a simpler and more maintainable design.\\n\\n- We focused on increasing test coverage for the UTxO-HD prototype. In\\n particular, we added property tests for:\\n - Backing store (work ongoing)\\n - Era transitions\\n\\n- The property tests we added uncovered several bugs, which is a great result\\n given the exponential increase in the cost of finding bugs as they are closer\\n to deployment.\\n\\n- One of the errors found by our tests required us to work on improvements in\\n the Haskell bindings for LMDB. This work is ongoing.\\n\\n- We started working on the mempool property tests that will exercise the new\\n code paths that UTxO HD introduced.\\n\\n- We developed, benchmarked and tested an implementation of sequences of\\n differences based on \\"anti-diffs\\". Performance results of diff sequence\\n operations show that we achieved a speedup of about `4x` across several\\n scenarios. Note: this speedup is taking into account diff sequence operations\\n only, so the consensus-wide speedup is less than `4x`.\\n\\n- We integrated the \\"anti-diff\\" prototype into the UTxO HD feature branch.\\n\\n#### Genesis\\n\\n- We wrote a simulator that demonstrates soundness of an abstract implementation\\n of the new chain selection rule.\\n- We elaborated a draft specification for the Genesis implementation (currently\\n awaiting feedback from other architects).\\n- We elaborated a draft specification for the ChainSync Jumping optimization. In\\n particular, this includes a proof sketch that the latter preserves liveness\\n and safety in all cases.\\n- With the Networking team, we co-designed the eclipse avoidance mechanism,\\n specifically its coherence with the Genesis implementation plan\'s security\\n and its dependence on the new ChainSync Jumping optimization.\\n- We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a\\n performance degradation wrt the baseline. Our optimization attempts so far\\n have brought the performance closer to the baseline, but not yet to parity.\\n\\n#### Conway era\\n\\n- We did most of the heavy lifting required to integrate the Conway era into the\\n Consensus layer.\\n\\n#### Technical debt\\n\\n- We started working on enabling CI nightly tests, which revealed several test\\n failures due to thunks being found it data structures used by the ledger and\\n consensus. We made a lot of progress fixing those thunk errors, but some\\n errors still remain.\\n\\n- We elaborated a `db-analyser` benchmark for the ledger operations. This led us\\n to the identification of high processing time at epoch boundaries, and we\\n could not observe any performance degradation that can be attributed to era\\n changes.\\n\\n- We fixed a source of flakiness in the ChainDB QSM test.\\n\\n- We clarified a common source of confusion around VRF tie-breaking and\\n cross-era chain selection.\\n\\n- We fixed a bug in the maximum-allowed ledger major protocol version.\\n\\n#### Fostering collaboration\\n\\n- We spent time making `cardano-updates` the central source of information for\\n the core teams stakeholders.\\n- We went through the Galois gap analysis and extracted actionable points to\\n take on next.\\n- Bart and Yogesh continued with their onboarding and stated making substantial\\n contributions to consensus.\\n\\n### Next steps\\n\\n#### UTxO HD\\n\\n- Finish the mempool property tests.\\n- Benchmark the latest version of the prototype.\\n- Elaborate a document that describes new integration test scenarios and pass it\\n to the SDET team.\\n- Bring query UTxO by address command performance on par with the baseline\\n version.\\n\\n#### Genesis\\n\\n- Receive and incorporate Duncan\'s feedback on the first draft specification for\\n the Genesis implementation.\\n- Begin prototyping the first genesis implementation, unless the first draft\\n needs major changes.\\n- Draft a second revision of the Genesis report.\\n- Review the second revision with a wider audience, which includes at least\\n Alexander Russell. That feedback will drive a third and hopefully final\\n revision.\\n- Investigate how to mitigate the ~30% slowdown we have observed so far in the\\n ChainSync jumping prototype, and try to mitigate it. In particular, we might\\n need to optimize the existing BlockFetch logic.\\n\\n#### Tech debt\\n\\n- Enabling nightly CI tests.\\n\\n#### Fostering collaboration\\n\\n- Merge the tutorial document Galois wrote; requires CI integration.\\n- Come up with our own documentation improvements, many of which were suggested\\n in the Galois gap analysis.\\n- Try to hire a new team member."},{"id":"2022-11-09-network","metadata":{"permalink":"/cardano-updates/quarterly/2022-11-09-network","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-09-network.md","source":"@site/quarterly/2022-11-09-network.md","title":"Network Team Update","description":"Network Quarterly Update","date":"2022-11-09T00:00:00.000Z","formattedDate":"November 9, 2022","tags":[{"label":"network","permalink":"/cardano-updates/quarterly/tags/network"}],"readingTime":3.87,"hasTruncateMarker":false,"authors":[{"name":"Marcin Szamotulski","title":"Network Team Lead","url":"https://github.com/coot","imageURL":"https://github.com/coot.png","key":"coot"}],"frontMatter":{"title":"Network Team Update","slug":"2022-11-09-network","authors":"coot","tags":["network"],"hide_table_of_contents":false},"prevItem":{"title":"Consensus Quarterly Update","permalink":"/cardano-updates/quarterly/2022-11-15-consensus"},"nextItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/quarterly/2022-11-07-ledger"}},"content":"## Network Quarterly Update\\n## 2022-09 - 2022-11\\n\\n### Summary of most important improvements\\n\\nDuring this quarter the networking team delivered low level specification of\\npeer sharing & eclipse evasion. We held a session with the consensus & the\\nscientists; we got a positive feedback on the design.\\n\\nFurther we focused on implementation of peer sharing. We produced a [detail\\ndesign][peer-sharing-design] and an [early implementation][peer-sharing-pr].\\n\\nWe prepared the _P2P Single Relay Release_ (`cardano-node-1.35.5`). It\\nincludes over [130 patches][p2p-release] of network stack improvements over the\\nprevious version `1.35.4`, which were accomplished over a longer period of\\ntime. Among them are both bug fixes and UX improvements for stake pool\\noperators like simplified format of the [topology file][topology-file], or\\nimprovements in the logged messages:\\n\\n* [tracing of early consensus exceptions][consensus-startup-trace]\\n* [tracing of demotion of local root peers][demotion-trace] (traced with\\n `Warning` severity), the trace is called `TraceDemoteLocalAsynchronous`, in\\n `json` format it is encoded as `DemoteLocalAsynchronous`. For an SPO\\n tracking these demotion is vital (such demotion could indicate that a block\\n producer is no longer connected to its relays or vice versa)\\n\\nWe also provide better integration with [systemd][socket-activation] (socket\\nactivation improvements) or improvements in the networking stack:\\n\\n* [exit policies][exit-policy],\\n* [peer metrics improvements][peer-metrics],\\n* [DNS TTL][dns-ttl] improvements (which make it harder to misconfigure the\\n system, an issue discovered by the performance & monitoring team),\\n* do not trigger inbound idle timeout for `node-to-client` connections ([pr\\n #3844][idle-timeout]), an issue reported to us by Matthias Benkort from\\n Cardano Foundation.\\n\\nDuncan has been making progress with the input endorsers demo. His simulation\\nprovides a useful animated visualisation and live quantification of behaviour\\nof the modeled design.\\n\\nWe also improved our e2e diffusion simulation by implementing header-body\\nsplit, similar to what the real implementation does.\\n\\nWe also made some advances towards our future goals of P2P release for block\\nproducer nodes ([pr #3800][pr-3800] - in review) & for Daedalus users\\n([pr #3690][pr-3690] - merged).\\n\\n### Detailed log\\n\\n* We expanded diffusion simulation with block-fetch protocol bringing it closer\\n to the production system.\\n\\n* We addressed some additional technical depth in diffusion simulation\\n\\n* We slightly improved documentation & CI of io-sim and typed-protocols\\n repositories for open-source contributors.\\n\\n* We closed a number of issues towards publishing io-sim on Hackage (only two\\n essential issues are left open).\\n\\n* We pushed a branch of typed-protocols which captures one of the developer UX\\n problems in the API which we need to solve.\\n\\n* We identified and fixed an issue related to systemd sockets.\\n\\n* We identified and fixed an issue in consensus initialisation not giving\\n feedback on early errors.\\n\\n* We deployed RT View, identified a number of issues which were communicated to\\n the performance & monitoring team.\\n\\n* We finished high level & detailed design of peer sharing, very early\\n implementation of peer sharing is done (note that peer sharing cannot be\\n safely deployed without eclipse evasion & genesis).\\n\\n* We finished high level design of eclipse evasion, and started working on\\n a detailed design.\\n\\n* We were assigned the role of release engineer for 1.35.5 release (the P2P\\n single relay release); we prepared a cardano-node for 1.35.5 release which\\n contains more than 130 patches of just network stack improvements done over\\n last few months.\\n\\n* We diagnosed and fixed an tricky bug in the peer state actions (a component\\n which sits between outbound governor and connection manager). That bug was\\n introduced earlier this year and never released. It was caught by the QA\\n testing framework. We expanded our diffusion simulation to cover such case and\\n also mitigated a chance for reintroducing such a bug in future.\\n\\n* We identified and quite likely mitigated a misconfiguration in the\\n benchmarking cluster (next benchmarking run will confirm our hypothesis).\\n\\n* We simplified the format of p2p topology file, we got positive feedback from\\n SPOs.\\n\\n* We raised severities of some of the logging messages, which is an important\\n improvement for SPOs, exchanges and other users of the system.\\n\\n* We worked on input endorsers simulation which gives both animated and\\n quantified live feedback on network operation, using a simplified model of\\n a TCP/IP network. \\n\\n## Next quarter\\n\\n* Release the Single Relay P2P Release `1.35.5`.\\n\\n* Carry on with Peer Sharing (review, testing).\\n\\n* Deliver a talk at [Conference on Principles of Distributed Systems 2022][OPODIS2022] in Brussels, Belgium.\\n\\n* Present Detailed Design of Eclipse Evasion and start implementation phase.\\n\\n* Work on P2P Block Producer release.\\n\\n* Carry on with publishing of `io-sim` on `Hackage`.\\n\\n[OPODIS2022]: https://sites.uclouvain.be/OPODIS2022/ \\n[peer-sharing-design]: https://github.com/input-output-hk/ouroboros-network/wiki/Peer-Sharing-Implementation-Plan\\n[peer-sharing-pr]: https://github.com/input-output-hk/ouroboros-network/pull/4019\\n[p2p-release]: https://github.com/input-output-hk/ouroboros-network/pull/4120\\n[exit-policy]: https://github.com/input-output-hk/ouroboros-network/pull/3785\\n[peer-metrics]: https://github.com/input-output-hk/ouroboros-network/pull/3915\\n[socket-activation]: https://github.com/input-output-hk/ouroboros-network/pull/3979\\n[topology-file]: https://github.com/input-output-hk/cardano-node/pull/4563\\n[dns-ttl]: https://github.com/input-output-hk/ouroboros-network/pull/4106\\n[consensus-startup-trace]: https://github.com/input-output-hk/ouroboros-network/pull/4015\\n[demotion-trace]: https://github.com/input-output-hk/ouroboros-network/pull/4127\\n[idle-timeout]: https://github.com/input-output-hk/ouroboros-network/pull/3844\\n[pr-3800]: https://github.com/input-output-hk/ouroboros-network/pull/3800\\n[pr-3690]: https://github.com/input-output-hk/ouroboros-network/issues/3968"},{"id":"2022-11-07-ledger","metadata":{"permalink":"/cardano-updates/quarterly/2022-11-07-ledger","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-07-ledger.md","source":"@site/quarterly/2022-11-07-ledger.md","title":"Ledger Team Update","description":"Ledger Quarterly Update","date":"2022-11-07T00:00:00.000Z","formattedDate":"November 7, 2022","tags":[{"label":"ledger","permalink":"/cardano-updates/quarterly/tags/ledger"}],"readingTime":1.255,"hasTruncateMarker":false,"authors":[{"name":"Jared Corduan","title":"Ledger Team Lead","url":"https://github.com/JaredCorduan","imageURL":"https://github.com/JaredCorduan.png","key":"JaredCorduan"}],"frontMatter":{"title":"Ledger Team Update","slug":"2022-11-07-ledger","authors":"JaredCorduan","tags":["ledger"],"hide_table_of_contents":false},"prevItem":{"title":"Network Team Update","permalink":"/cardano-updates/quarterly/2022-11-09-network"},"nextItem":{"title":"Node API & CLI Team Update","permalink":"/cardano-updates/quarterly/2022-10-07-node-cli-api"}},"content":"## Ledger Quarterly Update\\n## 2022-09 - 2022-11-04\\n\\n* We finished a minimal ledger era capable of master key rotation.\\n This will be re-purposed our upcoming work.\\n* We have the humble beginnings of a proper ledger API.\\n* We improved the problematic cost model serialization\\n (recall the song and dance about updating the cost model one epoch after the hard fork).\\n* We have added benchmarks for problematic areas.\\n* Massive repository restructure and cleanup.\\n * Unified and consistent variable name schemes (not completely finished, but nearly there).\\n * Massive reduction in type constraints, which causes a lot of developer friction,\\n in our code and also downstream.\\n * More organized module structures.\\n * Improved generators for our property tests.\\n * We removed our dependency on cardano-prelude.\\n* The formal ledger model has come a long way.\\n * We created a fork of Agda that provides some meta-programming support for the ledger rules.\\n * We have a large amount of the basic UTxO support in the model.\\n * We can generate a good looking PDF from the model.\\n * We can produce Haskell from the model.\\n * We have a nice finite set theory library that we can use for many of the ledger rules.\\n * We have nix support for the model.\\n\\n## Next steps\\n\\n * Individual tracking of deposits. [[issue-3113]]\\n * Versioned CBOR encoders/decoders. [[issue-3014]]\\n * New ledger era transaction body (and the surround work associated with it).\\n * Designs for the next ledger era.\\n\\n[issue-3113]: https://github.com/input-output-hk/cardano-ledger/issues/3113\\n[issue-3014]: https://github.com/input-output-hk/cardano-ledger/issues/3014"},{"id":"2022-10-07-node-cli-api","metadata":{"permalink":"/cardano-updates/quarterly/2022-10-07-node-cli-api","editUrl":"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-07-nod-api-cli.md","source":"@site/quarterly/2022-11-07-nod-api-cli.md","title":"Node API & CLI Team Update","description":"Node-Api-Cli Quarterly Update","date":"2022-11-07T00:00:00.000Z","formattedDate":"November 7, 2022","tags":[{"label":"cli-api-quarterly","permalink":"/cardano-updates/quarterly/tags/cli-api-quarterly"}],"readingTime":1.355,"hasTruncateMarker":false,"authors":[{"name":"Jordan Millar","title":"Node Team Lead","url":"https://github.com/Jimbo4350","imageURL":"https://github.com/Jimbo4350.png","key":"Jimbo4350"}],"frontMatter":{"title":"Node API & CLI Team Update","slug":"2022-10-07-node-cli-api","authors":"Jimbo4350","tags":["cli-api-quarterly"],"hide_table_of_contents":false},"prevItem":{"title":"Ledger Team Update","permalink":"/cardano-updates/quarterly/2022-11-07-ledger"}},"content":"## Node-Api-Cli Quarterly Update\\n## 2022-09 - 2022-11-04\\n\\n- Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0\\n- Major clean up of stale iusses + PRs.\\n- Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs\\n- cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node.\\n- cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation.\\n- General documentation updates and improvements\\n- Addition of tx-mempool command which allows users to:\\n - Query the node about the current mempool\'s capacity and sizes\\n - Request the next transaction from the mempool\'s current list\\n - Query if a particular transaction exists in the mempool\\n- Initial refactoring of cardano-testnet\\n\\nNext quarter\\n\\n- cardano-api\\n - Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately.\\n- cardano-testnet\\n - Working with Marc Fontaine to create an easy to use executable to deploy testnets locally - https://github.com/input-output-hk/cardano-node/issues/4598\\n- Serenity\\n - Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above.\\n- General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new."}]}')}}]); \ No newline at end of file diff --git a/assets/js/acd2edbe.7d8cc863.js b/assets/js/acd2edbe.7d8cc863.js new file mode 100644 index 00000000000..a1e8de4e240 --- /dev/null +++ b/assets/js/acd2edbe.7d8cc863.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39113],{52701:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/3","page":3,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/2","nextPage":"/cardano-updates/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ace79a55.6028e600.js b/assets/js/ace79a55.6028e600.js new file mode 100644 index 00000000000..fc08b91bf61 --- /dev/null +++ b/assets/js/ace79a55.6028e600.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[61185],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(a),m=n,c=u["".concat(p,".").concat(m)]||u[m]||d[m]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},40709:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-06-30-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-30-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-30-hydra.md",source:"@site/blog/2023-06-30-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-30T00:00:00.000Z",formattedDate:"June 30, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.925,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-30-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-04-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-29-mithril"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:s},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team wrote and published the monthly report for June,\nimplemented the end-to-end functionality for external commits, and tested it on\nthe preview environment. They also listed Hydra as a tool on the Cardano\ndeveloper portal, providing more visibility for the project. The team clarified\nthe path forward for L2 protocol improvements and explored an alternative CI\napproach using cabal instead of nix. Additionally, they released version 0.11.0,\nmarking another milestone in the project","\u2019","s development."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Written and published the monthly report for ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-06"},"June")),(0,n.kt)("li",{parentName:"ul"},"Implemented external commits end-to-end incl. tested it on preview ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215")),(0,n.kt)("li",{parentName:"ul"},"Listed Hydra as a tool on cardano ",(0,n.kt)("a",{parentName:"li",href:"https://developers.cardano.org/tools/"},"developer portal")),(0,n.kt)("li",{parentName:"ul"},"Cleared up path forward on L2 protocol improvements ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Established an alternative CI using more cabal tools ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/923"},"#923")),(0,n.kt)("li",{parentName:"ul"},"Release version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.10.0"},"0.11.0"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Spike on performance improvements of event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/913"},"#913")),(0,n.kt)("li",{parentName:"ul"},"Complete ReqSn only sends transaction ids ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Groom and plan last items for 0.12.0 (remove internal commit)"),(0,n.kt)("li",{parentName:"ul"},"Improve reliability of benchmarks")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/add555bf.8ea1e3df.js b/assets/js/add555bf.8ea1e3df.js new file mode 100644 index 00000000000..7a8f9331f9c --- /dev/null +++ b/assets/js/add555bf.8ea1e3df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23360],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),h=n,m=c["".concat(u,".").concat(h)]||c[h]||s[h]||o;return a?r.createElement(m,l(l({ref:t},d),{},{components:a})):r.createElement(m,l({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=h;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:n,l[1]=i;for(var p=2;p<o;p++)l[p]=a[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},7584:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Ledger Team Update",slug:"2022-11-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-11-02-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-ledger.md",source:"@site/blog/2022-11-02-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.275,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-02-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-02-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-02-node-cli-api"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Axiomatic Set Theory",id:"axiomatic-set-theory",level:3},{value:"Completed Technical Debt",id:"completed-technical-debt",level:3}],d={toc:p},c="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We have made the decision to use the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger repository"),"\nin place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure\nto the model. In particular, we now have a lot of support for axiomatic set theory.\nWhile the next ledger era is still in the design phase, most of the team remains working\non technical debt.\nIn particular, we have moved a lot more code out of the Shelley specific modules and into\na ledger core module, we have finished up our benchmarking around the problematic ",(0,n.kt)("inlineCode",{parentName:"p"},"TICKF"),"\nledger transition (while improving the performance), made conveniences to the development\nenvironment, cleaned up all the recent changes to the cost model, added a lot of documentation,\nfixed some flaky tests, and deleted some dead code."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"axiomatic-set-theory"},"Axiomatic Set Theory"),(0,n.kt)("p",null,"The formal ledger model now has support for much of the set theory that we make use of in\nthe formal ledger specifications. See [",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/20"},"pull-20"),"]."),(0,n.kt)("h3",{id:"completed-technical-debt"},"Completed Technical Debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We have addressed issues with two of our most problematic and flaky tests.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3039"},"pull-3039"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3093"},"pull-3093"),"]."),(0,n.kt)("li",{parentName:"ul"},"We have added more documentation and tests to the Twiddler module. This is a module which\nmakes our CBOR serialization round-trip tests much more robust, and will also hopefully\nhelp enforce the mandate for downstream libraries to never re-serialize data that needs\nto be hashed. See [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3073"},"pull-3073"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3095"},"pull-3095"),"]\n(we cannot merge 3095 just yet, due to a preference for merging other features)."),(0,n.kt)("li",{parentName:"ul"},"We have finished our long analysis of the problematic ",(0,n.kt)("inlineCode",{parentName:"li"},"TICKF")," transition.\nWe now have a lot of benchmarks surrounding this code, and have added performance improvements.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3068"},"pull-3068"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3035"},"issue-3035"),"]."),(0,n.kt)("li",{parentName:"ul"},"We have restored support for\n",(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/ghcid"},"ghcid"),"\nin our repository. This is a tool for developing with Haskell that many of us find greatly\nimproves our productivity by providing us with constant feedback from the type checker.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3112"},"pull-3112"),"]."),(0,n.kt)("li",{parentName:"ul"},"After much activity on the cost model, we have done some final clean up of the code.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3075"},"pull-3075"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3101"},"pull-3101"),"]."),(0,n.kt)("li",{parentName:"ul"},"We moved a lot of the existing user facing documentation regarding native tokens into the\nledger repository, and cleaned it up\n(most of the heavy lifting was done by our amazing technical writers).\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3091"},"pull-3091"),"]."),(0,n.kt)("li",{parentName:"ul"},"We removed dead code. See [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3089"},"pull-3089"),"]."),(0,n.kt)("li",{parentName:"ul"},"We moved a lot of code from the Shelley specific libraries to the ledger core library.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3109"},"pull-3109"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3110"},"pull-3110"),"]."),(0,n.kt)("li",{parentName:"ul"},"We've removed more of the awkward legacy template Haskell names.\nSee [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3108"},"pull-3108"),"].")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ae2d2424.be7ef5ae.js b/assets/js/ae2d2424.be7ef5ae.js new file mode 100644 index 00000000000..9d91b590286 --- /dev/null +++ b/assets/js/ae2d2424.be7ef5ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17873],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),h=n,m=u["".concat(s,".").concat(h)]||u[h]||c[h]||o;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},59274:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-10-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-14-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-14-hydra.md",source:"@site/blog/2022-10-14-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-10-14T00:00:00.000Z",formattedDate:"October 14, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.26,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-10-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-18-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-10-14-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},u="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node"),' over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks "past the opening of a Head". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Last week we thought we were done with ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/adr/18/"},"ADR18"),", but were not ..."),(0,n.kt)("li",{parentName:"ul"},"... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence."),(0,n.kt)("li",{parentName:"ul"},"Implemented a first version for persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/187"},"#187")," in response."),(0,n.kt)("li",{parentName:"ul"},"Enhanced CI to publish test results ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/benchmarks/tests/hydra-node/hspec-results"},"on our website")),(0,n.kt)("li",{parentName:"ul"},"Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!"),(0,n.kt)("li",{parentName:"ul"},"Pulled static executable feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/200"},"#200")," into scope, implemented it and merged it!"),(0,n.kt)("li",{parentName:"ul"},"Received and read through a project proposal by a vendor (building a Hydra platform).")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Get backup/recovery ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/187"},"#187")," done with proper event sourcing (ADR18)"),(0,n.kt)("li",{parentName:"ul"},"Cut the next release, version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.8.0")),(0,n.kt)("li",{parentName:"ul"},"Address open comments on specification document & complete the list of identified gaps between specification and implementation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Have the CI build macos artifacts")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ae455379.e0af4636.js b/assets/js/ae455379.e0af4636.js new file mode 100644 index 00000000000..e04c7b73614 --- /dev/null +++ b/assets/js/ae455379.e0af4636.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[38672],{17033:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/tags/consensus","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/ae521593.22fed2a0.js b/assets/js/ae521593.22fed2a0.js new file mode 100644 index 00000000000..b4e26e3b13a --- /dev/null +++ b/assets/js/ae521593.22fed2a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[81947],{59230:a=>{a.exports=JSON.parse('{"label":"crypto","permalink":"/cardano-updates/tags/crypto","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/ae7f7c70.147dae80.js b/assets/js/ae7f7c70.147dae80.js new file mode 100644 index 00000000000..442a41995ef --- /dev/null +++ b/assets/js/ae7f7c70.147dae80.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56789],{97303:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/crypto/page/4","page":4,"postsPerPage":5,"totalPages":4,"totalCount":18,"previousPage":"/cardano-updates/tags/crypto/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/afa83c07.67905eb7.js b/assets/js/afa83c07.67905eb7.js new file mode 100644 index 00000000000..be2b8137d8f --- /dev/null +++ b/assets/js/afa83c07.67905eb7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68115],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=o.createContext({}),u=function(e){var t=o.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=u(e.components);return o.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),s=u(n),m=r,h=s["".concat(p,".").concat(m)]||s[m]||d[m]||a;return n?o.createElement(h,l(l({ref:t},c),{},{components:n})):o.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:r,l[1]=i;for(var u=2;u<a;u++)l[u]=n[u];return o.createElement.apply(null,l)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},27614:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-07-31-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-31-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-31-network.md",source:"@site/blog/2023-07-31-network.md",title:"Network Team Update",description:"Network Update (Sprints 39 & 40)",date:"2023-07-31T00:00:00.000Z",formattedDate:"July 31, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.18,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-07-31-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-01-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-28-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"Network Update (Sprints 39 & 40)",id:"network-update-sprints-39--40",level:2},{value:"Sprint 39 (Jun 26 - Jul 09)",id:"sprint-39-jun-26---jul-09",level:3},{value:"Major changes",id:"major-changes",level:4},{value:"<code>node-to-client</code> protocol",id:"node-to-client-protocol",level:5},{value:"<code>node-to-node</code> protocol",id:"node-to-node-protocol",level:5},{value:"Minor changes",id:"minor-changes",level:4},{value:"Sprint 40 (Jul 09 - Jul 23)",id:"sprint-40-jul-09---jul-23",level:3},{value:"Major changes",id:"major-changes-1",level:4}],c={toc:u},s="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(s,(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"network-update-sprints-39--40"},"Network Update (Sprints 39 & 40)"),(0,r.kt)("p",null,"The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away.\nIt was great to see and talk to so many of the community members."),(0,r.kt)("h3",{id:"sprint-39-jun-26---jul-09"},"Sprint 39 (Jun 26 - Jul 09)"),(0,r.kt)("h4",{id:"major-changes"},"Major changes"),(0,r.kt)("p",null,"Now the following ",(0,r.kt)("strong",{parentName:"p"},"list of traces will be turned on by default"),":"),(0,r.kt)("h5",{id:"node-to-client-protocol"},(0,r.kt)("inlineCode",{parentName:"h5"},"node-to-client")," protocol"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalConnectionManagerTracer")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalInboundGovernor")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalHandshake")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalServer"))),(0,r.kt)("h5",{id:"node-to-node-protocol"},(0,r.kt)("inlineCode",{parentName:"h5"},"node-to-node")," protocol"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Server"))),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5353"},"cardano-node#5353"),". This will be released in ",(0,r.kt)("inlineCode",{parentName:"p"},"node-8.2.0"),"."),(0,r.kt)("p",null,"We made sure that ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-client-0.1.0.x")," library (which is ",(0,r.kt)("inlineCode",{parentName:"p"},"db-sync"),") is not using the experimental ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol.\nThe ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-client-0.2.0.0")," was not affected.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4612"},"ouroboros-network#4612"),"."),(0,r.kt)("p",null,"We merged the ",(0,r.kt)("strong",{parentName:"p"},"dynamic block production feature")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," (also available in the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-8.2.0")," release).\nDynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"ouroboros-network#3159"),", ","[ouroboros-consensu#140]","."),(0,r.kt)("p",null,"We continued to review the implementation of big ledger peers for eclipse evasion, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"ouroboros-network#4462"),"."),(0,r.kt)("h4",{id:"minor-changes"},"Minor changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We refactored the top level ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node")," error handler: ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5356"},"cardano-node#5356"))),(0,r.kt)("h3",{id:"sprint-40-jul-09---jul-23"},"Sprint 40 (Jul 09 - Jul 23)"),(0,r.kt)("h4",{id:"major-changes-1"},"Major changes"),(0,r.kt)("p",null,"We integrated ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.8.2.0")," with the ",(0,r.kt)("inlineCode",{parentName:"p"},"master")," branch of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," for the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.0")," release (the version match between ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," is purely accidental).\nThis includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"integration with ",(0,r.kt)("strong",{parentName:"li"},"dynamic block production")," feature.\nThis feature is documented in the ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5399"},"following PR"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Warm valency")," for local root peers (see below).")),(0,r.kt)("p",null,"For the full list of features included in the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.0")," release from the network side, please take a look at the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.2.0-pre"},"pre-release nodes"),"."),(0,r.kt)("p",null,"We ",(0,r.kt)("strong",{parentName:"p"},"improved the memory footprint")," of peer metrics measured by the P2P stack.\nPeer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation).\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4620"},"ouroboros-network#4620"),".\nThe improvement will be available in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-8.2.0"),"."),(0,r.kt)("p",null,"We added an ",(0,r.kt)("strong",{parentName:"p"},"optional explicit warm valency")," to local root peers of the ",(0,r.kt)("strong",{parentName:"p"},"P2P topology file"),".\nPreviously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to.\nThe hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones.\nWarm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4575"},"ouroboros-network#4575"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"cardano-node#5409"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b020ac17.f01a9412.js b/assets/js/b020ac17.f01a9412.js new file mode 100644 index 00000000000..f23aa7d0070 --- /dev/null +++ b/assets/js/b020ac17.f01a9412.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33538],{88564:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/22","page":22,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/21","nextPage":"/cardano-updates/page/23","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b032e7ab.b1a9961b.js b/assets/js/b032e7ab.b1a9961b.js new file mode 100644 index 00000000000..f6acf2b7333 --- /dev/null +++ b/assets/js/b032e7ab.b1a9961b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[292],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>d});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){r(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,a,r=function(e,t){if(null==e)return{};var i,a,r={},n=Object.keys(e);for(a=0;a<n.length;a++)i=n[a],t.indexOf(i)>=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)i=n[a],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),u=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(i),c=r,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||n;return i?a.createElement(d,o(o({ref:t},s),{},{components:i})):a.createElement(d,o({ref:t},s))}));function d(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,i)}c.displayName="MDXCreateElement"},32167:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-07-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-07-27-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-27-mithril.md",source:"@site/blog/2023-07-27-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-07-27T00:00:00.000Z",formattedDate:"July 27, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.715,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-07-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-28-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-26-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team launched ",(0,r.kt)("strong",{parentName:"p"},"Mithril protocol\u2019s mainnet beta"),": the ",(0,r.kt)("inlineCode",{parentName:"p"},"release-mainnet")," network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch. "),(0,r.kt)("p",null,"They have released a new distribution ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2329.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2329.0")),", which is running on the ",(0,r.kt)("inlineCode",{parentName:"p"},"release-mainnet")," network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator."),(0,r.kt)("p",null,"Finally, they have worked on enhancing the documentation for ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/doc/manual/getting-started/SPO-on-boarding-guide"},"onboarding SPOs")," and setting up a ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/doc/manual/getting-started/run-signer-node"},"Mithril signer"),", and fixing installation bugs of the binary artifacts produced in the CI."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Created the dev blog post ",(0,r.kt)("a",{parentName:"li",href:"https://mithril.network/doc/dev-blog/2023/07/21/mainnet-beta-launch"},"Mithril Protocol\u2019s Mainnet Beta Launch")),(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2329.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2329.0"))),(0,r.kt)("li",{parentName:"ul"},"Closed the epic that prepares the Mithril infrastructure for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Deploy 'mainnet' infrastructure")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/988"},"#988")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Handle Secrets management")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/989"},"#989")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,r.kt)("inlineCode",{parentName:"li"},"Release 'mainnet' Mithril network")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/918"},"#918"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Prepare SPO on-boarding guide")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1049"},"#1049")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,r.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,r.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance the configuration of Mithril relay")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1080"},"#1080")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Remove legacy store adapters from aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1053"},"#1053")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add a 'sign' sub-command to 'genesis' command in aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1081"},"#1081")))),(0,r.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Refactor (de)serialization of crypto entities")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/668"},"#668")))),(0,r.kt)("li",{parentName:"ul"},"Worked on documentation:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Enhance 'Run a Mithril Signer node (SPO)' guide")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1055"},"#1055")))),(0,r.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Shared library error in CI binaries")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1073"},"#1073")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Debian package does not install cleanly on older ubuntu versions")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/834"},"#834")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Aggregator panics with new (de)serialization of 'ProtocolVerificationKey'")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1083"},"#1083"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b03d4a4e.5d00abc3.js b/assets/js/b03d4a4e.5d00abc3.js new file mode 100644 index 00000000000..23cacc56563 --- /dev/null +++ b/assets/js/b03d4a4e.5d00abc3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[52834],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(r),h=a,m=d["".concat(s,".").concat(h)]||d[h]||c[h]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}h.displayName="MDXCreateElement"},44301:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-11-11-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-11-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-ledger.md",source:"@site/blog/2022-11-11-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.41,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-11-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-11-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-11-network"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:u},d="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"I am extremely excited to say that we now have a pull request up which introduces our new versioned\nCBOR serialization. This was an enormous effort, but it will solve a host of problems that we have\nhad since the Shelley phase. It will take time to properly review it, and we will\nneed to put in a lot of effort to integrate it with the downstream components, but this is a huge\nmilestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction\nserialization schemes."),(0,a.kt)("p",null,"We also have a draft pull request that reworks how deposits are tracked. Users of the system will\nnot notice any difference, but it is a necessary change needed to prepare the way for\ndecentralizing the governance of Cardano."),(0,a.kt)("p",null,"Finally, we continued to address technical debt. In particular, we continued to make progress on\nbringing coherency and consistency to the code base with a common naming convention, and\nimproving some error messages."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We have a pull request up for our new versioned CBOR serialization.\nWhen we encounter a problem with our deserializers, it can be very difficult to implement a fix.\nIt is difficult because we can only fix such issues during a hard fork, and leading up to the\nhard fork we must maintain two serializations for the same type in order to not cause unintended\nnetwork splitting (the problematic version must be used before the hard fork,\nand the fixed version is used afterwards).\nThis can be especially tricky with the ",(0,a.kt)("inlineCode",{parentName:"li"},"FromCBOR")," typeclass, since it is not always easy to\nsearch for where all the problematic uses are located.\nThe new versioned CBOR serialization allows us to gracefully handle this transition.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3138"},"pull-3138"),"]."),(0,a.kt)("li",{parentName:"ul"},"We proposed a CIP for backwards compatibility of the transaction serialization schemes.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/372"},"pull-372"),"]."),(0,a.kt)("li",{parentName:"ul"},"We have draft for the new deposit tracking.\nThis draft is not as memory efficient as the final version will be,\nbut it is a sufficient proof of concept that we can write property tests against, ensuring\nthat we have not changed the semantics.\nWe will optimize after we are sure of the correctness.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3127"},"pull-3127"),"]."),(0,a.kt)("li",{parentName:"ul"},"We now provide better support for debugging failed Plutus scripts in an important helper\nfunction, named ",(0,a.kt)("inlineCode",{parentName:"li"},"evaluateTransactionExecutionUnits"),".\nIn particular, it now returns all the information needed to rerun the script with exactly the\nsame arguments. This feature will end up appearing in the CLI and other tools from the Plutus\ntools team.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3135"},"pull-3135"),"]."),(0,a.kt)("li",{parentName:"ul"},"We did a lot more renaming to bring coherency and consistency to the code base.\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3126"},"pull-3126"),"], [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3120"},"pull-3120"),"], [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3118"},"pull-3118"),"], and [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3116"},"pull-3116"),"]."),(0,a.kt)("li",{parentName:"ul"},"We have added a few things to the ledger repository to make it conform to the\n",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},"Cardano Engineering Handbook"),"\nSee [",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3139"},"pull-3139"),"].")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b073a55d.87d95835.js b/assets/js/b073a55d.87d95835.js new file mode 100644 index 00000000000..bfdbb152c6d --- /dev/null +++ b/assets/js/b073a55d.87d95835.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20955],{3905:(e,n,t)=>{t.d(n,{Zo:()=>m,kt:()=>h});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),c=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=c(e.components);return a.createElement(s.Provider,{value:n},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=c(t),d=r,h=u["".concat(s,".").concat(d)]||u[d]||p[d]||i;return t?a.createElement(h,o(o({ref:n},m),{},{components:t})):a.createElement(h,o({ref:n},m))}));function h(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=d;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var c=2;c<i;c++)o[c]=t[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},7729:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=t(87462),r=(t(67294),t(3905));const i={title:"Performance & Tracing Q3 2023 Update",slug:"2023-Q3-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/quarterly/2023-Q3-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q3-performance-and-tracing.md",source:"@site/quarterly/2023-Q3-performance-and-tracing.md",title:"Performance & Tracing Q3 2023 Update",description:"2023-07 - 2023-09",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/quarterly/tags/performance-tracing"}],readingTime:3.27,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & Tracing Q3 2023 Update",slug:"2023-Q3-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"SRE Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-sre"},nextItem:{title:"SRE Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-sre"}},s={authorsImageUrls:[void 0]},c=[{value:"2023-07 - 2023-09",id:"2023-07---2023-09",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Release benchmarking",id:"release-benchmarking",level:4},{value:"UTxO-HD benchmarks",id:"utxo-hd-benchmarks",level:4},{value:"P2P benchmarks",id:"p2p-benchmarks",level:4},{value:"New nomad cluster",id:"new-nomad-cluster",level:4},{value:"New tracing system",id:"new-tracing-system",level:4},{value:"GHC9 performance",id:"ghc9-performance",level:4},{value:"Consensus QTAs",id:"consensus-qtas",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"Benchmarking:",id:"benchmarking",level:4},{value:"Performance",id:"performance",level:4},{value:"New tracing system",id:"new-tracing-system-1",level:4},{value:"UTxO-HD monitoring",id:"utxo-hd-monitoring",level:4},{value:"Nomad backend",id:"nomad-backend",level:4},{value:"Workbench",id:"workbench",level:4},{value:"Consensus component QTAs (co-development)",id:"consensus-component-qtas-co-development",level:4}],m={toc:c},u="wrapper";function p(e){let{components:n,...t}=e;return(0,r.kt)(u,(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-07---2023-09"},"2023-07 - 2023-09"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Release benchmarking"),(0,r.kt)("li",{parentName:"ul"},"Developing and running UTxO-HD benchmarks - in-memory flavour"),(0,r.kt)("li",{parentName:"ul"},"P2P benchmarks, facilitating rollout"),(0,r.kt)("li",{parentName:"ul"},"Production-readiness of the new Nomad cluster has been reached"),(0,r.kt)("li",{parentName:"ul"},"Optimization of and introspection capability for the new tracing system"),(0,r.kt)("li",{parentName:"ul"},"GHC9 performance investigation (and possible remedy)"),(0,r.kt)("li",{parentName:"ul"},"Conensus QTAs: first real-world application of prototype")),(0,r.kt)("h4",{id:"release-benchmarking"},"Release benchmarking"),(0,r.kt)("p",null,"Ongoing release benchmarking is a crucial safeguard to ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),"'s release cycle from a performance perspective. We've performed and analyzed benchmarks for node versions ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.x")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"8.5")," throughout Q3."),(0,r.kt)("h4",{id:"utxo-hd-benchmarks"},"UTxO-HD benchmarks"),(0,r.kt)("p",null,"Targeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery."),(0,r.kt)("h4",{id:"p2p-benchmarks"},"P2P benchmarks"),(0,r.kt)("p",null,"In Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature."),(0,r.kt)("h4",{id:"new-nomad-cluster"},"New nomad cluster"),(0,r.kt)("p",null,"The new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received\nvarious rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest\nof our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it\nready for production use."),(0,r.kt)("h4",{id:"new-tracing-system"},"New tracing system"),(0,r.kt)("p",null,"Our new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that\nit is roughly on par with the legacy system while offering a richer feature set and greater flexibility. "),(0,r.kt)("p",null,"Additionally, in Q3 we equipped the system with an introspection capability. This is now used for generating\nend user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system."),(0,r.kt)("h4",{id:"ghc9-performance"},"GHC9 performance"),(0,r.kt)("p",null,"In Q3, a joint investigation with DevX into GHC9's behaviour revealed where and how GHC9 misses opportunities for\noptimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable\nthose optimizations - which is still being validated."),(0,r.kt)("h4",{id:"consensus-qtas"},"Consensus QTAs"),(0,r.kt)("p",null,"In collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations'\nperformance characteristics. It's now applicable, and being applied, to a real-world task - namely\ngathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds."),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"benchmarking"},"Benchmarking:"),(0,r.kt)("p",null,"In Q4, the focus will be on:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"facilitating the next mainnet release"),(0,r.kt)("li",{parentName:"ul"},"benchmarking runs in the Conway era"),(0,r.kt)("li",{parentName:"ul"},"developing benchmarks / workloads for Conway-exclusive actions"),(0,r.kt)("li",{parentName:"ul"},"implementing a specialized benchmark setup for the UTxO-HD on-disk variant"),(0,r.kt)("li",{parentName:"ul"},"developing new Plutus benchmarks to safeguard Plutus V3"),(0,r.kt)("li",{parentName:"ul"},"benchmarks regarding the rollout of P2P")),(0,r.kt)("h4",{id:"performance"},"Performance"),(0,r.kt)("p",null,"For certain blocking performance issues we've located the cause, or even found a solution in a cross-team effort. In Q4 we'll advance that work to ensure the ongoing\nrelease cycle for mainnet, as well as make GHC9 become a viable release platform."),(0,r.kt)("h4",{id:"new-tracing-system-1"},"New tracing system"),(0,r.kt)("p",null,"For the new tracing system, we'll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support."),(0,r.kt)("h4",{id:"utxo-hd-monitoring"},"UTxO-HD monitoring"),(0,r.kt)("p",null,"We'll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way."),(0,r.kt)("h4",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"From Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad."),(0,r.kt)("h4",{id:"workbench"},"Workbench"),(0,r.kt)("p",null,"We will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),"."),(0,r.kt)("h4",{id:"consensus-component-qtas-co-development"},"Consensus component QTAs (co-development)"),(0,r.kt)("p",null,"In Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b073edd1.1e4774ca.js b/assets/js/b073edd1.1e4774ca.js new file mode 100644 index 00000000000..3b121911645 --- /dev/null +++ b/assets/js/b073edd1.1e4774ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70613],{85795:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/mithril/page/7","page":7,"postsPerPage":5,"totalPages":7,"totalCount":34,"previousPage":"/cardano-updates/tags/mithril/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b13803f3.f0a1384b.js b/assets/js/b13803f3.f0a1384b.js new file mode 100644 index 00000000000..e0c67d6804a --- /dev/null +++ b/assets/js/b13803f3.f0a1384b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96558],{47768:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/7","page":7,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/6","nextPage":"/cardano-updates/tags/hydra/page/8","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b242687d.9e8010a3.js b/assets/js/b242687d.9e8010a3.js new file mode 100644 index 00000000000..a51bd0457a3 --- /dev/null +++ b/assets/js/b242687d.9e8010a3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22191],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),u=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return r.createElement(i.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,h=d["".concat(i,".").concat(m)]||d[m]||s[m]||o;return a?r.createElement(h,l(l({ref:t},c),{},{components:a})):r.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p[d]="string"==typeof e?e:n,l[1]=p;for(var u=2;u<o;u++)l[u]=a[u];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},95807:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>p,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-09-29-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,p={permalink:"/cardano-updates/2023-09-29-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-sre.md",source:"@site/blog/2023-09-29-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.68,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-09-29-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-29-ledger"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-27-mithril"}},i={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Cardano-world",id:"cardano-world",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.4.0-pre"},"8.4.0-pre"),"."),(0,n.kt)("li",{parentName:"ul"},"The use of cardano-node ",(0,n.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/inputoutput/cardano-node"},"docker hub")," will be deprecated in preference of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pkgs/container/cardano-node"},"GHCR"))),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Refactor parsing scripts, add github action automation, various bugfixes and cleanup: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/c2c7680...a274b72"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/14"},"cardano-parts-pull-8"))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/2"},"cardano-playground"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update sanchonet network to cardano-node 8.4.0: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/compare/8cb559a...3edafb9"},"cardano-world-compare")),(0,n.kt)("li",{parentName:"ul"},"Rotate KES on shelley-qa: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/commit/8301b044ad106ff8ca71dcbbdb5b17fe9ec6fc6d"},"cardano-world-commit"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b28a1077.d4571d53.js b/assets/js/b28a1077.d4571d53.js new file mode 100644 index 00000000000..026ab8c3293 --- /dev/null +++ b/assets/js/b28a1077.d4571d53.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7413],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(n),p=a,h=d["".concat(s,".").concat(p)]||d[p]||m[p]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},49384:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-05-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-05-17-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-performance-and-tracing.md",source:"@site/blog/2023-05-17-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-05-17T00:00:00.000Z",formattedDate:"May 17, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:3.21,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-05-17-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-17-mithril"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-05-12-crypto"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Analysis",id:"analysis",level:3},{value:"Open Sourcing",id:"open-sourcing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"Performance & Tracing Meetup",id:"performance--tracing-meetup",level:3},{value:"Offboarding",id:"offboarding",level:3}],u={toc:c},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes."),(0,a.kt)("li",{parentName:"ul"},"New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: First steps on implementing incremental analysis have been untertaken."),(0,a.kt)("li",{parentName:"ul"},"Open Sourcing: Exhaustive dataflow charts for both our analysis tool ",(0,a.kt)("inlineCode",{parentName:"li"},"locli")," and our ",(0,a.kt)("inlineCode",{parentName:"li"},"workbanch")," have been merged to ",(0,a.kt)("inlineCode",{parentName:"li"},"master")),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster."),(0,a.kt)("li",{parentName:"ul"},"P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland."),(0,a.kt)("li",{parentName:"ul"},"Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"As a compiler switch to GHC 9.2.7 for ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),"'s default build environment is around the corner, we're setting up our benchmarking cluster to\nhandle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This\nalso involves choosing a reliable baseline as reference point for inter-version comparisons. "),(0,a.kt)("p",null,"Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet,\nwe strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to\nbe balanced against resource demand for all our cluster's nodes."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some\nquality-of-life details that have changed required us to revision the system documentation."),(0,a.kt)("h3",{id:"analysis"},"Analysis"),(0,a.kt)("p",null,"As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been\nnormally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a\nhuge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken. "),(0,a.kt)("h3",{id:"open-sourcing"},"Open Sourcing"),(0,a.kt)("p",null,"A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking\ncopmonents more accessible. As a result, detailed charts for both our LogObject CLI ",(0,a.kt)("inlineCode",{parentName:"p"},"locli")," and our ",(0,a.kt)("inlineCode",{parentName:"p"},"workbench")," have been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". "),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting\nthose profiles of our ",(0,a.kt)("inlineCode",{parentName:"p"},"workbench")," that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality\nof the nomad cloud backend. "),(0,a.kt)("p",null,"Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster."),(0,a.kt)("h3",{id:"performance--tracing-meetup"},"Performance & Tracing Meetup"),(0,a.kt)("p",null,"We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive\ndays together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future.\nAlso, it was a great opportunity to finally meet in person."),(0,a.kt)("h3",{id:"offboarding"},"Offboarding"),(0,a.kt)("p",null,"Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation\nof team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b3041b60.04095479.js b/assets/js/b3041b60.04095479.js new file mode 100644 index 00000000000..4b6e8b17e3b --- /dev/null +++ b/assets/js/b3041b60.04095479.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35889],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),c=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=c(a),m=n,g=s["".concat(u,".").concat(m)]||s[m]||d[m]||l;return a?r.createElement(g,o(o({ref:t},p),{},{components:a})):r.createElement(g,o({ref:t},p))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:n,o[1]=i;for(var c=2;c<l;c++)o[c]=a[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},2592:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-05-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-05-05-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-05-ledger.md",source:"@site/blog/2023-05-05-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-05-05T00:00:00.000Z",formattedDate:"May 5, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.235,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-05-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-12-network"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-05-node-cli-api"}},u={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway certificates",id:"conway-certificates",level:2},{value:"Constraint based testing",id:"constraint-based-testing",level:2},{value:"Integration work",id:"integration-work",level:2},{value:"Technical debt",id:"technical-debt",level:2}],p={toc:c},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The ledger team focused mainly on the conway ledger era and node integration.\nFor conway, we completed a large structural change that now allows\nfor delegation certificates to be parameterized by era, and introducing\nnew certificates for the first time since Shelley.\nWe also continue to build out our contraint based generators that we will\nuse to property test the conway era.\nIn particular, we can now generate an entire ledger state and a\ntransaction which is balanced with respect to the ledger state."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h2",{id:"conway-certificates"},"Conway certificates"),(0,n.kt)("p",null,"Certificiates are now abstracted as a type family in the ledger codebase.\nMoreover, there are new certificates in the Conway era to support CIP-1694,\nand MIR certificates have been removed."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3387"},"pull-3387"))),(0,n.kt)("h2",{id:"constraint-based-testing"},"Constraint based testing"),(0,n.kt)("p",null,"Our plan for property testing in the conway era is to no longer use the trace generators,\nbut instead generate ledger states and transactions based on constraints.\nWe hit a milestone this week, namely the ability to generate a balanced transaction in the context\nof a ledger state, all based on our ever growing constaint language."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3374"},"pull-3374")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3386"},"pull-3386"))),(0,n.kt)("h2",{id:"integration-work"},"Integration work"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3393"},"pull-3393")," - Performance improvements"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3395"},"pull-3395")," - Conway instances"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3398"},"pull-3398")," - Fix mint translation in the script context")),(0,n.kt)("h2",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3389"},"pull-3389")," - Reduce github pages size"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3390"},"pull-3390")," - Reinstate the tickf optimizations")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b3043f02.38a94c82.js b/assets/js/b3043f02.38a94c82.js new file mode 100644 index 00000000000..21433d403df --- /dev/null +++ b/assets/js/b3043f02.38a94c82.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27478],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),d=a,m=p["".concat(l,".").concat(d)]||p[d]||h[d]||o;return n?r.createElement(m,s(s({ref:t},c),{},{components:n})):r.createElement(m,s({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},59290:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-10-04-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-10-04-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-04-consensus.md",source:"@site/blog/2023-10-04-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-10-04T00:00:00.000Z",formattedDate:"October 4, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.135,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-10-04-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-10-06-performance-and-tracing"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-04-mithril"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:3},{value:"Support",id:"support",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],c={toc:u},p="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the ",(0,a.kt)("em",{parentName:"p"},"in-memory")," backend."),(0,a.kt)("p",null,"On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain.\nWe also merged a fix for the Babbage to Conway transition, and released a new version of Consensus."),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/392"},"392"),").")),(0,a.kt)("h3",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/366"},"366"),")."),(0,a.kt)("li",{parentName:"ul"},"We enabled richer tracers in ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node")," that can be useful in future debugging (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/384"},"384"),")."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/amesgen"},"Esgen")," continues with his release engineer activities, and created a new Consensus release.")),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/369"},"369"),").")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b41783a8.f909dc33.js b/assets/js/b41783a8.f909dc33.js new file mode 100644 index 00000000000..7b6e5aec159 --- /dev/null +++ b/assets/js/b41783a8.f909dc33.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89104],{861:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/goedel","page":1,"postsPerPage":5,"totalPages":4,"totalCount":18,"nextPage":"/cardano-updates/tags/goedel/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b4645a09.58164e44.js b/assets/js/b4645a09.58164e44.js new file mode 100644 index 00000000000..4f494afa3ec --- /dev/null +++ b/assets/js/b4645a09.58164e44.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24910],{14950:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/","page":1,"postsPerPage":5,"totalPages":61,"totalCount":303,"nextPage":"/cardano-updates/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b4cc2dd2.ac8372ad.js b/assets/js/b4cc2dd2.ac8372ad.js new file mode 100644 index 00000000000..f9bc35e042c --- /dev/null +++ b/assets/js/b4cc2dd2.ac8372ad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70635],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var h=r.createContext({}),p=function(e){var t=r.useContext(h),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(h.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,h=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(h,".").concat(c)]||d[c]||u[c]||o;return a?r.createElement(m,i(i({ref:t},s),{},{components:a})):r.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var h in t)hasOwnProperty.call(t,h)&&(l[h]=t[h]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},52945:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>h,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-03-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-hydra.md",source:"@site/blog/2023-03-03-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.19,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-03-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-03-ledger"}},h={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/releases/tag/0.9.0"},"0.9.0")," - a version\nof the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," with fully specified behavior of on-chain scripts and\noff-chain head-logic, decreased costs for opening/closing a Head and scalable\ncontestation deadline semantics. Check out the full release notes for details."),(0,n.kt)("p",null,"Furthermore, they published the ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2023-03"},"monthly\nreport")," of the Hydra project\nand conducted a review meeting with an increasingly wider audience. The team\nplans to extend invitations through the new Hydra\n",(0,n.kt)("a",{parentName:"p",href:"https://discord.gg/Bwdy2jNdm2"},"#announcements")," discord channel for the next\nmonths, stay tuned!"),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting with report published ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-03"},"on website")),(0,n.kt)("li",{parentName:"ul"},"Fixed smoke tests ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/726"},"#726")),(0,n.kt)("li",{parentName:"ul"},"Reduced the cost of opening/closing a Head (error codes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/748"},"#748")," + head reference script ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/701"},"#701"),")"),(0,n.kt)("li",{parentName:"ul"},"Released version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.9.0"},"0.9.0")),(0,n.kt)("li",{parentName:"ul"},"Conducted a first experiment on mainnet compatibility ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713")),(0,n.kt)("li",{parentName:"ul"},"New discord category with ",(0,n.kt)("a",{parentName:"li",href:"https://discord.gg/Bwdy2jNdm2"},"#announcements")," channel"),(0,n.kt)("li",{parentName:"ul"},"Received a demo about the Hydra for Voting project"),(0,n.kt)("li",{parentName:"ul"},"Lightning talk on mutation-based testing (to be shared)"),(0,n.kt)("li",{parentName:"ul"},"New ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/orgs/input-output-hk/projects/21/views/26"},"themes view")," in on our roadmap and some rearranging as we align it with high-level objectives"),(0,n.kt)("li",{parentName:"ul"},"Clarified things with researchers, but mostly identified action items for them")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs and address TODOs specification"),(0,n.kt)("li",{parentName:"ul"},"Run hydraw with 0.9.0 on preprod"),(0,n.kt)("li",{parentName:"ul"},"Make smoke tests on mainnet possible"),(0,n.kt)("li",{parentName:"ul"},"Groom the explorer item"),(0,n.kt)("li",{parentName:"ul"},"Unblock the auctions projecth with ","\u201c","commit from script","\u201d"," a solution")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b4f5b98b.d8a4a2ab.js b/assets/js/b4f5b98b.d8a4a2ab.js new file mode 100644 index 00000000000..f4145c3dcaf --- /dev/null +++ b/assets/js/b4f5b98b.d8a4a2ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78461],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function o(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var l=n.createContext({}),u=function(t){var e=n.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(l.Provider,{value:e},t.children)},m="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},s=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,l=t.parentName,c=p(t,["components","mdxType","originalType","parentName"]),m=u(a),s=r,h=m["".concat(l,".").concat(s)]||m[s]||d[s]||i;return a?n.createElement(h,o(o({ref:e},c),{},{components:a})):n.createElement(h,o({ref:e},c))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,o=new Array(i);o[0]=s;var p={};for(var l in e)hasOwnProperty.call(e,l)&&(p[l]=e[l]);p.originalType=t,p[m]="string"==typeof t?t:r,o[1]=p;for(var u=2;u<i;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},18983:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-08-01-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},o="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-08-01-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-01-node-cli-api.md",source:"@site/blog/2023-08-01-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-08-01T00:00:00.000Z",formattedDate:"August 1, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.76,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-08-01-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-04-sre"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-07-31-network"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(t){let{components:e,...a}=t;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-07-19---2023-08-01"},"2023-07-19 - 2023-08-01"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Release of Node 8.2.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694."),(0,r.kt)("li",{parentName:"ul"},"This release is phase 1 of the SanchoNet roll out"),(0,r.kt)("li",{parentName:"ul"},"Allows SPOs to vote on changes to the on-chain constitution."),(0,r.kt)("li",{parentName:"ul"},"Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag."),(0,r.kt)("li",{parentName:"ul"},"Updates to the networking packages prepare the road for peer sharing."))),(0,r.kt)("li",{parentName:"ul"},"cardano-cli and cardano-api continue to integrate Conway era features"),(0,r.kt)("li",{parentName:"ul"},"Continue refactoring of cardano-testnet")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/116"},"Use AnyShelleyToBabbageEra from cardano-api instead")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/115"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/113"},"Add rendering for ",(0,r.kt)("inlineCode",{parentName:"a"},"ConwayCertificate")," in ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Cli.Json.Friendly"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/111"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/110"},"Add DRep registration certificate command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/109"},"Add options to delegate voting stake ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/107"},"Share MIR certificates code between era-based and legacy CLI parsers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/106"},"Release cardano-cli 8.4.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/103"},"Update to",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/100"},"Change directory structure from Options/.. to EraBased/..")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/98"},"Era-sensitive command structure")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/90"},"#86 Set default era to Babbage in stake-address, stake-pool and governance commmands"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/155"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyCertificateConstraints")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"conwayCertificateConstraints"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/154"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"TxVotesSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/152"},"Add SerialiseAsBech32 instances for committee cold and hot keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/151"},"Deprecate some constraint functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/150"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"TxGovernanceActionSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/149"},"More ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraint")," constraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/148"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/147"},"Expose shelleyCertificateConstraints and conwayCertificateConstraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/146"},"Remove unnecessary function ",(0,r.kt)("inlineCode",{parentName:"a"},"getShelleyEraTxBodyConstraint"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/143"},"Provide additional constraints in ",(0,r.kt)("inlineCode",{parentName:"a"},"shelleyBasedEraConstraints"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/142"},"Update changelogs for ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/141"},"handleFileForWritingWithOwnerPermissionImpl: Fix permisions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/138"},"Update DRepKey with correct ",(0,r.kt)("inlineCode",{parentName:"a"},"Voting")," keyrole")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/137"},"Support more constraints for Conway witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/135"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.10.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/134"},"Expose toShelleyPoolParams for conway integration")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/131"},(0,r.kt)("inlineCode",{parentName:"a"},"FeatureInEra")," instance for ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/130"},"Expose more functionality from cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/128"},"Improved feature ergonomics")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/127"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"AtMostBabbageEra")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyToBabbageEra")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5412"},"Fix stubbed LogFormatting instances")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5411"},"8.2.0 version bumps")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"Bump network packages version")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5404"},"Fix missing ",(0,r.kt)("inlineCode",{parentName:"a"},"ToObject")," tracing instances.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5401"},"input-output-hk/cardano-cli#85 Fix node crashing in babbage"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5411"},"8.2.0 version bumps")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"Bump network packages version")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5404"},"Fix missing ",(0,r.kt)("inlineCode",{parentName:"a"},"ToObject")," tracing instances.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5400"},"Fix plutus script costing in cardano-testnet"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"Bump network packages version"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/blob/05c0392b4722d7fe2f82db1854b28de4f28a917b/doc/getting-started/understanding-config-files.md?plain=1#L84C1-L97C42"},"WarmValency"))))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b512dd46.0c3c6eed.js b/assets/js/b512dd46.0c3c6eed.js new file mode 100644 index 00000000000..83bbbf0da5c --- /dev/null +++ b/assets/js/b512dd46.0c3c6eed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[47093],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function p(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=o.createContext({}),l=function(e){var t=o.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=l(r),d=n,h=c["".concat(s,".").concat(d)]||c[d]||m[d]||a;return r?o.createElement(h,i(i({ref:t},u),{},{components:r})):o.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=d;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[c]="string"==typeof e?e:n,i[1]=p;for(var l=2;l<a;l++)i[l]=r[l];return o.createElement.apply(null,i)}return o.createElement.apply(null,r)}d.displayName="MDXCreateElement"},5136:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>p,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var o=r(87462),n=(r(67294),r(3905)),a=r(80175);const i={title:"Network Team Update",slug:"2022-11-11-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},p=void 0,s={permalink:"/cardano-updates/2022-11-11-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-network.md",source:"@site/blog/2022-11-11-network.md",title:"Network Team Update",description:"High-level summary",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.595,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-11-11-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-11-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-04-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"Detail description",id:"detail-description",level:2},{value:"Performance regression",id:"performance-regression",level:3},{value:"New P2P topology form",id:"new-p2p-topology-form",level:3},{value:"Tracing improvements",id:"tracing-improvements",level:3},{value:"Open Source Improvements",id:"open-source-improvements",level:3}],c={toc:u},m="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"In last sprint we got a performance report of P2P performance testing cluster\n(which consists of 50 nodes). There is a performance regression in the header\nnotification metric. The P2P cluster is constructed with the same\ntopology as the non-p2p reference one this indicates some regression which\nneeds to be further investigated. This poses a risk for releasing P2P."),(0,n.kt)("p",null,"We also continued to work on peer sharing: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"pull #4019"),"."),(0,n.kt)("p",null,"We continued working on dynamic block production which is required for P2P\nrelease for BP nodes: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"pull #3159"),"."),(0,n.kt)("p",null,"We simplified the P2P topology format: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4559"},"issue #4559"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3888"},"pull #3888"),"."),(0,n.kt)("p",null,"We added a new trace point for asynchronous demotions of local peers with\n",(0,n.kt)("inlineCode",{parentName:"p"},"Warning")," severity. This trace is ",(0,n.kt)("strong",{parentName:"p"},"important")," for SPOs."),(0,n.kt)("h2",{id:"detail-description"},"Detail description"),(0,n.kt)("h3",{id:"performance-regression"},"Performance regression"),(0,n.kt)("p",null,"Below we include a graph which shows the performance regression of the P2P code base vs non P2P."),(0,n.kt)("img",{src:a.Z}),(0,n.kt)("p",null,"On the ",(0,n.kt)("inlineCode",{parentName:"p"},"x")," axis is time in seconds which measures the delay from the start of\nthe slot to when a header was received. The ",(0,n.kt)("inlineCode",{parentName:"p"},"y")," axis is the percentile of nodes\nthat received a header. We are currently investigating possible causes of the\nregression. "),(0,n.kt)("h3",{id:"new-p2p-topology-form"},"New P2P topology form"),(0,n.kt)("p",null,"The new topology file format is described in this ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4559"},"issue #4559"),"."),(0,n.kt)("h3",{id:"tracing-improvements"},"Tracing improvements"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We improved a handshake error reporting, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4136"},"pull #4136")),(0,n.kt)("li",{parentName:"ul"},"We added ",(0,n.kt)("inlineCode",{parentName:"li"},"TraceDemoteLocalAsynchronous")," rendered as ",(0,n.kt)("inlineCode",{parentName:"li"},"DemoteLocalAsynchronous"),"\nin ",(0,n.kt)("inlineCode",{parentName:"li"},"json")," format, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4127"},"pull #4127"),". Such demotions should be investigated by the\npool operator. They can indicate a problem in the deployed system, but also\nthey could indicate a remote problem in arranged connections with other SPOs.")),(0,n.kt)("h3",{id:"open-source-improvements"},"Open Source Improvements"),(0,n.kt)("p",null,"We improved documentation of ",(0,n.kt)("inlineCode",{parentName:"p"},"io-sim")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols")," for open-source\ncontributors and/or maintenance tasks: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/22"},"pull #22"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/45"},"pull #45"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/48"},"pull #48"),". "))}d.isMDXComponent=!0},80175:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/2022-11-11-noticed-headers-55bb0b4d41e8f0cff0066e1bec91bdd2.png"}}]); \ No newline at end of file diff --git a/assets/js/b5164349.8a4ed5f9.js b/assets/js/b5164349.8a4ed5f9.js new file mode 100644 index 00000000000..5adb810e848 --- /dev/null +++ b/assets/js/b5164349.8a4ed5f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40176],{3905:(e,n,r)=>{r.d(n,{Zo:()=>u,kt:()=>g});var t=r(67294);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function c(e,n){if(null==e)return{};var r,t,a=function(e,n){if(null==e)return{};var r,t,a={},i=Object.keys(e);for(t=0;t<i.length;t++)r=i[t],n.indexOf(r)>=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)r=i[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=t.createContext({}),l=function(e){var n=t.useContext(s),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},u=function(e){var n=l(e.components);return t.createElement(s.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},m=t.forwardRef((function(e,n){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=l(r),m=a,g=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return r?t.createElement(g,o(o({ref:n},u),{},{components:r})):t.createElement(g,o({ref:n},u))}));function g(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c[d]="string"==typeof e?e:a,o[1]=c;for(var l=2;l<i;l++)o[l]=r[l];return t.createElement.apply(null,o)}return t.createElement.apply(null,r)}m.displayName="MDXCreateElement"},3644:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var t=r(87462),a=(r(67294),r(3905));const i={title:"Performance & tracing update",slug:"2023-03-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",c={permalink:"/cardano-updates/2023-03-22-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-performance-and-tracing.md",source:"@site/blog/2023-03-22-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.",date:"2023-03-22T00:00:00.000Z",formattedDate:"March 22, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.5,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-03-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-22-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-21-network"}},s={authorsImageUrls:[void 0]},l=[{value:"New tracing",id:"new-tracing",level:3},{value:"GHC RTS parametrization",id:"ghc-rts-parametrization",level:3},{value:"Open Sourcing",id:"open-sourcing",level:3},{value:"General",id:"general",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:l},d="wrapper";function p(e){let{components:n,...r}=e;return(0,a.kt)(d,(0,t.Z)({},u,r,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks."),(0,a.kt)("li",{parentName:"ul"},"Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.")),(0,a.kt)("h1",{id:"performance"},"Performance"),(0,a.kt)("h3",{id:"new-tracing"},"New tracing"),(0,a.kt)("p",null,"The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe\na slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use."),(0,a.kt)("h3",{id:"ghc-rts-parametrization"},"GHC RTS parametrization"),(0,a.kt)("p",null,"We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies\non different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use."),(0,a.kt)("h3",{id:"open-sourcing"},"Open Sourcing"),(0,a.kt)("p",null,"Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well\nas a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points\nfor users of the new system, depending on their wants and needs. "),(0,a.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,a.kt)("h3",{id:"general"},"General"),(0,a.kt)("p",null,"Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will\nincrease confidence in specific metrics."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis\nis patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b57687d8.ad244a62.js b/assets/js/b57687d8.ad244a62.js new file mode 100644 index 00000000000..3b2a85c8daa --- /dev/null +++ b/assets/js/b57687d8.ad244a62.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24651],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(n),m=r,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:r,o[1]=l;for(var u=2;u<i;u++)o[u]=n[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},17503:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const i={title:"Consensus Team Update",slug:"2023-05-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-31-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-31-consensus.md",source:"@site/blog/2023-05-31-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-05-31T00:00:00.000Z",formattedDate:"May 31, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.825,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-05-31-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-01-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-31-performance-and-tracing"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Support",id:"support",level:2}],p={toc:u},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/101"},"this issue"),"). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain."),(0,r.kt)("p",null,"On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano."),(0,r.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking ",(0,r.kt)("inlineCode",{parentName:"li"},"SOP")," classes like ",(0,r.kt)("inlineCode",{parentName:"li"},"HPure")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"HAp")," . In short, we implement generalised versions of important classes like ",(0,r.kt)("inlineCode",{parentName:"li"},"Applicative")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"Traversable"),".")),(0,r.kt)("h2",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim-0.1.0.2")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-api-0.1.0.2")," were released, which makes them now compatible with GHC up to ",(0,r.kt)("inlineCode",{parentName:"li"},"9.6"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus-0.7.0.0")," was released for ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node")," ",(0,r.kt)("inlineCode",{parentName:"li"},"8.1"),", including query serialization fixes for backwards compatibility.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b6145ff0.7ca20c32.js b/assets/js/b6145ff0.7ca20c32.js new file mode 100644 index 00000000000..f35a34f0ca4 --- /dev/null +++ b/assets/js/b6145ff0.7ca20c32.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[71843],{61785:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/59","page":59,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/58","nextPage":"/cardano-updates/page/60","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b65e5ec2.d8fca806.js b/assets/js/b65e5ec2.d8fca806.js new file mode 100644 index 00000000000..ce641f3dfb9 --- /dev/null +++ b/assets/js/b65e5ec2.d8fca806.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15715],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),s=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),u=s(n),d=r,h=u["".concat(l,".").concat(d)]||u[d]||p[d]||i;return n?a.createElement(h,o(o({ref:t},m),{},{components:n})):a.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:r,o[1]=c;for(var s=2;s<i;s++)o[s]=n[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},79198:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-09-07-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,c={permalink:"/cardano-updates/2023-09-07-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-07-performance-and-tracing.md",source:"@site/blog/2023-09-07-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-09-07T00:00:00.000Z",formattedDate:"September 7, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.3,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-09-07-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-07-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-09-06-consensus"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:s},u="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack."),(0,r.kt)("li",{parentName:"ul"},"Infrastructure: Various improvements of our analysis pipeline have been merged to ",(0,r.kt)("inlineCode",{parentName:"li"},"master"),", supporting safe log truncation."),(0,r.kt)("li",{parentName:"ul"},"Tracing: Namespace consistency checks have been merged to ",(0,r.kt)("inlineCode",{parentName:"li"},"master")," along with a curated configuration for benchmarking."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.")),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer. "),(0,r.kt)("p",null,"With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance. "),(0,r.kt)("p",null,"The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack."),(0,r.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,r.kt)("p",null,"As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation\noperation that keeps the interdependencies of block events intact. "),(0,r.kt)("p",null,"Truncation might happen at a slightly different point\nin time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time."),(0,r.kt)("h3",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"Consistency checking of namespace implementation and configuration when using the new system has been completed.\nThis feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," shows inconsistencies with the namespaces the system provides - and hence needs attention. "),(0,r.kt)("p",null,"Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many\ndetailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the\nfirst real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b6ef4fcb.68ecccd5.js b/assets/js/b6ef4fcb.68ecccd5.js new file mode 100644 index 00000000000..4c7bbba16bb --- /dev/null +++ b/assets/js/b6ef4fcb.68ecccd5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53516],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),s=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=s(a),u=n,m=h["".concat(d,".").concat(u)]||h[u]||c[u]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}u.displayName="MDXCreateElement"},33340:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-12-16-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-12-16-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-16-hydra.md",source:"@site/blog/2022-12-16-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-12-16T00:00:00.000Z",formattedDate:"December 16, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.27,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-12-16-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-28-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-15-mithril"}},d={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/benchmarks/transaction-cost/"},"the website")," and reduced the cost for commit transactions by ~30% with the help of reference scripts."),(0,n.kt)("p",null,"The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Kicked-off Hydra Voting project with Catalyst, CF, and IO Research."),(0,n.kt)("li",{parentName:"ul"},"Reduce commit transaction costs by ~30% with reference scripts."),(0,n.kt)("li",{parentName:"ul"},"Prepared an RFP for external audit of the Hydra Head solution."),(0,n.kt)("li",{parentName:"ul"},"Fixed transaction cost benchmarks for abort tx ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/631"},"#631"),"."),(0,n.kt)("li",{parentName:"ul"},"Recorded decision to use model-based testing (",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/adr/22/"},"ADR22"),") and improved Model ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/haddock/hydra-node/tests/Hydra-Model.html"},"documentation"),".",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Concluding the first increment on ","\u201c","Validate coordinated Head protocol","\u201d"," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/194"},"#194"),"."),(0,n.kt)("li",{parentName:"ul"},"Formulated next step / follow-up on testing the Soundness property of our protocol ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/656"},"#656"),"."))),(0,n.kt)("li",{parentName:"ul"},"Switched to using nix flakes for development setup and CI build ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/646"},"#646"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Push ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/7e532bd1c8a840a8155cf4b0858b982308dfc3f0/docs/adr/CloseTx-validity-bounds-and-deadline-calculation-DoS.md"},"ADR21")," & tx validity gap over the finish line (smoke tests missing)."),(0,n.kt)("li",{parentName:"ul"},"Integrate the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial"),"."),(0,n.kt)("li",{parentName:"ul"},"Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec."),(0,n.kt)("li",{parentName:"ul"},"Close & recap on the year with another monthly report (+ blog post).")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b78698d9.e2fd1721.js b/assets/js/b78698d9.e2fd1721.js new file mode 100644 index 00000000000..18a9e335e9b --- /dev/null +++ b/assets/js/b78698d9.e2fd1721.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[33288],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?o(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},o=Object.keys(t);for(n=0;n<o.length;n++)a=o[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)a=o[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,p=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),d=u(a),m=r,s=d["".concat(p,".").concat(m)]||d[m]||h[m]||o;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[d]="string"==typeof t?t:r,l[1]=i;for(var u=2;u<o;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},52949:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-01-25-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-01-25-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-25-node-cli-api.md",source:"@site/blog/2023-01-25-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-01-25T00:00:00.000Z",formattedDate:"January 25, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.585,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-01-25-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-25-consensus"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-20-crypto"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function h(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-01-25---2023-02-07"},"2023-01-25 - 2023-02-07"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli query stake-snapshot")," command. "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4853"},"Fix how changed files are selected in stylish-haskell CI check")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Copyright updates")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4848"},"Remove hlint from nix required CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4838"},"Remove reconfigure-hlint.sh script")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4837"},"Fix hlint warnings")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4833"},"Implement ADR-2: Restructure modules for generators")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4803"},"Stylish Haskell in CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4802"},"Revert skip doc in ci")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4800"},"Skip CI on doc only changes")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4792"},"Skip CI if only changes are documentation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4776"},"Build all of cardano-node in CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4766"},"Check cabal files in CI"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4785"},"Straight line error handling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4787"},"New NodeToClientVersionOf typeclass")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4832"},"Remove NoImplicitPrelude from cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4809"},"Add ReaderT of NodeToClientVersion to LocalStateQueryExpr")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4808"},"Use hoistMaybe")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4788"},"Better error message for query utxo without oops"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4805"},"New query stake-snapshot integration test")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4671"},"Make leadership-schedule test less flaky"))),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b7dd63dc.a0a6b412.js b/assets/js/b7dd63dc.a0a6b412.js new file mode 100644 index 00000000000..d46543303d5 --- /dev/null +++ b/assets/js/b7dd63dc.a0a6b412.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[11400],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),h=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=h(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=h(a),m=r,c=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(c,i(i({ref:t},u),{},{components:a})):n.createElement(c,i({ref:t},u))}));function c(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var h=2;h<o;h++)i[h]=a[h];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},51146:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>h});var n=a(87462),r=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-11-10-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-11-10-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-10-hydra.md",source:"@site/blog/2023-11-10-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-11-10T00:00:00.000Z",formattedDate:"November 10, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.65,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-11-10-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-11-14-node-cli-api"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-10-sre"}},p={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],u={toc:h},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,'The last two weeks, the Hydra team achieved several milestones. They published\nthe monthly report for October, providing updates on project developments. The\nteam delivered a presentation and workshop at the Cardano Summit, contributing\nto community engagement. They implemented a \\"dirt road\\" solution for the\n\\"Ignored init tx\\" notification and moved the ',(0,r.kt)("inlineCode",{parentName:"p"},"hydra-poll")," example project to a\ndedicated repository. Additionally, the team built a ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-chain-observer")," tool\nfor Hydra Heads, updated the toolchain to GHC 9.6.3, and made various\nimprovements to tooling and code formatting. They addressed specific issues,\nsuch as fixing the ",(0,r.kt)("inlineCode",{parentName:"p"},"gen-hydra-keys")," command and resolving concerns with the\nrewritten ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-tui"),". The team also enhanced the ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-cluster")," smoke test\nsuite by fetching network configurations dynamically. Lastly, they actively\nreviewed pull requests and architectural decision records from the community,\nincluding contributions from SundaeSwap. An experiment, the Hydra tally, was\ncompleted and successfully deployed to the mainnet by the Cardano Foundation."),(0,r.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Published the monthly ",(0,r.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-10"},"report for\noctober")),(0,r.kt)("li",{parentName:"ul"},"Given a presentation / workshop at the Cardano summit\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1109"},"#1109")),(0,r.kt)("li",{parentName:"ul"},'Dirt road implementation for \\"Ignored init tx\\" notification\n',(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/529"},"#529")," (without\nstateless observation)"),(0,r.kt)("li",{parentName:"ul"},"Completed and moved ",(0,r.kt)("inlineCode",{parentName:"li"},"hydra-poll")," example project into a\ndedicated\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-scaling/hydra-poll"},"repository")),(0,r.kt)("li",{parentName:"ul"},"Built a first version of a chain observation tool for Hydra Heads\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1096"},"#1096")),(0,r.kt)("li",{parentName:"ul"},"Switched toolchain to GHC 9.6.3 and various improvements on tooling\nand code formatting\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1135"},"#1135"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1152"},"#1152"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1151"},"#1151"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1154"},"#1154")),(0,r.kt)("li",{parentName:"ul"},"Fix ",(0,r.kt)("inlineCode",{parentName:"li"},"gen-hydra-keys")," command to not overwrite existing\nkeys ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1136"},"#1136")),(0,r.kt)("li",{parentName:"ul"},"Fixed the rewritten ",(0,r.kt)("inlineCode",{parentName:"li"},"hydra-tui"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1113"},"#1113"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1137"},"#1137")),(0,r.kt)("li",{parentName:"ul"},"Fetch network configurations instead of packaging them into\nhydra-cluster (smoke) test suite\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1156"},"#1156")),(0,r.kt)("li",{parentName:"ul"},"Reviewing PRs and ADRs from the community (SundaeSwap)\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1118"},"#1118"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1157"},"#1157")),(0,r.kt)("li",{parentName:"ul"},"Hydra tally experiment (Cardano Foundation) deployed to mainnet")),(0,r.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Tackle reported bugs"),(0,r.kt)("li",{parentName:"ul"},"Shepherd contributed off-line mode PR to the main codeline"),(0,r.kt)("li",{parentName:"ul"},"Improve chain observation tool to include more data and refactor\nexisting code towards more stateless observation"),(0,r.kt)("li",{parentName:"ul"},"Start work on incremental decommits")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b8465b4d.c76114e0.js b/assets/js/b8465b4d.c76114e0.js new file mode 100644 index 00000000000..c7818a9985a --- /dev/null +++ b/assets/js/b8465b4d.c76114e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[74933],{42005:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/37","page":37,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/36","nextPage":"/cardano-updates/page/38","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b88c8fa9.9fdee81f.js b/assets/js/b88c8fa9.9fdee81f.js new file mode 100644 index 00000000000..3f91c26d261 --- /dev/null +++ b/assets/js/b88c8fa9.9fdee81f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42190],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u<o;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},22750:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-12-14-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-12-14-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-node-cli-api.md",source:"@site/blog/2022-12-14-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.46,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-12-14-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2022-12-14-db-sync"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-12-14-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-12-14---2022-12-27"},"2022-12-14 - 2022-12-27"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped. "),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4703"},"Move style guide to wiki"))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4734"},"Cache secp256k1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4717"},"Use cabal-cache")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4699"},"build(deps): bump certifi from 2020.4.5.2 to 2022.12.7 in /doc/.sphinx")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4724"},"Update cabal.project"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4125"},"Add aarch64-darwin to nix-shell"))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4626"},"Improved error message for failed asset name decode")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4700"},"Remove cardano-cli address build-script"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4698"},"Move signing key reading to cardano-api"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4712"},"Only run chairman test on latest era")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4679"},"Add fix and test for ",(0,r.kt)("inlineCode",{parentName:"a"},"foldBlocks")))),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Copyright updates"))),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b8a3fbda.c9a4283c.js b/assets/js/b8a3fbda.c9a4283c.js new file mode 100644 index 00000000000..f85c1c7a539 --- /dev/null +++ b/assets/js/b8a3fbda.c9a4283c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7741],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),d=a,f=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return r?n.createElement(f,l(l({ref:t},s),{},{components:r})):n.createElement(f,l({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var c=2;c<o;c++)l[c]=r[c];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},68986:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-09-29-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-29-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-goedel.md",source:"@site/blog/2023-09-29-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.42,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-09-29-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-02-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-29-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is currently formalising mini protocols and testing the\nperformance analysis tool"),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"drafting processs calculus semantics of mini protocol programs")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"testing the new performance modelling tool")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"further work on specification of mini protocols")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"extension of mini protocol framework to support communication of\nprograms with local environments via synchronous channels"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b8bcf1d1.204838b0.js b/assets/js/b8bcf1d1.204838b0.js new file mode 100644 index 00000000000..da26591250f --- /dev/null +++ b/assets/js/b8bcf1d1.204838b0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73277],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),u=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(r),m=n,d=p["".concat(s,".").concat(m)]||p[m]||h[m]||i;return r?a.createElement(d,o(o({ref:t},c),{},{components:r})):a.createElement(d,o({ref:t},c))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=r[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},98981:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-02-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-03-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-crypto.md",source:"@site/blog/2023-02-03-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-02-03T00:00:00.000Z",formattedDate:"February 3, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:2.47,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-02-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-08-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-03-goedel"}},s={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"MuSig2",id:"musig2",level:3}],c={toc:u},p="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril. "),(0,n.kt)("li",{parentName:"ul"},"cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: using snockets and making things testable in IOSim "),(0,n.kt)("li",{parentName:"ul"},"MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/722"},"PR#722")),(0,n.kt)("li",{parentName:"ul"},"We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper."),(0,n.kt)("li",{parentName:"ul"},"We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381. "),(0,n.kt)("li",{parentName:"ul"},"The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner."),(0,n.kt)("li",{parentName:"ul"},"The update VRF ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#341")," is finally merged, and we are ready to merge ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/344"},"PR#344"),", which implements conversion functions from the compatible types between Praos and PraosBatchCompat.")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Use of snockets to send the data directly from the socket to secure memory. "),(0,n.kt)("li",{parentName:"ul"},"We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives"),(0,n.kt)("li",{parentName:"ul"},"Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("p",null,"The GitHub Action ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/fernandrone/linelint"},"linelint")," is used to check the files."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A new job for linting is added to the file ",(0,n.kt)("inlineCode",{parentName:"li"},"/.github/workflows/ci.yml"),". The rules are configured in the file ",(0,n.kt)("inlineCode",{parentName:"li"},"/.github/workflows/.linelint.yml"),". Some files from the configuration of ",(0,n.kt)("inlineCode",{parentName:"li"},"libsecp")," were failing, so in the rules in ",(0,n.kt)("inlineCode",{parentName:"li"},".linelint.yml")," the failing files are denoted to be ignored by the linter."),(0,n.kt)("li",{parentName:"ul"},"Folders are reorganized. We created a folder to handle the example. This folder includes the ",(0,n.kt)("inlineCode",{parentName:"li"},"examplemusig2.c"),", a distinct ",(0,n.kt)("inlineCode",{parentName:"li"},"config.h"),", and ",(0,n.kt)("inlineCode",{parentName:"li"},"helper.c"),". The example is enhanced by implementing the functions in the helper for the configuration given in ",(0,n.kt)("inlineCode",{parentName:"li"},"config.h"),". The number of messages is different than the tests. The example is made more generic to run with a loop.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b92c36fd.da51b229.js b/assets/js/b92c36fd.da51b229.js new file mode 100644 index 00000000000..808078e49f3 --- /dev/null +++ b/assets/js/b92c36fd.da51b229.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[52322],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=p(a),h=n,m=c["".concat(s,".").concat(h)]||c[h]||u[h]||o;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},84846:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-10-28-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-28-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-hydra.md",source:"@site/blog/2022-10-28-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.795,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-10-28-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-11-01-db-sync"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-10-28-network"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},c="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team completed several user experience improvements to the\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-tui")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node"),", and delivered a first version of persisted head\nstates by publishing release version\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},(0,n.kt)("inlineCode",{parentName:"a"},"0.8.0")),".\nBesides this, they met with researchers on topic of the HeadV1 specification and\nkicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the UX improvements on the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tui")),(0,n.kt)("li",{parentName:"ul"},"Released version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},(0,n.kt)("inlineCode",{parentName:"a"},"0.8.0")),", which delivers a first version of persisted head states"),(0,n.kt)("li",{parentName:"ul"},"Met with researchers on the HeadV1 specification"),(0,n.kt)("li",{parentName:"ul"},"Started work on the RFP for our external audit")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete ADR18 implementation and get it merged"),(0,n.kt)("li",{parentName:"ul"},"Start work on event-sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Have a first plutus script gap closed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/452"},"#452")),(0,n.kt)("li",{parentName:"ul"},"Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b96b3223.99af26b5.js b/assets/js/b96b3223.99af26b5.js new file mode 100644 index 00000000000..3896109cc57 --- /dev/null +++ b/assets/js/b96b3223.99af26b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[77411],{39478:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/crypto/page/3","page":3,"postsPerPage":5,"totalPages":4,"totalCount":18,"previousPage":"/cardano-updates/tags/crypto/page/2","nextPage":"/cardano-updates/tags/crypto/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/b9d87023.3ccfd671.js b/assets/js/b9d87023.3ccfd671.js new file mode 100644 index 00000000000..72145bbbd09 --- /dev/null +++ b/assets/js/b9d87023.3ccfd671.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95850],{95586:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/goedel/page/4","page":4,"postsPerPage":5,"totalPages":4,"totalCount":18,"previousPage":"/cardano-updates/tags/goedel/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ba0b6dbd.00ad8d78.js b/assets/js/ba0b6dbd.00ad8d78.js new file mode 100644 index 00000000000..9590ae14836 --- /dev/null +++ b/assets/js/ba0b6dbd.00ad8d78.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30126],{50065:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>s,contentTitle:()=>p,default:()=>d,frontMatter:()=>i,metadata:()=>u,toc:()=>l});var n=o(87462),a=(o(67294),o(3905)),r=o(22004);const i={title:"Network Team Update",slug:"2022-08-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},p=void 0,u={permalink:"/cardano-updates/2022-08-12-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-08-12-network.md",source:"@site/blog/2022-08-12-network.md",title:"Network Team Update",description:"The networking team took an active part in the project iteration (PI) planning",date:"2022-08-12T00:00:00.000Z",formattedDate:"August 12, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.88,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-08-12-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-08-31-consensus"}},s={authorsImageUrls:[void 0]},l=[],k={toc:l},h="wrapper";function d(t){let{components:e,...o}=t;return(0,a.kt)(h,(0,n.Z)({},k,o,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The networking team took an active part in the project iteration (PI) planning\nsession, see cardano-node ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/39"},"backlog")," for detailed\noutcomes."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We started working on a detailed design / implementation plan for gossip.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We merged ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3859"},"input-output-hk/ouroboros-network#3859")," which\nsets the ouroboros-network repository for the single relay release.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified a bug in the network simulator, which is fixed in the\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3852"},"input-output-hk/ouroboros-network#3852"),".\nThe above PR was reviewed.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We set the tracing configuration for nodes which we deploy and fixed and\nidentified some deployment hiccups. We identified some bugs in the RT view\nwhich were registered by the maintainers.\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network-ops/pull/4"},"input-output-hk/ouroboros-network-ops#4"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We fixed typos in network-mux library:\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3921"},"input-output-hk/ouroboros-network#3921"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"For easy of debugging we renamed a trace point:\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3922"},"input-output-hk/ouroboros-network#3922"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Duncan iterated on his simulation / visualisation. He also was able to\nidentify and fix a bug in the simulator. The simulation contains 50 nodes.\nDashed lines indicate and established connection, while solid lines indicate\na TCP connection with fully open TCP window."))),(0,a.kt)(r.Z,{playing:!0,controls:!0,url:"/p2p-relay3.mp4",mdxType:"ReactPlayer"}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/baed1590.d9d74d98.js b/assets/js/baed1590.d9d74d98.js new file mode 100644 index 00000000000..bc880a8e6f5 --- /dev/null +++ b/assets/js/baed1590.d9d74d98.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[12812],{44187:a=>{a.exports=JSON.parse('{"label":"ledger","permalink":"/cardano-updates/tags/ledger","allTagsPath":"/cardano-updates/tags","count":30}')}}]); \ No newline at end of file diff --git a/assets/js/bb44f9e3.0939305b.js b/assets/js/bb44f9e3.0939305b.js new file mode 100644 index 00000000000..71bfd9fd59d --- /dev/null +++ b/assets/js/bb44f9e3.0939305b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45943],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>c});var i=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,a=function(e,t){if(null==e)return{};var r,i,a={},n=Object.keys(e);for(i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i<n.length;i++)r=n[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),d=a,c=h["".concat(s,".").concat(d)]||h[d]||m[d]||n;return r?i.createElement(c,o(o({ref:t},u),{},{components:r})):i.createElement(c,o({ref:t},u))}));function c(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<n;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}d.displayName="MDXCreateElement"},90805:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>p});var i=r(87462),a=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-09-07-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-07-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-07-mithril.md",source:"@site/blog/2023-09-07-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-09-07T00:00:00.000Z",formattedDate:"September 7, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.53,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-09-07-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-08-hydra"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-07-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team has released a new distribution ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2335.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2335.0"))," which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information."),(0,a.kt)("p",null,"They have also worked on snapshots enhancements: implementation of the ",(0,a.kt)("inlineCode",{parentName:"p"},"zstandard")," compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes."),(0,a.kt)("p",null,"Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Use 'zstandard' compression for snapshot archives")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/876"},"#876")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design & implement stress test tool for aggregator - phase 2")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1155"},"#1155")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Provide progress information with '--json' option in Client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1095"},"#1095")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Make client download and extract the archive simultaneously")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1115"},"#1115")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add aggregator Cardano node version in snapshot artifact")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/948"},"#948")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Make Cardano node version part of the Mithril network configuration")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/947"},"#947")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Post deployment 'mainnet' infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1091"},"#1091")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Errors refactoring")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/798"},"#798")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add Cloudflare protection of infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/986"},"#986")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Failed to restore recent snapshot with strange error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1160"},"#1160")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update 'ed25519-dalek' to '2.0.0'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1188"},"#1188")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add target networks blocks in release notes")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1151"},"#1151")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Fix end to end 'wait_for_the_expected_time' test")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1191"},"#1191")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Fix docs 'git checkout' command")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1174"},"#1174"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bb465a37.a85dd0e6.js b/assets/js/bb465a37.a85dd0e6.js new file mode 100644 index 00000000000..358ca0e55cd --- /dev/null +++ b/assets/js/bb465a37.a85dd0e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6246],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>b});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),p=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(i.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,i=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(r),m=n,b=d["".concat(i,".").concat(m)]||d[m]||c[m]||l;return r?a.createElement(b,o(o({ref:t},u),{},{components:r})):a.createElement(b,o({ref:t},u))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[d]="string"==typeof e?e:n,o[1]=s;for(var p=2;p<l;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},12332:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>s,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"Node Release Team Update",slug:"2023-01-13-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2023-01-13-release",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-release.md",source:"@site/blog/2023-01-13-release.md",title:"Node Release Team Update",description:"Node Reelease Update",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:.64,hasTruncateMarker:!1,authors:[{name:"Samuel Leathers",title:"Service Reliability Manager",url:"https://github.com/disassembler",imageURL:"https://github.com/disassembler.png",key:"disassembler"}],frontMatter:{title:"Node Release Team Update",slug:"2023-01-13-release",authors:"disassembler",tags:["release"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-13-hydra"},nextItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-01-13-system-test"}},i={authorsImageUrls:[void 0]},p=[{value:"Node Reelease Update",id:"node-reelease-update",level:2},{value:"2022-11-02 - 2023-01-13",id:"2022-11-02---2023-01-13",level:2},{value:"Executive Summary",id:"executive-summary",level:3},{value:"Completed",id:"completed",level:3},{value:"In Progress",id:"in-progress",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"node-reelease-update"},"Node Reelease Update"),(0,n.kt)("h2",{id:"2022-11-02---2023-01-13"},"2022-11-02 - 2023-01-13"),(0,n.kt)("h3",{id:"executive-summary"},"Executive Summary"),(0,n.kt)("p",null,"A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on\n",(0,n.kt)("inlineCode",{parentName:"p"},"release/1.35")," branch and does not bump cardano-ledger."),(0,n.kt)("p",null,"The team successfully integrated an interim release bump of ledger and consensus into cardano-node master.\nThis work will not be released in a node version, but will be continued by the current dependency bump in progress."),(0,n.kt)("p",null,"We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again."),(0,n.kt)("p",null,"The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress."),(0,n.kt)("h3",{id:"completed"},"Completed"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/1.35.4"},"Release 1.35.4"))),(0,n.kt)("h3",{id:"in-progress"},"In Progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/commits/release/1.35"},"Release 1.35.5")),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.5_rc1/src_docs/source/test_results/node/tag_1_35_5_rc1.rst"},"Test Status"))))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bbc31819.a65c3848.js b/assets/js/bbc31819.a65c3848.js new file mode 100644 index 00000000000..d74897d7ab5 --- /dev/null +++ b/assets/js/bbc31819.a65c3848.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67330],{21765:a=>{a.exports=JSON.parse('{"label":"cli-api-quarterly","permalink":"/cardano-updates/quarterly/tags/cli-api-quarterly","allTagsPath":"/cardano-updates/quarterly/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/bbe7c3bd.224be55a.js b/assets/js/bbe7c3bd.224be55a.js new file mode 100644 index 00000000000..58bc7814af4 --- /dev/null +++ b/assets/js/bbe7c3bd.224be55a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24379],{38715:a=>{a.exports=JSON.parse('{"label":"mithril","permalink":"/cardano-updates/tags/mithril","allTagsPath":"/cardano-updates/tags","count":34}')}}]); \ No newline at end of file diff --git a/assets/js/bc6b65d9.f1413473.js b/assets/js/bc6b65d9.f1413473.js new file mode 100644 index 00000000000..534119c7ac3 --- /dev/null +++ b/assets/js/bc6b65d9.f1413473.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40160],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function p(e,t){if(null==e)return{};var o,n,r=function(e,t){if(null==e)return{};var o,n,r={},a=Object.keys(e);for(n=0;n<a.length;n++)o=a[n],t.indexOf(o)>=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)o=a[n],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),l=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),h=l(o),d=r,m=h["".concat(s,".").concat(d)]||h[d]||c[d]||a;return o?n.createElement(m,i(i({ref:t},u),{},{components:o})):n.createElement(m,i({ref:t},u))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=d;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[h]="string"==typeof e?e:r,i[1]=p;for(var l=2;l<a;l++)i[l]=o[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,o)}d.displayName="MDXCreateElement"},45335:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>p,toc:()=>l});var n=o(87462),r=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-03-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-03-02-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-02-network.md",source:"@site/blog/2023-03-02-network.md",title:"Network Team Update",description:"High level summary",date:"2023-03-02T00:00:00.000Z",formattedDate:"March 2, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.85,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-03-02-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-03-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-24-hydra"}},s={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed work log",id:"detailed-work-log",level:2}],u={toc:l},h="wrapper";function c(e){let{components:t,...o}=e;return(0,r.kt)(h,(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"In the current sprint the networking team focused on fixing bugs and pushing\nforward implementation of eclipse evasion. We also found a bug in our\nsimulation testing setup (in integration of test node). We also overviewed the\nwork on extending handshake protocol which is delivered by Galois Inc."),(0,r.kt)("p",null,"We published ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.4.0.1")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network-protocols-0.3.0.0")," to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/147"},"CHaP"),"."),(0,r.kt)("p",null,"We also fixed a bug in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," which results in not being able to\nconfigure inbound connection limits, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"PR #4902"),"."),(0,r.kt)("p",null,"Together with Karl Knutsson (CF) we realised an issue in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli"),": it's\nvalidation of DNS names, IP address & ports when registering a stake pool\nshould be more strict to protect against common mistakes which we identified on\nthe chain. See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/issues/4929"},"issue #4929"),"."),(0,r.kt)("h2",{id:"detailed-work-log"},"Detailed work log"),(0,r.kt)("p",null,"In ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," we fixed two bugs in peer state actions. First one results in\na busy loop if demotion from hot to warm times outs. This busy loop is\neventually exited when mux exits (we reported this in our previous report).\nThis fix made it to ",(0,r.kt)("inlineCode",{parentName:"p"},"1.35.6")," release as well."),(0,r.kt)("p",null,"In addition the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," also fixes another bug which results in ",(0,r.kt)("inlineCode",{parentName:"p"},"hot -> warm\n-> hot")," demotion / promotion busy loop."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," also fixed a bug in a node only used in simulation which\nresulted in not using ",(0,r.kt)("inlineCode",{parentName:"p"},"chain-sync")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"block-fetch")," mini-protocols. In the\nreview process, we realised that the header-body split in the simulated node\nrequires further work (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4419"},"PR #4419"),", which is under review)."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4385"},"PR #4385")," also extend our generators, which together with the above fix,\ncover the ",(0,r.kt)("inlineCode",{parentName:"p"},"hot -> warm -> hot")," demotion / promotion busy loop."),(0,r.kt)("p",null,"In ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4419"},"PR #4419")," we introduce a ",(0,r.kt)("inlineCode",{parentName:"p"},"ChainDB")," for our simulation node, which plays\nsimilar role to ",(0,r.kt)("inlineCode",{parentName:"p"},"ChainDB")," in the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),": a persistent (across\nsimulated restarts) store of blocks which does chain selection. This ensures\nthat the simulated node is using ",(0,r.kt)("inlineCode",{parentName:"p"},"block-fetch")," to download blocks announced by\n",(0,r.kt)("inlineCode",{parentName:"p"},"chain-sync")," mini-protocol."),(0,r.kt)("p",null,"We also made progress with reviewing ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"PR #4019")," - peer sharing."),(0,r.kt)("p",null,"We also fixed ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4370"},"issue #4370")," - a connection manager test failure, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4384"},"PR #4384"),"."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bccb35b7.5dbc8a59.js b/assets/js/bccb35b7.5dbc8a59.js new file mode 100644 index 00000000000..5d4d607cf79 --- /dev/null +++ b/assets/js/bccb35b7.5dbc8a59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94759],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>k});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),c=u(r),d=o,k=c["".concat(p,".").concat(d)]||c[d]||m[d]||a;return r?n.createElement(k,l(l({ref:t},s),{},{components:r})):n.createElement(k,l({ref:t},s))}));function k(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[c]="string"==typeof e?e:o,l[1]=i;for(var u=2;u<a;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},19604:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var n=r(87462),o=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-05-26-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-26-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-network.md",source:"@site/blog/2023-05-26-network.md",title:"Network Team Update",description:"High level summary",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.515,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-05-26-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-05-26-ledger"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-24-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed summary",id:"detailed-summary",level:2}],s={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"We continued working on ",(0,o.kt)("inlineCode",{parentName:"p"},"eclipse-evasion"),". We also analysed and fixed a bug\nwhen using DNS names in local root peers. We continued working on engineering\nblog post about P2P. We released a new version of packages for\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node-8.1.0")," release."),(0,o.kt)("p",null,"We improved our CI, removed obsolete scripts add extra validation which checks\nif ",(0,o.kt)("inlineCode",{parentName:"p"},"CHANGELOG.md")," files were updated."),(0,o.kt)("p",null,"We also improved release scripts."),(0,o.kt)("h2",{id:"detailed-summary"},"Detailed summary"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Eclipse evasion: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"#4462")),(0,o.kt)("li",{parentName:"ul"},"Local root peers bug fix: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4559"},"#4559")),(0,o.kt)("li",{parentName:"ul"},"Release to CHaP: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4573"},"#4573")),(0,o.kt)("li",{parentName:"ul"},"CI improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4572"},"#4572")),(0,o.kt)("li",{parentName:"ul"},"Release script improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4573"},"#4573"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bcf46d9c.dc0dfba9.js b/assets/js/bcf46d9c.dc0dfba9.js new file mode 100644 index 00000000000..5a94417a2be --- /dev/null +++ b/assets/js/bcf46d9c.dc0dfba9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31617],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),h=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=h(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=h(a),c=n,m=s["".concat(p,".").concat(c)]||s[c]||d[c]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var h=2;h<i;h++)o[h]=a[h];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},48880:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>h});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-01-20-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-20-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-hydra.md",source:"@site/blog/2023-01-20-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.13,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-01-20-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-01-20-crypto"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-01-20-network"}},p={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:h},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1\nspecification. Of which a first version has been aggregated and is currently\nunder review. They aligned the on-chain scripts of reimbursing funds on abort\nlike defined in the specification, improved the mutation test framework to have\nmore control when testing plutus scripts. The added HeadId in the API and the\nTUI example client make ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," easier to use and a first experiment of a\nHydra Head explorer was showing the utility of this - see what Heads exist on\nthe ",(0,n.kt)("inlineCode",{parentName:"p"},"preview")," network ",(0,n.kt)("a",{parentName:"p",href:"http://explorer.hydra.family"},"here"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"HeadId to API and display in the TUI ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/678"},"#678")),(0,n.kt)("li",{parentName:"ul"},"Experiment of creating a hydra explorer, first result hosted ",(0,n.kt)("a",{parentName:"li",href:"http://explorer.hydra.family"},"here")),(0,n.kt)("li",{parentName:"ul"},"Improved mutation framework allowing to fail for the right reason ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/679"},"#679")),(0,n.kt)("li",{parentName:"ul"},"Correctly reimburse funds in abort (matching the spec) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/670"},"#670")),(0,n.kt)("li",{parentName:"ul"},"Finished a first write-up of the Hydra HeadV1 spec: ",(0,n.kt)("a",{parentName:"li",href:"https://www.overleaf.com/read/bbqzmptcxryj"},"Read it on overleaf")," (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/blob/master/SUPPORT.md"},"Communication channels")," for feedback)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting with a broader audience"),(0,n.kt)("li",{parentName:"ul"},"Groom & plan actions required for a maintainable Head explorer"),(0,n.kt)("li",{parentName:"ul"},"Break \u201calign gaps\u201d feature into smaller chunks (at least on- /off-chain) and groom it"),(0,n.kt)("li",{parentName:"ul"},"Review the spec & discuss individual aborts with researchers (a bigger open question)")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bd65afd9.b89ce463.js b/assets/js/bd65afd9.b89ce463.js new file mode 100644 index 00000000000..140da21728b --- /dev/null +++ b/assets/js/bd65afd9.b89ce463.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36160],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),m=s(n),p=a,h=m["".concat(l,".").concat(p)]||m[p]||d[p]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},25362:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-07-12-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-07-12-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-12-performance-and-tracing.md",source:"@site/blog/2023-07-12-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-07-12T00:00:00.000Z",formattedDate:"July 12, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.29,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-07-12-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-12-consensus"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-07-07-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:s},m="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Optimization of the new tracing system is ongoing and yielding good performance results."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"Our analysis of the GHC9 build of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation. "),(0,a.kt)("p",null,"In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),". This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run. "),(0,a.kt)("p",null,"Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bda3e1c7.8c9d07fa.js b/assets/js/bda3e1c7.8c9d07fa.js new file mode 100644 index 00000000000..a8b11b74eb3 --- /dev/null +++ b/assets/js/bda3e1c7.8c9d07fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27335],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u<o;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},19203:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-02-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-02-08-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-node-cli-api.md",source:"@site/blog/2023-02-08-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-02-08T00:00:00.000Z",formattedDate:"February 8, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.095,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-02-08-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-08-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-08-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-02-08---2023-02-21"},"2023-02-08 - 2023-02-21"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"More maintenance and resolving raised issues."),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4889"},"Remove use of multiline literals")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4775"},"Markdown links CI check")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4755"},"Date ranges for copyright"))),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4894"},"Re-add support for decoding GenesisExtendedKey text envelope")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4885"},"Disallow empty cost model for create update proposal")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4815"},"Refactor code using onLeft and onNothing"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4876"},"Simplify SerialiseAsRawBytes type class"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))),(0,r.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bdc4c1ed.c2a461dc.js b/assets/js/bdc4c1ed.c2a461dc.js new file mode 100644 index 00000000000..77001b23080 --- /dev/null +++ b/assets/js/bdc4c1ed.c2a461dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[76581],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=u(a),d=n,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||i;return a?r.createElement(c,o(o({ref:t},s),{},{components:a})):r.createElement(c,o({ref:t},s))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},29598:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-06-09-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-09-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-09-hydra.md",source:"@site/blog/2023-06-09-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-09T00:00:00.000Z",formattedDate:"June 9, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.18,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-09-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Developer Experience Update",permalink:"/cardano-updates/2023-06-09-developer-experience"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-06-08-db-sync"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team worked on multiple fronts. They finished the\ninvestigation about the broken head on mainnet and re-opened their persistent\nhead instance. The team also fixed the monthly report publication on their\nwebsite and started sketching ideas and further improvements. Also, they are on\nthe last mile to deliver a new feature which will allow parties to commit funds\nfrom extern wallets. Finally the team started to work on optimizing the\nperformance on their benchmarks."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Finished investigation on broken head on mainnet ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/897"},"#897")," and re-opened it."),(0,n.kt)("li",{parentName:"ul"},"Added support for externally committing regular utxo ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/887"},"#887")),(0,n.kt)("li",{parentName:"ul"},"Fix monthly report publication on docs website and published the ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-05"},"monthly report"),". Odd problems when publishing monthly report:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Make us think about if we should change something about the website ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/908"},"#908")),(0,n.kt)("li",{parentName:"ul"},"Open issue to docusaurus ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/facebook/docusaurus/issues/9036"},"#9036")))),(0,n.kt)("li",{parentName:"ul"},"Fixed a bug in the benchmark process ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/910"},"#910")),(0,n.kt)("li",{parentName:"ul"},"Explored performance of the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node"),"{.verbatim} and identified a\nbottleneck."),(0,n.kt)("li",{parentName:"ul"},"Timed transaction feature is being used by the auction project \ud83c\udf89 ")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete performance analysis and start/plan improvements and provide\nregular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186")),(0,n.kt)("li",{parentName:"ul"},"Add hydra as tool to developer platform ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/872"},"#872"),"."),(0,n.kt)("li",{parentName:"ul"},"Authenticate network messages ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"#727"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete journey for external commits using multiple script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"Start implementing ",(0,n.kt)("em",{parentName:"li"},"Option B")," for external commits ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/be16a434.031b2037.js b/assets/js/be16a434.031b2037.js new file mode 100644 index 00000000000..4e9ae7b0fb9 --- /dev/null +++ b/assets/js/be16a434.031b2037.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83247],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>g});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),s=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},p=function(e){var n=s(e.components);return r.createElement(c.Provider,{value:n},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=s(t),d=a,g=m["".concat(c,".").concat(d)]||m[d]||u[d]||o;return t?r.createElement(g,i(i({ref:n},p),{},{components:t})):r.createElement(g,i({ref:n},p))}));function g(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=d;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=t[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,t)}d.displayName="MDXCreateElement"},85869:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=t(87462),a=(t(67294),t(3905));const o={title:"Performance & tracing update",slug:"2023-08-24-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-24-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-24-performance-and-tracing.md",source:"@site/blog/2023-08-24-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-08-24T00:00:00.000Z",formattedDate:"August 24, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-08-24-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-25-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-23-consensus"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],p={toc:s},m="wrapper";function u(e){let{components:n,...t}=e;return(0,a.kt)(m,(0,r.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: Benchmarking node version ",(0,a.kt)("inlineCode",{parentName:"li"},"8.2.1")," has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Our analysis pipeline has received improvements reducing memory footprint."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"We've performed and analysed the benchmarks for the ",(0,a.kt)("inlineCode",{parentName:"p"},"8.2.1")," version of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," as part of our release benchmarking cycle. "),(0,a.kt)("p",null,"Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held\nin memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The next portion of optimizations has been completed and merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", getting rid of Haskell's native ",(0,a.kt)("inlineCode",{parentName:"p"},"String")," representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),". "),(0,a.kt)("p",null,"The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster\nand porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/be1e6782.4ec13c11.js b/assets/js/be1e6782.4ec13c11.js new file mode 100644 index 00000000000..ed8e0f2e906 --- /dev/null +++ b/assets/js/be1e6782.4ec13c11.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25469],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>k});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function p(e,t){if(null==e)return{};var o,n,r=function(e,t){if(null==e)return{};var o,n,r={},a=Object.keys(e);for(n=0;n<a.length;n++)o=a[n],t.indexOf(o)>=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)o=a[n],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),l=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),m=l(o),c=r,k=m["".concat(s,".").concat(c)]||m[c]||h[c]||a;return o?n.createElement(k,i(i({ref:t},u),{},{components:o})):n.createElement(k,i({ref:t},u))}));function k(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=c;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[m]="string"==typeof e?e:r,i[1]=p;for(var l=2;l<a;l++)i[l]=o[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,o)}c.displayName="MDXCreateElement"},12306:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>p,toc:()=>l});var n=o(87462),r=(o(67294),o(3905));const a={title:"Network Q2 2023 Update",slug:"2023-Q2-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/quarterly/2023-Q2-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-network.md",source:"@site/quarterly/2023-Q2-network.md",title:"Network Q2 2023 Update",description:"2023-04 - 2023-06",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:5.145,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Q2 2023 Update",slug:"2023-Q2-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-consensus"},nextItem:{title:"SRE Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-sre"}},s={authorsImageUrls:[void 0]},l=[{value:"2023-04 - 2023-06",id:"2023-04---2023-06",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Eclipse Evasion",id:"eclipse-evasion",level:4},{value:"Ecosystem P2P Deployment Progress",id:"ecosystem-p2p-deployment-progress",level:4},{value:"Peer Sharing",id:"peer-sharing",level:4},{value:"Diffusion (P2P)",id:"diffusion-p2p",level:4},{value:"Other Improvements & Developments",id:"other-improvements--developments",level:3},{value:"CDDL",id:"cddl",level:4},{value:"Cardano Ping",id:"cardano-ping",level:4},{value:"IOSim",id:"iosim",level:4},{value:"Typed Protocols",id:"typed-protocols",level:4},{value:"Cardano Client",id:"cardano-client",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"CI improvements",id:"ci-improvements",level:4},{value:"GHC 9.4 & 9.6",id:"ghc-94--96",level:4},{value:"Next steps",id:"next-steps",level:3}],u={toc:l},m="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-04---2023-06"},"2023-04 - 2023-06"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,r.kt)("p",null,"We finalised the design of eclipse evasion and implemented its mechanism which\nrelays on connectivity to ",(0,r.kt)("em",{parentName:"p"},"big ledger peers"),". ",(0,r.kt)("em",{parentName:"p"},"Big ledger peers")," are the\nlargest ledger peers which accumulate 90% of stake (currently there are less\nthan 1000 of them). The outbound governor has new targets for ",(0,r.kt)("em",{parentName:"p"},"known"),",\n",(0,r.kt)("em",{parentName:"p"},"established")," and ",(0,r.kt)("em",{parentName:"p"},"active")," big ledger peers which work in a similar way that\nsuch targets work for ledger peers. The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4662"},"ouroboros-network#4662")," PR is\ncurrently in review."),(0,r.kt)("p",null,"As part of this work we also identified a bug which would prevent a node to\nconnect to itself. Such connections are not easily detectable and are expected\nto be dropped by the churn mechanism, nonetheless they should not be buggy.\nThe failure was discovered thanks to our e2e simulation of diffusion using\n",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim")," & property based testing."),(0,r.kt)("p",null,"The PR also refactors the heart of the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," interface reducing\ntechnical debt that would otherwise accumulate."),(0,r.kt)("p",null,"We also identified a possible improvement in the churn mechanism, which will be\nimplemented in Q3. Churn needs to await for peers to terminate, we can\nimprove the synchronisation. ","[ouroboros-network#4617]"),(0,r.kt)("h4",{id:"ecosystem-p2p-deployment-progress"},"Ecosystem P2P Deployment Progress"),(0,r.kt)("p",null,"We reached ",(0,r.kt)("strong",{parentName:"p"},"50% of stake in hands of SPOs who run at least on P2P relay"),". Now\nalso Emurgo and CF are running some P2P relays. Also 20% of IOG relays are\nrunning in P2P mode."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"P2P Progress",src:o(62597).Z,width:"1024",height:"768"})),(0,r.kt)("h4",{id:"peer-sharing"},"Peer Sharing"),(0,r.kt)("p",null,"We implemented ",(0,r.kt)("em",{parentName:"p"},"bootstrapping for peer sharing")," (also known as light peer\nsharing). New downstream (inbound) peers are now added to the ",(0,r.kt)("em",{parentName:"p"},"known peers")," of\nthe ",(0,r.kt)("em",{parentName:"p"},"outbound governor"),". Together with peer sharing this allows for non\nregistered relays to propagate through the network. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3596"},"ouroboros-network#3596")),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Please note that peer sharing is disabled by default and is not considered safe\nuntil Bootstrap Peers (see below) or Genesis is implemented.")),(0,r.kt)("h4",{id:"diffusion-p2p"},"Diffusion (P2P)"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We designed a feature which will reduce the load on IOG relays (in future\nalso run by CF & Emurgo). The feature consists of two parts. A new source\nof peers called ",(0,r.kt)("em",{parentName:"p"},"bootstrap peers")," (obtained from via an https request), the\nability to switch from bootstrap peers to ledger peers if the node is synced\n(we are collaborating with the consensus team on the interface ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/blob/fbb8c8ee97517809dec0d0c8ae3fae9b8d272caf/docs/website/docs/bootstrap-peers-IER.md"},"Bootstrap\nPeers IER"),"). This feature will be completed in Q3.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4530"},"ouroboros-network#4530"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We published a blog post about ",(0,r.kt)("a",{parentName:"p",href:"https://engineering.iog.io/2023-06-28-p2p"},"P2P design & implementation"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4559"},"ouroboros-network#4559"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We merged changes which allow the consensus layer to start / stop block\nforging thread. This will allow to deploy P2P block producing nodes which\nserve as a live backup node. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/140"},"ouroboros-consensus#140"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed a few bugs in local root peers DNS resolution service:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4583"},"ouroboros-network#4583"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4571"},"ouroboros-network#4571"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We limited concurrency of DNS name resolutions: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4596"},"ouroboros-network#4596"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Galois Inc implemented query option for Handshake: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"ouroboros-network#4256"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed handshake query timeout: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4608"},"ouroboros-network#4608"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented warm valency for local root peers. This can help when using\nDNS names in local root peers which resolve to many IP addresses. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4575"},"ouroboros-network#4575"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We merged handshake changes which allow query protocol versions. Thanks to\nJames Parker from Galois Inc.: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"ouroboros-network#4256"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30/"},"cardano-cli#30"),"."))),(0,r.kt)("h3",{id:"other-improvements--developments"},"Other Improvements & Developments"),(0,r.kt)("h4",{id:"cddl"},"CDDL"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We added ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-node")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," CDDL specs / tests for encoding\nof ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionData")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToClientVersionData"),". ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We clarified an inconsistency between CDDL spec and implementation which is\nhighly polymorphic. We designed and implemented a fix for ",(0,r.kt)("inlineCode",{parentName:"p"},"tx-submission"),"\nand ",(0,r.kt)("inlineCode",{parentName:"p"},"local-tx-submission")," mini-protocols. Specs for other mini-protocols will\nbe improved at a later stage. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4580"},"ouroboros-network#4580")))),(0,r.kt)("h4",{id:"cardano-ping"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/ouroboros-network/blob/master/cardano-ping"},"Cardano Ping")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"cardano-ping")," command was deprecated in favour of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," (the\ntransition was done by the ",(0,r.kt)("inlineCode",{parentName:"p"},"node")," team).")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Support for ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol using Unix sockets.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4601"},"ouroboros-network#4601"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Support for ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToNodeV_11")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeToClientV_16"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4587"},"ouroboros-network#4587"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," is now using ",(0,r.kt)("em",{parentName:"p"},"ISO8601")," format for timestamps. Formatting of\nmessages was improved. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4593"},"ouroboros-network#4593"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli ping")," has a new ",(0,r.kt)("inlineCode",{parentName:"p"},"--query-versions")," flag which allows to query\nsupported versions by the remote node. This is supported by\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-8.1.0"),". ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4589"},"ouroboros-network#4589"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"cardano-node#5313"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30/"},"cardano-cli#30")))),(0,r.kt)("h4",{id:"iosim"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/io-sim"},"IOSim")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed timeouts & delays in ",(0,r.kt)("inlineCode",{parentName:"p"},"io-classes")," in a series of PRs: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/81"},"io-sim#81"),",\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/82"},"io-sim#82"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/86"},"io-sim#86"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/87"},"io-sim#87"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We released ",(0,r.kt)("inlineCode",{parentName:"p"},"strict-stm-1.1.0.1")," on Hackage which fixed a bug in package\ndescription file: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/101"},"io-sim#101"),"."))),(0,r.kt)("h4",{id:"typed-protocols"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/typed-protocols"},"Typed Protocols")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We published haddocks of ",(0,r.kt)("inlineCode",{parentName:"li"},"typed-protocols")," at\n",(0,r.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/typed-protocols"},"https://input-output-hk.github.io/typed-protocols"))),(0,r.kt)("h4",{id:"cardano-client"},(0,r.kt)("a",{parentName:"h4",href:"https://github.com/input-output-hk/ouroboros-network/blob/master/cardano-client"},"Cardano Client")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We fixed a bug in ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-client-0.1.0.2")," release which results in clients\n(e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"db-sync"),") negotiate an experimental protocol version.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"After the split between consensus & network, we made ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-client"),"\nindependent of ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-diffusion"),": ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4526"},"ouroboros-network#4526"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We wrap all exceptions in ",(0,r.kt)("inlineCode",{parentName:"p"},"DiffusionError"),": ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4537"},"ouroboros-network#4537"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5356"},"cardano-node#5356"),"."))),(0,r.kt)("h4",{id:"ci-improvements"},"CI improvements"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We switched to use GitHub merge queues in ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols")," repositories; ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/30"},"typed-protocols#30"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4546"},"ouroboros-network#4546"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We cleaned & updated scripts which run on CI.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented a script to verify & release packages on CHaP; ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4542"},"ouroboros-network#4542"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4573"},"ouroboros-network#4573"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We implemented a new CI script and cleaned existing ones:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4572"},"ouroboros-network#4572"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We don't install cryptographic libraries on CI anymore as none of our\npackages requires them; ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4539"},"ouroboros-network#4539"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Improved caching of dependencies: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4553"},"ouroboros-network#4553"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We made it possible to trigger building haddock manually:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4549"},"ouroboros-network#4549"),"."))),(0,r.kt)("h4",{id:"ghc-94--96"},"GHC 9.4 & 9.6"),(0,r.kt)("p",null,"We made all repositories under our control compile with ",(0,r.kt)("inlineCode",{parentName:"p"},"ghc-9.4")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"ghc-9.6"),"\nwhich includes ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"typed-protocols")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"Win32-network"),"."),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("p",null,"We will continue towards our ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/39/views/30"},"aspirational roadmap"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We will continue reviewing eclipse evasion."),(0,r.kt)("li",{parentName:"ul"},"As ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/140"},"ouroboros-consensus#140")," was merged, we are making progress towards\nreleasing P2P on block production nodes. We hope to analyse performance\nregression on such nodes observed on the benchmarking cluster. ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/orgs/input-output-hk/projects/39/views/30?pane=issue&itemId=6875505"},"roadmap-3887")),(0,r.kt)("li",{parentName:"ul"},"We are also focused on ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/orgs/input-output-hk/projects/39/views/30?pane=issue&itemId=8920085"},"roadmap-3969"),". Note that it was expanded in Q2.")))}h.isMDXComponent=!0},62597:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/2023-07-06-p2p-progress-194a909569eebb016b1f24fb8941e2cc.png"}}]); \ No newline at end of file diff --git a/assets/js/be26e761.724d58c0.js b/assets/js/be26e761.724d58c0.js new file mode 100644 index 00000000000..f144fd9e576 --- /dev/null +++ b/assets/js/be26e761.724d58c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86095],{20510:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/38","page":38,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/37","nextPage":"/cardano-updates/page/39","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/be32a6ec.24f1e527.js b/assets/js/be32a6ec.24f1e527.js new file mode 100644 index 00000000000..deb76e5f66e --- /dev/null +++ b/assets/js/be32a6ec.24f1e527.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15224],{27775:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/bf071e0b.76b7ab70.js b/assets/js/bf071e0b.76b7ab70.js new file mode 100644 index 00000000000..3e837dbf614 --- /dev/null +++ b/assets/js/bf071e0b.76b7ab70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67787],{36898:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/40","page":40,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/39","nextPage":"/cardano-updates/page/41","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/c0354ce6.09b0b808.js b/assets/js/c0354ce6.09b0b808.js new file mode 100644 index 00000000000..780bfc357e0 --- /dev/null +++ b/assets/js/c0354ce6.09b0b808.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36881],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(a),c=r,m=h["".concat(s,".").concat(c)]||h[c]||d[c]||i;return a?n.createElement(m,o(o({ref:t},u),{},{components:a})):n.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:r,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},50633:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-11-24-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-24-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-24-hydra.md",source:"@site/blog/2023-11-24-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-11-24T00:00:00.000Z",formattedDate:"November 24, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.12,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-11-24-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-29-mithril"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-11-24-sre"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],u={toc:p},h="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(h,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"This week, the Hydra team spent significant time opening a head among\nthemselves on ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet")," using the release candidate, revealing and\naddressing lurking bugs such as\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1174"},"#","1174"),". Also\nrequired was this change to dynamically calculate the min utxo value\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/1176"},"#","1176"),", a\nnecessary adjustment following the switch to inline datums. The team\nengaged with ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli")," / ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-api")," maintainers to discuss recent\nchanges and collaborated on drafting feature ideas, including providing\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1177"},"Conway support"),"\nfor the Hydra roadmap. As part of ongoing improvements, they\nexperimented with writing the specification in markdown instead of\nLaTex."),(0,r.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Opened head among us on mainnet and uncovered a few lurking bugs like\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1174"},"#","1174")," in the\nrelease candidate"),(0,r.kt)("li",{parentName:"ul"},"Calculate the min utxo value instead of hard-coding it\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1176"},"#","1176"),", which is\nneeded since we switched to inline datums."),(0,r.kt)("li",{parentName:"ul"},"Met with the ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli")," / ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-api")," maintainers to discuss\nrecent changes and way forward"),(0,r.kt)("li",{parentName:"ul"},"Drafted features ideas to provide ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1177"},"Conway\nsupport")," on the\nHydra roadmap"),(0,r.kt)("li",{parentName:"ul"},"Experimented in writing the specification in markdown instead of LaTex")),(0,r.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Have the Monthly review meeting with several demos"),(0,r.kt)("li",{parentName:"ul"},"Release version 0.14.0 with ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/milestone/14?closed=1"},"this\nscope")),(0,r.kt)("li",{parentName:"ul"},"Complete tidying up chain layer via stateless observation changes in\nhydra-node\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1096"},"#","1096")),(0,r.kt)("li",{parentName:"ul"},"Update dependencies to prepare for Conway\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1114"},"#","1114"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c036f08e.230d3185.js b/assets/js/c036f08e.230d3185.js new file mode 100644 index 00000000000..3598f067b5e --- /dev/null +++ b/assets/js/c036f08e.230d3185.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40309],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(r),m=n,h=c["".concat(p,".").concat(m)]||c[m]||s[m]||o;return r?a.createElement(h,i(i({ref:t},d),{},{components:r})):a.createElement(h,i({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},52303:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"SRE Team Update",slug:"2023-06-23-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-23-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-sre.md",source:"@site/blog/2023-06-23-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.98,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-06-23-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-23-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-16-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Ci-ops",id:"ci-ops",level:3},{value:"Ci-world",id:"ci-world",level:3},{value:"Devx-ci",id:"devx-ci",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3}],d={toc:u},c="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality"),(0,n.kt)("li",{parentName:"ul"},"Cardano Sanchonet environment was stood up to test Conway era functionality"),(0,n.kt)("li",{parentName:"ul"},"Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case"),(0,n.kt)("li",{parentName:"ul"},"Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5318"},"cardano-node-pull-5318"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updates required for node 8.1.1 nixos service: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/pull/414"},"cardano-ops-pull-414")),(0,n.kt)("li",{parentName:"ul"},"Work in progress continues on mixed legacy and p2p topology clusters in cardano-ops: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/tree/ops-local"},"cardano-ops-ops-local"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/tree/mn-mixed-p2p"},"cardano-ops-mn-mixed-p2p"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add Sanchonet environment: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/96"},"cardano-world-pull-96"))),(0,n.kt)("h3",{id:"ci-ops"},"Ci-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add devx-ci cluster integration for legacy darwin ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-ops/compare/b158b17...ed875b9"},"ci-ops-compare"))),(0,n.kt)("h3",{id:"ci-world"},"Ci-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ci-world/compare/840cdb6...b08c250"},"ci-world-compare"))),(0,n.kt)("h3",{id:"devx-ci"},"Devx-ci"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/devx-ci"},"devx-ci-repo"))),(0,n.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Add Sanchonet environment: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/545"},"iohk-nix-pull-545"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c061e3b1.52557f8e.js b/assets/js/c061e3b1.52557f8e.js new file mode 100644 index 00000000000..2c5454580dd --- /dev/null +++ b/assets/js/c061e3b1.52557f8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64614],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var h=a.createContext({}),p=function(e){var t=a.useContext(h),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(h.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,h=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=p(r),c=i,d=s["".concat(h,".").concat(c)]||s[c]||m[c]||n;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=c;var l={};for(var h in t)hasOwnProperty.call(t,h)&&(l[h]=t[h]);l.originalType=e,l[s]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<n;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},99797:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>h,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>p});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-03-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-09-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-09-mithril.md",source:"@site/blog/2023-03-09-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-03-09T00:00:00.000Z",formattedDate:"March 9, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.42,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-03-09-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-10-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-08-consensus"}},h={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(s,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano ",(0,i.kt)("inlineCode",{parentName:"p"},"mainnet")," and computes the stake distribution with the optimized unreleased Cardano CLI command."),(0,i.kt)("p",null,"Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements eras behavior switch ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/707"},"#707"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the deployment of the era behavior switch to the test networks ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/752"},"#752")),(0,i.kt)("li",{parentName:"ul"},"Completed the enhancement of datum generation for era markers ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/786"},"#786")),(0,i.kt)("li",{parentName:"ul"},"Worked on handling the API version with an era switch ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/727"},"#727")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements a relational store in the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Worked on the migration/adaptation of the ",(0,i.kt)("inlineCode",{parentName:"li"},"stake_pool")," table ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/787"},"#787")))),(0,i.kt)("li",{parentName:"ul"},"Completed the refactoring of errors in the signer and aggregator state machines ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/665"},"#665")),(0,i.kt)("li",{parentName:"ul"},"Worked on testing Mithril with a ",(0,i.kt)("inlineCode",{parentName:"li"},"mainnet")," Cardano network ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/777"},"#777")),(0,i.kt)("li",{parentName:"ul"},"Worked on fixing bugs with the Docker client image:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fixed a bug that made the Docker client container crash at startup ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/769"},"#769")),(0,i.kt)("li",{parentName:"ul"},"Fixed a bug that prevented the restoration of a snapshot with a Docker client ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/791"},"#791")),(0,i.kt)("li",{parentName:"ul"},"Worked on testing the Docker client in the ",(0,i.kt)("inlineCode",{parentName:"li"},"Mithril Client multi-platform test")," workflow ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/794"},"#794"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c063df1b.518f2336.js b/assets/js/c063df1b.518f2336.js new file mode 100644 index 00000000000..4bdfa0f26c1 --- /dev/null +++ b/assets/js/c063df1b.518f2336.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21562],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=n,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return r?a.createElement(h,i(i({ref:t},s),{},{components:r})):a.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},7314:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2023-03-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-03-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-crypto.md",source:"@site/blog/2023-03-03-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.155,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-03-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-08-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-03-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit."),(0,n.kt)("li",{parentName:"ul"},"cardano-base: BLS branch is now ready for review. We are workign forward its merge. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase."),(0,n.kt)("li",{parentName:"ul"},"Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Bumped to version ",(0,n.kt)("a",{parentName:"li",href:"https://crates.io/crates/kes-summed-ed25519/0.2.0"},"0.2.0")," the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using ",(0,n.kt)("inlineCode",{parentName:"li"},"mlock"),"."),(0,n.kt)("li",{parentName:"ul"},"Opened ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/783"},"PR#783")," to update dependency"),(0,n.kt)("li",{parentName:"ul"},"Improved testing for batch opening of mtree, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/773"},"PR#773")),(0,n.kt)("li",{parentName:"ul"},"Improved testing for batch verification of STM sigs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/774"},"PR#774")),(0,n.kt)("li",{parentName:"ul"},"RFP for crypto audit almost ready.")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"BLS12-381 branch finally ready for review ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"))),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("p",null,"Team off for one week. Other progress:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Learning about raw direct-bearer abstraction. An interface for sockets in consensus."),(0,n.kt)("li",{parentName:"ul"},"use that for direct ser/deser"),(0,n.kt)("li",{parentName:"ul"},"written those syntaxes for ouroboros (coming PR)"),(0,n.kt)("li",{parentName:"ul"},"the kes agent will depend on that. \t")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("p",null,"Progress with familiarisation of Halo2 library to write circuits."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c08c0f47.416aafe8.js b/assets/js/c08c0f47.416aafe8.js new file mode 100644 index 00000000000..555a0b3607e --- /dev/null +++ b/assets/js/c08c0f47.416aafe8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64562],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(h,i(i({ref:t},c),{},{components:n})):a.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var p=2;p<o;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},63876:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-06-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-06-14-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-14-consensus.md",source:"@site/blog/2023-06-14-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-06-14T00:00:00.000Z",formattedDate:"June 14, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.115,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-06-14-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-15-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-14-performance-and-tracing"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the ",(0,r.kt)("inlineCode",{parentName:"p"},"Byron")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"TPraos")," eras do not need to be checkpointed for an MVP.\nThere is one remaining question (which applies also to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Praos"),' era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated "Limit on Patience" timeout sufficiently bounds how long the adversary can inflate a victim\'s overall sync time.'),(0,r.kt)("p",null,"On the UTxO-HD front, the prototype branch was rebased on top of the latest ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," ",(0,r.kt)("inlineCode",{parentName:"p"},"main")," branch and integrated on top of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node 8.1.1-pre"),". As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD.\nWe managed to run a node again with UTxO-HD enabled.\nWe also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),", which uncovered a performance regression on the Network component when using ",(0,r.kt)("inlineCode",{parentName:"p"},"GHC-9.2/9.4"),". This is being addressed."),(0,r.kt)("p",null,"Regarding our support activities, we Released ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-sim-0.2.0.0")," and are in the process of preparing the 8.2 release of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c091c5d8.ce22eeb2.js b/assets/js/c091c5d8.ce22eeb2.js new file mode 100644 index 00000000000..e86824f74c9 --- /dev/null +++ b/assets/js/c091c5d8.ce22eeb2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39596],{414:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/devx","page":1,"postsPerPage":5,"totalPages":1,"totalCount":2,"blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/c0ac1524.13b59269.js b/assets/js/c0ac1524.13b59269.js new file mode 100644 index 00000000000..c3c62c1e6f2 --- /dev/null +++ b/assets/js/c0ac1524.13b59269.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89752],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),u=a,f=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return r?n.createElement(f,l(l({ref:t},s),{},{components:r})):n.createElement(f,l({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var c=2;c<o;c++)l[c]=r[c];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},58905:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-08-04-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-04-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-goedel.md",source:"@site/blog/2023-08-04-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.43,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-08-04-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-04-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-04-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is formalising mini protocols and also further developing the\nperformance modelling prototype."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Developing new framework for specification and verification of\nmini-protocols which is closer to the Haskell implementation.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Developed a new internal representation for the DeltaQ algebra that\nallows for more modularity in backend implementations")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Discussions regarding the Cardano networking specification"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c0cf6239.cd90552c.js b/assets/js/c0cf6239.cd90552c.js new file mode 100644 index 00000000000..b8c16d5c3e7 --- /dev/null +++ b/assets/js/c0cf6239.cd90552c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53482],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(n),c=o,k=d["".concat(s,".").concat(c)]||d[c]||m[c]||i;return n?a.createElement(k,r(r({ref:t},p),{},{components:n})):a.createElement(k,r({ref:t},p))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,r[1]=l;for(var u=2;u<i;u++)r[u]=n[u];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},29025:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=n(87462),o=(n(67294),n(3905));const i={title:"Network Quarterly Update",slug:"2023-01-13-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},r=void 0,l={permalink:"/cardano-updates/quarterly/2023-01-13-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-13-network.md",source:"@site/quarterly/2023-01-13-network.md",title:"Network Quarterly Update",description:"Network Quarterly Update",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:4.125,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Quarterly Update",slug:"2023-01-13-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-18-consensus"},nextItem:{title:"Open-Source Update",permalink:"/cardano-updates/quarterly/2023-01-13-open-source"}},s={authorsImageUrls:[void 0]},u=[{value:"Network Quarterly Update",id:"network-quarterly-update",level:2},{value:"2022-11 - 2023-01",id:"2022-11---2023-01",level:2},{value:"Summary",id:"summary",level:3},{value:"Next steps",id:"next-steps",level:3},{value:"Risks",id:"risks",level:3},{value:"Detailed log",id:"detailed-log",level:3},{value:"Contributions to Ouroboros-Network",id:"contributions-to-ouroboros-network",level:4},{value:"Contributions to Cardano-Node",id:"contributions-to-cardano-node",level:4},{value:"Contributions to IOSim",id:"contributions-to-iosim",level:4}],p={toc:u},d="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"network-quarterly-update"},"Network Quarterly Update"),(0,o.kt)("h2",{id:"2022-11---2023-01"},"2022-11 - 2023-01"),(0,o.kt)("h3",{id:"summary"},"Summary"),(0,o.kt)("p",null,"The primary goal of the networking team was to focus on the single relay\nrelease of P2P. We fixed a number of small late bugs, and concluded QA\n& performance testing. Although it was discovered a regression in performance\nof block production when P2P is enabled, relaying with P2P performs better\ncomparing to a non p2p. We concluded that this is not a blocker for the Single\nRelay Release which is planned shortly."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"Peer sharing")," has gone through review and final review is\njust being done right now. After merging it will still be disabled (hidden\nbehind a flag) as it's not safe without eclipse evasion. We started\nimplementing light peer sharing (i.e. include inbound peers into known peer set\nof the outbound governor)."),(0,o.kt)("p",null,"We started a detailed eclipse evasion design, it will continue in the next\nquarter."),(0,o.kt)("p",null,"We also made a major revision of package structure of the network packages. We\nended up with a very clean dependency graph (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4155"},"pr #4155"),")."),(0,o.kt)("p",null,"Armando Santos delivered a talk at the ",(0,o.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/armando-details.html"},"ODOPIS 2022")," conference on principles\nof distributed systems in Brussels. The slides are available ",(0,o.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/slides/OPODIS2022-slides-Santos.pdf"},"here"),"."),(0,o.kt)("p",null,"Neil Davies gave an invited seminar on ",(0,o.kt)("inlineCode",{parentName:"p"},"DeltaQ")," at Universit\xe9 Catholique de\nLouvain."),(0,o.kt)("p",null,"We also found and fixed a few of bugs:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"a bug in keep alive mini-protocol which resulted in warm to cold transitions\nto be always executed through a timeout path rather than do a clean demotion\n(","[pr #4168]",").")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"fixed an assetion failure in the outbound governor (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177"),") "))),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"we fixed DNS test failure ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4191"},"issue #4191"))),(0,o.kt)("h3",{id:"next-steps"},"Next steps"),(0,o.kt)("p",null,"We will work towards the next release of P2P for block producer nodes. This includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"analysing performance regression for BP nodes when using P2P"),(0,o.kt)("li",{parentName:"ul"},"finish the work on controlling the block forger through node kernel (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3800"},"pr #3800"),")"),(0,o.kt)("li",{parentName:"ul"},"address ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3907"},"issue #3907")," and write a script to analyse deployment of P2P relays")),(0,o.kt)("p",null,"We would like also to push forward eclipse evasion. Although most of the work\nhas be done already the release of ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim")," on ",(0,o.kt)("inlineCode",{parentName:"p"},"Hackage")," will happen in the\nnext quarter."),(0,o.kt)("p",null,"We would also like to address ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4244"},"chain-sync timeout issue")," recently\ndiagnosed by Karl Knutsson."),(0,o.kt)("p",null,"If time permits we would also like to address some technical debt, especially:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3387"},"enable nothunk in diffusion tests")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4085"},"refactor diffusion testnet simulation"))),(0,o.kt)("h3",{id:"risks"},"Risks"),(0,o.kt)("p",null,"The performance regression for block producer with P2P needs to be investigated\nin the near future. This is blocker for the release of P2P on BP nodes."),(0,o.kt)("h3",{id:"detailed-log"},"Detailed log"),(0,o.kt)("h4",{id:"contributions-to-ouroboros-network"},"Contributions to Ouroboros-Network"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We added ",(0,o.kt)("inlineCode",{parentName:"li"},"TraceDemoteLocalAsynchronous"),", which enables notification of critical issues for SPOs"),(0,o.kt)("li",{parentName:"ul"},"We fixed ",(0,o.kt)("inlineCode",{parentName:"li"},"cardano-ping")," compatibility with ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToNodeV_10")," (P2P, ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4165"},"pr #4165"),")"),(0,o.kt)("li",{parentName:"ul"},"We fixed a bug in demotion peers to cold which affected P2P nodes (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4170/commits/61058aa5c28a144d723aae183d1745552d757334"},"commit-61058aa5c2"),")"),(0,o.kt)("li",{parentName:"ul"},"Karl Knutsson enhanced ",(0,o.kt)("inlineCode",{parentName:"li"},"SendFetchRequest")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4170/commits/bb1c3dddeea78949f531c144bb4f2669eddf7f47"},"commit-bb1c3dddee"),"), open-source contribution)"),(0,o.kt)("li",{parentName:"ul"},"We turned ",(0,o.kt)("inlineCode",{parentName:"li"},"SizeInBytes")," into a newtype."),(0,o.kt)("li",{parentName:"ul"},"We extended ",(0,o.kt)("inlineCode",{parentName:"li"},"CONTRIBUTING.md"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"README.md"),", added ",(0,o.kt)("inlineCode",{parentName:"li"},"CODE_OF_CONDUCT"),"."),(0,o.kt)("li",{parentName:"ul"},"We fixed DNS test failure ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4191"},"issue #4191")),(0,o.kt)("li",{parentName:"ul"},"We fixed a simulation bug found in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4258"},"issue #4258")),(0,o.kt)("li",{parentName:"ul"},"[pr #4168]"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177"))),(0,o.kt)("h4",{id:"contributions-to-cardano-node"},"Contributions to Cardano-Node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We maintained the Single Relay Release ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4612"},"pr #4612"),", (e.g. fixing CI issues,\nRebasing it when necessary, publishing packages to Cardano Haskell Packages);"),(0,o.kt)("li",{parentName:"ul"},"We enhanced ",(0,o.kt)("inlineCode",{parentName:"li"},"JSON")," serialisation / deserialisation of ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToNodeVersion")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToClientVersion"),";")),(0,o.kt)("h4",{id:"contributions-to-iosim"},"Contributions to IOSim"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We started to use Cardano Haskell Packages for ",(0,o.kt)("inlineCode",{parentName:"li"},"IOSim")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/48"},"pr #48"),")"),(0,o.kt)("li",{parentName:"ul"},"We updated change log files"),(0,o.kt)("li",{parentName:"ul"},"We added support of ",(0,o.kt)("inlineCode",{parentName:"li"},"ghc-9.4")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/50"},"pr #50"),")")),(0,o.kt)("p",null,"We also addressed the following issues in ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"pr #57")," in order to prepare the package for publication on Hackage:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"refactored ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," timers API (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/issues/46"},"issue #46"),");"),(0,o.kt)("li",{parentName:"ul"},"created a new package ",(0,o.kt)("inlineCode",{parentName:"li"},"si-timers")," which exposes an interface using SI units\nand is safe on 32-bit systems (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/issues/59"},"issue #59"),");"),(0,o.kt)("li",{parentName:"ul"},"added monad transformers instances for classes defined in ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/issues/58"},"issue #58"),");"),(0,o.kt)("li",{parentName:"ul"},"created ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes-mtl")," package which includes (experimental) instances for monad transformers;"),(0,o.kt)("li",{parentName:"ul"},"provide ",(0,o.kt)("inlineCode",{parentName:"li"},"MonadMonotonicTimeNSec")," in ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"MonadMonotonicTime")," in ",(0,o.kt)("inlineCode",{parentName:"li"},"si-timers")," (so that ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," follow the ",(0,o.kt)("inlineCode",{parentName:"li"},"base")," package);"),(0,o.kt)("li",{parentName:"ul"},"added ",(0,o.kt)("inlineCode",{parentName:"li"},"registerCancellableDelay")," in ",(0,o.kt)("inlineCode",{parentName:"li"},"si-timers")," (which allowed us to hide fancy timer api and clean ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes"),")"),(0,o.kt)("li",{parentName:"ul"},"added support for ",(0,o.kt)("inlineCode",{parentName:"li"},"js_HOST_ARCH")," (the new GHC JS backend)")),(0,o.kt)("p",null,"Note the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"pr #57")," contains almost 40 commits, and was a major step forward for\n",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim")," ecosystem. We also prepared a draft ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4281"},"pr #4281")," which updates\n",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"."),(0,o.kt)("p",null,"Other changes for ",(0,o.kt)("inlineCode",{parentName:"p"},"1.0.0.0")," release on Hackage:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Refactored test suite (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/47"},"pr #47"),")"),(0,o.kt)("li",{parentName:"ul"},"Updated documentation, cabal files, ",(0,o.kt)("inlineCode",{parentName:"li"},"CONTRIBUTING"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"SECURITY")," documents, etc in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/60"},"pr #60"),", currently under review.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c10365f3.472f2046.js b/assets/js/c10365f3.472f2046.js new file mode 100644 index 00000000000..097251c2175 --- /dev/null +++ b/assets/js/c10365f3.472f2046.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7783],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>d});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,r,a=function(e,t){if(null==e)return{};var i,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(i),c=a,d=s["".concat(p,".").concat(c)]||s[c]||m[c]||n;return i?r.createElement(d,o(o({ref:t},h),{},{components:i})):r.createElement(d,o({ref:t},h))}));function d(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,i)}c.displayName="MDXCreateElement"},3827:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-04-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-04-20-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-20-mithril.md",source:"@site/blog/2023-04-20-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-04-20T00:00:00.000Z",formattedDate:"April 20, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.245,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-04-20-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-04-21-ledger"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-20-node-cli-api"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(s,(0,r.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team released a new ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2315.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2315.0"))," distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures."),(0,a.kt)("p",null,"Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2315.0"},(0,a.kt)("inlineCode",{parentName:"a"},"2315.0"))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic that implements a relational store in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/779"},"#779"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signed_entity")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/816"},"#816")),(0,a.kt)("li",{parentName:"ul"},"Completed the creation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"signer")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/814"},"#814")),(0,a.kt)("li",{parentName:"ul"},"Completed the migration/adaptation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"single_signature")," table ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/829"},"#829")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implement generic signing/verification of entity services ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the definition of the interface of the generic entity service for signing ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/847"},"#847")),(0,a.kt)("li",{parentName:"ul"},"Worked on the implementation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"Certifier")," service in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/850"},"#850")),(0,a.kt)("li",{parentName:"ul"},"Completed the extension of the ",(0,a.kt)("inlineCode",{parentName:"li"},"SignedEntityType")," type ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/848"},"#848")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"Tick")," service in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/849"},"#849")),(0,a.kt)("li",{parentName:"ul"},"Worked on implementing the signable builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Mithril Stake Distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/851"},"#851"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c178b56c.3e187747.js b/assets/js/c178b56c.3e187747.js new file mode 100644 index 00000000000..ebf998dc8ac --- /dev/null +++ b/assets/js/c178b56c.3e187747.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92255],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(n),c=o,m=d["".concat(l,".").concat(c)]||d[c]||h[c]||a;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}c.displayName="MDXCreateElement"},80883:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=n(87462),o=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-09-01-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-09-01-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-network.md",source:"@site/blog/2023-09-01-network.md",title:"Network Team Update",description:"High-level overview of sprint 43",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.765,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-09-01-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-01-ledger"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-01-sre"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level overview of sprint 43",id:"high-level-overview-of-sprint-43",level:2},{value:"Progress on P2P addoption",id:"progress-on-p2p-addoption",level:3},{value:"SPO relays",id:"spo-relays",level:4},{value:"IOG relays",id:"iog-relays",level:4},{value:"Detailed description",id:"detailed-description",level:2},{value:"Peer Sharing",id:"peer-sharing",level:2},{value:"Async Demotion Test Fix",id:"async-demotion-test-fix",level:2}],u={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,o.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-overview-of-sprint-43"},"High-level overview of ",(0,o.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+43%22"},"sprint 43")),(0,o.kt)("p",null,"In this sprint, we received contributions from ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF")," & ",(0,o.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois"),". Karl Knutsson\n(",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF"),") has addressed various issues regarding peer churning in P2P, timeouts\nand our ",(0,o.kt)("inlineCode",{parentName:"p"},"WireShark")," dissector. While the ",(0,o.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois")," developers focused on\naddressing issues from their review last year. See below for more details."),(0,o.kt)("p",null,"We continued working on bootstrap peers ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661"),"."),(0,o.kt)("p",null,"We refactored our test suites: they are split into ",(0,o.kt)("inlineCode",{parentName:"p"},"io-tests")," which require to\nbe run natively on all platforms (these tests mostly contain tests that\nrequire ",(0,o.kt)("inlineCode",{parentName:"p"},"IO")," system calls) and ",(0,o.kt)("inlineCode",{parentName:"p"},"sim-tests")," which are platform independent. We\nrun ",(0,o.kt)("inlineCode",{parentName:"p"},"io-tests")," on all supported platforms (e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"x86_64-linux"),",\n",(0,o.kt)("inlineCode",{parentName:"p"},"x86-64-darwin"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"aarch64-darwin")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"x86_64-w64-mingw32")," (Windows)) natively.\nThe ",(0,o.kt)("inlineCode",{parentName:"p"},"sim-tests")," are not executed on ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows")," due to memory limitations on\nGitHub Actions runners. ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4653"},"ouroboros-network-#4653")),(0,o.kt)("p",null,"We also started rebasing ",(0,o.kt)("inlineCode",{parentName:"p"},"typed-protocols")," refactoring branches."),(0,o.kt)("p",null,"Marcin was appointed as the ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," release engineer for the ",(0,o.kt)("inlineCode",{parentName:"p"},"8.4.0-pre"),"\nversion. So far he integrated ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger-conway-1.8")," and\n",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.9.1.0")," to ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-cli")," and\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-api"),". Once we will have an integration branch for ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node"),",\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ledger-conway-1.8")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," packages can be released\nto ",(0,o.kt)("inlineCode",{parentName:"p"},"CHaP")," and PRs can be merged once they go through review & CI."),(0,o.kt)("p",null,"We also fixed some smaller issues regarding peer sharing (both were discovered\nby Karl from ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF"),"). More details are included below."),(0,o.kt)("h3",{id:"progress-on-p2p-addoption"},"Progress on P2P addoption"),(0,o.kt)("h4",{id:"spo-relays"},"SPO relays"),(0,o.kt)("p",null,"There are currently ~2000 relays running P2P\nenabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On\n16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil\nAda."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"P2P relays",src:n(86597).Z,width:"2034",height:"1588"})),(0,o.kt)("p",null,"The following graphs show several different versions of relays running on the mainnet. The\ngreen line ",(0,o.kt)("inlineCode",{parentName:"p"},"NodeToNodeVersionV10.True")," denotes P2P relays, which slowly\nincrease over time. The ",(0,o.kt)("inlineCode",{parentName:"p"},"V9")," and earlier versions of the ",(0,o.kt)("inlineCode",{parentName:"p"},"node-to-node"),"\nthe protocol indicates nodes version ",(0,o.kt)("inlineCode",{parentName:"p"},"1.35.x")," or earlier.\n",(0,o.kt)("img",{alt:"node versions",src:n(31567).Z,width:"2038",height:"1594"})),(0,o.kt)("p",null,"Data has been kindly provided by ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF")," and their mainnet monitoring\ninfrastructure."),(0,o.kt)("h4",{id:"iog-relays"},"IOG relays"),(0,o.kt)("p",null,"As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all\nIOG relays will be running P2P."),(0,o.kt)("h2",{id:"detailed-description"},"Detailed description"),(0,o.kt)("p",null,"In this sprint, we got a few contributions from ",(0,o.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"CF"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Karl made peer churning mechanism less aggressive ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4656"},"ouroboros-network-#4656"),"; and"),(0,o.kt)("li",{parentName:"ul"},"he added timeouts for idle states in ",(0,o.kt)("inlineCode",{parentName:"li"},"ChainSync")," & ",(0,o.kt)("inlineCode",{parentName:"li"},"KeepAlive"),"\nminiprotocols. These timeouts help a node remove idle connections from the\nresponder (server) side ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4648"},"ouroboros-network-#4648"),"."),(0,o.kt)("li",{parentName:"ul"},"he improved the ",(0,o.kt)("inlineCode",{parentName:"li"},"WireShark")," dissector by adding support for the ",(0,o.kt)("inlineCode",{parentName:"li"},"peer-sharing")," mini-protocol ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4656"},"ouroboros-network-#4656"),".")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois")," has been making progress in addressing some of the issues they raised in their review (last year):"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Mark Tullsen (",(0,o.kt)("a",{parentName:"li",href:"https://galois.com/"},"Galois"),") has been working on refactoring the main entry function of P2P ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661")," (in review);"),(0,o.kt)("li",{parentName:"ul"},"Sam Cowger (",(0,o.kt)("a",{parentName:"li",href:"https://galois.com/"},"Galois"),") has been reviewing all use cases of ",(0,o.kt)("inlineCode",{parentName:"li"},"error")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"unsafe")," calls\n",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4661"},"ouroboros-network-#4661")," (in review).")),(0,o.kt)("h2",{id:"peer-sharing"},"Peer Sharing"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Light peer sharing is only enabled when peer sharing is turned on ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4652"},"ouroboros-network-#4652"),";"),(0,o.kt)("li",{parentName:"ul"},"Handshake incorrectly reports peer sharing value. It's supposed to relay the\nremote value, but instead, it returns the local value. ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4642"},"ouroboros-network-#4642")," (in review).")),(0,o.kt)("h2",{id:"async-demotion-test-fix"},"Async Demotion Test Fix"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We fixed an async demotion test failure which turned out to be a weakness of\nthe test itself rather than a bug in the connection manager. ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4655"},"ouroboros-network-#4655"))))}h.isMDXComponent=!0},86597:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/2023-08-31-p2p-relays-8e5be189ad8437375c5067026c003556.png"},31567:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/2023-08-31-relay-versions-0a8d445e1b0f3a793ccdd94f4aacd421.png"}}]); \ No newline at end of file diff --git a/assets/js/c1c5c6f5.bba09171.js b/assets/js/c1c5c6f5.bba09171.js new file mode 100644 index 00000000000..84036e13b36 --- /dev/null +++ b/assets/js/c1c5c6f5.bba09171.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95569],{9564:a=>{a.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"quarterly"}')}}]); \ No newline at end of file diff --git a/assets/js/c2b4dd94.778afa9a.js b/assets/js/c2b4dd94.778afa9a.js new file mode 100644 index 00000000000..6fed4e577da --- /dev/null +++ b/assets/js/c2b4dd94.778afa9a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43020],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),m=s(n),p=a,h=m["".concat(l,".").concat(p)]||m[p]||d[p]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},79021:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-07-12-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-07-12-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-12-performance-and-tracing.md",source:"@site/blog/2023-07-12-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-07-12T00:00:00.000Z",formattedDate:"July 12, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.29,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-07-12-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-12-consensus"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-07-07-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:s},m="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Optimization of the new tracing system is ongoing and yielding good performance results."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"Our analysis of the GHC9 build of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation. "),(0,a.kt)("p",null,"In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),". This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run. "),(0,a.kt)("p",null,"Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c2eec07f.f7406fac.js b/assets/js/c2eec07f.f7406fac.js new file mode 100644 index 00000000000..d82b11029b4 --- /dev/null +++ b/assets/js/c2eec07f.f7406fac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35388],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function o(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),d=u(a),h=r,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||i;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=h;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[d]="string"==typeof t?t:r,l[1]=o;for(var u=2;u<i;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},6988:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-07-04-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-07-04-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-04-node-cli-api.md",source:"@site/blog/2023-07-04-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-07-04T00:00:00.000Z",formattedDate:"July 4, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.495,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-07-04-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-07-04-db-sync"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-30-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},d="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-06-21---2023-07-04"},"2023-06-21 - 2023-07-04"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Started integration of conway era into the cardano-api,"),(0,r.kt)("li",{parentName:"ul"},'Pre-release of cardano-cli 8.2.1 which enables creating goveranance "Update constitution" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.'),(0,r.kt)("li",{parentName:"ul"},"Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities."),(0,r.kt)("li",{parentName:"ul"},"Continue refactoring cardano-testnet"),(0,r.kt)("li",{parentName:"ul"},"CI and docs house keeping on the new cardnao-cli and cardano-api repositories")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/60"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.7.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/44"},"Release 8.2.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/39"},"Use new function-based API instead of using query data types directly"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/94"},"Release cardano-api 8.7")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/92"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.6.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/90"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.2.0.0.1.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/88"},"Backport: Add era phantom type parameter to Certificate")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/86"},"Parameterise ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate")," type with phantom ",(0,r.kt)("inlineCode",{parentName:"a"},"era")," type argument")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/85"},"Voting procedure and proposal procedure updates")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/84"},"Parameterise ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate")," with ",(0,r.kt)("inlineCode",{parentName:"a"},"era"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/83"},"Parameterise ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate")," type with phantom ",(0,r.kt)("inlineCode",{parentName:"a"},"era")," type argument")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/79"},"Add contributing guide")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/77"},"Unified ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra")," constraint summoning")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/70"},"Update CHaP index")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/41"},"CIP-1694 API - Part 1"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5356"},"cardano-node top level error handler")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5353"},"Turn on some traces by default"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5364"},"Report payment address and UTxOs in testnets")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5362"},"New Conway ",(0,r.kt)("inlineCode",{parentName:"a"},"stake-snapshot")," tests"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/79"},"Add contributing guide")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/33"},"Release workflow description")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5353"},"Turn on some traces by default"))),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/75"},"Add PR changelog check")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/71"},"Fix stylish haskell in github action workflow")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/62"},"Enable CI on PRs from forks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/53"},"Remove merge_group trigger from changelog check CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/46"},"Add PR changelog check. Add core-tech group to GHA description codeowners.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/41"},"Fix stylish haskell in github action workflow")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/40"},"Enable CI in PRs from forks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/48"},"Add contributing guide"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c315164d.90ef02cc.js b/assets/js/c315164d.90ef02cc.js new file mode 100644 index 00000000000..ac856b47bc7 --- /dev/null +++ b/assets/js/c315164d.90ef02cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43194],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),m=a,d=h["".concat(s,".").concat(m)]||h[m]||c[m]||i;return r?n.createElement(d,o(o({ref:t},u),{},{components:r})):n.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},64268:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Mithril Team Update",slug:"2023-01-12-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-12-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-12-mithril.md",source:"@site/blog/2023-01-12-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-01-12T00:00:00.000Z",formattedDate:"January 12, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.165,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-01-12-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-01-13-system-test"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-11-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ",(0,a.kt)("a",{parentName:"p",href:"https://mithril.network/doc/adr/4"},"ADR"),". They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible."),(0,a.kt)("p",null,"Finally, they have worked on upgrading the ",(0,a.kt)("inlineCode",{parentName:"p"},"devnet")," and fixing some flakiness in the end to end tests of the CI."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Implemented the redaction of an ADR for handling graceful updates of the Mithril Network ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/671"},"#671")),(0,a.kt)("li",{parentName:"ul"},"Worked on a proof of concept to handle backward compatibilty of exchanged messages with ",(0,a.kt)("inlineCode",{parentName:"li"},"protobuf")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/677"},"#677")),(0,a.kt)("li",{parentName:"ul"},"Worked on a proof of concept to handle backward compatibilty of exchanged messages with ",(0,a.kt)("inlineCode",{parentName:"li"},"avro")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/678"},"#678")),(0,a.kt)("li",{parentName:"ul"},"Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/672"},"#672")),(0,a.kt)("li",{parentName:"ul"},"Worked on upgrading the Cardano node of the Mithril ",(0,a.kt)("inlineCode",{parentName:"li"},"devnet"),", as well as fixing flakiness of the CI ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/523"},"#523")),(0,a.kt)("li",{parentName:"ul"},"Prepared and tested the new ",(0,a.kt)("inlineCode",{parentName:"li"},"2302")," distribution pre-release ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2302.0-prerelease"},"2302.0-prerelease")),(0,a.kt)("li",{parentName:"ul"},"Updated the documentation for SPO to build a signer node in order to better reflect the new release process ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/681"},"#681"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c4479859.8309a90c.js b/assets/js/c4479859.8309a90c.js new file mode 100644 index 00000000000..3886439b70f --- /dev/null +++ b/assets/js/c4479859.8309a90c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73321],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),u=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=u(e.components);return n.createElement(o.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,o=e.parentName,m=p(e,["components","mdxType","originalType","parentName"]),d=u(a),k=r,h=d["".concat(o,".").concat(k)]||d[k]||c[k]||l;return a?n.createElement(h,i(i({ref:t},m),{},{components:a})):n.createElement(h,i({ref:t},m))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=k;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[d]="string"==typeof e?e:r,i[1]=p;for(var u=2;u<l;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}k.displayName="MDXCreateElement"},92606:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const l={title:"Node API & CLI Team Update",slug:"2023-06-07-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},i="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-06-07-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-07-node-cli-api.md",source:"@site/blog/2023-06-07-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-06-07T00:00:00.000Z",formattedDate:"June 7, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.37,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-06-07-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-06-08-system-test"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-02-hydra"}},o={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],m={toc:u},d="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-06-07---2023-06-20"},"2023-06-07 - 2023-06-20"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completed cardano-cli migration to input-output-hk/cardano-cli"),(0,r.kt)("li",{parentName:"ul"},"cardano-cli ping now uses cardano-ping-0.2.0.5"),(0,r.kt)("li",{parentName:"ul"},"New queries on API:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryCurrentEpochState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryDebugLedgerState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryGenesisParameters")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryPoolDistribution")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryPoolState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryProtocolParameters")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryProtocolParametersUpdate")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryProtocolState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakeAddresses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakeDistribution")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakePoolParameters")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakeSnapshot")))),(0,r.kt)("li",{parentName:"ul"},"Deprecate:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryPparams")))),(0,r.kt)("li",{parentName:"ul"},"Export query API as functions",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"genFeatureValueInEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"featureInShelleyBasedEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"isFeatureValue")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"valueOrDefault")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"asFeatureValue")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"asFeatureValueInShelleyBasedEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryEpoch")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"requireShelleyBasedEra")))),(0,r.kt)("li",{parentName:"ul"},"Restructure cardano-testnet (WIP)")),(0,r.kt)("hr",null),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5328"},"update network dependency and versions"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5326"},"Updated cardano-cli to use ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-ping-0.2.0.5"),"."))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5316"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli")," from CHaP"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5315"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"Updated cardano-cli ping command"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5311"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30"},"Use cardano-ping-0.2.0.5"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/28"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"--protocol-params-file")," option of the ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction build")," command more thoroughly"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/25"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Api.Query.Expr")," module"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/24"},"Use simplified ",(0,r.kt)("inlineCode",{parentName:"a"},"queryStateForBalancedTx")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/20"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/59"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.5.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/58"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"requireShelleyBasedEra")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/57"},"New version cardano-api-8.5.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/56"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"queryEpoch")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/55"},"New version 8.5.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/54"},"Error on ",(0,r.kt)("inlineCode",{parentName:"a"},"hlint")," warnings in CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/53"},"Additional query expression functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/52"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.4.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/49"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.3.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/48"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Api.Query.Expr")," module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/47"},"Simplify ",(0,r.kt)("inlineCode",{parentName:"a"},"queryStateForBalancedTx"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/46"},"Revert to use ",(0,r.kt)("inlineCode",{parentName:"a"},"testProperty")," now that it isn't deprecated anymore"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.1.1"},"cardano-node 8.1.1 release")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5328"},"update network dependency and versions"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5340"},"Add ability to retry tests with DISABLE_RETRIES=1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5339"},"Move golden files to proper location")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5336"},"Conway testnet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5335"},"Don't retry testnet when failed")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5321"},"Remove YAML filepath record from data Conf")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5315"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5311"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5309"},"Remove duplicate --testnet-magic flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5307"},"Restructure cardano testnet "))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/18"},"Fix Windows CI issues"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c511c40f.0dd3f662.js b/assets/js/c511c40f.0dd3f662.js new file mode 100644 index 00000000000..311bc97d929 --- /dev/null +++ b/assets/js/c511c40f.0dd3f662.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94922],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},c),{},{components:n})):r.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},63417:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-05-17-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-05-17-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-consensus.md",source:"@site/blog/2023-05-17-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-05-17T00:00:00.000Z",formattedDate:"May 17, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.285,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-05-17-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-19-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-17-mithril"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the ","[Genesis][#genesis]"," section for more details."),(0,a.kt)("p",null,"Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our ",(0,a.kt)("inlineCode",{parentName:"p"},"main")," branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain."),(0,a.kt)("p",null,"We improved our tooling by releasing an ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/68"},"immutable DB server"),", which can be used for testing and benchmarking purposes, and a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/70"},(0,a.kt)("inlineCode",{parentName:"a"},"db-truncater"))," program, which can be used in disaster recovery and benchmarking scenarios."),(0,a.kt)("h2",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"The consensus team working on Genesis:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Improved the genesis selection rule as a result of our interaction with IO Research."),(0,a.kt)("li",{parentName:"ul"},"Studied how the hard-fork combinator handles forecasting at era transitions, and ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/89"},"improved our documentation"),"."),(0,a.kt)("li",{parentName:"ul"},"Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP."),(0,a.kt)("li",{parentName:"ul"},"Elaborated concrete proposal for the Genesis State Machine."),(0,a.kt)("li",{parentName:"ul"},"Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).")),(0,a.kt)("p",null,"The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c5858ebd.c70ee4f9.js b/assets/js/c5858ebd.c70ee4f9.js new file mode 100644 index 00000000000..0a59944f47d --- /dev/null +++ b/assets/js/c5858ebd.c70ee4f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95199],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?p(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):p(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function u(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},p=Object.keys(e);for(n=0;n<p.length;n++)a=p[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(n=0;n<p.length;n++)a=p[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),i=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},h=function(e){var t=i(e.components);return n.createElement(o.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,p=e.originalType,o=e.parentName,h=u(e,["components","mdxType","originalType","parentName"]),d=i(a),c=r,m=d["".concat(o,".").concat(c)]||d[c]||s[c]||p;return a?n.createElement(m,l(l({ref:t},h),{},{components:a})):n.createElement(m,l({ref:t},h))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var p=a.length,l=new Array(p);l[0]=c;var u={};for(var o in t)hasOwnProperty.call(t,o)&&(u[o]=t[o]);u.originalType=e,u[d]="string"==typeof e?e:r,l[1]=u;for(var i=2;i<p;i++)l[i]=a[i];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},16011:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>s,frontMatter:()=>p,metadata:()=>u,toc:()=>i});var n=a(87462),r=(a(67294),a(3905));const p={title:"Ledger Team Update",slug:"2023-04-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,u={permalink:"/cardano-updates/quarterly/2023-04-03-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-03-ledger.md",source:"@site/quarterly/2023-04-03-ledger.md",title:"Ledger Team Update",description:"Ledger Quarterly Update",date:"2023-04-03T00:00:00.000Z",formattedDate:"April 3, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/quarterly/tags/ledger"}],readingTime:6.405,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-04-03-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Network Q1 2023 Update",permalink:"/cardano-updates/quarterly/2023-04-04-network"},nextItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-18-consensus"}},o={authorsImageUrls:[void 0]},i=[{value:"Ledger Quarterly Update",id:"ledger-quarterly-update",level:2},{value:"2023-01 - 2023-03",id:"2023-01---2023-03",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"CIPs",id:"cips",level:4},{value:"Formal ledger model",id:"formal-ledger-model",level:4},{value:"Conway ledger era",id:"conway-ledger-era",level:4},{value:"DRep stake distribution computation",id:"drep-stake-distribution-computation",level:4},{value:"Integration work",id:"integration-work",level:4},{value:"Deposit tracking",id:"deposit-tracking",level:4},{value:"New ledger API",id:"new-ledger-api",level:4},{value:"Constraint-based generators",id:"constraint-based-generators",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Critical fixes",id:"critical-fixes",level:5},{value:"Next steps",id:"next-steps",level:3},{value:"More details",id:"more-details",level:3}],h={toc:i},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"ledger-quarterly-update"},"Ledger Quarterly Update"),(0,r.kt)("h2",{id:"2023-01---2023-03"},"2023-01 - 2023-03"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"cips"},"CIPs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Entering the Voltaire phase")," -\nCIP-1694 received a major update after participation in the design has expanded to\nmore and more people, including those who attended the Colorado workshop.\nSee ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Ledger CIP category")," -\nThe ledger team continues to embrace the CIP process, and has begun the process of\nregistering the ledger as an official CIP category.\nSee ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/456"},"CIP-84"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Ledger serialization")," -\nA CIP for the ledger serialization deprecation cycle has been accepted.\nSee ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/tree/master/CIP-0080"},"CIP-80"),".")),(0,r.kt)("h4",{id:"formal-ledger-model"},"Formal ledger model"),(0,r.kt)("p",null,"Our new formal specifications backed by Agda have seen a lot of progress.\nThe majority of the ideas in CIP-1694 are now present, and we have made enough progress\nthat we can now safely say that the PDF produced by the Agda model will be the\nofficial ledger specification for the Conway ledger era.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"the repository"),"."),(0,r.kt)("h4",{id:"conway-ledger-era"},"Conway ledger era"),(0,r.kt)("p",null,"Progress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model.\nThe major component still missing is the DRep stake distribution, which still presents some\ntechnical challenges."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3176"},"pull-3176"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3216"},"pull-3216"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3226"},"pull-3226"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3291"},"pull-3291"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3326"},"pull-3326"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3330"},"pull-3330"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3339"},"pull-3339"),"]"),(0,r.kt)("h4",{id:"drep-stake-distribution-computation"},"DRep stake distribution computation"),(0,r.kt)("p",null,"Adding another large stake distribution to the ledger state must proceed with caution.\nWe do not want the memory used by the node to increase too much,\nand performance problems can lead to reduced block production.\nWe have prototyped, tested, and benchmarked several approaches that could give us\nthe current DRep stake distribution at each epoch boundary.\nThis has very important implications, since we want every ADA holder to be able to at any\ntime (such as during a contentious vote) register themselves as a DRep and still have time\nto vote themselves on the issue."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3344"},"pull-3344"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3353"},"pull-3353"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3364"},"pull-3364"),"]"),(0,r.kt)("h4",{id:"integration-work"},"Integration work"),(0,r.kt)("p",null,"The ledger has made some wonderful improvements over the past six months,\nbut which entail a significant amount of integration efforts:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Our new versioned CBOR schemes"),(0,r.kt)("li",{parentName:"ul"},"Individual deposit tracking"),(0,r.kt)("li",{parentName:"ul"},"An improved cross-era interface utilizing lenses"),(0,r.kt)("li",{parentName:"ul"},"A new ledger API"),(0,r.kt)("li",{parentName:"ul"},"Re-arranging the ledger stake in preparation for CIP-1694"),(0,r.kt)("li",{parentName:"ul"},"Versioning our Haskell packages\nusing ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaPs"),"."),(0,r.kt)("li",{parentName:"ul"},"Consistent conventions for variable names")),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3279"},"pull-3279"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3282"},"pull-3282"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3288"},"pull-3288"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3289"},"pull-3289"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3292"},"pull-3292"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3297"},"pull-3297"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3298"},"pull-3298"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3299"},"pull-3299"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3300"},"pull-3300"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3302"},"pull-3302"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3303"},"pull-3303"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3308"},"pull-3308"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3342"},"pull-3342"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3345"},"pull-3345"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3356"},"pull-3356"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3357"},"pull-3357"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3360"},"pull-3360"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3361"},"pull-3361"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3363"},"pull-3363"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4349"},"pull-4349"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/378"},"pull-378"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/376"},"pull-376"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/373"},"pull-373"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/370"},"pull-370"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/361"},"pull-361"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4976"},"pull-4976"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5013"},"pull-5013"),"]"),(0,r.kt)("h4",{id:"deposit-tracking"},"Deposit tracking"),(0,r.kt)("p",null,"Individual deposits (for stake credential and stake pool registrations) were not tracked by the ledger.\nDeposits were returned according to the current protocol parameters.\nWhen the values of these two protocol parameters change, the deposit pot\nis adjusted by adding to, or removing from, the reserves."),(0,r.kt)("p",null,"This has several problems:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Most people expect a deposit to be paid back exactly."),(0,r.kt)("li",{parentName:"ul"},"We cannot increase the deposit amount once the reserves hits zero."),(0,r.kt)("li",{parentName:"ul"},"If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials."),(0,r.kt)("li",{parentName:"ul"},"Because of the problems above, it is going to be incredibly hard to ever change the values."),(0,r.kt)("li",{parentName:"ul"},"There is a serious issue involving hard forks.\nThe consensus layer makes the decision about whether or not to enact a hard fork based on\nthe protocol parameter update state two stability windows before the end of the epoch.\nHowever, the ledger will reject a protocol parameter update on the epoch boundary\nif the deposit pot adjustments cannot be reconciled with the reseve pot.\nThis means that if quorum is met regarding changing the major protocol version,\nbut the update is rejected on the epoch boundary, consensus will change the era but the\nledger will not change the major protocol version, leaving the ledger in a split-brain state.")),(0,r.kt)("p",null,"Because we never actually changed the values of the two deposits amounts in the protocol parameters\non mainnet, we were able to retroactively change the behavior.\nWe made the following changes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Individual deposits are tracked in the ",(0,r.kt)("inlineCode",{parentName:"li"},"DState"),"."),(0,r.kt)("li",{parentName:"ul"},"The amount deposited is always returned.")),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3195"},"pull-3195"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3202"},"pull-3202"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3217"},"pull-3217"),"]"),(0,r.kt)("h4",{id:"new-ledger-api"},"New ledger API"),(0,r.kt)("p",null,"We have significantly built up the ledger API.\nWe will eventually replace much of the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-api")," in the node repository with this ledger API."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3242"},"pull-3242"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3248"},"pull-3248"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3328"},"pull-3328"),"]"),(0,r.kt)("h4",{id:"constraint-based-generators"},"Constraint-based generators"),(0,r.kt)("p",null,"Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks\nwhich span several epochs, mimicking a real network.\nThese tests are, in theory, excellent for checking properties.\nThey are, however, very difficult to maintain and are not as random as we would like\n(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks)."),(0,r.kt)("p",null,"We have a new declaritive infrastructure for building constraint-based generators,\nwhich instead generate a random ledger state representative of not just an initial state,\nbut also those representative of the end result of a long sequence of valid blocks.\nMoreover, these generators are very fast and are much more random than our old generators.\nBefore we can start using them for our existing property tests, however, we still need to\nexpand them to generate a valid block for a given ledger state."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"),"]"),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"We continued to address technical debt as much as we can."),(0,r.kt)("p",null,"[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3167"},"pull-3167"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3170"},"pull-3170"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3172"},"pull-3172"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3175"},"pull-3175"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3184"},"pull-3184"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3205"},"pull-3205"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3208"},"pull-3208"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3210"},"pull-3210"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3212"},"pull-3212"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3218"},"pull-3218"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3222"},"pull-3222"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3223"},"pull-3223"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3224"},"pull-3224"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3225"},"pull-3225"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3229"},"pull-3229"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3239"},"pull-3239"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3241"},"pull-3241"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3244"},"pull-3244"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3245"},"pull-3245"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3249"},"pull-3249"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3260"},"pull-3260"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3263"},"pull-3263"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3264"},"pull-3264"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3268"},"pull-3268"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3269"},"pull-3269"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3270"},"pull-3270"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3274"},"pull-3274"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3276"},"pull-3276"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3277"},"pull-3277"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3286"},"pull-3286"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3290"},"pull-3290"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3295"},"pull-3295"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3296"},"pull-3296"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3306"},"pull-3306"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3307"},"pull-3307"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3310"},"pull-3310"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3311"},"pull-3311"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3316"},"pull-3316"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3320"},"pull-3320"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3323"},"pull-3323"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3327"},"pull-3327"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3331"},"pull-3331"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3332"},"pull-3332"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3333"},"pull-3333"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3338"},"pull-3338"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3341"},"pull-3341"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3347"},"pull-3347"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3350"},"pull-3350"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3351"},"pull-3351"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3352"},"pull-3352"),"]\n[",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3354"},"pull-3354"),"]"),(0,r.kt)("h5",{id:"critical-fixes"},"Critical fixes"),(0,r.kt)("p",null,"We fixed two critical issues:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Growing block production delay on the epoch boundary: [",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3209"},"pull-3209"),"]"),(0,r.kt)("li",{parentName:"ul"},"Unexpected node shutdown from ",(0,r.kt)("inlineCode",{parentName:"li"},"balanceR"),": [",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3343"},"pull-3343"),"]")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Conway spec")," -\nComplete the first version of the conway formal specification."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"DRep stake distribution")," -\nHave the ledger compute the DRep stake distribution with acceptible performance."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Devnet ready")," -\nHave the Haskell implementation of the conway era in sync with the formal specification,\nand integrate the changes with consensus and node.\nAll the details might not be finalized, but the wire specification and the API should\nbe stable so that conway can be placed on a devnet for tool builders to start integrating with."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Plutus V3")," -\nIntegrate Plutus V3 into the ledger, including a new script context which supports DReps.")),(0,r.kt)("h3",{id:"more-details"},"More details"),(0,r.kt)("p",null,"This quarterly report was based off of the following fortnightly ones:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-01-05-ledger"},"2023-01-05")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-01-19-ledger"},"2023-01-19")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-02-02-ledger"},"2023-02-02")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-02-17-ledger"},"2023-02-17")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-03-03-ledger"},"2023-03-03")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-03-17-ledger"},"2023-03-17")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"2023-03-31-ledger"},"2023-03-31"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c60581f2.f0c60a3a.js b/assets/js/c60581f2.f0c60a3a.js new file mode 100644 index 00000000000..e981d7cf0c0 --- /dev/null +++ b/assets/js/c60581f2.f0c60a3a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97094],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(n),h=r,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||a;return n?o.createElement(m,s(s({ref:t},u),{},{components:n})):o.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:r,s[1]=i;for(var p=2;p<a;p++)s[p]=n[p];return o.createElement.apply(null,s)}return o.createElement.apply(null,n)}h.displayName="MDXCreateElement"},84718:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-02-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-02-08-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-consensus.md",source:"@site/blog/2023-02-08-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-02-08T00:00:00.000Z",formattedDate:"February 8, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.5,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-02-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-09-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-08-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3},{value:"Support",id:"support",level:3}],u={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"We continue refactoring the UTxO HD prototype while we wait for the system level\nbenchmarks. We have created a new repository that contains the ",(0,r.kt)("inlineCode",{parentName:"p"},"anti-diff"),"\npackages used in this prototype."),(0,r.kt)("p",null,"On the Genesis front, we are preparing another meeting with the researchers to\naudit the implementation design, and we continued working on basic tests and\nsimplifications."),(0,r.kt)("p",null,"During the past two weeks we also introduced two new tools. One for dumping CBOR\nencoded blocks to JSON, and another to serve a local immutable DB."),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,r.kt)("p",null,"We are in the process of refactoring the UTxO HD prototype, while we wait for\nthe system level benchmarks to confirm if the performance of the prototype is\nsatisfactory."),(0,r.kt)("p",null,"We also set up a repository for the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/anti-diffs"},(0,r.kt)("inlineCode",{parentName:"a"},"anti-diff"))," package, which\nrequired us to refactor the code, write documentation, and prepare a release to\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP"),"."),(0,r.kt)("h3",{id:"genesis"},"Genesis"),(0,r.kt)("p",null,"We worked on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4347"},"basic tests")," for the ",(0,r.kt)("em",{parentName:"p"},"Limit on Eagerness")," property of\nGenesis. We also introduced further robustness and simplifications in the\nGenesis Density governor. Finally, we developed a presentation to engage again\nwith the researchers on our Genesis implementation design."),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("p",null,"We are in the process of ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/6"},"polishing")," the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),"\ndocumentation site, which we will use a the entry point for Consensus related\ndocumentation. The first version will not be complete, but we plan on\nsystematically improving it."),(0,r.kt)("h3",{id:"support"},"Support"),(0,r.kt)("p",null,"We ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4335"},"added a tool")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-cardano-tools")," which allows\nto dump the Chain DB blocks or any given CBOR encoded blocks as JSON."),(0,r.kt)("p",null,"We also added ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4339"},"another tool")," that serves an existing immutable DB via\nBlockFetch and ChainSync. This tool can help in assisting our local benchmarking\nefforts (for instance Genesis' ChainSync jumping prototype)."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c6259fbb.fdd3fb9d.js b/assets/js/c6259fbb.fdd3fb9d.js new file mode 100644 index 00000000000..7ceef1e8420 --- /dev/null +++ b/assets/js/c6259fbb.fdd3fb9d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2506],{63415:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/8","page":8,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/7","nextPage":"/cardano-updates/tags/hydra/page/9","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/c63933b3.19137cb7.js b/assets/js/c63933b3.19137cb7.js new file mode 100644 index 00000000000..300be0da9fa --- /dev/null +++ b/assets/js/c63933b3.19137cb7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[11727],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>d});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function l(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?o(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function i(t,e){if(null==t)return{};var n,a,r=function(t,e){if(null==t)return{};var n,a,r={},o=Object.keys(t);for(a=0;a<o.length;a++)n=o[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a<o.length;a++)n=o[a],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var u=a.createContext({}),s=function(t){var e=a.useContext(u),n=e;return t&&(n="function"==typeof t?t(e):l(l({},e),t)),n},p=function(t){var e=s(t.components);return a.createElement(u.Provider,{value:e},t.children)},m="mdxType",c={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},h=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,o=t.originalType,u=t.parentName,p=i(t,["components","mdxType","originalType","parentName"]),m=s(n),h=r,d=m["".concat(u,".").concat(h)]||m[h]||c[h]||o;return n?a.createElement(d,l(l({ref:e},p),{},{components:n})):a.createElement(d,l({ref:e},p))}));function d(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=n.length,l=new Array(o);l[0]=h;var i={};for(var u in e)hasOwnProperty.call(e,u)&&(i[u]=e[u]);i.originalType=t,i[m]="string"==typeof t?t:r,l[1]=i;for(var s=2;s<o;s++)l[s]=n[s];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},27502:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>u,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-03-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-22-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-consensus.md",source:"@site/blog/2023-03-22-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-03-22T00:00:00.000Z",formattedDate:"March 22, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.63,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-03-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-23-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-22-node-cli-api"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low-level details",id:"low-level-details",level:2}],p={toc:s},m="wrapper";function c(t){let{components:e,...n}=t;return(0,r.kt)(m,(0,a.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This week the consensus team continued working on the refactoring of the UTxO HD\nprototype, and design and testing of Genesis. We also extracted the ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-sim"),"\npackage, which provides a file-system abstraction layer that can be used for\ntesting and simulation. This makes the Consensus code base smaller, while\nproviding a package that the community can reuse and contribute to. We also\nfixed a failing property test related to iterators. We are also working on\nmempool and VRF improvements."),(0,r.kt)("h2",{id:"low-level-details"},"Low-level details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Extraction of ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim")," code from ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-network"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4425"},"https://github.com/input-output-hk/ouroboros-network/pull/4425")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/1"},"https://github.com/input-output-hk/fs-sim/pull/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/2"},"https://github.com/input-output-hk/fs-sim/pull/2")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4460"},"https://github.com/input-output-hk/ouroboros-network/pull/4460")))),(0,r.kt)("li",{parentName:"ul"},"Smaller changes in ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim")," code (some required by ",(0,r.kt)("inlineCode",{parentName:"li"},"UTxO-HD"),"):",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/5"},"https://github.com/input-output-hk/fs-sim/pull/5")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/6"},"https://github.com/input-output-hk/fs-sim/pull/6")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/7"},"https://github.com/input-output-hk/fs-sim/pull/7")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fs-sim/pull/8"},"https://github.com/input-output-hk/fs-sim/pull/8")))),(0,r.kt)("li",{parentName:"ul"},"Released cardano-lmdb-simple-0.6.0.0",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/20"},"https://github.com/input-output-hk/lmdb-simple/pull/20")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/150"},"https://github.com/input-output-hk/cardano-haskell-packages/pull/150"))))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c6ae40c2.fcdab135.js b/assets/js/c6ae40c2.fcdab135.js new file mode 100644 index 00000000000..c2f5b86a4f4 --- /dev/null +++ b/assets/js/c6ae40c2.fcdab135.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17693],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=p(r),c=n,h=s["".concat(u,".").concat(c)]||s[c]||m[c]||l;return r?a.createElement(h,i(i({ref:t},d),{},{components:r})):a.createElement(h,i({ref:t},d))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,i=new Array(l);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[s]="string"==typeof e?e:n,i[1]=o;for(var p=2;p<l;p++)i[p]=r[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},68680:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"SRE Team Update",slug:"2023-01-20-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-01-20-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-sre.md",source:"@site/blog/2023-01-20-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:1.13,hasTruncateMarker:!1,authors:[{name:"Michael Fellinger",title:"SRE Team Lead",url:"https://github.com/manveru",imageURL:"https://github.com/manveru.png",key:"manveru"}],frontMatter:{title:"SRE Team Update",slug:"2023-01-20-sre",authors:"manveru",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-01-20-network"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-01-19-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cicero",id:"cicero",level:3},{value:"Tullia",id:"tullia",level:3},{value:"Bitte",id:"bitte",level:3},{value:"cardano-world",id:"cardano-world",level:3},{value:"bitte-world",id:"bitte-world",level:3},{value:"ci-world",id:"ci-world",level:3}],d={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing\nsupport for cardano-world."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cicero"},"Cicero"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fixed various race conditions around transformers."),(0,n.kt)("li",{parentName:"ul"},"Brought our CI up to date."),(0,n.kt)("li",{parentName:"ul"},"Migrated to the Nomad exec driver with Nix support for many actions."),(0,n.kt)("li",{parentName:"ul"},"Moved Nix builds to the Nomad clients for much better cache locality."),(0,n.kt)("li",{parentName:"ul"},"Ongoing work on vastly improving the action matching and evaluation speed."),(0,n.kt)("li",{parentName:"ul"})),(0,n.kt)("h3",{id:"tullia"},"Tullia"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Made it easier to support cloning from a PR's fork"),(0,n.kt)("li",{parentName:"ul"},"Update to latest std"),(0,n.kt)("li",{parentName:"ul"},"Add workaround for cgroup issue: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/hashicorp/nomad/issues/12877"},"nomad#12877")),(0,n.kt)("li",{parentName:"ul"},"github preset: add ",(0,n.kt)("inlineCode",{parentName:"li"},"github.ci.remote")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"(read|get)Repository")," functions"),(0,n.kt)("li",{parentName:"ul"},"Fix various issues around CUE handling")),(0,n.kt)("h3",{id:"bitte"},"Bitte"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Upgrade to NixOS 22.11"),(0,n.kt)("li",{parentName:"ul"},"Prototype usage of ",(0,n.kt)("a",{parentName:"li",href:"https://colmena.cli.rs"},"Colmena")," for deploys instead of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/serokell/deploy-rs"},"deploy-rs")),(0,n.kt)("li",{parentName:"ul"},"Finalized work on Equinix Metal support"),(0,n.kt)("li",{parentName:"ul"},"Prototype better secrets management with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/yaxitech/ragenix"},"ragenix")," instead of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/Mic92/sops-nix"},"sops-nix")),(0,n.kt)("li",{parentName:"ul"},"Improve CI and bring it up to date")),(0,n.kt)("h3",{id:"cardano-world"},"cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fixd various OOM issues on preview and preprod"),(0,n.kt)("li",{parentName:"ul"},"Rotated KES keys on preview and preprod"),(0,n.kt)("li",{parentName:"ul"},"Optimize mainnet db-sync to cope with higher load"),(0,n.kt)("li",{parentName:"ul"},"Fix an issue where PostgreSQL would fail after a reboot")),(0,n.kt)("h3",{id:"bitte-world"},"bitte-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated to NixOS 22.11")),(0,n.kt)("h3",{id:"ci-world"},"ci-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated to NixOS 22.11"),(0,n.kt)("li",{parentName:"ul"},"Added Equnix cluster"),(0,n.kt)("li",{parentName:"ul"},"Improve caching of Nix builds")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c6f90b29.8b77bc39.js b/assets/js/c6f90b29.8b77bc39.js new file mode 100644 index 00000000000..30e3844f462 --- /dev/null +++ b/assets/js/c6f90b29.8b77bc39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39080],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),u=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=u(e.components);return n.createElement(o.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,o=e.parentName,m=p(e,["components","mdxType","originalType","parentName"]),d=u(a),k=r,h=d["".concat(o,".").concat(k)]||d[k]||c[k]||l;return a?n.createElement(h,i(i({ref:t},m),{},{components:a})):n.createElement(h,i({ref:t},m))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=k;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[d]="string"==typeof e?e:r,i[1]=p;for(var u=2;u<l;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}k.displayName="MDXCreateElement"},9762:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>c,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const l={title:"Node API & CLI Team Update",slug:"2023-06-07-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},i="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-06-07-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-07-node-cli-api.md",source:"@site/blog/2023-06-07-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-06-07T00:00:00.000Z",formattedDate:"June 7, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.37,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-06-07-node-cli-api",tags:["cli-api"],authors:"carlos",hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-06-08-system-test"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-02-hydra"}},o={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],m={toc:u},d="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-06-07---2023-06-20"},"2023-06-07 - 2023-06-20"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completed cardano-cli migration to input-output-hk/cardano-cli"),(0,r.kt)("li",{parentName:"ul"},"cardano-cli ping now uses cardano-ping-0.2.0.5"),(0,r.kt)("li",{parentName:"ul"},"New queries on API:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryCurrentEpochState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryDebugLedgerState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryGenesisParameters")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryPoolDistribution")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryPoolState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryProtocolParameters")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryProtocolParametersUpdate")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryProtocolState")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakeAddresses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakeDistribution")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakePoolParameters")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryStakeSnapshot")))),(0,r.kt)("li",{parentName:"ul"},"Deprecate:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryPparams")))),(0,r.kt)("li",{parentName:"ul"},"Export query API as functions",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"genFeatureValueInEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"featureInShelleyBasedEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"isFeatureValue")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"valueOrDefault")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"asFeatureValue")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"asFeatureValueInShelleyBasedEra")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"queryEpoch")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"requireShelleyBasedEra")))),(0,r.kt)("li",{parentName:"ul"},"Restructure cardano-testnet (WIP)")),(0,r.kt)("hr",null),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5328"},"update network dependency and versions"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5326"},"Updated cardano-cli to use ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-ping-0.2.0.5"),"."))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5316"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli")," from CHaP"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5315"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5313"},"Updated cardano-cli ping command"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5311"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/30"},"Use cardano-ping-0.2.0.5"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/28"},"Deprecate ",(0,r.kt)("inlineCode",{parentName:"a"},"--protocol-params-file")," option of the ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction build")," command more thoroughly"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/25"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Api.Query.Expr")," module"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/24"},"Use simplified ",(0,r.kt)("inlineCode",{parentName:"a"},"queryStateForBalancedTx")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-cli/pull/20"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/59"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.5.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/58"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"requireShelleyBasedEra")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/57"},"New version cardano-api-8.5.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/56"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"queryEpoch")," function")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/55"},"New version 8.5.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/54"},"Error on ",(0,r.kt)("inlineCode",{parentName:"a"},"hlint")," warnings in CI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/53"},"Additional query expression functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/52"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.4.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/49"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.3.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/48"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.Api.Query.Expr")," module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/47"},"Simplify ",(0,r.kt)("inlineCode",{parentName:"a"},"queryStateForBalancedTx"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/46"},"Revert to use ",(0,r.kt)("inlineCode",{parentName:"a"},"testProperty")," now that it isn't deprecated anymore"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.1.1"},"cardano-node 8.1.1 release")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5328"},"update network dependency and versions"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5340"},"Add ability to retry tests with DISABLE_RETRIES=1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5339"},"Move golden files to proper location")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5336"},"Conway testnet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5335"},"Don't retry testnet when failed")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5321"},"Remove YAML filepath record from data Conf")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5315"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5311"},"Add ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5309"},"Remove duplicate --testnet-magic flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5307"},"Restructure cardano testnet "))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/18"},"Fix Windows CI issues"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c7337d4e.6cea3bb1.js b/assets/js/c7337d4e.6cea3bb1.js new file mode 100644 index 00000000000..ea9859704e3 --- /dev/null +++ b/assets/js/c7337d4e.6cea3bb1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91151],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=u(n),h=r,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||o;return n?a.createElement(m,s(s({ref:t},p),{},{components:n})):a.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:r,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},82469:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Quarterly Update",slug:"2023-04-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/quarterly/2023-04-25-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-04-25-consensus.md",source:"@site/quarterly/2023-04-25-consensus.md",title:"Consensus Quarterly Update",description:"Consensus Quarterly Update",date:"2023-04-25T00:00:00.000Z",formattedDate:"April 25, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:2.3,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Quarterly Update",slug:"2023-04-25-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"SRE Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-sre"},nextItem:{title:"Network Q1 2023 Update",permalink:"/cardano-updates/quarterly/2023-04-04-network"}},l={authorsImageUrls:[void 0]},u=[{value:"Consensus Quarterly Update",id:"consensus-quarterly-update",level:2},{value:"2023-01 - 2023-03",id:"2023-01---2023-03",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Support",id:"support",level:4},{value:"Conway era",id:"conway-era",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4},{value:"Support",id:"support-1",level:4},{value:"Tech debt",id:"tech-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration-1",level:4}],p={toc:u},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"consensus-quarterly-update"},"Consensus Quarterly Update"),(0,r.kt)("h2",{id:"2023-01---2023-03"},"2023-01 - 2023-03"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We finished the testing activities for the prototype, which involved adding\nnew tests, and fixing and enabling temporarily disabled tests."),(0,r.kt)("li",{parentName:"ul"},"We spent a substantial amount of effort refactoring and cleaning the\nprototype."),(0,r.kt)("li",{parentName:"ul"},"We audited the UTxO HD prototype to make sure it can accommodate the migration\nof other tables (eg stake-keys registration) from memory to disk. The result\nof the audit was positive."),(0,r.kt)("li",{parentName:"ul"},"We ran ad-hoc benchmarks for reading keys and flushing values to disk. No\nunexpected costs found."),(0,r.kt)("li",{parentName:"ul"},"We ran the first system level benchmarks. The performance regressions reported\nwere due to an unrealistic snapshotting rate. We need to re-run them again\nafter we design a more fine grained locking mechanism.")),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We elaborated a roadmap of the remaining work for Genesis."),(0,r.kt)("li",{parentName:"ul"},"We presented the design to the IOG Researchers and PNSol on February 20. The\ndesign was well received. We updated the Genesis design with the researcher's\nfeedback.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We plugged the new DoS vector identified during the aforementioned\npresentation."))),(0,r.kt)("li",{parentName:"ul"},"We developed a generator for adversarial leader schedules that satisfy key\nOuroboros properties, which will be used to test the Genesis design.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The generator enables use of smaller Ouroboros parameters, which makes\nextrema more likely and counterxamples easier interpret."))),(0,r.kt)("li",{parentName:"ul"},"We wrote up the latest design iteration."),(0,r.kt)("li",{parentName:"ul"},"We continued benchmarking the Chain Sync Jumping prototype. In particular:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We debugged the prototype's performance regression, and unmasked the\nactual cause by patching our initial theory (bad queuing behavior)"),(0,r.kt)("li",{parentName:"ul"},"We identified and validated the actual cause (a pathological case in\nBlockFetch tiebreaker).")))),(0,r.kt)("h4",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother\nto serve a local immutable DB.")),(0,r.kt)("h4",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We integrated the Conway era into consensus.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We fixed a bug with followers, which was discovered by property tests."),(0,r.kt)("li",{parentName:"ul"},"We developed a DSL for specifying and running ChainDB test cases."),(0,r.kt)("li",{parentName:"ul"},"We fixed failing tests with iterators."),(0,r.kt)("li",{parentName:"ul"},"We created micro-benchmarks for adding transactions to the mempool.")),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We released a new technical documentation site for consensus."),(0,r.kt)("li",{parentName:"ul"},"We factored out several packages to external repositories. Some of this work\noriginated in the UTxO HD workstream.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/28"},"https://github.com/input-output-hk/ouroboros-consensus/issues/28"))),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/33"},"https://github.com/input-output-hk/ouroboros-consensus/issues/33")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/32"},"https://github.com/input-output-hk/ouroboros-consensus/issues/32")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/31"},"https://github.com/input-output-hk/ouroboros-consensus/issues/31"))),(0,r.kt)("h4",{id:"support-1"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Design Consensus side of hardfork-enactment in the Voltaire phase\n(",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4180"},"#4180"),")."),(0,r.kt)("li",{parentName:"ul"},"Estimate the number of file descriptors Consensus needs\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/20"},"#20"),".")),(0,r.kt)("h4",{id:"tech-debt"},"Tech debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define\nfor consensus. Pick one and implement benchmarks for it.")),(0,r.kt)("h4",{id:"fostering-collaboration-1"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Onboard a new team member.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c7e43a05.c308de8a.js b/assets/js/c7e43a05.c308de8a.js new file mode 100644 index 00000000000..effc131892d --- /dev/null +++ b/assets/js/c7e43a05.c308de8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65956],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),c=n,d=m["".concat(p,".").concat(c)]||m[c]||h[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<a;s++)o[s]=r[s];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},75265:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-10-25-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-25-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-25-mithril.md",source:"@site/blog/2023-10-25-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-25T00:00:00.000Z",formattedDate:"October 25, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.125,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-25-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-27-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-24-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},m="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team released a new distribution ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2342.0"},(0,n.kt)("inlineCode",{parentName:"a"},"2342.0")),". This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes."),(0,n.kt)("p",null,"They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files. "),(0,n.kt)("p",null,"Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the ",(0,n.kt)("inlineCode",{parentName:"p"},"release-mainnet")," aggregator, and enhanced the Mithril explorer UI."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P Networking - Proof of Concept")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate a library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1141"},"#1141")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano UTxO set PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"ProtocolKeyRegistration")," creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1187"},"#1187")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Fix ",(0,n.kt)("inlineCode",{parentName:"strong"},"devnet")," Mithril Docker images")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1272"},"#1272")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Build ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-common")," and ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," in WASM PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1284"},"#1284")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Display a summary of signers before the full list in explorer")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1133"},"#1133")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Add certificates list in explorer")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1184"},"#1184")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"CoreVerifier")," setup does not compute ",(0,n.kt)("inlineCode",{parentName:"strong"},"total_stake")," correctly")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1306"},"#1306"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c831575d.33f5874b.js b/assets/js/c831575d.33f5874b.js new file mode 100644 index 00000000000..9e38a5cff40 --- /dev/null +++ b/assets/js/c831575d.33f5874b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42677],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},20519:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-02-21-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-02-21-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-21-db-sync.md",source:"@site/blog/2023-02-21-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-02-21T00:00:00.000Z",formattedDate:"February 21, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.75,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-02-21-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-22-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-17-crypto"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The db-sync team created a new tag ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.2")," which is ready to release.\nWe also investigated and had the first working UTxO-HD integration which is one\nof the potential future risks for db-sync."),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Integrated the UTxO-HD feauture branch in ",(0,a.kt)("inlineCode",{parentName:"li"},"kderme/utxo-hd-1"),". This doesn't\nuse the full on disk storage but keeps things in memory and the plan is to keep\nit this way for the first iteration. The integration still has some performance\nissues which we investigate"),(0,a.kt)("li",{parentName:"ul"},"Created tag ",(0,a.kt)("inlineCode",{parentName:"li"},"13.1.0.2")," which upgrades the dependencies of db-sync"),(0,a.kt)("li",{parentName:"ul"},"Fixed an issue related to errors appearing in SMASH\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1353"},"#1353")),(0,a.kt)("li",{parentName:"ul"},"Continued with ghc-9.2 integration\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1339"},"#1339")),(0,a.kt)("li",{parentName:"ul"},"Worked on an new fixing procedure for\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1348"},"#1348"),".\nWe try to make these procedures work also on older schema version, without the\nneed to migrate to newer schema, which can be very useful for fixing existing\nsnapshots.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c90fb258.9c89e222.js b/assets/js/c90fb258.9c89e222.js new file mode 100644 index 00000000000..28fc9aefc8b --- /dev/null +++ b/assets/js/c90fb258.9c89e222.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26584],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),s=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=s(n),m=r,h=p["".concat(u,".").concat(m)]||p[m]||d[m]||i;return n?a.createElement(h,o(o({ref:t},c),{},{components:n})):a.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},44389:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const i={title:"DB-sync Team Update",slug:"2023-06-08-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-08-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-db-sync.md",source:"@site/blog/2023-06-08-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.745,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-06-08-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-09-hydra"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-08-goedel"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],c={toc:s},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"We've made progress in all high level objectives"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"CIP-1694 integration design"),(0,r.kt)("li",{parentName:"ul"},"UTxO-HD integration proof of concept"),(0,r.kt)("li",{parentName:"ul"},"schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2"),(0,r.kt)("li",{parentName:"ul"},"A new hire will help us with devx issues.")),(0,r.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We have an initial design for the Conway integration in db-sync"),(0,r.kt)("li",{parentName:"ul"},"The initial UTxO-HD integration resulted in a requested feuture that\nthe consensus team is working on\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/88"},"#88"),"."),(0,r.kt)("li",{parentName:"ul"},"Added two optional migrations that speed up querying UTxO\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1416"},"#1416")),(0,r.kt)("li",{parentName:"ul"},"Work on improving the above feauture by adding tests and fixing tech debt\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1429"},"#1429"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1419"},"#1419")),(0,r.kt)("li",{parentName:"ul"},"Fixed issue with ada_pots being wrong\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/1ad4521a5601e8e98dc06bba2826d6b2f9b4fcf4"},"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/1ad4521a5601e8e98dc06bba2826d6b2f9b4fcf4")),(0,r.kt)("li",{parentName:"ul"},"Added a process which fixes in place scripts with wrong CBOR serialisation.\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/8792f72e2485b320de26c02dacc4d504d377ba17"},"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/8792f72e2485b320de26c02dacc4d504d377ba17")),(0,r.kt)("li",{parentName:"ul"},"Prepared a tag ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/releases"},(0,r.kt)("inlineCode",{parentName:"a"},"13.1.1.2")),"\nwhich is tested and ready to release. It contains many of the above.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c9210b26.f9c92b06.js b/assets/js/c9210b26.f9c92b06.js new file mode 100644 index 00000000000..d22e5b356d2 --- /dev/null +++ b/assets/js/c9210b26.f9c92b06.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97959],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>d});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,r,a=function(e,t){if(null==e)return{};var i,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(i),c=a,d=s["".concat(p,".").concat(c)]||s[c]||m[c]||n;return i?r.createElement(d,o(o({ref:t},h),{},{components:i})):r.createElement(d,o({ref:t},h))}));function d(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,i)}c.displayName="MDXCreateElement"},31535:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-05-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-04-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-04-mithril.md",source:"@site/blog/2023-05-04-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-05-04T00:00:00.000Z",formattedDate:"May 4, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.56,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-05-04-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-05-node-cli-api"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-03-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(s,(0,r.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.7"),"."),(0,a.kt)("p",null,"Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implements generic signing/verification of entity services ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the ",(0,a.kt)("inlineCode",{parentName:"li"},"Certifier")," service in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/850"},"#850")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the signable builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Mithril Stake Distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/851"},"#851")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the artifact builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Mithril Stake Distribution")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/870"},"#870")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the signable builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Full Immutables Snapshot")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/852"},"#852")),(0,a.kt)("li",{parentName:"ul"},"Completed the implementation of the artifact builder for the ",(0,a.kt)("inlineCode",{parentName:"li"},"Full Immutables Snapshot")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/871"},"#871")),(0,a.kt)("li",{parentName:"ul"},"Completed the adaptation of the aggregator runtime to use the signable builder service ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/853"},"#853")),(0,a.kt)("li",{parentName:"ul"},"Worked on the adaptation of the signer runtime to use the signable builder service ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/854"},"#854")),(0,a.kt)("li",{parentName:"ul"},"Completed the definition of the entity service interface for verification/restoration ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/868"},"#868")),(0,a.kt)("li",{parentName:"ul"},"Completed the refactoring of the ",(0,a.kt)("inlineCode",{parentName:"li"},"OpenMessage")," type ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/878"},"#878")))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic that simplifies the multi-signer in the aggregator ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/398"},"#398"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the extraction of the single signature registration from the multi-signer ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/643"},"#643")))),(0,a.kt)("li",{parentName:"ul"},"Completed the upgrade of the Cardano node to version ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35.7")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/881"},"#881")),(0,a.kt)("li",{parentName:"ul"},"Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/873"},"#873"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c94f306d.475fec2b.js b/assets/js/c94f306d.475fec2b.js new file mode 100644 index 00000000000..212303b0f64 --- /dev/null +++ b/assets/js/c94f306d.475fec2b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[98727],{29127:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/ca3b5bc8.d750be9f.js b/assets/js/ca3b5bc8.d750be9f.js new file mode 100644 index 00000000000..0c41a151493 --- /dev/null +++ b/assets/js/ca3b5bc8.d750be9f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96140],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?a.createElement(h,s(s({ref:t},c),{},{components:n})):a.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:r,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},92861:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-08-09-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-08-09-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-09-consensus.md",source:"@site/blog/2023-08-09-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-08-09T00:00:00.000Z",formattedDate:"August 9, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.46,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-08-09-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-10-mithril"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-08-04-crypto"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Genesis",id:"genesis",level:2},{value:"Fostering collaboration",id:"fostering-collaboration",level:2},{value:"Support",id:"support",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-sim")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"fs-api"),", and released ",(0,r.kt)("inlineCode",{parentName:"p"},"strict-checked-vars"),"."),(0,r.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Rebased UTxO-HD on top of node 8.2 (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/256"},"issue"),")"),(0,r.kt)("li",{parentName:"ul"},"Address new ",(0,r.kt)("inlineCode",{parentName:"li"},"Maybe")," translations for UTxOs in Conway 1.6. (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/261"},"PR"),")."),(0,r.kt)("li",{parentName:"ul"},"Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/compare/96e92351ad35cfce1b0c2c47c4ed05792bf81fad..90d4c93af0846c9b027d530c042180c51aeee4fd"},"Fixed")," an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully."),(0,r.kt)("li",{parentName:"ul"},"Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running ",(0,r.kt)("inlineCode",{parentName:"li"},"QueryUTxOByAddress")," (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/273"},"PR"),")."),(0,r.kt)("li",{parentName:"ul"},"Measured the speed of ",(0,r.kt)("inlineCode",{parentName:"li"},"QueryUTxOByAddress")," under different ",(0,r.kt)("inlineCode",{parentName:"li"},"queryBatchSize")," values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution."),(0,r.kt)("li",{parentName:"ul"},"Refactored and implemented ledgertable-related classes for the general ",(0,r.kt)("inlineCode",{parentName:"li"},"HardforkBlock"),".")),(0,r.kt)("h2",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Frisby")," and ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/amesgen"},"Esgen")," continue to engage with the Researchers on grinding against the Genesis design.")),(0,r.kt)("h2",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Drafted a document explaining versioning of local state queries ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/273"},"#273"),".")),(0,r.kt)("h2",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Frisby")," is the release engineer this cycle."),(0,r.kt)("li",{parentName:"ul"},"Successfully created work-in-progress ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-api")," commits that integrate the 2023 Aug 7 tip of ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-ledger"),". This will require a release of ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus"),", which hasn't happened yet.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ca6829cb.00bb58af.js b/assets/js/ca6829cb.00bb58af.js new file mode 100644 index 00000000000..e9d84995645 --- /dev/null +++ b/assets/js/ca6829cb.00bb58af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[41153],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(a),c=n,m=d["".concat(p,".").concat(c)]||d[c]||h[c]||o;return a?r.createElement(m,i(i({ref:t},u),{},{components:a})):r.createElement(m,i({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},14193:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-10-20-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-10-20-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-20-hydra.md",source:"@site/blog/2023-10-20-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-20T00:00:00.000Z",formattedDate:"October 20, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.84,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-20-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-24-node-cli-api"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-18-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:s},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023."),(0,n.kt)("p",null,"In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON.\nThis improvement offers users greater flexibility and ease of interaction with the API."),(0,n.kt)("p",null,"Finally, the team has followed up on the TUI brick upgrade to version 1.10.\nThis effort has resulted in addressing minor details and enhancing the overall user experience with the TUI."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Prepare presentation and workshop for Cardano Summit."),(0,n.kt)("li",{parentName:"ul"},"More TUI fixes and improvements.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1127"},"#1127")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1120"},"#1120")))),(0,n.kt)("li",{parentName:"ul"},"Upgrade GHC from 9.2.8 -> 9.6.2 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1105"},"#1105")),(0,n.kt)("li",{parentName:"ul"},"Solved user issue related to submitting transactions in cbor format ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1111"},"#1111"),"."),(0,n.kt)("li",{parentName:"ul"},"Fix hydraw connection issue making it more stable ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1121"},"#1121"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work on hydra-poll dApp for Cardano summit."),(0,n.kt)("li",{parentName:"ul"},"Start the work on packaging hydra-node and related services.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/caab1e2e.790da899.js b/assets/js/caab1e2e.790da899.js new file mode 100644 index 00000000000..9e73cb3d86f --- /dev/null +++ b/assets/js/caab1e2e.790da899.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93570],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(n),d=a,f=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return n?r.createElement(f,l(l({ref:t},s),{},{components:n})):r.createElement(f,l({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var c=2;c<o;c++)l[c]=n[c];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},74145:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-07-20-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-20-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-20-goedel.md",source:"@site/blog/2023-07-20-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-07-20T00:00:00.000Z",formattedDate:"July 20, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.47,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-07-20-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-21-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-18-node-cli-api"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is working on formalising mini protocols, the performance\nmodelling prototype and also finishing off their ICE papers."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Formalization of the chain synchronization mini-protocol in the\nthorn calculus")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Final pre-publication steps for ICE 2023 papers")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Developing approach for specification and verification of\nmini-protocols")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Started work on porting the DeltaQ framework to a new, more concrete\nbackend based on piecewise-polynomials"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cb7a1a0b.fc91c3ee.js b/assets/js/cb7a1a0b.fc91c3ee.js new file mode 100644 index 00000000000..7c4c1d7a3cf --- /dev/null +++ b/assets/js/cb7a1a0b.fc91c3ee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90934],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function p(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),s=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(r),d=n,h=c["".concat(l,".").concat(d)]||c[d]||m[d]||a;return r?o.createElement(h,i(i({ref:t},u),{},{components:r})):o.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=d;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:n,i[1]=p;for(var s=2;s<a;s++)i[s]=r[s];return o.createElement.apply(null,i)}return o.createElement.apply(null,r)}d.displayName="MDXCreateElement"},62094:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>p,toc:()=>s});var o=r(87462),n=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-11-16-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-11-16-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-16-network.md",source:"@site/blog/2023-11-16-network.md",title:"Network Team Update",description:"High-level overview of sprint 48",date:"2023-11-16T00:00:00.000Z",formattedDate:"November 16, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.545,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-11-16-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-11-17-performance-and-tracing"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-15-consensus"}},l={authorsImageUrls:[void 0]},s=[{value:"High-level overview of sprint 48",id:"high-level-overview-of-sprint-48",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"IOClasses / IOSim",id:"ioclasses--iosim",level:3},{value:"Tech debt",id:"tech-debt",level:3}],u={toc:s},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,o.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-48"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+48%22"},"sprint 48")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We continued reviewing bootstrap peers, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4555"},"ouroboros-network#4555"),"."),(0,n.kt)("h3",{id:"ioclasses--iosim"},"IOClasses / IOSim"),(0,n.kt)("p",null,"We prepared slides for a Haskell meetup were we presented a talk on ",(0,n.kt)("inlineCode",{parentName:"p"},"IOSimPOR"),".\nThe recording will be availble on ",(0,n.kt)("inlineCode",{parentName:"p"},"YouTube"),"."),(0,n.kt)("p",null,"We also used the opportunity to do some refactoring of the ",(0,n.kt)("inlineCode",{parentName:"p"},"IOSim")," code base: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/117"},"io-sim#117"),".\nWe released ",(0,n.kt)("inlineCode",{parentName:"p"},"io-sim-1.3.0.0")," on ",(0,n.kt)("inlineCode",{parentName:"p"},"Hackage"),": ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/119"},"io-sim#119"),"."),(0,n.kt)("p",null,"We also added ",(0,n.kt)("inlineCode",{parentName:"p"},"forkFinally")," to ",(0,n.kt)("inlineCode",{parentName:"p"},"MonadFork")," (not included in ",(0,n.kt)("inlineCode",{parentName:"p"},"1.3.0.0")," release): ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/123"},"io-sim#123"),"."),(0,n.kt)("h3",{id:"tech-debt"},"Tech debt"),(0,n.kt)("p",null,"We refactored ",(0,n.kt)("inlineCode",{parentName:"p"},"Resource")," used by the DNS subsystem: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4707"},"ouroboros-network#4707"),".\nWe continued reviewing the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4625"},"ouroboros-network#4625")," PR, which refactors\n",(0,n.kt)("inlineCode",{parentName:"p"},"RootPeersDNS")," module."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cc267639.9995a73a.js b/assets/js/cc267639.9995a73a.js new file mode 100644 index 00000000000..9fe118f023e --- /dev/null +++ b/assets/js/cc267639.9995a73a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[81214],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),p=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(i.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,i=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=p(r),c=a,y=u["".concat(i,".").concat(c)]||u[c]||d[c]||s;return r?n.createElement(y,o(o({ref:t},m),{},{components:r})):n.createElement(y,o({ref:t},m))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=c;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<s;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}c.displayName="MDXCreateElement"},27582:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const s={title:"System Test Team Update",slug:"2023-01-13-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-13-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-system-test.md",source:"@site/blog/2023-01-13-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.91,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"System Test Team Update",slug:"2023-01-13-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2023-01-13-release"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-01-12-mithril"}},i={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"Node:",id:"node",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],m={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the ",(0,a.kt)("em",{parentName:"p"},"P2P Single\nRelay")," functionality."),(0,a.kt)("p",null,"We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"extended the ",(0,a.kt)("em",{parentName:"li"},"cardano-node-tests")," with the ability for anybody to fork the repo and ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/readme.html"},"run all our System Tests on GitHub Actions")),(0,a.kt)("li",{parentName:"ul"},"added 2 new nightly pipelines - nightly-mixed and nightly-p2p - ",(0,a.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/nightly_system_tests.html"},"details here")),(0,a.kt)("li",{parentName:"ul"},"some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;")),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"}," === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) ===\n to\n === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===")),(0,a.kt)("h3",{id:"node"},"Node:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled"),(0,a.kt)("li",{parentName:"ul"},"started the preparations for testing the next tag - ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node-tests/blob/tag_test_1.35.5_rc1/src_docs/source/test_results/node/tag_1_35_5_rc1.rst"},"details here"))),(0,a.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"some improvements on db-sync sync tests")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cc30e037.47fc6eda.js b/assets/js/cc30e037.47fc6eda.js new file mode 100644 index 00000000000..b61754a3050 --- /dev/null +++ b/assets/js/cc30e037.47fc6eda.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31421],{9353:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/cc5c2602.db9902d7.js b/assets/js/cc5c2602.db9902d7.js new file mode 100644 index 00000000000..de58efc41a3 --- /dev/null +++ b/assets/js/cc5c2602.db9902d7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78761],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(n),c=o,k=d["".concat(s,".").concat(c)]||d[c]||m[c]||i;return n?a.createElement(k,r(r({ref:t},p),{},{components:n})):a.createElement(k,r({ref:t},p))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,r[1]=l;for(var u=2;u<i;u++)r[u]=n[u];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},54230:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var a=n(87462),o=(n(67294),n(3905));const i={title:"Network Quarterly Update",slug:"2023-01-13-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},r=void 0,l={permalink:"/cardano-updates/quarterly/2023-01-13-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-13-network.md",source:"@site/quarterly/2023-01-13-network.md",title:"Network Quarterly Update",description:"Network Quarterly Update",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:4.125,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Quarterly Update",slug:"2023-01-13-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-18-consensus"},nextItem:{title:"Open-Source Update",permalink:"/cardano-updates/quarterly/2023-01-13-open-source"}},s={authorsImageUrls:[void 0]},u=[{value:"Network Quarterly Update",id:"network-quarterly-update",level:2},{value:"2022-11 - 2023-01",id:"2022-11---2023-01",level:2},{value:"Summary",id:"summary",level:3},{value:"Next steps",id:"next-steps",level:3},{value:"Risks",id:"risks",level:3},{value:"Detailed log",id:"detailed-log",level:3},{value:"Contributions to Ouroboros-Network",id:"contributions-to-ouroboros-network",level:4},{value:"Contributions to Cardano-Node",id:"contributions-to-cardano-node",level:4},{value:"Contributions to IOSim",id:"contributions-to-iosim",level:4}],p={toc:u},d="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"network-quarterly-update"},"Network Quarterly Update"),(0,o.kt)("h2",{id:"2022-11---2023-01"},"2022-11 - 2023-01"),(0,o.kt)("h3",{id:"summary"},"Summary"),(0,o.kt)("p",null,"The primary goal of the networking team was to focus on the single relay\nrelease of P2P. We fixed a number of small late bugs, and concluded QA\n& performance testing. Although it was discovered a regression in performance\nof block production when P2P is enabled, relaying with P2P performs better\ncomparing to a non p2p. We concluded that this is not a blocker for the Single\nRelay Release which is planned shortly."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"Peer sharing")," has gone through review and final review is\njust being done right now. After merging it will still be disabled (hidden\nbehind a flag) as it's not safe without eclipse evasion. We started\nimplementing light peer sharing (i.e. include inbound peers into known peer set\nof the outbound governor)."),(0,o.kt)("p",null,"We started a detailed eclipse evasion design, it will continue in the next\nquarter."),(0,o.kt)("p",null,"We also made a major revision of package structure of the network packages. We\nended up with a very clean dependency graph (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4155"},"pr #4155"),")."),(0,o.kt)("p",null,"Armando Santos delivered a talk at the ",(0,o.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/armando-details.html"},"ODOPIS 2022")," conference on principles\nof distributed systems in Brussels. The slides are available ",(0,o.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/slides/OPODIS2022-slides-Santos.pdf"},"here"),"."),(0,o.kt)("p",null,"Neil Davies gave an invited seminar on ",(0,o.kt)("inlineCode",{parentName:"p"},"DeltaQ")," at Universit\xe9 Catholique de\nLouvain."),(0,o.kt)("p",null,"We also found and fixed a few of bugs:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"a bug in keep alive mini-protocol which resulted in warm to cold transitions\nto be always executed through a timeout path rather than do a clean demotion\n(","[pr #4168]",").")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"fixed an assetion failure in the outbound governor (",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177"),") "))),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"we fixed DNS test failure ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4191"},"issue #4191"))),(0,o.kt)("h3",{id:"next-steps"},"Next steps"),(0,o.kt)("p",null,"We will work towards the next release of P2P for block producer nodes. This includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"analysing performance regression for BP nodes when using P2P"),(0,o.kt)("li",{parentName:"ul"},"finish the work on controlling the block forger through node kernel (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3800"},"pr #3800"),")"),(0,o.kt)("li",{parentName:"ul"},"address ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3907"},"issue #3907")," and write a script to analyse deployment of P2P relays")),(0,o.kt)("p",null,"We would like also to push forward eclipse evasion. Although most of the work\nhas be done already the release of ",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim")," on ",(0,o.kt)("inlineCode",{parentName:"p"},"Hackage")," will happen in the\nnext quarter."),(0,o.kt)("p",null,"We would also like to address ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4244"},"chain-sync timeout issue")," recently\ndiagnosed by Karl Knutsson."),(0,o.kt)("p",null,"If time permits we would also like to address some technical debt, especially:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3387"},"enable nothunk in diffusion tests")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4085"},"refactor diffusion testnet simulation"))),(0,o.kt)("h3",{id:"risks"},"Risks"),(0,o.kt)("p",null,"The performance regression for block producer with P2P needs to be investigated\nin the near future. This is blocker for the release of P2P on BP nodes."),(0,o.kt)("h3",{id:"detailed-log"},"Detailed log"),(0,o.kt)("h4",{id:"contributions-to-ouroboros-network"},"Contributions to Ouroboros-Network"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We added ",(0,o.kt)("inlineCode",{parentName:"li"},"TraceDemoteLocalAsynchronous"),", which enables notification of critical issues for SPOs"),(0,o.kt)("li",{parentName:"ul"},"We fixed ",(0,o.kt)("inlineCode",{parentName:"li"},"cardano-ping")," compatibility with ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToNodeV_10")," (P2P, ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4165"},"pr #4165"),")"),(0,o.kt)("li",{parentName:"ul"},"We fixed a bug in demotion peers to cold which affected P2P nodes (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4170/commits/61058aa5c28a144d723aae183d1745552d757334"},"commit-61058aa5c2"),")"),(0,o.kt)("li",{parentName:"ul"},"Karl Knutsson enhanced ",(0,o.kt)("inlineCode",{parentName:"li"},"SendFetchRequest")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4170/commits/bb1c3dddeea78949f531c144bb4f2669eddf7f47"},"commit-bb1c3dddee"),"), open-source contribution)"),(0,o.kt)("li",{parentName:"ul"},"We turned ",(0,o.kt)("inlineCode",{parentName:"li"},"SizeInBytes")," into a newtype."),(0,o.kt)("li",{parentName:"ul"},"We extended ",(0,o.kt)("inlineCode",{parentName:"li"},"CONTRIBUTING.md"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"README.md"),", added ",(0,o.kt)("inlineCode",{parentName:"li"},"CODE_OF_CONDUCT"),"."),(0,o.kt)("li",{parentName:"ul"},"We fixed DNS test failure ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4191"},"issue #4191")),(0,o.kt)("li",{parentName:"ul"},"We fixed a simulation bug found in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4258"},"issue #4258")),(0,o.kt)("li",{parentName:"ul"},"[pr #4168]"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177"))),(0,o.kt)("h4",{id:"contributions-to-cardano-node"},"Contributions to Cardano-Node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We maintained the Single Relay Release ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4612"},"pr #4612"),", (e.g. fixing CI issues,\nRebasing it when necessary, publishing packages to Cardano Haskell Packages);"),(0,o.kt)("li",{parentName:"ul"},"We enhanced ",(0,o.kt)("inlineCode",{parentName:"li"},"JSON")," serialisation / deserialisation of ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToNodeVersion")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToClientVersion"),";")),(0,o.kt)("h4",{id:"contributions-to-iosim"},"Contributions to IOSim"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"We started to use Cardano Haskell Packages for ",(0,o.kt)("inlineCode",{parentName:"li"},"IOSim")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/48"},"pr #48"),")"),(0,o.kt)("li",{parentName:"ul"},"We updated change log files"),(0,o.kt)("li",{parentName:"ul"},"We added support of ",(0,o.kt)("inlineCode",{parentName:"li"},"ghc-9.4")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/50"},"pr #50"),")")),(0,o.kt)("p",null,"We also addressed the following issues in ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"pr #57")," in order to prepare the package for publication on Hackage:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"refactored ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," timers API (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/issues/46"},"issue #46"),");"),(0,o.kt)("li",{parentName:"ul"},"created a new package ",(0,o.kt)("inlineCode",{parentName:"li"},"si-timers")," which exposes an interface using SI units\nand is safe on 32-bit systems (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/issues/59"},"issue #59"),");"),(0,o.kt)("li",{parentName:"ul"},"added monad transformers instances for classes defined in ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/issues/58"},"issue #58"),");"),(0,o.kt)("li",{parentName:"ul"},"created ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes-mtl")," package which includes (experimental) instances for monad transformers;"),(0,o.kt)("li",{parentName:"ul"},"provide ",(0,o.kt)("inlineCode",{parentName:"li"},"MonadMonotonicTimeNSec")," in ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"MonadMonotonicTime")," in ",(0,o.kt)("inlineCode",{parentName:"li"},"si-timers")," (so that ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes")," follow the ",(0,o.kt)("inlineCode",{parentName:"li"},"base")," package);"),(0,o.kt)("li",{parentName:"ul"},"added ",(0,o.kt)("inlineCode",{parentName:"li"},"registerCancellableDelay")," in ",(0,o.kt)("inlineCode",{parentName:"li"},"si-timers")," (which allowed us to hide fancy timer api and clean ",(0,o.kt)("inlineCode",{parentName:"li"},"io-classes"),")"),(0,o.kt)("li",{parentName:"ul"},"added support for ",(0,o.kt)("inlineCode",{parentName:"li"},"js_HOST_ARCH")," (the new GHC JS backend)")),(0,o.kt)("p",null,"Note the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"pr #57")," contains almost 40 commits, and was a major step forward for\n",(0,o.kt)("inlineCode",{parentName:"p"},"io-sim")," ecosystem. We also prepared a draft ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4281"},"pr #4281")," which updates\n",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"."),(0,o.kt)("p",null,"Other changes for ",(0,o.kt)("inlineCode",{parentName:"p"},"1.0.0.0")," release on Hackage:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Refactored test suite (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/47"},"pr #47"),")"),(0,o.kt)("li",{parentName:"ul"},"Updated documentation, cabal files, ",(0,o.kt)("inlineCode",{parentName:"li"},"CONTRIBUTING"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"SECURITY")," documents, etc in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/60"},"pr #60"),", currently under review.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccb7a847.7e3751a5.js b/assets/js/ccb7a847.7e3751a5.js new file mode 100644 index 00000000000..602c2b5a660 --- /dev/null +++ b/assets/js/ccb7a847.7e3751a5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22469],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),d=o,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||a;return n?r.createElement(h,s(s({ref:t},p),{},{components:n})):r.createElement(h,s({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:o,s[1]=i;for(var l=2;l<a;l++)s[l]=n[l];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},17352:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-11-01-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-11-01-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-01-consensus.md",source:"@site/blog/2023-11-01-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-11-01T00:00:00.000Z",formattedDate:"November 1, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.44,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-11-01-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-08-mithril"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-01-mithril"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2}],p={toc:l},c="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"This week the Consensus team made progress on two fronts: the question of ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/422"},"survivable eclipse duration"),", which is part of our work ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/427"},"supporting Genesis delivery"),", and how to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4251"},"improve the handling of blocks from the future"),".\nRegarding the UTxO-HD branch, we managed to run a node with ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"legacy blocks"),", which is syncing with mainnet, up to including Alonzo.\nWe also ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/465#issuecomment-1788685122"},"investigated")," a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.66cad8e9.js b/assets/js/ccc49370.66cad8e9.js new file mode 100644 index 00000000000..45fd6b4717b --- /dev/null +++ b/assets/js/ccc49370.66cad8e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46103],{65203:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var a=n(67294),l=n(86010),r=n(1944),o=n(35281),i=n(9460),c=n(39058),s=n(30390),m=n(87462),d=n(95999),u=n(32244);function g(e){const{nextItem:t,prevItem:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,d.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},n&&a.createElement(u.Z,(0,m.Z)({},n,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")})),t&&a.createElement(u.Z,(0,m.Z)({},t,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post"),isNext:!0})))}function f(){const{assets:e,metadata:t}=(0,i.C)(),{title:n,description:l,date:o,tags:c,authors:s,frontMatter:m}=t,{keywords:d}=m,u=e.image??m.image;return a.createElement(r.d,{title:n,description:l,keywords:d,image:u},a.createElement("meta",{property:"og:type",content:"article"}),a.createElement("meta",{property:"article:published_time",content:o}),s.some((e=>e.url))&&a.createElement("meta",{property:"article:author",content:s.map((e=>e.url)).filter(Boolean).join(",")}),c.length>0&&a.createElement("meta",{property:"article:tag",content:c.map((e=>e.label)).join(",")}))}var v=n(39407);function p(e){let{sidebar:t,children:n}=e;const{metadata:l,toc:r}=(0,i.C)(),{nextItem:o,prevItem:m,frontMatter:d}=l,{hide_table_of_contents:u,toc_min_heading_level:f,toc_max_heading_level:p}=d;return a.createElement(c.Z,{sidebar:t,toc:!u&&r.length>0?a.createElement(v.Z,{toc:r,minHeadingLevel:f,maxHeadingLevel:p}):void 0},a.createElement(s.Z,null,n),(o||m)&&a.createElement(g,{nextItem:o,prevItem:m}))}function h(e){const t=e.content;return a.createElement(i.n,{content:e.content,isBlogPostPage:!0},a.createElement(r.FG,{className:(0,l.Z)(o.k.wrapper.blogPages,o.k.page.blogPostPage)},a.createElement(f,null),a.createElement(p,{sidebar:e.sidebar},a.createElement(t,null))))}},39407:(e,t,n)=>{n.d(t,{Z:()=>m});var a=n(87462),l=n(67294),r=n(86010),o=n(93743);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},c="table-of-contents__link toc-highlight",s="table-of-contents__link--active";function m(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(i.tableOfContents,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:c,linkActiveClassName:s})))}},93743:(e,t,n)=>{n.d(t,{Z:()=>f});var a=n(87462),l=n(67294),r=n(86668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function s(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(c(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function m(){const e=(0,l.useRef)(0),{navbar:{hideOnScroll:t}}=(0,r.L)();return(0,l.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,l.useRef)(void 0),n=m();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function i(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),i=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=s(i,{anchorTopOffset:n.current}),m=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===m)}))}return document.addEventListener("scroll",i),document.addEventListener("resize",i),i(),()=>{document.removeEventListener("scroll",i),document.removeEventListener("resize",i)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const g=l.memo(u);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...f}=e;const v=(0,r.L)(),p=m??v.tableOfContents.minHeadingLevel,h=u??v.tableOfContents.maxHeadingLevel,b=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>i({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:h});return d((0,l.useMemo)((()=>{if(c&&s)return{linkClassName:c,linkActiveClassName:s,minHeadingLevel:p,maxHeadingLevel:h}}),[c,s,p,h])),l.createElement(g,(0,a.Z)({toc:b,className:n,linkClassName:c},f))}}}]); \ No newline at end of file diff --git a/assets/js/cced6026.061e2055.js b/assets/js/cced6026.061e2055.js new file mode 100644 index 00000000000..00ee057b4bb --- /dev/null +++ b/assets/js/cced6026.061e2055.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48818],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=p(a),m=n,f=s["".concat(u,".").concat(m)]||s[m]||d[m]||i;return a?r.createElement(f,o(o({ref:t},c),{},{components:a})):r.createElement(f,o({ref:t},c))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},52869:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2022-10-07-node-cli-api",authors:"Jimbo4350",tags:["cli-api-quarterly"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/quarterly/2022-10-07-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-07-nod-api-cli.md",source:"@site/quarterly/2022-11-07-nod-api-cli.md",title:"Node API & CLI Team Update",description:"Node-Api-Cli Quarterly Update",date:"2022-11-07T00:00:00.000Z",formattedDate:"November 7, 2022",tags:[{label:"cli-api-quarterly",permalink:"/cardano-updates/quarterly/tags/cli-api-quarterly"}],readingTime:1.355,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-10-07-node-cli-api",authors:"Jimbo4350",tags:["cli-api-quarterly"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2022-11-07-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"Node-Api-Cli Quarterly Update",id:"node-api-cli-quarterly-update",level:2},{value:"2022-09 - 2022-11-04",id:"2022-09---2022-11-04",level:2}],c={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"node-api-cli-quarterly-update"},"Node-Api-Cli Quarterly Update"),(0,n.kt)("h2",{id:"2022-09---2022-11-04"},"2022-09 - 2022-11-04"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0"),(0,n.kt)("li",{parentName:"ul"},"Major clean up of stale iusses + PRs."),(0,n.kt)("li",{parentName:"ul"},"Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs"),(0,n.kt)("li",{parentName:"ul"},"cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node."),(0,n.kt)("li",{parentName:"ul"},"cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation."),(0,n.kt)("li",{parentName:"ul"},"General documentation updates and improvements"),(0,n.kt)("li",{parentName:"ul"},"Addition of tx-mempool command which allows users to:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Query the node about the current mempool's capacity and sizes"),(0,n.kt)("li",{parentName:"ul"},"Request the next transaction from the mempool's current list"),(0,n.kt)("li",{parentName:"ul"},"Query if a particular transaction exists in the mempool"))),(0,n.kt)("li",{parentName:"ul"},"Initial refactoring of cardano-testnet")),(0,n.kt)("p",null,"Next quarter"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-api",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately."))),(0,n.kt)("li",{parentName:"ul"},"cardano-testnet",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Working with Marc Fontaine to create an easy to use executable to deploy testnets locally - ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/4598"},"https://github.com/input-output-hk/cardano-node/issues/4598")))),(0,n.kt)("li",{parentName:"ul"},"Serenity",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above."))),(0,n.kt)("li",{parentName:"ul"},"General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccf451f9.7efe9c4d.js b/assets/js/ccf451f9.7efe9c4d.js new file mode 100644 index 00000000000..11f76e3d891 --- /dev/null +++ b/assets/js/ccf451f9.7efe9c4d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[5237],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(a),c=n,m=d["".concat(p,".").concat(c)]||d[c]||h[c]||o;return a?r.createElement(m,i(i({ref:t},u),{},{components:a})):r.createElement(m,i({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},81451:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-10-20-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-10-20-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-20-hydra.md",source:"@site/blog/2023-10-20-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-20T00:00:00.000Z",formattedDate:"October 20, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.84,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-20-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-24-node-cli-api"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-18-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:s},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023."),(0,n.kt)("p",null,"In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON.\nThis improvement offers users greater flexibility and ease of interaction with the API."),(0,n.kt)("p",null,"Finally, the team has followed up on the TUI brick upgrade to version 1.10.\nThis effort has resulted in addressing minor details and enhancing the overall user experience with the TUI."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Prepare presentation and workshop for Cardano Summit."),(0,n.kt)("li",{parentName:"ul"},"More TUI fixes and improvements.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1127"},"#1127")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1120"},"#1120")))),(0,n.kt)("li",{parentName:"ul"},"Upgrade GHC from 9.2.8 -> 9.6.2 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1105"},"#1105")),(0,n.kt)("li",{parentName:"ul"},"Solved user issue related to submitting transactions in cbor format ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1111"},"#1111"),"."),(0,n.kt)("li",{parentName:"ul"},"Fix hydraw connection issue making it more stable ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1121"},"#1121"),".")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Work on hydra-poll dApp for Cardano summit."),(0,n.kt)("li",{parentName:"ul"},"Start the work on packaging hydra-node and related services.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccfc9222.e04c413b.js b/assets/js/ccfc9222.e04c413b.js new file mode 100644 index 00000000000..6c45e81ee68 --- /dev/null +++ b/assets/js/ccfc9222.e04c413b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87233],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(a),m=r,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(h,i(i({ref:t},u),{},{components:a})):n.createElement(h,i({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var c=2;c<o;c++)i[c]=a[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},86986:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-03-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-03-22-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-node-cli-api.md",source:"@site/blog/2023-03-22-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-03-22T00:00:00.000Z",formattedDate:"March 22, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.645,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-03-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-03-22-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-22-performance-and-tracing"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],u={toc:c},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-03-22---2023-04-05"},"2023-03-22 - 2023-04-05"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Added new cardano-cli ping command which allows users to ping remote cardano-nodes."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction build")," command now can automatically balance multiassets"),(0,r.kt)("li",{parentName:"ul"},"New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5041"},"Remove unused error constructors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4909"},"Fix qKesKesKeyExpiry to not always be null")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"New cardano-cli ping command.")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5040"},"Remove use of AcquireFailure type")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5038"},"Simplify implementation of executeQueryAnyMode")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5002"},"Script data serialisation")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4956"},"Guard against overflows in Shelley TxIns")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4941"},"Combinators for TxBodyContent and related types")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5011"},"Use Haskell variables for passing values.")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4879"},"Re-enable kes-period-info test."))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cd0ded60.0db37d65.js b/assets/js/cd0ded60.0db37d65.js new file mode 100644 index 00000000000..fa468cc3988 --- /dev/null +++ b/assets/js/cd0ded60.0db37d65.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[27668],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(a),m=n,c=u["".concat(p,".").concat(m)]||u[m]||d[m]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},72238:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-06-30-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-30-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-30-hydra.md",source:"@site/blog/2023-06-30-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-30T00:00:00.000Z",formattedDate:"June 30, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.925,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-30-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-07-04-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-29-mithril"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:s},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team wrote and published the monthly report for June,\nimplemented the end-to-end functionality for external commits, and tested it on\nthe preview environment. They also listed Hydra as a tool on the Cardano\ndeveloper portal, providing more visibility for the project. The team clarified\nthe path forward for L2 protocol improvements and explored an alternative CI\napproach using cabal instead of nix. Additionally, they released version 0.11.0,\nmarking another milestone in the project","\u2019","s development."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Written and published the monthly report for ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-06"},"June")),(0,n.kt)("li",{parentName:"ul"},"Implemented external commits end-to-end incl. tested it on preview ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215")),(0,n.kt)("li",{parentName:"ul"},"Listed Hydra as a tool on cardano ",(0,n.kt)("a",{parentName:"li",href:"https://developers.cardano.org/tools/"},"developer portal")),(0,n.kt)("li",{parentName:"ul"},"Cleared up path forward on L2 protocol improvements ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Established an alternative CI using more cabal tools ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/923"},"#923")),(0,n.kt)("li",{parentName:"ul"},"Release version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.10.0"},"0.11.0"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Spike on performance improvements of event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/913"},"#913")),(0,n.kt)("li",{parentName:"ul"},"Complete ReqSn only sends transaction ids ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Groom and plan last items for 0.12.0 (remove internal commit)"),(0,n.kt)("li",{parentName:"ul"},"Improve reliability of benchmarks")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cd612773.d9b87bb0.js b/assets/js/cd612773.d9b87bb0.js new file mode 100644 index 00000000000..dca7ef8cbd4 --- /dev/null +++ b/assets/js/cd612773.d9b87bb0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67205],{3905:(t,e,a)=>{a.d(e,{Zo:()=>s,kt:()=>d});var r=a(67294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?o(Object(a),!0).forEach((function(e){n(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function u(t,e){if(null==t)return{};var a,r,n=function(t,e){if(null==t)return{};var a,r,n={},o=Object.keys(t);for(r=0;r<o.length;r++)a=o[r],e.indexOf(a)>=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r<o.length;r++)a=o[r],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var l=r.createContext({}),p=function(t){var e=r.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},s=function(t){var e=p(t.components);return r.createElement(l.Provider,{value:e},t.children)},c="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},m=r.forwardRef((function(t,e){var a=t.components,n=t.mdxType,o=t.originalType,l=t.parentName,s=u(t,["components","mdxType","originalType","parentName"]),c=p(a),m=n,d=c["".concat(l,".").concat(m)]||c[m]||h[m]||o;return a?r.createElement(d,i(i({ref:e},s),{},{components:a})):r.createElement(d,i({ref:e},s))}));function d(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var o=a.length,i=new Array(o);i[0]=m;var u={};for(var l in e)hasOwnProperty.call(e,l)&&(u[l]=e[l]);u.originalType=t,u[c]="string"==typeof t?t:n,i[1]=u;for(var p=2;p<o;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},26169:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>u,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Crypto Team Update",slug:"2023-05-12-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,u={permalink:"/cardano-updates/2023-05-12-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-crypto.md",source:"@site/blog/2023-05-12-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.095,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-05-12-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-17-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-12-goedel"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"cardano-base",id:"cardano-base",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},c="wrapper";function h(t){let{components:e,...a}=t;return(0,n.kt)(c,(0,r.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"cardano-base: Include final tests for BLS signature. Further adaptations for KES agent. "),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"RawBearer API in ouroboros-network-framework (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395)"},"https://github.com/input-output-hk/ouroboros-network/pull/4395)"),"; this is needed for KES Agent. Review ongoing."),(0,n.kt)("li",{parentName:"ul"},"Facilitate BLS test vectors in Haskell test suite (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/408"},"https://github.com/input-output-hk/cardano-base/pull/408"),")"),(0,n.kt)("li",{parentName:"ul"},"Add the SignKeyWithKES type to cardano-base (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/389"},"https://github.com/input-output-hk/cardano-base/pull/389"),")"),(0,n.kt)("li",{parentName:"ul"},"Restructuring and simplifying the MLocking code in cardano-base (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/404"},"https://github.com/input-output-hk/cardano-base/pull/404"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/405"},"https://github.com/input-output-hk/cardano-base/pull/405"),"), getting rid of the purpose-built MonadMLock etc. typeclasses in the process"),(0,n.kt)("li",{parentName:"ul"},"Merging the DSIGN and DSIGNM APIs such that the same phantom type can be used to select both the pure and mlocked versions of the same DSIGN algorithm (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/411"},"https://github.com/input-output-hk/cardano-base/pull/411"),")"),(0,n.kt)("li",{parentName:"ul"},"Simplifying the KES API into a single KESAlgorithm typeclass, merging the KESSignAlgorithm class into it (this is possible due to the simplifications from #404). (Same PR as above: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/411"},"https://github.com/input-output-hk/cardano-base/pull/411"),")."),(0,n.kt)("li",{parentName:"ul"},"Update CIP-0381 with new plutus built-in functions, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/506"},"#506"),". In particular hash_to_curve now takes as input a secon input for the Domain Separation Tag (DST), and we limit to have a maximu size of 255 bytes. ")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Opened PR in halo2curves to include BLS12-381 and JubJub, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/privacy-scaling-explorations/halo2curves/pull/38"},"#38")),(0,n.kt)("li",{parentName:"ul"},"Addition constraint over JubJub merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sidechains-zk/pull/10"},"#10"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ce17d78b.b895a29b.js b/assets/js/ce17d78b.b895a29b.js new file mode 100644 index 00000000000..8e64cfe3115 --- /dev/null +++ b/assets/js/ce17d78b.b895a29b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[77533],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,i(i({ref:t},c),{},{components:n})):r.createElement(f,i({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},9586:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"SRE Q2 2023 Update",slug:"2023-Q2-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2023-Q2-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-sre.md",source:"@site/quarterly/2023-Q2-sre.md",title:"SRE Q2 2023 Update",description:"2023-04 - 2023-06",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"sre",permalink:"/cardano-updates/quarterly/tags/sre"}],readingTime:.68,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Q2 2023 Update",slug:"2023-Q2-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Network Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-network"},nextItem:{title:"Performance & Tracing Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"2023-04 - 2023-06",id:"2023-04---2023-06",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Next steps",id:"next-steps",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"2023-04---2023-06"},"2023-04 - 2023-06"),(0,a.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,a.kt)("p",null,"In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Expanding the darwin CI cluster and adding aarch64 builder support"),(0,a.kt)("li",{parentName:"ul"},"Adding bare metal capability to bitte clusters"),(0,a.kt)("li",{parentName:"ul"},"Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality"),(0,a.kt)("li",{parentName:"ul"},"Creation of pool performance analysis queries and scripting"),(0,a.kt)("li",{parentName:"ul"},"Migration of testnet metadata server to cardano-world"),(0,a.kt)("li",{parentName:"ul"},"Cardano shelley qa migration to cardano-world"),(0,a.kt)("li",{parentName:"ul"},"Cardano sanchonet environment spin up to test Conway era functionality"),(0,a.kt)("li",{parentName:"ul"},"Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature")),(0,a.kt)("h3",{id:"next-steps"},"Next steps"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Continue with the conversion of mainnet to using p2p topology")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ce6dcc9e.38a5e04e.js b/assets/js/ce6dcc9e.38a5e04e.js new file mode 100644 index 00000000000..7fc4b20aa6c --- /dev/null +++ b/assets/js/ce6dcc9e.38a5e04e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[77644],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},l=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,l=i(e,["components","mdxType","originalType","parentName"]),d=c(n),h=r,m=d["".concat(p,".").concat(h)]||d[h]||u[h]||o;return n?a.createElement(m,s(s({ref:t},l),{},{components:n})):a.createElement(m,s({ref:t},l))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=h;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},56737:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"DB Sync Team Update",slug:"2022-09-19-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-09-19-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-19-db-sync.md",source:"@site/blog/2022-09-19-db-sync.md",title:"DB Sync Team Update",description:"DBSync Update",date:"2022-09-19T00:00:00.000Z",formattedDate:"September 19, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:1.525,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB Sync Team Update",slug:"2022-09-19-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-09-20-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-16-ledger"}},p={authorsImageUrls:[void 0]},c=[{value:"DBSync Update",id:"dbsync-update",level:2},{value:"New Tag",id:"new-tag",level:3},{value:"Open source",id:"open-source",level:3},{value:"Progress on tech debt and new features",id:"progress-on-tech-debt-and-new-features",level:3}],l={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"dbsync-update"},"DBSync Update"),(0,r.kt)("h3",{id:"new-tag"},"New Tag"),(0,r.kt)("p",null,"We created a new db-sync tag 13.0.5 which addresses shortcomings of the last\nrelease 13.0.4. It is currently under testing.\nThe Changelog is\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/blob/8ad98d48e0068f3768d48e18fdcbe254037cba3b/cardano-db-sync/CHANGELOG.md#1305"},"here")," and in more details:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed fees for tx with phase 2 failure that didn't include a total collateral field.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1248"},"1248"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed an issue that could cause db-sync to crash if a specific rollback occured.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1247"},"1247"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but\ncould result in the wrong CBOR encoding being inserted.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1217"},"1217"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"All the fixes above come with unit tests which validates the fix.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Added support for preprod and preview from docker. DBSync no longer needs to include the configs\nfor different networks, these are directly fetched from the cardano world.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1254"},"1254"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We added better support from docker for the new disable options and the overall documentation.\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1260"},"1260")))),(0,r.kt)("p",null,"All the above were also backported to the master branch"),(0,r.kt)("h3",{id:"open-source"},"Open source"),(0,r.kt)("p",null,"We made the db-sync ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/52/views/1"},"board public"),", so\neveryone can have access on the issues we prioritise.\nWe also added new tasks to the board, some of them could be approachable to newcomers or people who\nwant to contribute."),(0,r.kt)("h3",{id:"progress-on-tech-debt-and-new-features"},"Progress on tech debt and new features"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1223"},"1223")," was merged, which removes the\nforeign keys from the db schema. This opens the road to a number of optimizations.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"An additional fix on top of the previous work was added\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1250"},"1250"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"An initial version where DBSync does not rollback on restart is done here\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1266"},"1266"),".\nThis allows db-sync to restart much faster, without the need to delete data and reinsert them. In\nthe future it can also facilitate migrations in cases where the ledger snapshots have a breaking\nchange, without the need to resync everything from genesis."))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ce7ed51f.8bdb2215.js b/assets/js/ce7ed51f.8bdb2215.js new file mode 100644 index 00000000000..1d3ce2d003f --- /dev/null +++ b/assets/js/ce7ed51f.8bdb2215.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30830],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),s=u(a),m=n,h=s["".concat(p,".").concat(m)]||s[m]||c[m]||o;return a?r.createElement(h,i(i({ref:t},d),{},{components:a})):r.createElement(h,i({ref:t},d))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},71367:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-04-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-14-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-14-hydra.md",source:"@site/blog/2023-04-14-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-14T00:00:00.000Z",formattedDate:"April 14, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.98,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-14-goedel"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-07-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team focused on improving the smoke test, fixing developer\ntooling, and improving the API for voting use cases. They reviewed progress on\nauction, payments, and voting projects and made worked on reproducing a bug with\nhandling rollbacks. Moving forward, the team plans to update dependencies,\nimplement a dirt road fix for the rollbacks bug, and explore adding Hydra\nsupport to kupo."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Reviewed progress on auction, payments and voting projects"),(0,n.kt)("li",{parentName:"ul"},"Improved smoke tests so they can run on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Fixed a regression in the development environment and updated cardano-node\nused in tests"),(0,n.kt)("li",{parentName:"ul"},"Improved API with more configurability to unblock voting use case",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Exclude utxo in ",(0,n.kt)("inlineCode",{parentName:"li"},"SnapshotConfirmed")," outputs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/808"},"#808")),(0,n.kt)("li",{parentName:"ul"},"Addressed a user request by only sending ",(0,n.kt)("inlineCode",{parentName:"li"},"Greetings")," once ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/813"},"#813")))),(0,n.kt)("li",{parentName:"ul"},"Reproduced the rollback bug by improving our model-based test suite ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update dependencies to match ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node")," master"),(0,n.kt)("li",{parentName:"ul"},"Dirt road fix for rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Update Hydraw to maintain state locally"),(0,n.kt)("li",{parentName:"ul"},"Explore adding Hydra support to kupo"),(0,n.kt)("li",{parentName:"ul"},"Put disclaimer texts and closing mainnet compatibility feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cf1bc381.4cd9437b.js b/assets/js/cf1bc381.4cd9437b.js new file mode 100644 index 00000000000..bb461c3a4ad --- /dev/null +++ b/assets/js/cf1bc381.4cd9437b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[84773],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>f});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),s=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return r.createElement(c.Provider,{value:n},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(t),p=a,f=m["".concat(c,".").concat(p)]||m[p]||u[p]||i;return t?r.createElement(f,o(o({ref:n},d),{},{components:t})):r.createElement(f,o({ref:n},d))}));function f(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=p;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var s=2;s<i;s++)o[s]=t[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}p.displayName="MDXCreateElement"},77907:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=t(87462),a=(t(67294),t(3905));const i={title:"Performance & tracing update",slug:"2023-06-14-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-14-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-14-performance-and-tracing.md",source:"@site/blog/2023-06-14-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-06-14T00:00:00.000Z",formattedDate:"June 14, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.515,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-06-14-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-14-consensus"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-12-network"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},m="wrapper";function u(e){let{components:n,...t}=e;return(0,a.kt)(m,(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've continued release benchmarking and established a new baseline for ",(0,a.kt)("inlineCode",{parentName:"li"},"8.0.0"),"."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"In our release benchmarking cycle, we established a new performance baseline for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0.0"),". Additionally, we've measured\nperformance under various workloads for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.1.1-pre"),"; the results look promising and validate the optimization efforts\ndone on several system components. "),(0,a.kt)("p",null,"In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for\nbenchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be\nmeaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific\ntrace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles. "),(0,a.kt)("p",null,"Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs. "),(0,a.kt)("p",null,"This means the backend is entering validation phase, where we systematically compare all metrics taken from the new\ninfrastructure to the existing ones, including determining reproducibility and variance."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cfb82551.e63304fb.js b/assets/js/cfb82551.e63304fb.js new file mode 100644 index 00000000000..2a57f245ead --- /dev/null +++ b/assets/js/cfb82551.e63304fb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6036],{85146:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/cfdb38ee.97cf8400.js b/assets/js/cfdb38ee.97cf8400.js new file mode 100644 index 00000000000..6780dc096ba --- /dev/null +++ b/assets/js/cfdb38ee.97cf8400.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59736],{91779:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/24","page":24,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/23","nextPage":"/cardano-updates/page/25","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/d0639dee.f18be2c7.js b/assets/js/d0639dee.f18be2c7.js new file mode 100644 index 00000000000..7f58ec69c65 --- /dev/null +++ b/assets/js/d0639dee.f18be2c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[52506],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},l="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),l=p(n),m=a,h=l["".concat(u,".").concat(m)]||l[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},c),{},{components:n})):r.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[l]="string"==typeof e?e:a,s[1]=i;for(var p=2;p<o;p++)s[p]=n[p];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},84505:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-11-29-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-11-29-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-29-consensus.md",source:"@site/blog/2023-11-29-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-11-29T00:00:00.000Z",formattedDate:"November 29, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.51,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-11-29-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-12-01-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-29-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:p},l="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(l,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The Consensus team implemented and tested a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/525"},"patch")," that does not propagate future headers.\nIt is under review, and we expect it can be released in the next Cardano node version.\nOn the UTxO-HD front, we ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/510"},"finished")," prototyping the ",(0,a.kt)("inlineCode",{parentName:"p"},"LedgerDB")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"BackingStore")," redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend.\nWith this prototype finished we can start integrating the rest of the code.\nWe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/513"},"investigated")," the unexpected performance degradation observed when acquiring the block context.\nWe also ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.7.0-pre"},"released Cardano node 8.7.0")," and ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3893"},"moved")," ",(0,a.kt)("inlineCode",{parentName:"p"},"tree-diff")," outside ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-ledger")," libraries."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d077dadd.9fa7f5a1.js b/assets/js/d077dadd.9fa7f5a1.js new file mode 100644 index 00000000000..30c2579586d --- /dev/null +++ b/assets/js/d077dadd.9fa7f5a1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88862],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),d=r,h=p["".concat(l,".").concat(d)]||p[d]||m[d]||o;return n?a.createElement(h,s(s({ref:t},u),{},{components:n})):a.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:r,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},4491:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-06-28-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-06-28-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-28-consensus.md",source:"@site/blog/2023-06-28-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-06-28T00:00:00.000Z",formattedDate:"June 28, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.85,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-06-28-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-29-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-06-28-performance-and-tracing"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:3},{value:"UTxO-HD",id:"utxo-hd",level:3}],u={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team. "),(0,r.kt)("p",null,"The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components."),(0,r.kt)("p",null,"Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node. "),(0,r.kt)("h3",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/101#issuecomment-1607767722"},"decided on an approach")," of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team."))),(0,r.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We merged the last of the PRs that were part of UTxO-HD improvements for version ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/149"},"0.1"),": expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size."),(0,r.kt)("li",{parentName:"ul"},"We ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/87"},"added"),' a new "legacy" cardano block in a new ',(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-consensus-cardano-legacy-block")," package that should ease the transition for some downstream packages to UTxO-HD, like ",(0,r.kt)("inlineCode",{parentName:"li"},"db-sync"),". This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block."),(0,r.kt)("li",{parentName:"ul"},"We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d0a351c0.258067ed.js b/assets/js/d0a351c0.258067ed.js new file mode 100644 index 00000000000..01287cc07b7 --- /dev/null +++ b/assets/js/d0a351c0.258067ed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51934],{298:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/ledger/page/3","page":3,"postsPerPage":5,"totalPages":6,"totalCount":30,"previousPage":"/cardano-updates/tags/ledger/page/2","nextPage":"/cardano-updates/tags/ledger/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/d0e182b9.835c5b63.js b/assets/js/d0e182b9.835c5b63.js new file mode 100644 index 00000000000..aae5d6e73ef --- /dev/null +++ b/assets/js/d0e182b9.835c5b63.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32627],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,r,a=function(e,t){if(null==e)return{};var i,r,a={},n=Object.keys(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)i=n[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},s=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),m=u(i),d=a,c=m["".concat(p,".").concat(d)]||m[d]||h[d]||n;return i?r.createElement(c,o(o({ref:t},s),{},{components:i})):r.createElement(c,o({ref:t},s))}));function c(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var u=2;u<n;u++)o[u]=i[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,i)}d.displayName="MDXCreateElement"},81065:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var r=i(87462),a=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-06-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-29-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-29-mithril.md",source:"@site/blog/2023-06-29-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-06-29T00:00:00.000Z",formattedDate:"June 29, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:2.205,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-06-29-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-30-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-28-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},m="wrapper";function h(e){let{components:t,...i}=e;return(0,a.kt)(m,(0,r.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano ",(0,a.kt)("inlineCode",{parentName:"p"},"mainnet")," infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator."),(0,a.kt)("p",null,"Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add infrastructure monitoring")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/987"},"#987")))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Prepare Mithril Signer deployment model for SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/862"},"#862"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/961"},"#961")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Adapt infrastructure to use Mithril Relay")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1018"},"#1018")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Announce the new signer deployment model in a dev blog post")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1017"},"#1017")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,a.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Aggregator does not exit on critical error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/993"},"#993")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Computation of master certificate of an epoch is incorrect")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1006"},"#1006")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"End to end tests are flaky")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/954"},"#954")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"'testing-preview' network does not create certificates")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1015"},"#1015")))),(0,a.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Dates format is not standardized")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/946"},"#946")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add 'recompute-certificates-hash' command to aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1001"},"#1001")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Add a retry mechanism for artifact creation in aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/984"},"#984")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Log node version at startup in Aggregator/Signer")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/944"},"#944")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Reactivate Publish Results job in CI")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/978"},"#978")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Clean 'pending_snapshot' directory of aggregator")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/983"},"#983")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update OpenAPI spec examples")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1000"},"#1000")))),(0,a.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor 'MithrilStakeDistribution' entity")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/967"},"#967")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactoring client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/982"},"#982")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor download code in client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1010"},"#1010")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Factorize protocol crypto operations")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/669"},"#669")))),(0,a.kt)("li",{parentName:"ul"},"Worked on dependencies:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Upgrade Cardano node to '8.1.1'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/973"},"#973"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d10ad4a6.af42a029.js b/assets/js/d10ad4a6.af42a029.js new file mode 100644 index 00000000000..116862a6df6 --- /dev/null +++ b/assets/js/d10ad4a6.af42a029.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[6166],{9785:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/30","page":30,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/29","nextPage":"/cardano-updates/page/31","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/d124c703.15587654.js b/assets/js/d124c703.15587654.js new file mode 100644 index 00000000000..3a160f559a8 --- /dev/null +++ b/assets/js/d124c703.15587654.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[15152],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),l=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=l(r),m=n,d=c["".concat(p,".").concat(m)]||c[m]||h[m]||o;return r?a.createElement(d,i(i({ref:t},u),{},{components:r})):a.createElement(d,i({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var l=2;l<o;l++)i[l]=r[l];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},54219:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=r(87462),n=(r(67294),r(3905));const o={title:"Open-Source Team",slug:"2022-10-31-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-10-31-open-source",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-open-source.md",source:"@site/blog/2022-11-04-open-source.md",title:"Open-Source Team",description:"High Level Summary",date:"2022-11-04T00:00:00.000Z",formattedDate:"November 4, 2022",tags:[{label:"open-source",permalink:"/cardano-updates/tags/open-source"}],readingTime:1.465,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Open-Source Team",slug:"2022-10-31-open-source",authors:"coot",tags:["open-source"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-04-mithril"},nextItem:{title:"Embedding Quality Workstream",permalink:"/cardano-updates/2022-11-03-embedding-quality"}},p={authorsImageUrls:[void 0]},l=[{value:"High Level Summary",id:"high-level-summary",level:2},{value:"Detailed description",id:"detailed-description",level:2}],u={toc:l},c="wrapper";function h(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High Level Summary"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We've been working toward publishing ",(0,n.kt)("em",{parentName:"li"},"Cardano Backlog"),", currently its in\nreview by the IOG communication team."),(0,n.kt)("li",{parentName:"ul"},"We identified a number of libraries which can be published."),(0,n.kt)("li",{parentName:"ul"},"We setup and enhanced ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-updates"},"cardano-updates"),".")),(0,n.kt)("h2",{id:"detailed-description"},"Detailed description"),(0,n.kt)("p",null,"I am glad to announce that I was given the role of open-source advocate for\ncardano project. In last few weeks we were making steps towards publishing our\nbacklog. It's currently under review by the communication team, although most\nof the issues are already visible across various repositories."),(0,n.kt)("p",null,"The open-source initiatives have their own\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/60"},"project"),". It is set up\nto help us track our major open-source activities. Right now there are two\nwork streams:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"the work on ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-engineering-handbook/"},(0,n.kt)("em",{parentName:"a"},"Cardano Engineering Handbook")),";"),(0,n.kt)("li",{parentName:"ul"},"libraries to be release on ",(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/"},"Hackage")," or ",(0,n.kt)("a",{parentName:"li",href:"https://crates.io"},"crates.io"),".")),(0,n.kt)("p",null,"We identifies a number of libraries across all the teams which contribute to\n",(0,n.kt)("em",{parentName:"p"},"Cardano")," which we would like publish to publish, see the following\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/60/views/3"},"link"),". Arnauld Bailly recently published\n",(0,n.kt)("a",{parentName:"p",href:"https://hackage.haskell.org/package/quickcheck-dynamic"},(0,n.kt)("inlineCode",{parentName:"a"},"quickcheck-dynamic")),"\nlibrary on Hackage. The networking team is slowly progressing towards\npublishing ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim"},"io-sim")," and related packages, checkout the progress\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/19/views/24"},"here"),"."),(0,n.kt)("p",null,"Thanks to Arnaud Bailly our ",(0,n.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/cardano-updates"},"Cardano Updates")," website has\na new look & feel! It's using ",(0,n.kt)("a",{parentName:"p",href:"https://docusaurus.io"},"docusaurus.io"),"."),(0,n.kt)("p",null,"Christian Taylor carried recently a detailed analysis of our open-source\nrepositories. He collected many interesting metrics, which allows us to see\nwhere we need to improve as an open-source project to make the Cardano project\nand many smaller related libraries which we maintain be more open and available\nfor open-source contributors."),(0,n.kt)("p",null,"The graph below shows which documents the 55 most important Cardano\nrepositories are missing the most:\n",(0,n.kt)("img",{alt:"Documentation Adoption",src:r(59380).Z,width:"1493",height:"716"}),"\nYou can expect we will improve in these metrics in the coming weeks."))}h.isMDXComponent=!0},59380:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/doc-adoption-cd944582f02809777c58be53e13453c5.png"}}]); \ No newline at end of file diff --git a/assets/js/d15a0787.33318e9f.js b/assets/js/d15a0787.33318e9f.js new file mode 100644 index 00000000000..66ac9073aff --- /dev/null +++ b/assets/js/d15a0787.33318e9f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89548],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=p(a),s=n,m=d["".concat(u,".").concat(s)]||d[s]||h[s]||i;return a?r.createElement(m,l(l({ref:t},c),{},{components:a})):r.createElement(m,l({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=s;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}s.displayName="MDXCreateElement"},20257:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-09-29-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-09-29-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-hydra.md",source:"@site/blog/2023-09-29-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.49,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-29-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-29-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-29-ledger"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],c={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team mainly focused on having a working new reliability\nnetwork layer; and specified its expected behavior in a new ADR."),(0,n.kt)("p",null,'They also revisited the security policy and vulnerability disclosure policy on\nhow to handle security vulnerability within Hydra, and in particular how to\nhandle so-called "Silent fixes".'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated security policy and vulnerability disclosure policy ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1088"},"#1088")),(0,n.kt)("li",{parentName:"ul"},"Adr/network reliability ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1082"},"#1082"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Introduce reliability network layer ","[#1074]"," (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1074"},"https://github.com/input-output-hk/hydra/pull/1074"),")"),(0,n.kt)("li",{parentName:"ul"},"Refactor the vCommit validator in Aiken ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1072"},"#1072"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d19a344f.3d64c4eb.js b/assets/js/d19a344f.3d64c4eb.js new file mode 100644 index 00000000000..d52214cdbf0 --- /dev/null +++ b/assets/js/d19a344f.3d64c4eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20387],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(a),d=n,g=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return a?r.createElement(g,l(l({ref:t},s),{},{components:a})):r.createElement(g,l({ref:t},s))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c<o;c++)l[c]=a[c];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},3568:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-04-14-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-04-14-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-14-goedel.md",source:"@site/blog/2023-04-14-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-04-14T00:00:00.000Z",formattedDate:"April 14, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.415,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-04-14-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Incident Report",permalink:"/cardano-updates/2023-04-17-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-14-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(m,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team has submitted two papers for publication, carried\nout consultancy with other teams and has an opening for an intern."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Finalised and submitted two papers to ICE 2023")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Studying Praos paper.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Design exploration for congestion management."))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d1d47ba3.c8bfd78a.js b/assets/js/d1d47ba3.c8bfd78a.js new file mode 100644 index 00000000000..bfd26222fce --- /dev/null +++ b/assets/js/d1d47ba3.c8bfd78a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65319],{62205:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/11","page":11,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/10","nextPage":"/cardano-updates/page/12","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/d200e7a4.e30d362a.js b/assets/js/d200e7a4.e30d362a.js new file mode 100644 index 00000000000..ab7f2bd73b2 --- /dev/null +++ b/assets/js/d200e7a4.e30d362a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20738],{32771:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/41","page":41,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/40","nextPage":"/cardano-updates/page/42","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/d2ab2776.0b7a25c4.js b/assets/js/d2ab2776.0b7a25c4.js new file mode 100644 index 00000000000..b77a0d99373 --- /dev/null +++ b/assets/js/d2ab2776.0b7a25c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16360],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),s=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=s(a),u=r,h=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:r,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}u.displayName="MDXCreateElement"},40090:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-06-08-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-08-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-goedel.md",source:"@site/blog/2023-06-08-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.605,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-06-08-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-06-08-db-sync"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-08-sre"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint the team has been working on giving and preparing public\ntalks, also on preparing final versions of their ICE 2023 papers, and\non analysing chain selection."),(0,r.kt)("p",null,"This sprint the team has been working on final revisions for the\npre-proceedings versions of two ICE 2023 papers."),(0,r.kt)("h2",{id:"details"},"Details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Lambda Days keynote by Kevin Hammond:\n",(0,r.kt)("a",{parentName:"p",href:"https://www.lambdadays.org/lambdadays2023"},"https://www.lambdadays.org/lambdadays2023"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Codebeam keynote by Peter Van Roy: ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"},"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"),"; ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"},"https://www.youtube.com/watch?v=h8sE3Ai8Dsk"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing talks and final versions for two ICE 2023 contributions:\n",(0,r.kt)("a",{parentName:"p",href:"https://www.discotec.org/2023/ice"},"https://www.discotec.org/2023/ice"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Analysing chain selection.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,r.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d2aca35e.86129eca.js b/assets/js/d2aca35e.86129eca.js new file mode 100644 index 00000000000..4babe42f276 --- /dev/null +++ b/assets/js/d2aca35e.86129eca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[13412],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(u,".").concat(c)]||d[c]||h[c]||i;return a?r.createElement(m,l(l({ref:t},s),{},{components:a})):r.createElement(m,l({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=a[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},62337:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-10-06-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-10-06-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-06-hydra.md",source:"@site/blog/2023-10-06-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-06T00:00:00.000Z",formattedDate:"October 6, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.88,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-06-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-10-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-10-06-performance-and-tracing"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums."),(0,n.kt)("p",null,"The team also delivered the first version of the network resilience layer, significantly increasing head availability."),(0,n.kt)("p",null,"Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra."),(0,n.kt)("p",null,"Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Release ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.13.0"},"0.13.0")),(0,n.kt)("li",{parentName:"ul"},"Published vulnerability reports ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1088"},"#1088")),(0,n.kt)("li",{parentName:"ul"},"Merged network resilience work part I ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1074"},"#1074")),(0,n.kt)("li",{parentName:"ul"},"Planning for Cardano Summit participation "),(0,n.kt)("li",{parentName:"ul"},"Discussions with funded Catalyst projects wanting to build on Hydra for support"),(0,n.kt)("li",{parentName:"ul"},"Merged typos fix PR from @omahs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1095"},"#1095"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete Aiken commit validator script ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1072"},"#1072")),(0,n.kt)("li",{parentName:"ul"},"Complete Kupo integration ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1078"},"#1078")),(0,n.kt)("li",{parentName:"ul"},"Brick upgrade on TUI ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1103"},"#1103")),(0,n.kt)("li",{parentName:"ul"},"Clean backlog"),(0,n.kt)("li",{parentName:"ul"},"Prepare and rehearse demo and talk for Cardano Summit")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d2ea5af2.447b9563.js b/assets/js/d2ea5af2.447b9563.js new file mode 100644 index 00000000000..87715eceb3c --- /dev/null +++ b/assets/js/d2ea5af2.447b9563.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91984],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){l(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function u(e,t){if(null==e)return{};var a,r,l=function(e,t){if(null==e)return{};var a,r,l={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),i=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,d=u(e,["components","mdxType","originalType","parentName"]),c=i(a),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||n;return a?r.createElement(h,o(o({ref:t},d),{},{components:a})):r.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,o=new Array(n);o[0]=s;var u={};for(var p in t)hasOwnProperty.call(t,p)&&(u[p]=t[p]);u.originalType=e,u[c]="string"==typeof e?e:l,o[1]=u;for(var i=2;i<n;i++)o[i]=a[i];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}s.displayName="MDXCreateElement"},15042:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>i});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-04-21-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,u={permalink:"/cardano-updates/2023-04-21-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-21-ledger.md",source:"@site/blog/2023-04-21-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-04-21T00:00:00.000Z",formattedDate:"April 21, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:.905,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-04-21-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-21-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-20-mithril"}},p={authorsImageUrls:[void 0]},i=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway ledger era",id:"conway-ledger-era",level:3},{value:"Haddocks hosted on github pages",id:"haddocks-hosted-on-github-pages",level:3},{value:"Small improvements to the API",id:"small-improvements-to-the-api",level:3},{value:"Technical Debt",id:"technical-debt",level:3}],d={toc:i},c="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"We continued to make progress on CIP-1694 and the conway ledger era.\nIn particular, the conway era now supports Plutus V3.\nFinally, we made small improvements to the ledger API and now host\nour Haskell code documentation (haddocks) on github pages."),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway-ledger-era"},"Conway ledger era"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3365"},"pull-3365"),"] - Support for Plutus V3."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3368"},"pull-3368"),"] - Conway genesis fix."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3369"},"pull-3369"),"] - Added some governance ledger state."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3372"},"pull-3372"),"] - Work on the conway delegation certificates."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3384"},"pull-3384"),"] - Rename.")),(0,l.kt)("h3",{id:"haddocks-hosted-on-github-pages"},"Haddocks hosted on github pages"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3385"},"pull-3385"),"] ")),(0,l.kt)("h3",{id:"small-improvements-to-the-api"},"Small improvements to the API"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3366"},"pull-3366"),"]")),(0,l.kt)("h3",{id:"technical-debt"},"Technical Debt"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3367"},"pull-3367"),"] Fix cost model json instances."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3371"},"pull-3371"),"] UMap cleanup."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3373"},"pull-3373"),"] Upgrade to ghc 9.2.7 and cabal 3.10.1."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3375"},"pull-3375"),"] Sadly, we had to revert the ",(0,l.kt)("inlineCode",{parentName:"li"},"TICKF")," optimizations. There was a regression we do not yet understand."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3377"},"pull-3377"),"] Fix cabal warnings."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3383"},"pull-3383"),"] Fix multi-asset test.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d343e3e1.3cb5767a.js b/assets/js/d343e3e1.3cb5767a.js new file mode 100644 index 00000000000..93a856a0a7c --- /dev/null +++ b/assets/js/d343e3e1.3cb5767a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[8033],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(a),d=n,m=s["".concat(p,".").concat(d)]||s[d]||c[d]||o;return a?r.createElement(m,i(i({ref:t},h),{},{components:a})):r.createElement(m,i({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},26796:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-09-15-hydra",authors:["v0d1ch","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-09-15-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-15-hydra.md",source:"@site/blog/2023-09-15-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-15T00:00:00.000Z",formattedDate:"September 15, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.94,hasTruncateMarker:!1,authors:[{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"},{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-15-hydra",authors:["v0d1ch","ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-15-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-15-ledger"}},p={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, most of the Hydra team was attending a cardano scaling workshop in\nNantes, France. They used this oportunity to meet fellow mithril team and spend\nsome time together to hack on some code and, as always, reflect on the past work\nand find optimal path forward for both projects. They also fixed a bug that\ncaused hydra-node to crash when querying L1, worked on a new network resillience\nproof-of-concept and accepted a new ADR related to stateless transaction\nobservation."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano scaling workshop with members of hydra and mithril teams "),(0,n.kt)("li",{parentName:"ul"},"Accepted user contribution for possible new use-case ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1048"},"#1048")),(0,n.kt)("li",{parentName:"ul"},"Fix for the hydra-node crash related to internal wallet query ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1053"},"#1053")),(0,n.kt)("li",{parentName:"ul"},"Collected experimental CI findings ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1070"},"#1070")),(0,n.kt)("li",{parentName:"ul"},"Propose first POC for the network resilience ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1074"},"#1074"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting & report including updates from Mithril"),(0,n.kt)("li",{parentName:"ul"},"Review POC and discuss our options for the network resilience"),(0,n.kt)("li",{parentName:"ul"},"Update cardano-api to version 8.20"),(0,n.kt)("li",{parentName:"ul"},"Address TODOs on aiken commit validator ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1072"},"#1072")),(0,n.kt)("li",{parentName:"ul"},"Complete hydra-support in kupo ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/CardanoSolutions/kupo/pull/117"},"kupo#117"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d3a595c1.813f9114.js b/assets/js/d3a595c1.813f9114.js new file mode 100644 index 00000000000..7d55406694b --- /dev/null +++ b/assets/js/d3a595c1.813f9114.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1537],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?o(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},o=Object.keys(t);for(n=0;n<o.length;n++)a=o[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)a=o[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var u=n.createContext({}),p=function(t){var e=n.useContext(u),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(u.Provider,{value:e},t.children)},c="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},s=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,u=t.parentName,d=i(t,["components","mdxType","originalType","parentName"]),c=p(a),s=r,h=c["".concat(u,".").concat(s)]||c[s]||m[s]||o;return a?n.createElement(h,l(l({ref:e},d),{},{components:a})):n.createElement(h,l({ref:e},d))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var u in e)hasOwnProperty.call(e,u)&&(i[u]=e[u]);i.originalType=t,i[c]="string"==typeof t?t:r,l[1]=i;for(var p=2;p<o;p++)l[p]=a[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},698:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-10-19-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-10-19-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-19-node-cli-api.md",source:"@site/blog/2022-10-19-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-10-19T00:00:00.000Z",formattedDate:"October 19, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.57,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-10-19-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-21-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-18-consensus"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-submit-api",id:"cardano-submit-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],d={toc:p},c="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-10-19---2022-11-01"},"2022-10-19 - 2022-11-01"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Ask the node about the current mempool's capacity and sizes"),(0,r.kt)("li",{parentName:"ul"},"Request the next transaction from the mempool's current list"),(0,r.kt)("li",{parentName:"ul"},"Query if a particular transaction exists in the mempool")),(0,r.kt)("p",null,"Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric ",(0,r.kt)("inlineCode",{parentName:"p"},"tx_submit_fail_count")," has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Documentation improvments"),(0,r.kt)("li",{parentName:"ul"},"Release 1.35.4 was merged & released"),(0,r.kt)("li",{parentName:"ul"},"Exported various types from cardano-api that were requested by community members")),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4508"},"Release 1.35.4"))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4276"},"Add tx-mempool command to CLI")),(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4538"},"Fix query era mismatch bug in transaction build command")),(0,r.kt)("li",{parentName:"ul"},"[Serenity]"," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4516"},"Condense Read and Validation modules in cardano-cli"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4482"},"Return Lovelace for calculateMinimumUTxO")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4554"},"Export IsPlutusScriptLanguage from cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4546"},"Reduce exposed modules in cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4568"},"Add ToJSON and FromJSON instances for Address")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4565"},"Export TxIns type alias from Cardano.Api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4534"},"Export more generators from cardano-api"))),(0,r.kt)("h3",{id:"cardano-submit-api"},"cardano-submit-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4566"},"Add tx_submit_fail_count metric"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4549"},"Upgrade to cabal-3.8.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4613"},"Update building-the-node-using-nix.md"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"None")),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d3f3f546.88297ed1.js b/assets/js/d3f3f546.88297ed1.js new file mode 100644 index 00000000000..fe1f6957796 --- /dev/null +++ b/assets/js/d3f3f546.88297ed1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[13764],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=s(r),h=n,d=c["".concat(u,".").concat(h)]||c[h]||m[h]||i;return r?a.createElement(d,l(l({ref:t},p),{},{components:r})):a.createElement(d,l({ref:t},p))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var s=2;s<i;s++)l[s]=r[s];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}h.displayName="MDXCreateElement"},54994:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2022-11-25-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2022-11-25-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-25-crypto.md",source:"@site/blog/2022-11-25-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2022-11-25T00:00:00.000Z",formattedDate:"November 25, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.705,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-11-25-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-28-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-25-hydra"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"MuSig2",id:"musig2",level:3},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:2}],p={toc:s},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The four open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team. "),(0,n.kt)("li",{parentName:"ul"},"Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes"),(0,n.kt)("li",{parentName:"ul"},"cardano-base: The VRF and BLS branchs are still open and in progress"),(0,n.kt)("li",{parentName:"ul"},"KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent. ")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/31"},"PR#31")),(0,n.kt)("li",{parentName:"ul"},"We are introducing a more granular error handling mechanism ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/33"},"PR#33")),(0,n.kt)("li",{parentName:"ul"},"We rethought the API and made it more consistent with the underlying secp256k1 library ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/35"},"PR#35"))),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The mithril crates in general will be published in crates.io, and we adapted the core library's README ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/616"},"PR#616")," "),(0,n.kt)("li",{parentName:"ul"},"We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/620"},"PR#620"))),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#341")),(0,n.kt)("li",{parentName:"ul"},"SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/344"},"PR#344")),(0,n.kt)("li",{parentName:"ul"},"Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"))),(0,n.kt)("h2",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"We keep progressing in the secure forgetting PR and resolving some bugs on memory handling ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"PR#255")),(0,n.kt)("li",{parentName:"ul"},"Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d442e1d8.854196c8.js b/assets/js/d442e1d8.854196c8.js new file mode 100644 index 00000000000..7ce3689ad11 --- /dev/null +++ b/assets/js/d442e1d8.854196c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[9821],{8678:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/57","page":57,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/56","nextPage":"/cardano-updates/page/58","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/d5676bf9.f90c55bb.js b/assets/js/d5676bf9.f90c55bb.js new file mode 100644 index 00000000000..e21778f56e0 --- /dev/null +++ b/assets/js/d5676bf9.f90c55bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3270],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>d});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),p=u(a),m=n,d=p["".concat(s,".").concat(m)]||p[m]||c[m]||o;return a?r.createElement(d,i(i({ref:t},h),{},{components:a})):r.createElement(d,i({ref:t},h))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},82850:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-07-07-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-07-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-hydra.md",source:"@site/blog/2023-07-07-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.865,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-07-hydra",authors:["ffakenz","v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-07-goedel"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-07-sre"}},s={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},p="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week the Hydra team accomplished some nice progress. They secured the\nnetwork layer further by implementing authentication of the messages between the\npeers in the Head protocol. In the process they also managed to separate\nHeartBeat messages from the protocol ones which somewhat improved the quality of\ncode in Hydra. The team also finished work related to sending only transaction\nids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark\npublishing on the website."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"Implemented")," authenticated messages"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"Implemented")," send only transaction ids in ReqSn messages"),(0,n.kt)("li",{parentName:"ul"},"Separate ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/969"},"HeartBeat")," messages from the core network protocol messages"),(0,n.kt)("li",{parentName:"ul"},"Publish multiple pre-defined ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/947"},"benchmarks")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/967"},"Fixed")," a smoke-test issue where funds would not be returned to the faucet"),(0,n.kt)("li",{parentName:"ul"},"Found a bug in the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-ghsa-c8qp-cv4h-vcc4/pull/1"},"off-chain signature\nverification"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Spike on performance improvements of event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/913"},"#913")),(0,n.kt)("li",{parentName:"ul"},"Add new endpoint for submitting client transactions"),(0,n.kt)("li",{parentName:"ul"},"Remove commit from internal wallet")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d5cc3122.33b4ba11.js b/assets/js/d5cc3122.33b4ba11.js new file mode 100644 index 00000000000..8bb9484ca8a --- /dev/null +++ b/assets/js/d5cc3122.33b4ba11.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[28669],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),s=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=s(n),m=r,h=p["".concat(u,".").concat(m)]||p[m]||d[m]||i;return n?a.createElement(h,o(o({ref:t},c),{},{components:n})):a.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},3047:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const i={title:"DB-sync Team Update",slug:"2023-06-08-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-08-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-08-db-sync.md",source:"@site/blog/2023-06-08-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.745,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-06-08-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-09-hydra"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-08-goedel"}},u={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],c={toc:s},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"We've made progress in all high level objectives"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"CIP-1694 integration design"),(0,r.kt)("li",{parentName:"ul"},"UTxO-HD integration proof of concept"),(0,r.kt)("li",{parentName:"ul"},"schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2"),(0,r.kt)("li",{parentName:"ul"},"A new hire will help us with devx issues.")),(0,r.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We have an initial design for the Conway integration in db-sync"),(0,r.kt)("li",{parentName:"ul"},"The initial UTxO-HD integration resulted in a requested feuture that\nthe consensus team is working on\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/88"},"#88"),"."),(0,r.kt)("li",{parentName:"ul"},"Added two optional migrations that speed up querying UTxO\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1416"},"#1416")),(0,r.kt)("li",{parentName:"ul"},"Work on improving the above feauture by adding tests and fixing tech debt\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1429"},"#1429"),(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1419"},"#1419")),(0,r.kt)("li",{parentName:"ul"},"Fixed issue with ada_pots being wrong\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/1ad4521a5601e8e98dc06bba2826d6b2f9b4fcf4"},"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/1ad4521a5601e8e98dc06bba2826d6b2f9b4fcf4")),(0,r.kt)("li",{parentName:"ul"},"Added a process which fixes in place scripts with wrong CBOR serialisation.\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/8792f72e2485b320de26c02dacc4d504d377ba17"},"https://github.com/input-output-hk/cardano-db-sync/pull/1407/commits/8792f72e2485b320de26c02dacc4d504d377ba17")),(0,r.kt)("li",{parentName:"ul"},"Prepared a tag ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/releases"},(0,r.kt)("inlineCode",{parentName:"a"},"13.1.1.2")),"\nwhich is tested and ready to release. It contains many of the above.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d5f27176.938b3c42.js b/assets/js/d5f27176.938b3c42.js new file mode 100644 index 00000000000..a9c67a136dd --- /dev/null +++ b/assets/js/d5f27176.938b3c42.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95558],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>k});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function p(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function l(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),u=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):p(p({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(o.Provider,{value:e},t.children)},m="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,c=l(t,["components","mdxType","originalType","parentName"]),m=u(a),h=r,k=m["".concat(o,".").concat(h)]||m[h]||d[h]||i;return a?n.createElement(k,p(p({ref:e},c),{},{components:a})):n.createElement(k,p({ref:e},c))}));function k(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,p=new Array(i);p[0]=h;var l={};for(var o in e)hasOwnProperty.call(e,o)&&(l[o]=e[o]);l.originalType=t,l[m]="string"==typeof t?t:r,p[1]=l;for(var u=2;u<i;u++)p[u]=a[u];return n.createElement.apply(null,p)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},45623:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>o,contentTitle:()=>p,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-10-10-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},p="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-10-10-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-10-node-cli-api.md",source:"@site/blog/2023-10-10-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-10-10T00:00:00.000Z",formattedDate:"October 10, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.985,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-10-10-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-11-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-06-hydra"}},o={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(t){let{components:e,...a}=t;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-09-27---2023-10-10"},"2023-09-27 - 2023-10-10"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CARDANO-NODE"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.5.0-pre"},"Pre-release of cardano-node 8.5.0-pre"))),(0,r.kt)("p",null,"CARDANO-CLI"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Depracated governance query commands and moved all governance related queries to ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli <era> query")),(0,r.kt)("li",{parentName:"ul"},"Drep registration certificates now allow to include an anchor"),(0,r.kt)("li",{parentName:"ul"},"Integrated Drep retirement ceriticates"),(0,r.kt)("li",{parentName:"ul"},"clean up of Drep registration certificates.")),(0,r.kt)("p",null,"CARDANO-API"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add support for committee hot key witnesses"),(0,r.kt)("li",{parentName:"ul"},"Require conway onwards for voting"),(0,r.kt)("li",{parentName:"ul"},"Conway drep registration: expose ledger anchor parameter"),(0,r.kt)("li",{parentName:"ul"},"Add certs to txbody of Conway transactions")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/347"},"Move ",(0,r.kt)("inlineCode",{parentName:"a"},"governance query")," commands to ",(0,r.kt)("inlineCode",{parentName:"a"},"query")," command group")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/344"},"Rename create-new-committee into update-committee")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/341"},"New version cardano-cli-8.12.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/338"},"Add support for committee hot key witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/337"},"conway governance vote create: make it possible to use cc hot keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/331"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.11.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/330"},"Drep certification registration: add parameters for anchor")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/329"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.25.0.1"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/327"},"Move files that are not golden files into ",(0,r.kt)("inlineCode",{parentName:"a"},"input")," directory")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/324"},"Update to cardano-api-8.24")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/323"},"Fix #311 - Add Cold Committee Key text envelope")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/322"},"create-poll, answer-poll, verify-poll: move to 'babbage governance' block")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/320"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.23.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/319"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction view")," emit JSON")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/318"},"Tidy up query command structure")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/317"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"caseShelleyToBabbageOrConwayEraOnwards")," from ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/316"},"Add DRep Retirement Certificate command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/310"},"Update to cardano api 8.22.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/309"},"drep registration-certificate: remove mix with SPO registration"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/307"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"EraCast")," instance for ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/306"},"Add certs to txbody of Conway transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/305"},"Move DRep reg certificate anchor types from cardano-cli to cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/304"},"Add BabbageEraOnly")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/303"},"New version cardano-api-8.25.2.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/300"},"Add support for committee hot key witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/299"},"Reduce constraint usage with eons")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/297"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"withShelleyBasedEraConstraintsForLedger"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/296"},"Simplify ",(0,r.kt)("inlineCode",{parentName:"a"},"DebugLedgerState")," with eons")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/294"},"New version cardano-api-8.25.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/293"},"Require conway onwards for voting")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/292"},"Add witness committee cold key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/291"},"Fix CHaP failure due to haddock issue")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/290"},"Amend cardano-api/pull/284 to use ReexposeLedger")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/289"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEraInEon")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"EraInEon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/288"},"Release 8.24.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/287"},"Parameterize ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEraInEon"),". Add ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/286"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.23.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/284"},"conway drep registration: expose ledger anchor parameter")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/282"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"caseAlonzoOnlyOrBabbageEraOnwards")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"alonzoEraOnlyToAlonzoEraOnwards")," functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/281"},"Rename eon functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/280"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEraInEon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/279"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"ValidityLowerBoundSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/278"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"TxExtraKeyWitnessesSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/277"},"Explicit pattern match on all ledger certificates constructors. Remove redundant module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/276"},"Release 8.22.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/275"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"TxTotalAndReturnCollateralSupportedInEra")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5490"},"Integrate upstream libraries for 8.5"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5497"},"bump cardano-api to 8.25.2")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5491"},"Remove unused code in cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5490"},"Integrate upstream libraries for 8.5"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d65b9dd2.7da8dd3d.js b/assets/js/d65b9dd2.7da8dd3d.js new file mode 100644 index 00000000000..edb0cd75307 --- /dev/null +++ b/assets/js/d65b9dd2.7da8dd3d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93108],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>d});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function s(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t){if(null==e)return{};var o,r,n=function(e,t){if(null==e)return{};var o,r,n={},a=Object.keys(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var l=r.createContext({}),p=function(e){var t=r.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):s(s({},t),e)),o},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(o),h=n,d=c["".concat(l,".").concat(h)]||c[h]||m[h]||a;return o?r.createElement(d,s(s({ref:t},u),{},{components:o})):r.createElement(d,s({ref:t},u))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,s=new Array(a);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:n,s[1]=i;for(var p=2;p<a;p++)s[p]=o[p];return r.createElement.apply(null,s)}return r.createElement.apply(null,o)}h.displayName="MDXCreateElement"},59513:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var r=o(87462),n=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-10-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-10-27-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-network.md",source:"@site/blog/2023-10-27-network.md",title:"Network Team Update",description:"High-level overview of sprint 47",date:"2023-10-27T00:00:00.000Z",formattedDate:"October 27, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.765,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-10-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-27-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-27-sre"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level overview of sprint 47",id:"high-level-overview-of-sprint-47",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"CI / Tests",id:"ci--tests",level:3},{value:"KeepAlive client",id:"keepalive-client",level:3},{value:"Galois",id:"galois",level:3},{value:"Cardano Network Service Assurance (CNSA)",id:"cardano-network-service-assurance-cnsa",level:3},{value:"New CHaP Release",id:"new-chap-release",level:3},{value:"More details",id:"more-details",level:2},{value:"CI / Tests",id:"ci--tests-1",level:3},{value:"Release Process",id:"release-process",level:3}],u={toc:p},c="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,r.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-47"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+47%22"},"sprint 47")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We continued to review the process of bootstrap peers, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4555"},"ouroboros-network#4555")),(0,n.kt)("h3",{id:"ci--tests"},"CI / Tests"),(0,n.kt)("p",null,"We investigated our CI issues. We found a memory leak in ",(0,n.kt)("inlineCode",{parentName:"p"},"typed-protocols"),"\nfunction used for testing codecs which triggered out of memory manager (OOM) on\nsome platforms (",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/typed-protocols/pull/43"},"typed-protocols#43"),"); we also found a bug in the connection manager which resulted in CI\n",(0,n.kt)("inlineCode",{parentName:"p"},"timeouts")," (see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4696/commits/010d9b2bd76356373d8c139eaedd8aea7ad90680"},"connection-manager-fix"),"). "),(0,n.kt)("h3",{id:"keepalive-client"},"KeepAlive client"),(0,n.kt)("p",null,"We found two small issues with the keep-alive client, which were addressed\nby Karl Knutsson (",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/"},"Cardano Foundation"),"), ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4689"},"ouroboros-network#4689"),"."),(0,n.kt)("h3",{id:"galois"},"Galois"),(0,n.kt)("p",null,"We merged two large PRs prepared by ",(0,n.kt)("a",{parentName:"p",href:"https://galois.com/"},"Galois"),":"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4660"},"inspect ",(0,n.kt)("inlineCode",{parentName:"a"},"error")," call sites")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4663"},"implement micro benchmarks for ",(0,n.kt)("inlineCode",{parentName:"a"},"PeerMetrics")))),(0,n.kt)("h3",{id:"cardano-network-service-assurance-cnsa"},"Cardano Network Service Assurance (CNSA)"),(0,n.kt)("p",null,"Galois made the following progress on CNSA:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"a simple ","[InfuxDB]"," database backend has been added;"),(0,n.kt)("li",{parentName:"ul"},"the documentation has been updated;"),(0,n.kt)("li",{parentName:"ul"},"internal improvements to the code;"),(0,n.kt)("li",{parentName:"ul"},'progress on a new "CSNA analysis" that provides, for each sampler node, the\nblock download throughput in bytes over time.')),(0,n.kt)("h3",{id:"new-chap-release"},"New CHaP Release"),(0,n.kt)("p",null,"We cut a new release of ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-netowrk")," packages to ",(0,n.kt)("inlineCode",{parentName:"p"},"CHaP"),": ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/547"},"chap#547")),(0,n.kt)("h2",{id:"more-details"},"More details"),(0,n.kt)("h3",{id:"ci--tests-1"},"CI / Tests"),(0,n.kt)("p",null,"We improved the memory footprint of some of our tests by analysing a stream of\n",(0,n.kt)("inlineCode",{parentName:"p"},"IOSim")," traces without retaining them, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4696"},"ouroboros-network#4696")),(0,n.kt)("p",null,"As a safety measure, we introduced an upper bound for heap memory used by test\nartefacts in our ",(0,n.kt)("inlineCode",{parentName:"p"},"nix")," tests. We use ",(0,n.kt)("inlineCode",{parentName:"p"},"200MB")," limit for all tests except for\n",(0,n.kt)("inlineCode",{parentName:"p"},"network-mux")," tests which use ",(0,n.kt)("inlineCode",{parentName:"p"},"350MB")," limit, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4702"},"ouroboros-network#4702"),"."),(0,n.kt)("p",null,"We refactored one of our tests to use ephemeral ports thus allowing it to\nrun concurrently, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4702"},"ouroboros-network#4702"),"."),(0,n.kt)("p",null,"We merged ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4623"},"ouroboros-network#4623")," which fixes a bunch of test failures."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4694"},"inbound-governor: connection leak")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4607"},"connection-manager: assertion failure")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4605"},"not released connection"))),(0,n.kt)("p",null,"All of them were due to a bug in test logic rather than a bug in production\ncode."),(0,n.kt)("h3",{id:"release-process"},"Release Process"),(0,n.kt)("p",null,"We updated our release process & associated scripts, see\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4705"},"ouroboros-network#4705"),"."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d6a3b4a5.0e85b9f0.js b/assets/js/d6a3b4a5.0e85b9f0.js new file mode 100644 index 00000000000..94ca69def56 --- /dev/null +++ b/assets/js/d6a3b4a5.0e85b9f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30482],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=o.createContext({}),u=function(e){var t=o.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=u(e.components);return o.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),s=u(n),m=r,h=s["".concat(p,".").concat(m)]||s[m]||d[m]||a;return n?o.createElement(h,l(l({ref:t},c),{},{components:n})):o.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:r,l[1]=i;for(var u=2;u<a;u++)l[u]=n[u];return o.createElement.apply(null,l)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},19301:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-07-31-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-31-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-31-network.md",source:"@site/blog/2023-07-31-network.md",title:"Network Team Update",description:"Network Update (Sprints 39 & 40)",date:"2023-07-31T00:00:00.000Z",formattedDate:"July 31, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.18,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-07-31-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-01-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-28-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"Network Update (Sprints 39 & 40)",id:"network-update-sprints-39--40",level:2},{value:"Sprint 39 (Jun 26 - Jul 09)",id:"sprint-39-jun-26---jul-09",level:3},{value:"Major changes",id:"major-changes",level:4},{value:"<code>node-to-client</code> protocol",id:"node-to-client-protocol",level:5},{value:"<code>node-to-node</code> protocol",id:"node-to-node-protocol",level:5},{value:"Minor changes",id:"minor-changes",level:4},{value:"Sprint 40 (Jul 09 - Jul 23)",id:"sprint-40-jul-09---jul-23",level:3},{value:"Major changes",id:"major-changes-1",level:4}],c={toc:u},s="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(s,(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"network-update-sprints-39--40"},"Network Update (Sprints 39 & 40)"),(0,r.kt)("p",null,"The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away.\nIt was great to see and talk to so many of the community members."),(0,r.kt)("h3",{id:"sprint-39-jun-26---jul-09"},"Sprint 39 (Jun 26 - Jul 09)"),(0,r.kt)("h4",{id:"major-changes"},"Major changes"),(0,r.kt)("p",null,"Now the following ",(0,r.kt)("strong",{parentName:"p"},"list of traces will be turned on by default"),":"),(0,r.kt)("h5",{id:"node-to-client-protocol"},(0,r.kt)("inlineCode",{parentName:"h5"},"node-to-client")," protocol"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalConnectionManagerTracer")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalInboundGovernor")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalHandshake")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LocalServer"))),(0,r.kt)("h5",{id:"node-to-node-protocol"},(0,r.kt)("inlineCode",{parentName:"h5"},"node-to-node")," protocol"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Server"))),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5353"},"cardano-node#5353"),". This will be released in ",(0,r.kt)("inlineCode",{parentName:"p"},"node-8.2.0"),"."),(0,r.kt)("p",null,"We made sure that ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-client-0.1.0.x")," library (which is ",(0,r.kt)("inlineCode",{parentName:"p"},"db-sync"),") is not using the experimental ",(0,r.kt)("inlineCode",{parentName:"p"},"node-to-client")," protocol.\nThe ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-client-0.2.0.0")," was not affected.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4612"},"ouroboros-network#4612"),"."),(0,r.kt)("p",null,"We merged the ",(0,r.kt)("strong",{parentName:"p"},"dynamic block production feature")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," (also available in the ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-8.2.0")," release).\nDynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3159"},"ouroboros-network#3159"),", ","[ouroboros-consensu#140]","."),(0,r.kt)("p",null,"We continued to review the implementation of big ledger peers for eclipse evasion, see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"ouroboros-network#4462"),"."),(0,r.kt)("h4",{id:"minor-changes"},"Minor changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We refactored the top level ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node")," error handler: ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5356"},"cardano-node#5356"))),(0,r.kt)("h3",{id:"sprint-40-jul-09---jul-23"},"Sprint 40 (Jul 09 - Jul 23)"),(0,r.kt)("h4",{id:"major-changes-1"},"Major changes"),(0,r.kt)("p",null,"We integrated ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.8.2.0")," with the ",(0,r.kt)("inlineCode",{parentName:"p"},"master")," branch of ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," for the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.0")," release (the version match between ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," is purely accidental).\nThis includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"integration with ",(0,r.kt)("strong",{parentName:"li"},"dynamic block production")," feature.\nThis feature is documented in the ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5399"},"following PR"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Warm valency")," for local root peers (see below).")),(0,r.kt)("p",null,"For the full list of features included in the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.2.0")," release from the network side, please take a look at the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.2.0-pre"},"pre-release nodes"),"."),(0,r.kt)("p",null,"We ",(0,r.kt)("strong",{parentName:"p"},"improved the memory footprint")," of peer metrics measured by the P2P stack.\nPeer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation).\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4620"},"ouroboros-network#4620"),".\nThe improvement will be available in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-8.2.0"),"."),(0,r.kt)("p",null,"We added an ",(0,r.kt)("strong",{parentName:"p"},"optional explicit warm valency")," to local root peers of the ",(0,r.kt)("strong",{parentName:"p"},"P2P topology file"),".\nPreviously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to.\nThe hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones.\nWarm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4575"},"ouroboros-network#4575"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5409"},"cardano-node#5409"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d6a93ba7.2190ecb6.js b/assets/js/d6a93ba7.2190ecb6.js new file mode 100644 index 00000000000..7ff15b99181 --- /dev/null +++ b/assets/js/d6a93ba7.2190ecb6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31349],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),m=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=m(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=m(r),d=a,y=u["".concat(l,".").concat(d)]||u[d]||c[d]||o;return r?n.createElement(y,s(s({ref:t},p),{},{components:r})):n.createElement(y,s({ref:t},p))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:a,s[1]=i;for(var m=2;m<o;m++)s[m]=r[m];return n.createElement.apply(null,s)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},61256:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>m});var n=r(87462),a=(r(67294),r(3905));const o={title:"System Test Team Update",slug:"2022-12-01-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-12-01-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-system-test.md",source:"@site/blog/2022-12-01-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2022-12-01T00:00:00.000Z",formattedDate:"December 1, 2022",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.765,hasTruncateMarker:!1,authors:[{name:"Dorin Solomon",title:"System Test Team Lead",url:"https://github.com/dorin100",imageURL:"https://github.com/dorin100.png",key:"dorin100"}],frontMatter:{title:"System Test Team Update",slug:"2022-12-01-system-test",authors:"dorin100",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-01-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-30-consensus"}},l={authorsImageUrls:[void 0]},m=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],p={toc:m},u="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the ",(0,a.kt)("em",{parentName:"p"},"P2P Single\nRelay")," functionality, and also tested some DB-Sync tags."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"moved the System Test CLI Pipelines from BuildKite to Github Actions"),(0,a.kt)("li",{parentName:"ul"},"improved the reporting tools to support the rerun of the failled tests and update of the reports "),(0,a.kt)("li",{parentName:"ul"},"added support for Github API in ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/mkoura/report-aggregator"},"report-aggregator"),", so reports will be generated from the GitHub nightly jobs from now on"),(0,a.kt)("li",{parentName:"ul"},"added support for mixed topology - P2P, legacy, mixed topologies"),(0,a.kt)("li",{parentName:"ul"},"planned the P2P Single Relay system test activities "),(0,a.kt)("li",{parentName:"ul"},"added support to start regression tests with PV8 + better selection of tests")),(0,a.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)"),(0,a.kt)("li",{parentName:"ul"},"tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d6b66cf4.24242dbb.js b/assets/js/d6b66cf4.24242dbb.js new file mode 100644 index 00000000000..9a5a9dc7d99 --- /dev/null +++ b/assets/js/d6b66cf4.24242dbb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95516],{1673:a=>{a.exports=JSON.parse('{"title":"Recent Posts","items":[{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-12-06-ledger"},{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-12-06-mithril"},{"title":"Performance & Tracing Update","permalink":"/cardano-updates/2023-12-04-performance-and-tracing"},{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-12-01-hydra"},{"title":"Consensus Team Update","permalink":"/cardano-updates/2023-11-29-consensus"},{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-29-mithril"},{"title":"Hydra Team Update","permalink":"/cardano-updates/2023-11-24-hydra"},{"title":"SRE Team Update","permalink":"/cardano-updates/2023-11-24-sre"},{"title":"Ledger Team Update","permalink":"/cardano-updates/2023-11-22-ledger"},{"title":"Mithril Team Update","permalink":"/cardano-updates/2023-11-22-mithril"}]}')}}]); \ No newline at end of file diff --git a/assets/js/d6c09ac2.62736fde.js b/assets/js/d6c09ac2.62736fde.js new file mode 100644 index 00000000000..0aa1b1577db --- /dev/null +++ b/assets/js/d6c09ac2.62736fde.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[22393],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=c(a),d=n,m=u["".concat(p,".").concat(d)]||u[d]||h[d]||o;return a?r.createElement(m,i(i({ref:t},s),{},{components:a})):r.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var c=2;c<o;c++)i[c]=a[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},98294:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-07-21-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-21-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-hydra.md",source:"@site/blog/2023-07-21-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-07-21T00:00:00.000Z",formattedDate:"July 21, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.7,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-07-21-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-26-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-07-21-ledger"}},p={authorsImageUrls:[void 0]},c=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:c},u="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team updated the specification to align with recent\noff-chain protocol changes, completed refactoring the snapshot emission\nin preparation for event-sourced protocol logic, and updated to GHC\n9.2.7, resulting in improved compile times and slightly smaller Plutus\nscripts."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Updated the specification to match the recent off-chain protocol\nchanges to complete\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Refactored the snapshot emission logic in preparation for event\nsourced protocol logic."),(0,n.kt)("li",{parentName:"ul"},"Updated to GHC 9.2.7, which led to improved compile times and\nslightly smaller plutus scripts.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting next wednesday and July report"),(0,n.kt)("li",{parentName:"ul"},"Reflect latest information onto our roadmap."),(0,n.kt)("li",{parentName:"ul"},"Actual implemention of event-sourced persistence\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/913"},"#913"),"."),(0,n.kt)("li",{parentName:"ul"},"Update the use cases section on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family"},"https://hydra.family")),(0,n.kt)("li",{parentName:"ul"},"Remove deprecated internal commit\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/954"},"#954"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d6f20405.d88dddb4.js b/assets/js/d6f20405.d88dddb4.js new file mode 100644 index 00000000000..486c8e8cbeb --- /dev/null +++ b/assets/js/d6f20405.d88dddb4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23599],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),s=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,d=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(a),h=n,m=u["".concat(d,".").concat(h)]||u[h]||p[h]||o;return a?r.createElement(m,i(i({ref:t},c),{},{components:a})):r.createElement(m,i({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},73363:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-09-01-hydra",authors:["v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-09-01-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-hydra.md",source:"@site/blog/2023-09-01-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.93,hasTruncateMarker:!1,authors:[{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-01-hydra",authors:["v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-01-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-01-ledger"}},d={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],c={toc:s},u="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team focused primarily on changes needed in the network\nlayer and have the first draft document related to needed design. They also\nimproved the user experience by allowing a commit using inline datums.\nDiscussed the off-chain governance with researchers and improved internal model\ntests. "),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report published"),(0,n.kt)("li",{parentName:"ul"},"Small changes to hydraw and tutorial in light of the Masterclass"),(0,n.kt)("li",{parentName:"ul"},"Investigated a bug and saw it was solved by recent developments"),(0,n.kt)("li",{parentName:"ul"},"Improved the model tests by fully validating L1 transactions"),(0,n.kt)("li",{parentName:"ul"},"Enhanced the /commit API to also allow commit from scripts with inline datums (user request)"),(0,n.kt)("li",{parentName:"ul"},"Discussed off-chain governance with IOG and CF researchers"),(0,n.kt)("li",{parentName:"ul"},"Drafted a first network specification document in the context of Network resilience")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},'Have a clear understanding of the changes we need for the "Improve network resiliency" feature'),(0,n.kt)("li",{parentName:"ul"},"Groomed and agreed plan on incremental commits/decommits"),(0,n.kt)("li",{parentName:"ul"},"Updated tutorials including CI workflows to check consistency"),(0,n.kt)("li",{parentName:"ul"},"Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d70b4c5f.9e25feed.js b/assets/js/d70b4c5f.9e25feed.js new file mode 100644 index 00000000000..5d20f2ae85b --- /dev/null +++ b/assets/js/d70b4c5f.9e25feed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[71870],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=c(n),p=a,h=d["".concat(l,".").concat(p)]||d[p]||u[p]||i;return n?r.createElement(h,o(o({ref:t},m),{},{components:n})):r.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var c=2;c<i;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},39446:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-10-06-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/2023-10-06-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-06-performance-and-tracing.md",source:"@site/blog/2023-10-06-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-10-06T00:00:00.000Z",formattedDate:"October 6, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.625,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-10-06-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-06-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-04-consensus"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Consensus QTAs",id:"consensus-qtas",level:3},{value:"Development",id:"development",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system."),(0,a.kt)("li",{parentName:"ul"},"Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7."),(0,a.kt)("li",{parentName:"ul"},"Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store."),(0,a.kt)("li",{parentName:"ul"},"Tracing: The machine-readable tracer configuration has been merged. Optimization of ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-tracer")," started."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Ongoing variance analysis and refined cluster topology.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the\nperformance of the in-memory backing store and evaluate possible optimizations (or regressions) for it. "),(0,a.kt)("p",null,"Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results\nshow all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," service."),(0,a.kt)("h3",{id:"consensus-qtas"},"Consensus QTAs"),(0,a.kt)("p",null,"The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The\nfeedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype."),(0,a.kt)("h3",{id:"development"},"Development"),(0,a.kt)("p",null,"Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort. "),(0,a.kt)("p",null,"PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time,\nwe'd like to validate the many improvements that have gone into the Plutus evaluator."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The focus for further optimization of the new tracing system has shifted to ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," - the service\nreceiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," is\nmore performance critical, the receiving service must still minimize its resource footprint. Moreover, it can\ngenerate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated\nthe same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d7836792.8920f6e8.js b/assets/js/d7836792.8920f6e8.js new file mode 100644 index 00000000000..460ff413537 --- /dev/null +++ b/assets/js/d7836792.8920f6e8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42126],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(a),h=n,m=d["".concat(u,".").concat(h)]||d[h]||c[h]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},82217:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-25-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-25-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-25-hydra.md",source:"@site/blog/2023-08-25-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-25T00:00:00.000Z",formattedDate:"August 25, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.875,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-25-hydra",authors:["ffakenz"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-08-28-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-24-performance-and-tracing"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},d="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team conducted the monthly review meeting for Agust,which\ncontinously ensures transparent communication and project evaluation."),(0,n.kt)("p",null,"In terms of community engagement, the Hydra team gave a Hydra master-class at\nRareEvo workshop as an educational initiative for the community.\nAdditionally, the team updated the Hydra demo and tutorial to include Mithril\nand latest release changes."),(0,n.kt)("p",null,"They also focused on exploring the Hydra network resiliance in order to improve\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," availability, as it becomes stuck very easily and that leads to a\nbad user experience."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Hydra master-class at RareEvo workshop!"),(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting"),(0,n.kt)("li",{parentName:"ul"},"Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff"),(0,n.kt)("li",{parentName:"ul"},"Groomed network resilience and explorer features ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"New ADR for \u201cResourced based API\u201d ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1028"},"#1028"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Have a poc on network resilience working ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"Fix issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/931"},"#931"),": \u201cChain state in head state not updated on replayed observation\u201d"),(0,n.kt)("li",{parentName:"ul"},"Fix issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1039"},"#1039"),': "Close transaction dropped from cardano-node"')))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d7899fea.8822e22a.js b/assets/js/d7899fea.8822e22a.js new file mode 100644 index 00000000000..3e43c34440d --- /dev/null +++ b/assets/js/d7899fea.8822e22a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17285],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=u(r),d=n,h=c["".concat(p,".").concat(d)]||c[d]||m[d]||o;return r?a.createElement(h,i(i({ref:t},s),{},{components:r})):a.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},59997:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2022-11-11-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-11-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-11-crypto.md",source:"@site/blog/2022-11-11-crypto.md",title:"Crypto Team Update",description:"High level overview",date:"2022-11-11T00:00:00.000Z",formattedDate:"November 11, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.305,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-11-11-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-16-performance-and-tracing"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-11-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The SECP primitives AC has been met, and the test-vectors ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/320"},"PR")," has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/336"},"PR")," has been merged, and we've adapted the KES secure ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/255"},"PR")," to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/pull/341"},"PR#"),"). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork. "),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation. "),(0,n.kt)("li",{parentName:"ul"},"We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool. "),(0,n.kt)("li",{parentName:"ul"},"In parallel, we keep progressing on the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent"},"KES agent")),(0,n.kt)("li",{parentName:"ul"},"VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification. "),(0,n.kt)("li",{parentName:"ul"},"Our libsodium fork now links directly to upstream libsodium.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d79a4bb7.a815c560.js b/assets/js/d79a4bb7.a815c560.js new file mode 100644 index 00000000000..82016e08b32 --- /dev/null +++ b/assets/js/d79a4bb7.a815c560.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90206],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(a),m=n,h=c["".concat(s,".").concat(m)]||c[m]||u[m]||o;return a?r.createElement(h,i(i({ref:t},p),{},{components:a})):r.createElement(h,i({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},25790:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-11-25-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-11-25-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-25-hydra.md",source:"@site/blog/2022-11-25-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2022-11-25T00:00:00.000Z",formattedDate:"November 25, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.73,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-25-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-25-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-23-ledger"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:d},c="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a ",(0,n.kt)("a",{parentName:"p",href:"https://summit.cardano.org/agenda-day-2/cardano-ballot-speaker-winner-presentation-6/"},"presentation")," about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Attended the Cardano Summit in Lausanne. Hydra was topic of one talk: ",(0,n.kt)("a",{parentName:"li",href:"https://summit.cardano.org/agenda-day-2/cardano-ballot-speaker-winner-presentation-6/"},"https://summit.cardano.org/agenda-day-2/cardano-ballot-speaker-winner-presentation-6/")),(0,n.kt)("li",{parentName:"ul"},"Had a team workshop / hackathon after the summit:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Retrospective"),(0,n.kt)("li",{parentName:"ul"},"Impact mapping session"),(0,n.kt)("li",{parentName:"ul"},"Hacked on smaller things"))),(0,n.kt)("li",{parentName:"ul"},"Got a PR for tullia/cicero things by @kdermetfan")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting"),(0,n.kt)("li",{parentName:"ul"},"Tie up several loose ends / branches."),(0,n.kt)("li",{parentName:"ul"},"Resolve Tx validity discussions & PRs."),(0,n.kt)("li",{parentName:"ul"},"Review cicero PR & try it out.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d7c69167.06afceb4.js b/assets/js/d7c69167.06afceb4.js new file mode 100644 index 00000000000..621138ba0d5 --- /dev/null +++ b/assets/js/d7c69167.06afceb4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24288],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),d=a,f=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return r?n.createElement(f,l(l({ref:t},s),{},{components:r})):n.createElement(f,l({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:a,l[1]=i;for(var c=2;c<o;c++)l[c]=r[c];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},15983:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-09-29-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-09-29-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-29-goedel.md",source:"@site/blog/2023-09-29-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-09-29T00:00:00.000Z",formattedDate:"September 29, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.42,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-09-29-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-02-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-29-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The team is currently formalising mini protocols and testing the\nperformance analysis tool"),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"drafting processs calculus semantics of mini protocol programs")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"testing the new performance modelling tool")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"further work on specification of mini protocols")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"extension of mini protocol framework to support communication of\nprograms with local environments via synchronous channels"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d7d2f3e9.262520e6.js b/assets/js/d7d2f3e9.262520e6.js new file mode 100644 index 00000000000..6685464afe3 --- /dev/null +++ b/assets/js/d7d2f3e9.262520e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[97363],{93901:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/quarterly/tags/cli-api-quarterly","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/d83d9042.fc0ecb0d.js b/assets/js/d83d9042.fc0ecb0d.js new file mode 100644 index 00000000000..4a8411549da --- /dev/null +++ b/assets/js/d83d9042.fc0ecb0d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[8580],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),h=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=h(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=h(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||p[c]||i;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var h=2;h<i;h++)o[h]=a[h];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},42611:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>h});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-05-12-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-12-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-hydra.md",source:"@site/blog/2023-05-12-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.145,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-05-12-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-05-12-goedel"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-12-network"}},s={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:h},u="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team achieved a number of milestones, including the release\nof the first mainnet compatible version. Besides this they also addressed\ninconsistencies in rollback handling, added an architecture page to the website,\nreducing the size of logs using event IDs. They also had productive discussions\nwith researchers on plans for incremental commits/decommits and had a whiteboard\nsession on DeFi and lending protocols. The goals for next week include\ncompleting the validation of the timed transactions feature, exploring stateless\nobservation, refining the Hydra explorer ticket, writing ops instructions and\ntroubleshooting, and implementing the first end-to-end journey for external\ncommits."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released first mainnnet compatible version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.10.0"},"0.10.0")),(0,n.kt)("li",{parentName:"ul"},"Addressed inconsist handling of rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Added ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/core-concepts/architecture/"},"architecture page")," and fixed haddock links on our website ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/838"},"#838")),(0,n.kt)("li",{parentName:"ul"},"Opened a new hydra head on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Talked with researchers on initial plan for incremental commits/decommits"),(0,n.kt)("li",{parentName:"ul"},"Had a Whiteboard session on DeFi and lending protocols"),(0,n.kt)("li",{parentName:"ul"},"Reduced size of logs using event ids ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/859"},"#859")),(0,n.kt)("li",{parentName:"ul"},"Published the ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-04"},"monthly report for April"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete validation of timed transactions feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/196"},"#196")),(0,n.kt)("li",{parentName:"ul"},"Explored stateless observation and refined hydra explorer ticket ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/696"},"#696")),(0,n.kt)("li",{parentName:"ul"},"Write ","\u201c","ops","\u201d"," instructions and troubleshooting ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/569"},"#569")," and improve logs"),(0,n.kt)("li",{parentName:"ul"},"Have a first end-to-end journey for external commits implemented ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d857251e.5d7f7fca.js b/assets/js/d857251e.5d7f7fca.js new file mode 100644 index 00000000000..6d14c81676d --- /dev/null +++ b/assets/js/d857251e.5d7f7fca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75698],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(l,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[d]="string"==typeof e?e:r,i[1]=p;for(var u=2;u<o;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},14394:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-05-24-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-05-24-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-24-node-cli-api.md",source:"@site/blog/2023-05-24-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-05-24T00:00:00.000Z",formattedDate:"May 24, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-05-24-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-26-network"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-19-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-05-24---2023-06-06"},"2023-05-24 - 2023-06-06"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released. "),(0,r.kt)("li",{parentName:"ul"},"We provided assitance where needed in the release"),(0,r.kt)("li",{parentName:"ul"},"An integration repository ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/fusion-flamingo"},"https://github.com/input-output-hk/fusion-flamingo")," was created to enable my team to more easily work on cardano-cli and cardano-api")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5290"},"Update ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli")," changelog")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5197"},"Propagate protocol parameters conversion errors")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5149"},"Command line option for parsing UTC time to slot number")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/31"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"a"},"tasty-discover"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/30"},"Move tests to standard locations")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/26"},"Make cardano-api:internal component public")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/24"},"update chaps index")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/18"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"ErrorSpec")," check for all constructors, move golden tests together")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/17"},"Expose toAlonzoCostModels")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/9"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"ErrorsSpec")," use generated types and constructors names")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/32"},"Check changelog in tag script")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/34"},"Use tag script from ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-dev")," repository instead")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/38"},"Use .x suffix for release branches")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5291"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"cryptoInit")," instead of ",(0,r.kt)("inlineCode",{parentName:"a"},"sodiumInit"))," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5284"},"Move configuration tests to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-node")," tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5243"},"update chaps & integration")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5240"},"#5222 Remove ",(0,r.kt)("inlineCode",{parentName:"a"},"ApplicationName")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"ApplicationVersion")," config parameters")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d863ede2.11363200.js b/assets/js/d863ede2.11363200.js new file mode 100644 index 00000000000..66cfa5a56cb --- /dev/null +++ b/assets/js/d863ede2.11363200.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45766],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(n),h=r,m=d["".concat(l,".").concat(h)]||d[h]||c[h]||a;return n?o.createElement(m,s(s({ref:t},u),{},{components:n})):o.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:r,s[1]=i;for(var p=2;p<a;p++)s[p]=n[p];return o.createElement.apply(null,s)}return o.createElement.apply(null,n)}h.displayName="MDXCreateElement"},48709:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-02-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-02-22-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-22-consensus.md",source:"@site/blog/2023-02-22-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-02-22T00:00:00.000Z",formattedDate:"February 22, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.45,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-02-22-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-02-23-performance-and-tracing"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-22-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Support",id:"support",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the past two weeks we got the results from the system level benchmarks\nfor UTxO HD. They showed a substantial performance regression, so we spent some\ntime analyzing the results. We found out the frequency at which ledger snapshots\nwere taken was too high, so we requested the benchmarking team a new run with a\nmore realistic snapshotting policy. We continued refactoring and improving the\nprototype, and we released UTxO-HD related packages to CHaP."),(0,r.kt)("p",null,"We met with IOG researchers and networking specialists to discuss the Genesis\ndesign, which was well received. We continued working on testing and\nbenchmarking different Genesis prototypes."),(0,r.kt)("p",null,"We are also working on solving a test failure related to iterators. This work\nderived in several improvements such as better documentation, a framework for\nwriting unit (and regression) tests, and the possibility of debugging\n",(0,r.kt)("inlineCode",{parentName:"p"},"QuickCheck")," counter examples in the REPL."),(0,r.kt)("p",null,"Finally, we released ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," 0.2.0.0 and\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-cardano")," 0.3.0.0 to CHaP"),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,r.kt)("p",null,"We got the results of the first system level benchmarks for UTxO HD. They seemed\nto indicate a significant regression in performance. After looking into the\nbenchmark logs we found that the benchmark runs took ledger state snapshots too\noften, due to the default snapshotting policy depending on ",(0,r.kt)("inlineCode",{parentName:"p"},"k"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"k")," being so\nsmall in the benchmark runs. Therefore, the next step is to re-run the\nbenchmarks with a snapshotting policy that more closely resembles the one from\nmainnet."),(0,r.kt)("p",null,"At the same time, we continued refactoring and cleaning up the prototype. "),(0,r.kt)("p",null,"Also, we prepared the ",(0,r.kt)("inlineCode",{parentName:"p"},"anti-diff")," packages (",(0,r.kt)("inlineCode",{parentName:"p"},"fingertree-rm"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"diff-containers"),",\n",(0,r.kt)("inlineCode",{parentName:"p"},"simple-semigroupoids"),") and the ",(0,r.kt)("inlineCode",{parentName:"p"},"lmdb")," related packages (",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-lmdb")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-lmdb-simple"),") to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP"),"."),(0,r.kt)("h3",{id:"genesis"},"Genesis"),(0,r.kt)("p",null,"The Genesis design was presented to the IOG researchers and Peter Thompson from\nNSol. It was well received. They pointed out one blindspot, but we think it'll\nbe relatively simple to mitigate."),(0,r.kt)("p",null,"In parallel, we continued developing test and benchmarks for the Genesis\nprototypes. I particular we tested and implemented a potential fix for\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4037#issuecomment-1439708022"},"increased ChainDB dequeue timings"),", which partly\nbehaved as we expected, but still needs further investigation. Also we obtained\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4037#issuecomment-1434745031"},"new benchmarking data")," for the prototype."),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"Related to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4183"},"#4183"),", we developed a ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4379"},"DSL")," for specifying\n",(0,r.kt)("inlineCode",{parentName:"p"},"ChainDB")," unit tests. This will allow us to better understand the\ncounter-examples returned by QuickCheck tests, and to write ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4383"},"regression\ntests")," for them. Also, we ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4358"},"added a module")," to enable\nQuickCheck counter-examples to be run on the REPL, allowing for faster debugging\nfeedback. Also, we improved the documentation related to followers\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4372"},"#4372"),")."),(0,r.kt)("p",null,"We are also working on a design for optimizing the way we handle blocks from the\nfuture."),(0,r.kt)("h3",{id:"support"},"Support"),(0,r.kt)("p",null,"We released ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," 0.2.0.0 and ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-cardano"),"\n0.3.0.0 to CHaP. Remember that we decided to split the packages related to\nConsensus into two bundles, one with the core functionality, Cardano-agnostic\ncode, and another bundle with instantiations specific to Cardano."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d8668f0c.be2330b5.js b/assets/js/d8668f0c.be2330b5.js new file mode 100644 index 00000000000..3185a172aa3 --- /dev/null +++ b/assets/js/d8668f0c.be2330b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1821],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,h=p["".concat(s,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,l(l({ref:t},u),{},{components:n})):r.createElement(h,l({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var c=2;c<o;c++)l[c]=n[c];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},94658:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2023-03-23-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-23-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-23-db-sync.md",source:"@site/blog/2023-03-23-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2023-03-23T00:00:00.000Z",formattedDate:"March 23, 2023",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.755,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2023-03-23-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-24-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-23-mithril"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DBSync team worked in performance enhancements issues, on providing new db-sync options and on\ntechnical debt and bug fixing. The DBSync team also on boarded a new member."),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Worked on an issue which causes ",(0,a.kt)("inlineCode",{parentName:"li"},"ada_pots")," tables to include the values related not only to an\nepoch, but also the first epoch of the last epoch.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1367"},"#1367")),(0,a.kt)("li",{parentName:"ul"},"Fixed an issue where the ",(0,a.kt)("inlineCode",{parentName:"li"},"epoch")," table didn't rollback and caused wrong values\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1370"},"#1370")),(0,a.kt)("li",{parentName:"ul"},"Fixed an issue were users with ",(0,a.kt)("inlineCode",{parentName:"li"},"disable-ledger")," option had to provide the state dir option, even\nthough it was never used. Also refactored the no ledger part of the codebase.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1378"},"#1378")),(0,a.kt)("li",{parentName:"ul"},"Improved the perforance by using the cache more. Also provided many new options which enables or\ndisables parts of db-sync. In addition a new ",(0,a.kt)("inlineCode",{parentName:"li"},"--turbo")," mode is enables which allows db-sync to sync\nmainnet in hours.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1379"},"#1379"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d8c4fe87.808f0700.js b/assets/js/d8c4fe87.808f0700.js new file mode 100644 index 00000000000..38f545e8641 --- /dev/null +++ b/assets/js/d8c4fe87.808f0700.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24671],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=u(n),m=a,d=c["".concat(l,".").concat(m)]||c[m]||h[m]||s;return n?r.createElement(d,o(o({ref:t},p),{},{components:n})):r.createElement(d,o({ref:t},p))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=n.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:a,o[1]=i;for(var u=2;u<s;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},48221:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const s={title:"Consensus Team Update",slug:"2023-09-06-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-09-06-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-06-consensus.md",source:"@site/blog/2023-09-06-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-09-06T00:00:00.000Z",formattedDate:"September 6, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.22,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-09-06-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-07-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-01-goedel"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Tech debt",id:"tech-debt",level:2},{value:"Support",id:"support",level:2}],p={toc:u},c="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation.\nOn the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers.\nThe Consensus release engineer finished his rotation: version ",(0,a.kt)("inlineCode",{parentName:"p"},"8.3.0-pre")," of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," is releasing 2023 September 5."),(0,a.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We ran the first successful system-level benchmarks for UTxO-HD (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/203"},"#203"),") using the ",(0,a.kt)("em",{parentName:"li"},"in-memory")," backend.",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot."),(0,a.kt)("li",{parentName:"ul"},"After the mempool regression is fixed the benchmarks need to be ran again."),(0,a.kt)("li",{parentName:"ul"},"System-level UTxO-HD benchmarks with the LMDB are still pending."))),(0,a.kt)("li",{parentName:"ul"},"UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"#344"),")."),(0,a.kt)("li",{parentName:"ul"},"We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in ",(0,a.kt)("inlineCode",{parentName:"li"},"GetUTxOByAddress")," (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/205#issuecomment-1706878418"},"this comment"),"). Preliminary results are promising."),(0,a.kt)("li",{parentName:"ul"},"Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/344"},"#344"),"), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.")),(0,a.kt)("h2",{id:"tech-debt"},"Tech debt"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We added tests that Consensus emits valid CBOR (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3099"},"#3099"),"). This helped us detect a couple of serialization bugs. The tests still need to be merged into the ",(0,a.kt)("inlineCode",{parentName:"li"},"main")," branch (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/323"},"#323"),").")),(0,a.kt)("h2",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Nick Frisby")," finished his release engineer rotation; ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node 8.3.0-pre")," is releasing 2023 September 5."),(0,a.kt)("li",{parentName:"ul"},"We helped to investigate a protocol version bug in Sanchonet (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3491"},"#3491"),")."),(0,a.kt)("li",{parentName:"ul"},"We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/91"},"#91"),".")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d92df848.9daf110c.js b/assets/js/d92df848.9daf110c.js new file mode 100644 index 00000000000..e5cbcfa19d0 --- /dev/null +++ b/assets/js/d92df848.9daf110c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[2578],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),m=a,d=h["".concat(s,".").concat(m)]||h[m]||c[m]||i;return r?n.createElement(d,o(o({ref:t},u),{},{components:r})):n.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},61895:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Mithril Team Update",slug:"2023-01-12-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-01-12-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-12-mithril.md",source:"@site/blog/2023-01-12-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-01-12T00:00:00.000Z",formattedDate:"January 12, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.165,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-01-12-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-01-13-system-test"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-01-11-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(h,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ",(0,a.kt)("a",{parentName:"p",href:"https://mithril.network/doc/adr/4"},"ADR"),". They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible."),(0,a.kt)("p",null,"Finally, they have worked on upgrading the ",(0,a.kt)("inlineCode",{parentName:"p"},"devnet")," and fixing some flakiness in the end to end tests of the CI."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Implemented the redaction of an ADR for handling graceful updates of the Mithril Network ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/671"},"#671")),(0,a.kt)("li",{parentName:"ul"},"Worked on a proof of concept to handle backward compatibilty of exchanged messages with ",(0,a.kt)("inlineCode",{parentName:"li"},"protobuf")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/677"},"#677")),(0,a.kt)("li",{parentName:"ul"},"Worked on a proof of concept to handle backward compatibilty of exchanged messages with ",(0,a.kt)("inlineCode",{parentName:"li"},"avro")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/678"},"#678")),(0,a.kt)("li",{parentName:"ul"},"Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/672"},"#672")),(0,a.kt)("li",{parentName:"ul"},"Worked on upgrading the Cardano node of the Mithril ",(0,a.kt)("inlineCode",{parentName:"li"},"devnet"),", as well as fixing flakiness of the CI ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/523"},"#523")),(0,a.kt)("li",{parentName:"ul"},"Prepared and tested the new ",(0,a.kt)("inlineCode",{parentName:"li"},"2302")," distribution pre-release ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2302.0-prerelease"},"2302.0-prerelease")),(0,a.kt)("li",{parentName:"ul"},"Updated the documentation for SPO to build a signer node in order to better reflect the new release process ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/681"},"#681"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d957ac34.2fafdb70.js b/assets/js/d957ac34.2fafdb70.js new file mode 100644 index 00000000000..d673fe99dd6 --- /dev/null +++ b/assets/js/d957ac34.2fafdb70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[57772],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||h[c]||i;return a?r.createElement(m,o(o({ref:t},d),{},{components:a})):r.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},66001:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-03-24-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-24-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-24-hydra.md",source:"@site/blog/2023-03-24-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-24T00:00:00.000Z",formattedDate:"March 24, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.95,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-24-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2023-03-27-system-test"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-03-23-db-sync"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:p},u="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra had a team workshop and conducted the monthly review\nmeeting for March. They demonstrated a Hydra Head on mainnet, which was running\nthe hydraw demo application. While this marks an important milestone, they also\nemphasized that more features are still to be added as needed for applications\nto run on Hydra. Besides this, the roadmap is getting cleaned up to encourage\ndiscussions and provide more space for user requests."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting ",(0,n.kt)("a",{parentName:"li",href:"https://docs.google.com/presentation/d/1yZ4AqUQ8OBMG9ARMYvj3IOjaIAqglf7kZei4vsLMrbs/edit#slide=id.g1f87a7454a5_0_1392"},"slides"),"/",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/1krzM8VN-gpKTtpVdC2JQx-lGti-4gKQS/view?ts=641b3c1c"},"recording"),", full report of March next week",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Opened a head on mainnet with hydraw demonstration"),(0,n.kt)("li",{parentName:"ul"},"Hydra pay updates"))),(0,n.kt)("li",{parentName:"ul"},"Team workshop in Austria",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Hydra presentation at the Cardano Foundation in Zurich"),(0,n.kt)("li",{parentName:"ul"},"In-person grooming session, marked many items as candidates to be rather :idea: dicussions"),(0,n.kt)("li",{parentName:"ul"},"Improved head protocol ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/786"},"#786")," and investigated a potential bug in rollback handling ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Team building and retrospective")))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Follow-up on backlog and roadmap clean-up"),(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature (documentation updates)"),(0,n.kt)("li",{parentName:"ul"},"Make API more configurable ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/380"},"#380")),(0,n.kt)("li",{parentName:"ul"},"Integrate Hydra specification into repository ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/693"},"#693"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d967308c.4b0b548a.js b/assets/js/d967308c.4b0b548a.js new file mode 100644 index 00000000000..70a20b4bcab --- /dev/null +++ b/assets/js/d967308c.4b0b548a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20957],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=n,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<a;s++)o[s]=r[s];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},12811:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-10-18-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-18-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-18-mithril.md",source:"@site/blog/2023-10-18-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-18T00:00:00.000Z",formattedDate:"October 18, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.07,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-18-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-10-18-consensus"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-15-network"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay."),(0,n.kt)("p",null,"Finally, they enhanced the CI/CD to publish multiple packages to ",(0,n.kt)("a",{parentName:"p",href:"https://crates.io/"},"crates.io")," and started improving the developer experience with the Mithril devnet."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published the security advisory ",(0,n.kt)("strong",{parentName:"li"},"Mithril relay could expose Cardano block producer internal IP when updated")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/security/advisories/GHSA-9m3h-72xj-x2gq"},"#GHSA-9m3h-72xj-x2gq")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P Networking - Proof of Concept")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate a library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1141"},"#1141")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano transactions history PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"ProtocolKeyRegistration")," creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1187"},"#1187")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Publish multiple packages to ",(0,n.kt)("inlineCode",{parentName:"strong"},"crates.io"))," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1298"},"#1298")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Rename public key published in releases")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1292"},"#1292")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Mithril networks infrastructure maintenance")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1218"},"#1218")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Fix ",(0,n.kt)("inlineCode",{parentName:"strong"},"devnet")," Mithril Docker images")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1272"},"#1272"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d96cfa54.2939f4b2.js b/assets/js/d96cfa54.2939f4b2.js new file mode 100644 index 00000000000..05b2b61decb --- /dev/null +++ b/assets/js/d96cfa54.2939f4b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[16171],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>f});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=a.createContext({}),s=function(e){var n=a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return a.createElement(c.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(t),m=r,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||i;return t?a.createElement(f,o(o({ref:n},d),{},{components:t})):a.createElement(f,o({ref:n},d))}));function f(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=t[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,t)}m.displayName="MDXCreateElement"},21351:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=t(87462),r=(t(67294),t(3905));const i={title:"Performance & tracing update",slug:"2023-05-03-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-05-03-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-03-performance-and-tracing.md",source:"@site/blog/2023-05-03-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.",date:"2023-05-03T00:00:00.000Z",formattedDate:"May 3, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.76,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-05-03-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-03-consensus"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-05-01-db-sync"}},c={authorsImageUrls:[void 0]},s=[{value:"Dataflow documentation",id:"dataflow-documentation",level:3},{value:"Remove redundant Plutus flake input",id:"remove-redundant-plutus-flake-input",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},p="wrapper";function u(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Benchmarking: The benchmarks and performance investigations for the new ",(0,r.kt)("inlineCode",{parentName:"li"},"8.0")," release branch are ongoing."),(0,r.kt)("li",{parentName:"ul"},"New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint."),(0,r.kt)("li",{parentName:"ul"},"Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on."),(0,r.kt)("li",{parentName:"ul"},"Infrastructure: The ",(0,r.kt)("inlineCode",{parentName:"li"},"plutus-apps")," flake input for ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-node")," has finally been removed."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: A PR implementing placement of benchmarking clusters has been merged.")),(0,r.kt)("h1",{id:"benchmarking"},"Benchmarking"),(0,r.kt)("p",null,"The performance investigations on the ",(0,r.kt)("inlineCode",{parentName:"p"},"8.0")," release branch have lead to pinpointing and addressing incosistent behaviour. For that,\nwe created yet another local reproduction with the workbench's ",(0,r.kt)("inlineCode",{parentName:"p"},"forge-stress")," benchmark. "),(0,r.kt)("p",null,"Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into ",(0,r.kt)("inlineCode",{parentName:"p"},"8.0")," and\nsubsequent releases. "),(0,r.kt)("p",null,"Additionally, we've refined the ",(0,r.kt)("inlineCode",{parentName:"p"},"trace-bench")," family of profiles that target benchmarking our own new tracing system. "),(0,r.kt)("h1",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally\nintended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant\nconversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system."),(0,r.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,r.kt)("h3",{id:"dataflow-documentation"},"Dataflow documentation"),(0,r.kt)("p",null,"The LogObject CLI ",(0,r.kt)("inlineCode",{parentName:"p"},"locli")," is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate\nfurther development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting. "),(0,r.kt)("h3",{id:"remove-redundant-plutus-flake-input"},"Remove redundant Plutus flake input"),(0,r.kt)("p",null,"This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input,\nwe simplify the dependency graph for ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),", as well as enable immediate feedback when developing Plutus benchmarks."),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking.\nThis capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along\nwith various quality-of-life improvements, has been merged to ",(0,r.kt)("inlineCode",{parentName:"p"},"master"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d988d084.3a371a78.js b/assets/js/d988d084.3a371a78.js new file mode 100644 index 00000000000..58b9953b852 --- /dev/null +++ b/assets/js/d988d084.3a371a78.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85138],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(n),p=a,f=u["".concat(l,".").concat(p)]||u[p]||m[p]||o;return n?r.createElement(f,i(i({ref:t},d),{},{components:n})):r.createElement(f,i({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},56663:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Performance & tracing update",slug:"2023-06-28-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2023-06-28-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-28-performance-and-tracing.md",source:"@site/blog/2023-06-28-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-06-28T00:00:00.000Z",formattedDate:"June 28, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.885,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-06-28-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-28-consensus"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-23-goedel"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:s},u="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: The first batch of refactoring and documentation for our ",(0,a.kt)("inlineCode",{parentName:"li"},"tx-generator")," has been merged to ",(0,a.kt)("inlineCode",{parentName:"li"},"master"),"."),(0,a.kt)("li",{parentName:"ul"},"Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"The compiler switch to GHC9 as the default build platform for ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard. "),(0,a.kt)("p",null,"Using the ",(0,a.kt)("inlineCode",{parentName:"p"},"forge-stress")," approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"tx-generator")," is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),". Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress."),(0,a.kt)("p",null,"Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d99d594e.0abb20d4.js b/assets/js/d99d594e.0abb20d4.js new file mode 100644 index 00000000000..42cadcbc0cb --- /dev/null +++ b/assets/js/d99d594e.0abb20d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46521],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(r),d=a,f=m["".concat(c,".").concat(d)]||m[d]||p[d]||o;return r?n.createElement(f,i(i({ref:t},u),{},{components:r})):n.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=r[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},43933:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2023-02-23-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i="High level summary",l={permalink:"/cardano-updates/2023-02-23-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-23-performance-and-tracing.md",source:"@site/blog/2023-02-23-performance-and-tracing.md",title:"Performance & tracing update",description:"* SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.",date:"2023-02-23T00:00:00.000Z",formattedDate:"February 23, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.245,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-02-23-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-23-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-22-consensus"}},c={authorsImageUrls:[void 0]},s=[{value:"SECP",id:"secp",level:3},{value:"UTxO-HD",id:"utxo-hd",level:3},{value:"1.35.6 release",id:"1356-release",level:3},{value:"Nomad backend",id:"nomad-backend",level:3},{value:"NixOps backend",id:"nixops-backend",level:3}],u={toc:s},m="wrapper";function p(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork."),(0,a.kt)("li",{parentName:"ul"},"Release benchmarking: we performed a round of benchmarks for the 1.35.6 release."),(0,a.kt)("li",{parentName:"ul"},"UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup."),(0,a.kt)("li",{parentName:"ul"},"New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.")),(0,a.kt)("h1",{id:"performance"},"Performance"),(0,a.kt)("h3",{id:"secp"},"SECP"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead."),(0,a.kt)("li",{parentName:"ol"},"The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run."),(0,a.kt)("li",{parentName:"ol"},"The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking. ")),(0,a.kt)("h3",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop."),(0,a.kt)("li",{parentName:"ol"},"We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.")),(0,a.kt)("h3",{id:"1356-release"},"1.35.6 release"),(0,a.kt)("p",null,"Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible."),(0,a.kt)("h1",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients."),(0,a.kt)("li",{parentName:"ol"},"Locality assumptions were removed and job monitoring was refactored."),(0,a.kt)("li",{parentName:"ol"},"To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster."),(0,a.kt)("li",{parentName:"ol"},"We're currently evaluating different options for genesis distribution in said cluster.")),(0,a.kt)("h3",{id:"nixops-backend"},"NixOps backend"),(0,a.kt)("p",null,"The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d9b708eb.a7b8ca27.js b/assets/js/d9b708eb.a7b8ca27.js new file mode 100644 index 00000000000..ac81dd349cd --- /dev/null +++ b/assets/js/d9b708eb.a7b8ca27.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67463],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,i(i({ref:t},u),{},{components:a})):n.createElement(h,i({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var c=2;c<o;c++)i[c]=a[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},49915:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-04-20-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},i="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-04-20-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-20-node-cli-api.md",source:"@site/blog/2023-04-20-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-04-20T00:00:00.000Z",formattedDate:"April 20, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.4,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-04-20-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-20-mithril"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-19-consensus"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],u={toc:c},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-04-20---2023-05-04"},"2023-04-20 - 2023-05-04"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Various fixes and improvements")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5136"},"Modify golden test functions to automatically create parent directories")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5132"},"SPO on-chain poll commands adjustments")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5119"},"New environment variable CARDANO_NODE_NETWORK_ID")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5172"},(0,r.kt)("inlineCode",{parentName:"a"},"--out-file")," option for governance commands")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5130"},"UTC Time to slots conversion function")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5157"},"Update CHaP to get latest ledger with performance fix")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4854"},"Integration with Peer Sharing")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d9ccb35d.cea6c556.js b/assets/js/d9ccb35d.cea6c556.js new file mode 100644 index 00000000000..48e1e05d294 --- /dev/null +++ b/assets/js/d9ccb35d.cea6c556.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3136],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),s=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(n),m=r,h=c["".concat(l,".").concat(m)]||c[m]||d[m]||a;return n?o.createElement(h,i(i({ref:t},u),{},{components:n})):o.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:r,i[1]=p;for(var s=2;s<a;s++)i[s]=n[s];return o.createElement.apply(null,i)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},62438:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>p,toc:()=>s});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-03-21-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-03-21-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-21-network.md",source:"@site/blog/2023-03-21-network.md",title:"Network Team Update",description:"High level summary",date:"2023-03-21T00:00:00.000Z",formattedDate:"March 21, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.315,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-03-21-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-22-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-17-crypto"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2}],u={toc:s},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"In the last spring we released ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node-1.35.6")," with dynamic P2P\nfunctionality."),(0,r.kt)("p",null,"We received reports from some SPOs who encountered problems with their non\nP2P block producing nodes not being able to connect to their P2P relay. Karl\nKnutsson (from Cardano Foundation) reproduced this issue between two nodes (a\nnon P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed\nit and found a bug in the legacy non p2p code. The bug is only possible to\ntrigger with a P2P node which is binding its outbound connection port to\na fixed IP address and port (default in p2p). A possible solution was found.\nFor more information see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4465"},"#4465"),"."),(0,r.kt)("p",null,"We released ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-ping-0.1.0.0")," package to ",(0,r.kt)("inlineCode",{parentName:"p"},"CHaP"),". ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-ping")," is no\nlonger available as a standalone binary, but instead it will become part of\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-cli")," (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"#4664"),")"),(0,r.kt)("p",null,"We are testing ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," with peer sharing functionality (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"#4019"),")."),(0,r.kt)("p",null,"We are working on ",(0,r.kt)("em",{parentName:"p"},"eclipse evasion"),". We added new class of peers: big ledger\npeers to the outbound governor, implemented tests and fixed found issues\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4462"},"#4462"),"). We also made the information if a given peer plays the role of\na big ledger peer to the mini-protocols. This will allow to modify\nmini-protocol applications for such peers. As part of this functionality we\nrefactored some core types in the network code which simplifies exposed API."),(0,r.kt)("p",null,"Together with Moritz Angerman we started to update ",(0,r.kt)("inlineCode",{parentName:"p"},"io-sim")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"ghc-9.6.1")," (see\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/73"},"#73"),")."),(0,r.kt)("p",null,"We merged a fix of configuration of accepted connections limit in\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," (see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4902"},"#4902"),")."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d9e42018.8af86b03.js b/assets/js/d9e42018.8af86b03.js new file mode 100644 index 00000000000..0c6ea56af52 --- /dev/null +++ b/assets/js/d9e42018.8af86b03.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70170],{65246:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/cli-api/page/4","page":4,"postsPerPage":5,"totalPages":6,"totalCount":27,"previousPage":"/cardano-updates/tags/cli-api/page/3","nextPage":"/cardano-updates/tags/cli-api/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/da04b7b0.390ca13a.js b/assets/js/da04b7b0.390ca13a.js new file mode 100644 index 00000000000..5b257bb3346 --- /dev/null +++ b/assets/js/da04b7b0.390ca13a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[78101],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function o(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},m="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},s=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),m=u(a),s=r,h=m["".concat(p,".").concat(s)]||m[s]||d[s]||i;return a?n.createElement(h,l(l({ref:e},c),{},{components:a})):n.createElement(h,l({ref:e},c))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=s;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[m]="string"==typeof t?t:r,l[1]=o;for(var u=2;u<i;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},12804:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-08-15-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",o={permalink:"/cardano-updates/2023-08-15-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-15-node-cli-api.md",source:"@site/blog/2023-08-15-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-08-15T00:00:00.000Z",formattedDate:"August 15, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.29,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-08-15-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"SECP bindings Security Issue Report",permalink:"/cardano-updates/2023-08-17-secp-issue"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-11-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(t){let{components:e,...a}=t;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-08-02---2023-08-15"},"2023-08-02 - 2023-08-15"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"cardano-node 8.2.1 (pre-release) to SanchoNet"),(0,r.kt)("li",{parentName:"ul"},"Continue moving CLI into era-based top level command structure"),(0,r.kt)("li",{parentName:"ul"},"Wire-up DREP key generation,"),(0,r.kt)("li",{parentName:"ul"},"Fix DREP deregistration certificates"),(0,r.kt)("li",{parentName:"ul"},"Implement Constitutional Committee Key generation on the CLI"),(0,r.kt)("li",{parentName:"ul"},"Introducing era-based protocol parameters on the API"),(0,r.kt)("li",{parentName:"ul"},"Removing depracated functions and types on the API")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/169"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.13.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/164"},"Reenable golden tests")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/163"},"#128 DRep key generation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/160"},"Bump index states")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/159"},"Fix deregistration-certificate: generate deregistration instead of registration certs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/158"},"Structuring legacy code so that era-based code does not depend on it")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/151"},"Plural for command groups")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/144"},"Implement ",(0,r.kt)("inlineCode",{parentName:"a"},"conway governance committee key-hash")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/142"},"Wire up constitution creation in the new era based cli commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/140"},"cardano-cli 8.5.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/137"},"Wire up remaining DReps")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/136"},"Implement ",(0,r.kt)("inlineCode",{parentName:"a"},"conway governance committee hot-key-gen")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/127"},"Convert to use ",(0,r.kt)("inlineCode",{parentName:"a"},"tasty-discover")))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/189"},"Release cardano-api 8.13.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/187"},"Fix build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/185"},"cardano-api 8.13.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/181"},"Modify ",(0,r.kt)("inlineCode",{parentName:"a"},"queryGenesisParameters")," so that its type advertises it only returns genesis parameters for the Shelley era")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/180"},"Introduce EraBasedProtocolParametersUpdate")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/173"},"Delete deprecated functions and types")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/171"},"Simplify code with new constraints functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/170"},"Fix ",(0,r.kt)("inlineCode",{parentName:"a"},"EraCast Certificate"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/168"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.12.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/167"},"Fix committee hot keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/164"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.11.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/163"},"Fix typo Constitional -> Constitutional"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5430"},"cardano-git-rev: New version for CHaP")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5427"},"Fix broken links in docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5423"},"cardano-node 8.2.1"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5427"},"Fix broken links in docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5423"},"cardano-node 8.2.1"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/5427"},"Fix broken links in docs")),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/127"},"Convert to use ",(0,r.kt)("inlineCode",{parentName:"a"},"tasty-discover")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/da7937f0.7cc22aaa.js b/assets/js/da7937f0.7cc22aaa.js new file mode 100644 index 00000000000..d7727b37d27 --- /dev/null +++ b/assets/js/da7937f0.7cc22aaa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62083],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(n),h=a,d=c["".concat(l,".").concat(h)]||c[h]||m[h]||o;return n?r.createElement(d,i(i({ref:t},p),{},{components:n})):r.createElement(d,i({ref:t},p))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:a,i[1]=s;for(var u=2;u<o;u++)i[u]=n[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}h.displayName="MDXCreateElement"},52445:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-10-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-10-05-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-05-consensus.md",source:"@site/blog/2022-10-05-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2022-10-05T00:00:00.000Z",formattedDate:"October 5, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.825,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-10-05-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-10-14-ledger"},nextItem:{title:"DB Sync Team Update",permalink:"/cardano-updates/2022-10-04-db-sync"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Executive summary",id:"executive-summary",level:2},{value:"Additional information",id:"additional-information",level:2},{value:"Genesis",id:"genesis",level:3}],p={toc:u},c="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks, the consensus team worked on improving the\nperformance of the ChainSync jumping logic, which is needed for Genesis. We also\nrewrote the implementation of the mempool in the UTxO HD prototype which solved\nthe issues that prevented us from running system level benchmarks. Also on the\nUTxO HD front, we have an improved implementation of the sequence-of-differences\n(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for\nthe UTxO HD feature."),(0,a.kt)("h2",{id:"executive-summary"},"Executive summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With the latest implementation of ChainSync jumping we are closer to the\nbaseline performance. In particular, the prototype seems to benefit from the\nextra concurrency provided by additional capabilities."),(0,a.kt)("li",{parentName:"ul"},"We rewrote the implementation of the mempool in the UTxO HD prototype. This\nrewrite was required due to performance problems we observed when running the\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/blob/master/Makefile#L51"},"workbench"),".\nThese performance problems prevented us from running system level benchmarks.\nThe rewrite solved these issues. After the ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4049"},"UTxO-HD: mempool\nrewrite")," PR is\nmerged, we will contact the Benchmarking team so that they run the system\nlevel benchmarks."),(0,a.kt)("li",{parentName:"ul"},"The implementation of sequences of differences based on anti-diffs was\nintegrated into the UTxO HD prototype. It is pending\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4036"},"review")," and\nwe also need to run replay and syncing benchmarks to confirm that this will\ndeliver a performance improvement, as observed in our micro-benchmarks."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3944"},"The UTxO HD prototype\ninspection"),"\nresulted in a ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4045"},"list of\ntests"),"\nneeded for consensus to consider the UTxO HD prototype as fully tested.")),(0,a.kt)("h2",{id:"additional-information"},"Additional information"),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"Benchmarking setup: 50MBit/s, 50ms latency"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Red: baseline"),(0,a.kt)("li",{parentName:"ul"},"Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.")),(0,a.kt)("p",null,"As ChainSync Jumping involves many concurrent network operations at every jump,\nwe tried to run the node with 6 instead of the default 2 capabilties."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Orange: baseline with 6 capabilities"),(0,a.kt)("li",{parentName:"ul"},"Blue: CSJ prototype with 6 capabilities")),(0,a.kt)("p",null,"This diagram shows the respective syncing progress, starting at Genesis and\ncontinuing a good part into Shelley (with the dashed line indicating the\nByron-to-Shelley transition)."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(36276).Z,width:"654",height:"459"})),(0,a.kt)("p",null,"Further work includes whether we can tune the prototype to better handle few\ncapabilities, or to adapt the default number of capabilities (potentially just\nwhile syncing)."))}m.isMDXComponent=!0},36276:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/happy-path-csj-prototype-bench-1-2c33ba45f44a086415e703fe8f0f7ad1.svg"}}]); \ No newline at end of file diff --git a/assets/js/daa3e20a.f1391e79.js b/assets/js/daa3e20a.f1391e79.js new file mode 100644 index 00000000000..c65c73cb20c --- /dev/null +++ b/assets/js/daa3e20a.f1391e79.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[29177],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},s=Object.keys(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),m=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=m(e.components);return a.createElement(i.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,i=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=m(r),c=n,h=u["".concat(i,".").concat(c)]||u[c]||d[c]||s;return r?a.createElement(h,o(o({ref:t},p),{},{components:r})):a.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,o=new Array(s);o[0]=c;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[u]="string"==typeof e?e:n,o[1]=l;for(var m=2;m<s;m++)o[m]=r[m];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},34169:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>m});var a=r(87462),n=(r(67294),r(3905));const s={title:"System Test Team Update",slug:"2023-03-27-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-27-system-test",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-27-system-test.md",source:"@site/blog/2023-03-27-system-test.md",title:"System Test Team Update",description:"High level summary",date:"2023-03-27T00:00:00.000Z",formattedDate:"March 27, 2023",tags:[{label:"system-test",permalink:"/cardano-updates/tags/system-test"}],readingTime:.785,hasTruncateMarker:!1,authors:[{name:"Martin Kourim",title:"System Test Engineer",url:"https://github.com/mkoura",imageURL:"https://github.com/mkoura.png",key:"mkoura"}],frontMatter:{title:"System Test Team Update",slug:"2023-03-27-system-test",authors:"mkoura",tags:["system-test"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-31-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-24-hydra"}},i={authorsImageUrls:[void 0]},m=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Framework improvements:",id:"framework-improvements",level:3},{value:"Node:",id:"node",level:3},{value:"DB-Sync:",id:"db-sync",level:3}],p={toc:m},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the ",(0,n.kt)("em",{parentName:"p"},"1.35.5")," and ",(0,n.kt)("em",{parentName:"p"},"1.35.6")," releases (and their predecessing release candidates) and ran tests on branch with the ",(0,n.kt)("em",{parentName:"p"},"UTxO-HD")," functionality."),(0,n.kt)("h2",{id:"workstreams"},"Workstreams"),(0,n.kt)("h3",{id:"framework-improvements"},"Framework improvements:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"improvements in searching for unexpected error messages in log files during test run"),(0,n.kt)("li",{parentName:"ul"},"added support for UTxO-HD testing"),(0,n.kt)("li",{parentName:"ul"},"added support for the new P2P topology format"),(0,n.kt)("li",{parentName:"ul"},"added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)"),(0,n.kt)("li",{parentName:"ul"},"added preliminary support for the Conway era"),(0,n.kt)("li",{parentName:"ul"},"added support for running tests on the ",(0,n.kt)("em",{parentName:"li"},"Preview")," testnet")),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node-tests/pulls?q=is%3Apr+is%3Aclosed+updated%3A2023-01-13..2023-03-26"},"Full list of closed PRs")),(0,n.kt)("h3",{id:"node"},"Node:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"ran tests on node branch with the UTxO-HD functionality"),(0,n.kt)("li",{parentName:"ul"},"tested the ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_5.html"},"1.35.5")," release"),(0,n.kt)("li",{parentName:"ul"},"tested the ",(0,n.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/cardano-node-tests/test_results/node/tag_1_35_6.html"},"1.35.6")," release")),(0,n.kt)("h3",{id:"db-sync"},"DB-Sync:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"improvements in db-sync sync tests"),(0,n.kt)("li",{parentName:"ul"},"improvements in db-sync functional tests")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/daace409.1ea8e0b2.js b/assets/js/daace409.1ea8e0b2.js new file mode 100644 index 00000000000..ba615c0e08d --- /dev/null +++ b/assets/js/daace409.1ea8e0b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89008],{23947:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>u,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var n=o(87462),a=(o(67294),o(3905)),i=o(22004);const r={title:"Network Team Update",slug:"2022-09-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},u=void 0,s={permalink:"/cardano-updates/2022-09-27-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-09-27-network.md",source:"@site/blog/2022-09-27-network.md",title:"Network Team Update",description:"Network Update",date:"2022-09-27T00:00:00.000Z",formattedDate:"September 27, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.24,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-09-27-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-09-30-ledger"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-09-20-consensus"}},l={authorsImageUrls:[void 0]},p=[{value:"Network Update",id:"network-update",level:2},{value:"Ouroboros Network",id:"ouroboros-network",level:3},{value:"Ouroboros Consensus",id:"ouroboros-consensus",level:3},{value:"Some older items, which were not announced",id:"some-older-items-which-were-not-announced",level:4},{value:"Cardano Node",id:"cardano-node",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"Typed Protocols",id:"typed-protocols",level:3},{value:"Input Endorsers Simulation",id:"input-endorsers-simulation",level:3}],k={toc:p},h="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(h,(0,n.Z)({},k,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"network-update"},"Network Update"),(0,a.kt)("h3",{id:"ouroboros-network"},"Ouroboros Network"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We finished high and low level ",(0,a.kt)("em",{parentName:"li"},"peer sharing")," design. See\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/wiki/Peer-Sharing-Implementation-Plan"},"Peer Sharing Implementation Plan")),(0,a.kt)("li",{parentName:"ul"},"We started working on low-level design of ",(0,a.kt)("em",{parentName:"li"},"eclipse evasion")," (work in\nprogress)."),(0,a.kt)("li",{parentName:"ul"},"We decided to use ",(0,a.kt)("strong",{parentName:"li"},"peer sharing")," instead of overloaded and ambiguous ",(0,a.kt)("em",{parentName:"li"},"gossip")," term.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3980"},"PR input-output-hk/ouroboros-network#3980")),(0,a.kt)("li",{parentName:"ul"},"We fixed technical dept\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3905"},"issue input-output-hk/cardano-node#3905")," in\nthe simulation testing of diffusion\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4004"},"PR input-output-hk/cardano-node#4004")),(0,a.kt)("li",{parentName:"ul"},"We deployed all our nodes using our new nix based deployment architecture.\nWhen deploying we found an issue in the\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/issues/3752"},(0,a.kt)("inlineCode",{parentName:"a"},"RTView")),".")),(0,a.kt)("h3",{id:"ouroboros-consensus"},"Ouroboros Consensus"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Recently we found out that the consensus does not log exceptions thrown during\nintiialisation. This was fixed in\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4015"},"PR input-output-hk/ouroboros-network#4015"),"\nAs part of this pull request we also changed that all exceptions rethrown by\nthe connection handler thread are wrapped in ",(0,a.kt)("inlineCode",{parentName:"li"},"ExceptionInHandler"),".")),(0,a.kt)("h4",{id:"some-older-items-which-were-not-announced"},"Some older items, which were not announced"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We identified and fixed an issue related to socket activation (socket options\nwhere not set for sockets passed through socket activation).\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3979"},"PR input-output-hk/cardano-node#3979"),"\nThis fix will be released in the next ",(0,a.kt)("inlineCode",{parentName:"li"},"cardano-node")," release.")),(0,a.kt)("h3",{id:"cardano-node"},"Cardano Node"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We extended the NixOs service module so that one can modify ",(0,a.kt)("inlineCode",{parentName:"li"},"socketPath"),",\n",(0,a.kt)("inlineCode",{parentName:"li"},"runtimeDir"),", ",(0,a.kt)("inlineCode",{parentName:"li"},"databasePath"),", ",(0,a.kt)("inlineCode",{parentName:"li"},"traceSocketPathAccept"),",\n",(0,a.kt)("inlineCode",{parentName:"li"},"traceSocketPathConnect")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"stateDir")," options.\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4196"},"PR input-output-hk/cardano-node#4196"))),(0,a.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,a.kt)("p",null,"We resolved a number of issues before release of ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," on hackage:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2797"},"issue input-output-hk/ouroboros-network#2797")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2650"},"issue input-output-hk/ouroboros-network#2650")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3436"},"issue input-output-hk/ouroboros-network#3436")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2588"},"issue input-output-hk/ouroboros-network#2588")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2587"},"issue input-output-hk/ouroboros-network#2587")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/2586"},"issue input-output-hk/ouroboros-network#2586"))),(0,a.kt)("p",null,"See ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/24"},"PR #24"),"."),(0,a.kt)("p",null,"We also improved experience for contributors of ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"typed-protocols")," by adding issue templates:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/25"},"PR input-output-hk/io-sim#25"))),(0,a.kt)("h3",{id:"typed-protocols"},"Typed Protocols"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We pushed a branch which identifies a GHC quirk:\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/tree/coot/typed-protocols-rewrite-StateToken-problem"},"coot/typed-protocols-rewrite-StateToken-problem"),".\nThat's too be resolved in order to push forward review of the redesign in\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/3"},"PR input-output-hk/typed-protocols#3"),"."),(0,a.kt)("li",{parentName:"ul"},"As for ",(0,a.kt)("inlineCode",{parentName:"li"},"io-sim"),", we wrote issue templates:\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/11"},"PR input-output-hk/typed-protocols#11"))),(0,a.kt)("h3",{id:"input-endorsers-simulation"},"Input Endorsers Simulation"),(0,a.kt)("p",null,"New features include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Histograms of block arrival frequency, for both network (inbound) and CPU\n(block validation). This is interesting to check that we're not overloading\nthe CPU block validation capacity, or network link capacity. Or alternatively\nto observe the behaviour in an overload situation if we set the block\ngeneration rate high enough.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},'Pie chart of utilisation of TCP links. This shows how small a fraction of\nlinks are being used at any one time, and shows that once the system "warms\nup" and is operating stably, most block delivery is ballistic.')),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Showing off the new screen layout combinators, that let us put multiple\ncharts, titles etc on screen at once and scale them to whatever screen or\nvideo resolution we like without having to tweak numbers (this example is\nscaled to fit 1080HD video resolution)."))),(0,a.kt)(i.Z,{playing:!0,controls:!0,url:"/p2p-relay-5.mp4",mdxType:"ReactPlayer"}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/db138d7c.1b8b9080.js b/assets/js/db138d7c.1b8b9080.js new file mode 100644 index 00000000000..c2db8a9f2c4 --- /dev/null +++ b/assets/js/db138d7c.1b8b9080.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18634],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=u(n),h=r,m=d["".concat(l,".").concat(h)]||d[h]||c[h]||o;return n?a.createElement(m,i(i({ref:t},p),{},{components:n})):a.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var u=2;u<o;u++)i[u]=n[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},78238:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Quarterly Update",slug:"2023-01-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/quarterly/2023-01-18-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-01-18-consensus.md",source:"@site/quarterly/2023-01-18-consensus.md",title:"Consensus Quarterly Update",description:"Consensus Quarterly Update",date:"2023-01-18T00:00:00.000Z",formattedDate:"January 18, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:3.205,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Quarterly Update",slug:"2023-01-18-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2023-04-03-ledger"},nextItem:{title:"Network Quarterly Update",permalink:"/cardano-updates/quarterly/2023-01-13-network"}},l={authorsImageUrls:[void 0]},u=[{value:"Consensus Quarterly Update",id:"consensus-quarterly-update",level:2},{value:"2022-12 - 2023-01",id:"2022-12---2023-01",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Support",id:"support",level:4},{value:"Conway era",id:"conway-era",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4},{value:"Support",id:"support-1",level:4},{value:"Tech debt",id:"tech-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration-1",level:4},{value:"Risks",id:"risks",level:3},{value:"UTxO HD",id:"utxo-hd-2",level:4}],p={toc:u},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"consensus-quarterly-update"},"Consensus Quarterly Update"),(0,r.kt)("h2",{id:"2022-12---2023-01"},"2022-12 - 2023-01"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("p",null,"The prototype is feature complete and thoroughly tested at the consensus level.\nIn particular, we invested a lot of time in writing property-test for the\nmempool, and other crucial new parts of the prototype. Now we are ready to run\nintegration tests and system-level benchmarks."),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("p",null,"We identified and fixed a slowdown in cross-era forecasting that was inhibiting\nour efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7%\nspeedup in full sync times in the baseline."),(0,r.kt)("p",null,"We also started prototyping a self-contained implementation of the Genesis\ndynamics (in particular of the parts intentionally not part of the ChainSync\nJumping prototype) that furthered our understanding of subtleties and edge\ncases."),(0,r.kt)("h4",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We worked on designing integration of new VRF and KES crypto into consensus.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Crypto")," class was split into two parts: ",(0,r.kt)("inlineCode",{parentName:"li"},"Crypto")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"HeaderCrypto"),"."),(0,r.kt)("li",{parentName:"ul"},"With the Ledger team's help, we refactored ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-ledger")," to use a proxy\ntype for VRF.")))),(0,r.kt)("h4",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"PR went through its second review round. It is about to be merged, but it got\ndelayed due to people's availability during Christmas break.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We improved the capabilities of our ",(0,r.kt)("inlineCode",{parentName:"li"},"io-sim")," library, which is key for testing\nand simulating Cardano components."),(0,r.kt)("li",{parentName:"ul"},"We removed thunks from epoch translations in the ledger, which is important\nfor reducing memory consumption of the Cardano node.")),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We added a tutorial on how to instantiate the Consensus layer to run custom\nledgers. This should be a valuable resource to people looking to roll their\nown custom blockchain (either for commercial or research purposes)."),(0,r.kt)("li",{parentName:"ul"},"We added an overview of consensus to the ",(0,r.kt)("a",{parentName:"li",href:"https://input-output-hk.github.io/ouroboros-network/"},"top level\ndocumentation")," of\nouroboros-network. This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Evaluate the extensibility of the prototype. Moving the UTxO to disk is only\nthe first step towards reducing the memory requirements of Cardano node, and\nensuring its long term sustainability. In the future, we plan on moving other\nlarge maps, such as delegation maps. The prototype should be able to\naccommodate these changes without any major modifications."),(0,r.kt)("li",{parentName:"ul"},"Start the integration with other downstream components, such as the wallet and\ndb-sync. The idea is to identify and address any potential pain points that\nmight arise during this integration."),(0,r.kt)("li",{parentName:"ul"},"Run integration tests and system-level benchmarks.")),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish benchmarking and tuning the fast-path ChainSync Jumping prototype"),(0,r.kt)("li",{parentName:"ul"},"Expand and optimize the self-contained implementation of the Disconnect Rule\n(including density comparisons and the LoE)"),(0,r.kt)("li",{parentName:"ul"},"Develop documentation and smoke tests for these components."),(0,r.kt)("li",{parentName:"ul"},"Start modifying the ChainSync Client for the LoP and LoR.")),(0,r.kt)("h4",{id:"support-1"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Help the Network team with diagnosing performance regression in block\nproduction.")),(0,r.kt)("h4",{id:"tech-debt"},"Tech debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Fix property-test failures concerning iterators (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3999"},"#3999")," and\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4183"},"#4183"),").")),(0,r.kt)("h4",{id:"fostering-collaboration-1"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4145"},"mapping consensus"),".")),(0,r.kt)("h3",{id:"risks"},"Risks"),(0,r.kt)("h4",{id:"utxo-hd-2"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Moving other parts of the ledger state to disk might require a major redesign\nof the prototype. For instance, if it turns out that the epoch change rules\nrequire access to the ",(0,r.kt)("em",{parentName:"li"},"full")," ledger state. If this is the case, we might\naccept this risk and do the redesign after the initial release of UTxO-HD."),(0,r.kt)("li",{parentName:"ul"},"Integration with downstream clients might require more work than we\nanticipate."),(0,r.kt)("li",{parentName:"ul"},"Access to the benchmarking's team time and resources."),(0,r.kt)("li",{parentName:"ul"},"Benchmarking results might show significant performance degradation, which\nwill require additional work if such performance degradation is not accepted\nby other stakeholders."),(0,r.kt)("li",{parentName:"ul"},"The prototype's performance might not be accepted by other stakeholders. Here\nwe need to clearly communicate that this is necessary to ensure that as the\nblockchain size grows, the node can operate within reasonable memory\nconstraints.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/db50202c.71a9a110.js b/assets/js/db50202c.71a9a110.js new file mode 100644 index 00000000000..2649951c929 --- /dev/null +++ b/assets/js/db50202c.71a9a110.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[63566],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),d=n,g=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return r?a.createElement(g,l(l({ref:t},s),{},{components:r})):a.createElement(g,l({ref:t},s))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c<o;c++)l[c]=r[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},99900:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-05-26-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-26-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-goedel.md",source:"@site/blog/2023-05-26-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.39,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-05-26-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-31-performance-and-tracing"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-26-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team has been working on final revisions for the\npre-proceedings versions of two ICE 2023 papers."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Porting Ouroboros Praos formalisation to new application layer.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Preparing pre-proceedings version of two ICE 2023 papers.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/db5663d1.a1ed76f8.js b/assets/js/db5663d1.a1ed76f8.js new file mode 100644 index 00000000000..cad2a4cc6d9 --- /dev/null +++ b/assets/js/db5663d1.a1ed76f8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[14348],{45422:a=>{a.exports=JSON.parse('{"label":"network","permalink":"/cardano-updates/tags/network","allTagsPath":"/cardano-updates/tags","count":24}')}}]); \ No newline at end of file diff --git a/assets/js/dceb6e64.eb5e94a8.js b/assets/js/dceb6e64.eb5e94a8.js new file mode 100644 index 00000000000..ba938368e0d --- /dev/null +++ b/assets/js/dceb6e64.eb5e94a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[18242],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=u(n),m=r,h=d["".concat(l,".").concat(m)]||d[m]||c[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var u=2;u<i;u++)o[u]=n[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},22300:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const i={title:"Consensus Quarterly Update",slug:"2022-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},o=void 0,s={permalink:"/cardano-updates/quarterly/2022-11-15-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-15-consensus.md",source:"@site/quarterly/2022-11-15-consensus.md",title:"Consensus Quarterly Update",description:"Consensus Quarterly Update",date:"2022-11-15T00:00:00.000Z",formattedDate:"November 15, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:3.655,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Quarterly Update",slug:"2022-11-15-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Open-Source Update",permalink:"/cardano-updates/quarterly/2023-01-13-open-source"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/quarterly/2022-11-09-network"}},l={authorsImageUrls:[void 0]},u=[{value:"Consensus Quarterly Update",id:"consensus-quarterly-update",level:2},{value:"2022-09 - 2022-11",id:"2022-09---2022-11",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Conway era",id:"conway-era",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4},{value:"Tech debt",id:"tech-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration-1",level:4}],p={toc:u},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"consensus-quarterly-update"},"Consensus Quarterly Update"),(0,r.kt)("h2",{id:"2022-09---2022-11"},"2022-09 - 2022-11"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"As a consequence of the errors observed when running distributed mempool\nbenchmarks, we re-designed the UTxO HD mempool integration, which fixed these\nerrors and lead to a simpler and more maintainable design.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We focused on increasing test coverage for the UTxO-HD prototype. In\nparticular, we added property tests for:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Backing store (work ongoing)"),(0,r.kt)("li",{parentName:"ul"},"Era transitions"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The property tests we added uncovered several bugs, which is a great result\ngiven the exponential increase in the cost of finding bugs as they are closer\nto deployment.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"One of the errors found by our tests required us to work on improvements in\nthe Haskell bindings for LMDB. This work is ongoing.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We started working on the mempool property tests that will exercise the new\ncode paths that UTxO HD introduced.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'We developed, benchmarked and tested an implementation of sequences of\ndifferences based on "anti-diffs". Performance results of diff sequence\noperations show that we achieved a speedup of about ',(0,r.kt)("inlineCode",{parentName:"p"},"4x")," across several\nscenarios. Note: this speedup is taking into account diff sequence operations\nonly, so the consensus-wide speedup is less than ",(0,r.kt)("inlineCode",{parentName:"p"},"4x"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},'We integrated the "anti-diff" prototype into the UTxO HD feature branch.'))),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We wrote a simulator that demonstrates soundness of an abstract implementation\nof the new chain selection rule."),(0,r.kt)("li",{parentName:"ul"},"We elaborated a draft specification for the Genesis implementation (currently\nawaiting feedback from other architects)."),(0,r.kt)("li",{parentName:"ul"},"We elaborated a draft specification for the ChainSync Jumping optimization. In\nparticular, this includes a proof sketch that the latter preserves liveness\nand safety in all cases."),(0,r.kt)("li",{parentName:"ul"},"With the Networking team, we co-designed the eclipse avoidance mechanism,\nspecifically its coherence with the Genesis implementation plan's security\nand its dependence on the new ChainSync Jumping optimization."),(0,r.kt)("li",{parentName:"ul"},"We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a\nperformance degradation wrt the baseline. Our optimization attempts so far\nhave brought the performance closer to the baseline, but not yet to parity.")),(0,r.kt)("h4",{id:"conway-era"},"Conway era"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We did most of the heavy lifting required to integrate the Conway era into the\nConsensus layer.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We started working on enabling CI nightly tests, which revealed several test\nfailures due to thunks being found it data structures used by the ledger and\nconsensus. We made a lot of progress fixing those thunk errors, but some\nerrors still remain.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We elaborated a ",(0,r.kt)("inlineCode",{parentName:"p"},"db-analyser")," benchmark for the ledger operations. This led us\nto the identification of high processing time at epoch boundaries, and we\ncould not observe any performance degradation that can be attributed to era\nchanges.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed a source of flakiness in the ChainDB QSM test.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We clarified a common source of confusion around VRF tie-breaking and\ncross-era chain selection.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We fixed a bug in the maximum-allowed ledger major protocol version."))),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We spent time making ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-updates")," the central source of information for\nthe core teams stakeholders."),(0,r.kt)("li",{parentName:"ul"},"We went through the Galois gap analysis and extracted actionable points to\ntake on next."),(0,r.kt)("li",{parentName:"ul"},"Bart and Yogesh continued with their onboarding and stated making substantial\ncontributions to consensus.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish the mempool property tests."),(0,r.kt)("li",{parentName:"ul"},"Benchmark the latest version of the prototype."),(0,r.kt)("li",{parentName:"ul"},"Elaborate a document that describes new integration test scenarios and pass it\nto the SDET team."),(0,r.kt)("li",{parentName:"ul"},"Bring query UTxO by address command performance on par with the baseline\nversion.")),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Receive and incorporate Duncan's feedback on the first draft specification for\nthe Genesis implementation."),(0,r.kt)("li",{parentName:"ul"},"Begin prototyping the first genesis implementation, unless the first draft\nneeds major changes."),(0,r.kt)("li",{parentName:"ul"},"Draft a second revision of the Genesis report."),(0,r.kt)("li",{parentName:"ul"},"Review the second revision with a wider audience, which includes at least\nAlexander Russell. That feedback will drive a third and hopefully final\nrevision."),(0,r.kt)("li",{parentName:"ul"},"Investigate how to mitigate the ~30% slowdown we have observed so far in the\nChainSync jumping prototype, and try to mitigate it. In particular, we might\nneed to optimize the existing BlockFetch logic.")),(0,r.kt)("h4",{id:"tech-debt"},"Tech debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enabling nightly CI tests.")),(0,r.kt)("h4",{id:"fostering-collaboration-1"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Merge the tutorial document Galois wrote; requires CI integration."),(0,r.kt)("li",{parentName:"ul"},"Come up with our own documentation improvements, many of which were suggested\nin the Galois gap analysis."),(0,r.kt)("li",{parentName:"ul"},"Try to hire a new team member.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ddcb8bff.0be505e0.js b/assets/js/ddcb8bff.0be505e0.js new file mode 100644 index 00000000000..b71a6b78e83 --- /dev/null +++ b/assets/js/ddcb8bff.0be505e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54642],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=i.createContext({}),s=function(e){var t=i.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return i.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=n,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<a;s++)o[s]=r[s];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},15811:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-11-22-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-22-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-22-mithril.md",source:"@site/blog/2023-11-22-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-22T00:00:00.000Z",formattedDate:"November 22, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.895,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-22-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-22-ledger"},nextItem:{title:"Initial CIP 1694 Security Analysis and Responses",permalink:"/cardano-updates/2023-11-20-cip1694"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer."),(0,n.kt)("p",null,"Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Prototype a P2P relay with ",(0,n.kt)("inlineCode",{parentName:"strong"},"libp2p"))," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1326"},"#1326")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Enhance aggregator REST API performances")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1327"},"#1327")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Signer runtime is stuck for some SPO")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1312"},"#1312")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Manually deploy a test Mithril network")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1356"},"#1356")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Make Cardano node version custom in CI/CD")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1355"},"#1355")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Support P2P relay in infrastructure")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1361"},"#1361")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"mithril-client fails to extract archive")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1352"},"#1352"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ddce0bff.2c93fa43.js b/assets/js/ddce0bff.2c93fa43.js new file mode 100644 index 00000000000..3731c5af8bd --- /dev/null +++ b/assets/js/ddce0bff.2c93fa43.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[31005],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?r.createElement(h,l(l({ref:t},c),{},{components:a})):r.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var u=2;u<o;u++)l[u]=a[u];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},59319:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-07-21-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-07-21-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-sre.md",source:"@site/blog/2023-07-21-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-07-21T00:00:00.000Z",formattedDate:"July 21, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:.685,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-07-21-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-07-21-ledger"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-20-goedel"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-ops",id:"cardano-ops",level:3},{value:"Cardano-world",id:"cardano-world",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Re-spin sanchonet for testing a new node version followed by fork to Conway"),(0,n.kt)("li",{parentName:"ul"},"Deploying a sanchonet compatible faucet to sanchonet"),(0,n.kt)("li",{parentName:"ul"},"Migrate shelley qa legacy environment to cardano-world")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Bump iohk-nix for sanchonet and shelley qa environment updates: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5406"},"cardano-node-pull-5406"))),(0,n.kt)("h3",{id:"cardano-ops"},"Cardano-ops"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ops/compare/31cce1a...496f085"},"cardano-ops-compare"))),(0,n.kt)("h3",{id:"cardano-world"},"Cardano-world"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-node p2p all local roots entrypoint option was added: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/102"},"cardano-world-pull-102")),(0,n.kt)("li",{parentName:"ul"},"Migrate shelley qa legacy environment to cardano-world: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/103"},"cardano-world-pull-103")),(0,n.kt)("li",{parentName:"ul"},"Create a sanchonet compatible faucet: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-world/pull/91"},"cardano-world-pull-91"))),(0,n.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migrate shelley qa legacy environment to cardano-world: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/549"},"iohk-nix-pull-549")),(0,n.kt)("li",{parentName:"ul"},"Drop legacy byron environment parameters: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/550"},"iohk-nix-pull-550"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/de5b481b.565b362c.js b/assets/js/de5b481b.565b362c.js new file mode 100644 index 00000000000..8e2b8a37351 --- /dev/null +++ b/assets/js/de5b481b.565b362c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72317],{12630:a=>{a.exports=JSON.parse('{"label":"open-source","permalink":"/cardano-updates/quarterly/tags/open-source","allTagsPath":"/cardano-updates/quarterly/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/de790939.74e01666.js b/assets/js/de790939.74e01666.js new file mode 100644 index 00000000000..7bc042e7976 --- /dev/null +++ b/assets/js/de790939.74e01666.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[42185],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){l(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function u(e,t){if(null==e)return{};var a,r,l=function(e,t){if(null==e)return{};var a,r,l={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var p=r.createContext({}),i=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,d=u(e,["components","mdxType","originalType","parentName"]),c=i(a),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||n;return a?r.createElement(h,o(o({ref:t},d),{},{components:a})):r.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,o=new Array(n);o[0]=s;var u={};for(var p in t)hasOwnProperty.call(t,p)&&(u[p]=t[p]);u.originalType=e,u[c]="string"==typeof e?e:l,o[1]=u;for(var i=2;i<n;i++)o[i]=a[i];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}s.displayName="MDXCreateElement"},99073:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>i});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-04-21-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,u={permalink:"/cardano-updates/2023-04-21-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-21-ledger.md",source:"@site/blog/2023-04-21-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-04-21T00:00:00.000Z",formattedDate:"April 21, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:.905,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-04-21-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-21-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-04-20-mithril"}},p={authorsImageUrls:[void 0]},i=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway ledger era",id:"conway-ledger-era",level:3},{value:"Haddocks hosted on github pages",id:"haddocks-hosted-on-github-pages",level:3},{value:"Small improvements to the API",id:"small-improvements-to-the-api",level:3},{value:"Technical Debt",id:"technical-debt",level:3}],d={toc:i},c="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"We continued to make progress on CIP-1694 and the conway ledger era.\nIn particular, the conway era now supports Plutus V3.\nFinally, we made small improvements to the ledger API and now host\nour Haskell code documentation (haddocks) on github pages."),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway-ledger-era"},"Conway ledger era"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3365"},"pull-3365"),"] - Support for Plutus V3."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3368"},"pull-3368"),"] - Conway genesis fix."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3369"},"pull-3369"),"] - Added some governance ledger state."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3372"},"pull-3372"),"] - Work on the conway delegation certificates."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3384"},"pull-3384"),"] - Rename.")),(0,l.kt)("h3",{id:"haddocks-hosted-on-github-pages"},"Haddocks hosted on github pages"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3385"},"pull-3385"),"] ")),(0,l.kt)("h3",{id:"small-improvements-to-the-api"},"Small improvements to the API"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3366"},"pull-3366"),"]")),(0,l.kt)("h3",{id:"technical-debt"},"Technical Debt"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3367"},"pull-3367"),"] Fix cost model json instances."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3371"},"pull-3371"),"] UMap cleanup."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3373"},"pull-3373"),"] Upgrade to ghc 9.2.7 and cabal 3.10.1."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3375"},"pull-3375"),"] Sadly, we had to revert the ",(0,l.kt)("inlineCode",{parentName:"li"},"TICKF")," optimizations. There was a regression we do not yet understand."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3377"},"pull-3377"),"] Fix cabal warnings."),(0,l.kt)("li",{parentName:"ul"},"[",(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3383"},"pull-3383"),"] Fix multi-asset test.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/decc8fa8.03de18e2.js b/assets/js/decc8fa8.03de18e2.js new file mode 100644 index 00000000000..62ddc3841fa --- /dev/null +++ b/assets/js/decc8fa8.03de18e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[57918],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(a),d=n,m=h["".concat(s,".").concat(d)]||h[d]||c[d]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},43654:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-12-01-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-12-01-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-01-hydra.md",source:"@site/blog/2023-12-01-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-12-01T00:00:00.000Z",formattedDate:"December 1, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.865,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-12-01-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-12-04-performance-and-tracing"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-29-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],u={toc:p},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team conducted a packed Monthly Review meeting,\nfeaturing demonstrations and the preparation of the monthly report. They\naddressed flakiness in tests and enhanced the logs json schema,\nimproving overall test reliability. Additionally, the team successfully\nbuilt MacOS ARM64 (",(0,n.kt)("inlineCode",{parentName:"p"},"aarch64-darwin"),") binaries in CI, expanding platform\nsupport. They further improved the network configuration by detecting\nincompatible persisted states, contributing to overall system\nrobustness. Finally, the team released version 0.14.0, highlighting\ntheir commitment to delivering regular updates and improvements."),(0,n.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly Review\n",(0,n.kt)("a",{parentName:"li",href:"https://drive.google.com/file/d/1-iv8IveUzA2KrJV_Kqrgx4ts05Ow0zjM"},"meeting"),"\npacked with demonstrations and prepared monthly report\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1189"},"#","1189")),(0,n.kt)("li",{parentName:"ul"},"Fixed several flaky tests and improved the logs json schema\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1188"},"#","1188"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1190"},"#","1190"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1192"},"#","1192")),(0,n.kt)("li",{parentName:"ul"},"Built MacOS ARM64 (",(0,n.kt)("inlineCode",{parentName:"li"},"aarch64-darwin"),") binaries in CI\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1182"},"#","1182")),(0,n.kt)("li",{parentName:"ul"},"Improved network configuration by detecting incompatible persisted\nstates ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1174"},"#","1174")),(0,n.kt)("li",{parentName:"ul"},"Released version 0.14.0")),(0,n.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Start work on incremental decommit"),(0,n.kt)("li",{parentName:"ul"},"Continue shepherding contributed PRs to completion"),(0,n.kt)("li",{parentName:"ul"},"Finish stateless-observation work"),(0,n.kt)("li",{parentName:"ul"},"Open a head on a Conway network")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dee5d2d9.044804a9.js b/assets/js/dee5d2d9.044804a9.js new file mode 100644 index 00000000000..6c4895b0b91 --- /dev/null +++ b/assets/js/dee5d2d9.044804a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[52560],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>k});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function s(e,t){if(null==e)return{};var o,r,n=function(e,t){if(null==e)return{};var o,r,n={},a=Object.keys(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var p=r.createContext({}),l=function(e){var t=r.useContext(p),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=l(o),h=n,k=c["".concat(p,".").concat(h)]||c[h]||d[h]||a;return o?r.createElement(k,i(i({ref:t},u),{},{components:o})):r.createElement(k,i({ref:t},u))}));function k(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,i=new Array(a);i[0]=h;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var l=2;l<a;l++)i[l]=o[l];return r.createElement.apply(null,i)}return r.createElement.apply(null,o)}h.displayName="MDXCreateElement"},46159:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=o(87462),n=(o(67294),o(3905));const a={title:"Network Team Update",slug:"2023-08-18-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-08-18-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-network.md",source:"@site/blog/2023-08-18-network.md",title:"Network Team Update",description:"High-level overview of sprint 42",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.09,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-08-18-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-18-ledger"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-18-sre"}},p={authorsImageUrls:[void 0]},l=[{value:"High-level overview of sprint 42",id:"high-level-overview-of-sprint-42",level:2},{value:"Eclipse Evasion",id:"eclipse-evasion",level:3},{value:"CDDL specs for protocol codecs",id:"cddl-specs-for-protocol-codecs",level:3},{value:"Ouroboros-Network-Framework API changes",id:"ouroboros-network-framework-api-changes",level:3},{value:"Nix setup (CI)",id:"nix-setup-ci",level:3},{value:"Other contributions",id:"other-contributions",level:2},{value:"Cardano Network Service Assurance",id:"cardano-network-service-assurance",level:3},{value:"Galois Review",id:"galois-review",level:3},{value:"CI",id:"ci",level:3},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3}],u={toc:l},c="wrapper";function d(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,r.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-42"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+42%22"},"sprint 42")),(0,n.kt)("h3",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,n.kt)("p",null,"We merged and released a new version of the ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," package (version\n",(0,n.kt)("inlineCode",{parentName:"p"},"0.9.0.0"),") which includes ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3886"},"big ledger peers feature"),".\nThis is the primary peer selection mechanism to defend against eclipses. We\nalso prepared a PR to updated ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/165"},(0,n.kt)("inlineCode",{parentName:"a"},"ouroboros-cosnensus")),"\nand ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ekg-forward/pull/30"},(0,n.kt)("inlineCode",{parentName:"a"},"ekg-forward"))," packages."),(0,n.kt)("h3",{id:"cddl-specs-for-protocol-codecs"},"CDDL specs for protocol codecs"),(0,n.kt)("p",null,"We made the ",(0,n.kt)("inlineCode",{parentName:"p"},"cddl")," spec for network codec more inline with the implementation\nwhich is highly polymorphic. ",(0,n.kt)("inlineCode",{parentName:"p"},"cddl")," doesn't have the notion of polymorphism,\nbut has ",(0,n.kt)("inlineCode",{parentName:"p"},"any")," which can generate any valid cbor term. We matched it with an\n",(0,n.kt)("inlineCode",{parentName:"p"},"Any")," type on the Haskell side and made all remaining tests & specs use it.\nThis simplified the specifications and made it easier to understand which parts\nare defined in the spec, and which parts are left unspecified. See\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4595"},"ouroboros-network#4595"),"."),(0,n.kt)("h3",{id:"ouroboros-network-framework-api-changes"},"Ouroboros-Network-Framework API changes"),(0,n.kt)("p",null,"We also released ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network-framework")," and other network components.\nThe ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network-framework")," package contains a redesign of API exposed to\n",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),". We consolidated, cleaned it and made it easier to\nextend in the future if there will be new arguments that need to be passed to\nmini-protocol initiator and responders which comes from the low-level network\nlayer."),(0,n.kt)("h3",{id:"nix-setup-ci"},"Nix setup (CI)"),(0,n.kt)("p",null,"We also made a major review of our ",(0,n.kt)("inlineCode",{parentName:"p"},"nix")," setup. With help from our DevX team\nwe ended up with a clean ",(0,n.kt)("inlineCode",{parentName:"p"},"flake.nix")," file which can:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"compile & test the code on ",(0,n.kt)("inlineCode",{parentName:"li"},"x86_64-linux"),", ",(0,n.kt)("inlineCode",{parentName:"li"},"x86_64-darwin")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"aarch64-darwin")),(0,n.kt)("li",{parentName:"ul"},"cross-compile to ",(0,n.kt)("inlineCode",{parentName:"li"},"Windows")," on ",(0,n.kt)("inlineCode",{parentName:"li"},"x86_64-linux")," ")),(0,n.kt)("p",null,"And provides a shell which contains all the build tools, including ",(0,n.kt)("inlineCode",{parentName:"p"},"ghc-9.6"),",\n",(0,n.kt)("inlineCode",{parentName:"p"},"hls"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"cddl"),", and more. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4640"},"ouroboros-network#4640"),",\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4643"},"ouroboros-network#4643"),"."),(0,n.kt)("h2",{id:"other-contributions"},"Other contributions"),(0,n.kt)("h3",{id:"cardano-network-service-assurance"},"Cardano Network Service Assurance"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The work and writeup in finishing up the CNSA, first stage (first\ncontract)."),(0,n.kt)("li",{parentName:"ul"},"Getting Sam Cowger (Galois Inc) up to speed."),(0,n.kt)("li",{parentName:"ul"},"The IOG Networking team carried a reivew of CNSA project progress: a limitted\ncode & design review.")),(0,n.kt)("h3",{id:"galois-review"},"Galois Review"),(0,n.kt)("p",null,"Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3832"},"ouroboros-network#3832"),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3834"},"ouroboros-network#3834"),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3835"},"ouroboros-network#3835"),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/3836"},"ouroboros-network#3836"),";")),(0,n.kt)("p",null,"scoping, requirements, and getting started."),(0,n.kt)("h3",{id:"ci"},"CI"),(0,n.kt)("p",null,"We added a nightly run for GitHub actions and made the GitHub actions test be\nexecuted with extra concurrency ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4637"},"ouroboros-network#4637"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4649"},"ouroboros-network#4649"),"."),(0,n.kt)("p",null,"We also added GitHub's dependabot ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4650"},"ouroboros-network#4650"),"."),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We settled on implementation design of bootstrap peers which is being\nimplemented, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4615"},"ouroboros-network#4615"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/df778edc.6398e671.js b/assets/js/df778edc.6398e671.js new file mode 100644 index 00000000000..0ab0f4ffb6f --- /dev/null +++ b/assets/js/df778edc.6398e671.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79036],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>d});var a=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function l(e,t){if(null==e)return{};var o,a,n=function(e,t){if(null==e)return{};var o,a,n={},r=Object.keys(e);for(a=0;a<r.length;a++)o=r[a],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)o=r[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(o),c=n,d=m["".concat(p,".").concat(c)]||m[c]||k[c]||r;return o?a.createElement(d,i(i({ref:t},u),{},{components:o})):a.createElement(d,i({ref:t},u))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,i=new Array(r);i[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<r;s++)i[s]=o[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,o)}c.displayName="MDXCreateElement"},65687:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>k,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=o(87462),n=(o(67294),o(3905));const r={title:"Network Team Update",slug:"2023-04-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-28-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-28-network.md",source:"@site/blog/2023-04-28-network.md",title:"Network Team Update",description:"High level summary",date:"2023-04-28T00:00:00.000Z",formattedDate:"April 28, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:1.21,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-04-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-28-goedel"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-27-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Detailed log",id:"detailed-log",level:2},{value:"Ouroboros-Network",id:"ouroboros-network",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"Typed Protocols",id:"typed-protocols",level:3}],u={toc:s},m="wrapper";function k(e){let{components:t,...o}=e;return(0,n.kt)(m,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The networking team has released the following packages to ",(0,n.kt)("inlineCode",{parentName:"p"},"Hackage"),":"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/io-classes"},(0,n.kt)("inlineCode",{parentName:"a"},"io-classes")),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/io-classes-mtl"},(0,n.kt)("inlineCode",{parentName:"a"},"io-classes-mtl"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/io-sim"},(0,n.kt)("inlineCode",{parentName:"a"},"io-sim")),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/strict-stm"},(0,n.kt)("inlineCode",{parentName:"a"},"strict-stm")),","),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/strict-mvar"},(0,n.kt)("inlineCode",{parentName:"a"},"strict-mvar")))),(0,n.kt)("p",null,"We published an announcement ",(0,n.kt)("a",{parentName:"p",href:"https://engineering.iog.io/2023-04-14-io-sim-annoucement"},"blog post"),". We made progress\nalso on another blog post which will describes the design of the P2P networking\nlayer."),(0,n.kt)("p",null,"After moving ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," to its own repository, we made\n",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," compatible with ",(0,n.kt)("inlineCode",{parentName:"p"},"GHC")," ",(0,n.kt)("inlineCode",{parentName:"p"},"9.4")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"9.6"),"."),(0,n.kt)("p",null,"We made ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-client")," library independent of\n",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-diffusion"),"."),(0,n.kt)("p",null,"We prepared release of network packages for ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-node-8.0"),"."),(0,n.kt)("h2",{id:"detailed-log"},"Detailed log"),(0,n.kt)("h3",{id:"ouroboros-network"},"Ouroboros-Network"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Compatibility with ",(0,n.kt)("inlineCode",{parentName:"li"},"io-classes-1.1.0.0"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4281"},"ouroboros-network#4281"),"."),(0,n.kt)("li",{parentName:"ul"},"Compatibility with ",(0,n.kt)("inlineCode",{parentName:"li"},"GHC")," ",(0,n.kt)("inlineCode",{parentName:"li"},"9.4")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"9.6"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4527"},"ouroboros-network#4527"),"."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"cardano-client")," independent of ",(0,n.kt)("inlineCode",{parentName:"li"},"ouroboros-cosnensus-diffusion"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4526"},"ouroboros-network#4526"),"."),(0,n.kt)("li",{parentName:"ul"},"Release new versions of packages for ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node-8.0"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4532"},"ouroboros-network#4532"),"."),(0,n.kt)("li",{parentName:"ul"},"Galois Inc, has been making progress towards merging ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"ouroboros-network#4256"),".")),(0,n.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"io-classes-1.0.0.0"),", and following up releases: ",(0,n.kt)("inlineCode",{parentName:"li"},"1.0.0.1")," (",(0,n.kt)("inlineCode",{parentName:"li"},"ghc-9.6"),"\nsupport), ",(0,n.kt)("inlineCode",{parentName:"li"},"1.1.0.0")," (documentation fix)."),(0,n.kt)("li",{parentName:"ul"},"Fixed timeouts and delays in ",(0,n.kt)("inlineCode",{parentName:"li"},"io-sim")," in a series of PRs: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/81"},"io-sim#81"),",\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/82"},"io-sim#82"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/86"},"io-sim#86"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/87"},"io-sim#87"),"."),(0,n.kt)("li",{parentName:"ul"},"Renamed a module: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/88"},"io-sim#88"),"."),(0,n.kt)("li",{parentName:"ul"},"Fixed a failing ",(0,n.kt)("inlineCode",{parentName:"li"},"registerDelayCancellable")," test: ","[io-sim#80]","."),(0,n.kt)("li",{parentName:"ul"},"Use GitHub merge queue in ",(0,n.kt)("inlineCode",{parentName:"li"},"io-sim")," repository."),(0,n.kt)("li",{parentName:"ul"},"CI: download ",(0,n.kt)("inlineCode",{parentName:"li"},"stylish-haskell"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/83"},"io-sim#83"),".")),(0,n.kt)("h3",{id:"typed-protocols"},"Typed Protocols"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released ",(0,n.kt)("inlineCode",{parentName:"li"},"typed-protocols-0.1.0.4")," which support ",(0,n.kt)("inlineCode",{parentName:"li"},"io-classes-1.1.0.0"),":\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages/pull/227"},"typed-protocols#227"),"."),(0,n.kt)("li",{parentName:"ul"},"Use GitHub merge queue in ",(0,n.kt)("inlineCode",{parentName:"li"},"typed-protocols"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/30"},"typed-protocols#30"),"."),(0,n.kt)("li",{parentName:"ul"},"CI: download ",(0,n.kt)("inlineCode",{parentName:"li"},"stylish-haskell"),": ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/typed-protocols/pull/29"},"typed-protocols#29"),".")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dfd49ee8.8d5945b5.js b/assets/js/dfd49ee8.8d5945b5.js new file mode 100644 index 00000000000..5ae127b00d1 --- /dev/null +++ b/assets/js/dfd49ee8.8d5945b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[60247],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=s(r),d=a,f=m["".concat(l,".").concat(d)]||m[d]||u[d]||o;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=r[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},72396:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & Tracing Team Update",slug:"2022-10-28-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,c={permalink:"/cardano-updates/2022-10-28-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-performance-and-tracing.md",source:"@site/blog/2022-10-28-performance-and-tracing.md",title:"Performance & Tracing Team Update",description:"High level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.155,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & Tracing Team Update",slug:"2022-10-28-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-10-28-network"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2022-08-12-sre"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Executive summary",id:"executive-summary",level:2}],p={toc:s},m="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline."),(0,a.kt)("p",null,"On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario."),(0,a.kt)("h2",{id:"executive-summary"},"Executive summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale."),(0,a.kt)("li",{parentName:"ul"},"The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment."),(0,a.kt)("li",{parentName:"ul"},"The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dff1c289.c8e36228.js b/assets/js/dff1c289.c8e36228.js new file mode 100644 index 00000000000..5e954678acc --- /dev/null +++ b/assets/js/dff1c289.c8e36228.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[3792],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>v});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=d(n),m=o,v=p["".concat(l,".").concat(m)]||p[m]||u[m]||a;return n?r.createElement(v,s(s({ref:t},c),{},{components:n})):r.createElement(v,s({ref:t},c))}));function v(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:o,s[1]=i;for(var d=2;d<a;d++)s[d]=n[d];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},30089:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>d});var r=n(87462),o=(n(67294),n(3905));const a={sidebar_position:1},s="Manage Docs Versions",i={unversionedId:"tutorial-extras/manage-docs-versions",id:"tutorial-extras/manage-docs-versions",title:"Manage Docs Versions",description:"Docusaurus can manage multiple versions of your docs.",source:"@site/docs/tutorial-extras/manage-docs-versions.md",sourceDirName:"tutorial-extras",slug:"/tutorial-extras/manage-docs-versions",permalink:"/cardano-updates/docs/tutorial-extras/manage-docs-versions",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"defaultSidebar",previous:{title:"Tutorial - Extras",permalink:"/cardano-updates/docs/category/tutorial---extras"},next:{title:"Translate your site",permalink:"/cardano-updates/docs/tutorial-extras/translate-your-site"}},l={},d=[{value:"Create a docs version",id:"create-a-docs-version",level:2},{value:"Add a Version Dropdown",id:"add-a-version-dropdown",level:2},{value:"Update an existing version",id:"update-an-existing-version",level:2}],c={toc:d},p="wrapper";function u(e){let{components:t,...a}=e;return(0,o.kt)(p,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"manage-docs-versions"},"Manage Docs Versions"),(0,o.kt)("p",null,"Docusaurus can manage multiple versions of your docs."),(0,o.kt)("h2",{id:"create-a-docs-version"},"Create a docs version"),(0,o.kt)("p",null,"Release a version 1.0 of your project:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"npm run docusaurus docs:version 1.0\n")),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"docs")," folder is copied into ",(0,o.kt)("inlineCode",{parentName:"p"},"versioned_docs/version-1.0")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"versions.json")," is created."),(0,o.kt)("p",null,"Your docs now have 2 versions:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"1.0")," at ",(0,o.kt)("inlineCode",{parentName:"li"},"http://localhost:3000/docs/")," for the version 1.0 docs"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"current")," at ",(0,o.kt)("inlineCode",{parentName:"li"},"http://localhost:3000/docs/next/")," for the ",(0,o.kt)("strong",{parentName:"li"},"upcoming, unreleased docs"))),(0,o.kt)("h2",{id:"add-a-version-dropdown"},"Add a Version Dropdown"),(0,o.kt)("p",null,"To navigate seamlessly across versions, add a version dropdown."),(0,o.kt)("p",null,"Modify the ",(0,o.kt)("inlineCode",{parentName:"p"},"docusaurus.config.js")," file:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="docusaurus.config.js"',title:'"docusaurus.config.js"'},"module.exports = {\n themeConfig: {\n navbar: {\n items: [\n // highlight-start\n {\n type: 'docsVersionDropdown',\n },\n // highlight-end\n ],\n },\n },\n};\n")),(0,o.kt)("p",null,"The docs version dropdown appears in your navbar:"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Docs Version Dropdown",src:n(76868).Z,width:"370",height:"302"})),(0,o.kt)("h2",{id:"update-an-existing-version"},"Update an existing version"),(0,o.kt)("p",null,"It is possible to edit versioned docs in their respective folder:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"versioned_docs/version-1.0/hello.md")," updates ",(0,o.kt)("inlineCode",{parentName:"li"},"http://localhost:3000/docs/hello")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"docs/hello.md")," updates ",(0,o.kt)("inlineCode",{parentName:"li"},"http://localhost:3000/docs/next/hello"))))}u.isMDXComponent=!0},76868:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png"}}]); \ No newline at end of file diff --git a/assets/js/dff84d74.7af6b65c.js b/assets/js/dff84d74.7af6b65c.js new file mode 100644 index 00000000000..7d2bd3f5e00 --- /dev/null +++ b/assets/js/dff84d74.7af6b65c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65421],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>d});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},h=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),u=s(r),c=i,d=u["".concat(p,".").concat(c)]||u[c]||m[c]||a;return r?n.createElement(d,o(o({ref:t},h),{},{components:r})):n.createElement(d,o({ref:t},h))}));function d(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var s=2;s<a;s++)o[s]=r[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}c.displayName="MDXCreateElement"},812:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var n=r(87462),i=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-11-04-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},o="High level overview",l={permalink:"/cardano-updates/2022-11-04-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-mithril.md",source:"@site/blog/2022-11-04-mithril.md",title:"Mithril Team Update",description:"This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.",date:"2022-11-04T00:00:00.000Z",formattedDate:"November 4, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.015,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Mithril Team Update",slug:"2022-11-04-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-04-hydra"},nextItem:{title:"Open-Source Team",permalink:"/cardano-updates/2022-10-31-open-source"}},p={authorsImageUrls:[void 0]},s=[],h={toc:s},u="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(u,(0,n.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates."),(0,i.kt)("h1",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"We have been moving forward on the implementation of the release process ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/500"},"#500"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Setup of the new hosted environments for ",(0,i.kt)("inlineCode",{parentName:"li"},"testing-preview"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"pre-release-preview")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"release-preprod")," with their terraform and GitHub environments ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/542"},"#542")),(0,i.kt)("li",{parentName:"ul"},"Adapted the CI workflows to work with the new release process ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/543"},"#543")),(0,i.kt)("li",{parentName:"ul"},"Publication of an ",(0,i.kt)("a",{parentName:"li",href:"https://mithril.network/doc/adr/3"},"ADR3")),(0,i.kt)("li",{parentName:"ul"},"Publication of a ",(0,i.kt)("a",{parentName:"li",href:"https://mithril.network/doc/dev-blog/2022/10/28/updated-environments"},"dev blog post")," about Mithril networks evolution "),(0,i.kt)("li",{parentName:"ul"},"Releasing our first Mithril distribution ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2244.0"},"2244.0")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the API versioning mechanism ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/565"},"#565")),(0,i.kt)("li",{parentName:"ul"},"Worked on the implementation of the stores migration process for the signer and aggregator nodes ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/562"},"#562")),(0,i.kt)("li",{parentName:"ul"},"Prepared a Mithril ",(0,i.kt)("inlineCode",{parentName:"li"},"devnet")," video demo ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/526"},"#526")),(0,i.kt)("li",{parentName:"ul"},"Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/484"},"#484"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e06746c7.a59320ce.js b/assets/js/e06746c7.a59320ce.js new file mode 100644 index 00000000000..baa4037385e --- /dev/null +++ b/assets/js/e06746c7.a59320ce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64410],{81981:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/consensus/page/2","page":2,"postsPerPage":5,"totalPages":7,"totalCount":32,"previousPage":"/cardano-updates/tags/consensus","nextPage":"/cardano-updates/tags/consensus/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/e0a90ddc.a29272eb.js b/assets/js/e0a90ddc.a29272eb.js new file mode 100644 index 00000000000..ca64cfd5e40 --- /dev/null +++ b/assets/js/e0a90ddc.a29272eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24891],{44348:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/consensus","page":1,"postsPerPage":5,"totalPages":7,"totalCount":32,"nextPage":"/cardano-updates/tags/consensus/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/e0b45b46.004f9296.js b/assets/js/e0b45b46.004f9296.js new file mode 100644 index 00000000000..e4939ff5cab --- /dev/null +++ b/assets/js/e0b45b46.004f9296.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55135],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?r(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,i=function(e,t){if(null==e)return{};var a,n,i={},r=Object.keys(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=u(a),s=i,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||r;return a?n.createElement(h,o(o({ref:t},d),{},{components:a})):n.createElement(h,o({ref:t},d))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,o=new Array(r);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var u=2;u<r;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},23826:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var n=a(87462),i=(a(67294),a(3905));const r={title:"Node API & CLI Team Update",slug:"2023-09-12-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-09-12-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-12-node-cli-api.md",source:"@site/blog/2023-09-12-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-09-12T00:00:00.000Z",formattedDate:"September 12, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:2.605,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-09-12-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-09-14-db-sync"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-08-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],d={toc:u},c="wrapper";function m(e){let{components:t,...a}=e;return(0,i.kt)(c,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"2023-08-30---2023-09-12"},"2023-08-30 - 2023-09-12"),(0,i.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,i.kt)("p",null,"Release of ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.3.0-pre"},"Cardano-node 8.3.0-pre")," for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs.\nThis release completes ",(0,i.kt)("a",{parentName:"p",href:"https://sancho.network/get-started#sanchonet-feature-rollout"},"phase 2 of SanchoNet feature roll out plan")),(0,i.kt)("p",null,"CLI continues on its migration to a era-based top-level commands. This sprint we moved ",(0,i.kt)("inlineCode",{parentName:"p"},"text-view"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"key"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"query"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"genesis"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"node"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"address")," into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints."),(0,i.kt)("p",null,"We are moving the ",(0,i.kt)("inlineCode",{parentName:"p"},"drep delegation-certificate")," to the stake-address command so delegating to a drep is done via ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-addres vote-delegation-certificate"),". Along the same lines, we are renaming\n",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address delegation-certificate")," (delagating to a stake pool) to ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address stake-delegation-certificate")," to distinguish between stake delegation to a pool and votes delegation to a drep. On top\nof that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly ",(0,i.kt)("inlineCode",{parentName:"p"},"stake-address stake-and-vote-delegation-certificate"),". Note that change is not included on 8.3 but will come on 8.4.\nRemoving ",(0,i.kt)("inlineCode",{parentName:"p"},"--conway-era")," flag from all the ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," sub-commands."),(0,i.kt)("p",null,"Update description fields in delegation certificates from ",(0,i.kt)("inlineCode",{parentName:"p"},"Stake Address Delegation Certificate")," to respectively (Conway onwards):"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Stake Delegation Certificate")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Vote Delegation Certificate")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Stake and Vote Delegation Certificate"))),(0,i.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/261"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address vote-delegation-certificate")," command")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/257"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address stake-and-vote-delegation-certificate")," command")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/260"},"Change ",(0,i.kt)("inlineCode",{parentName:"a"},"TreasuryWithdrawalCmd")," to a record")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/256"},"Simplify ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address stake-delegation-certificate")," command across eras")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/254"},"Remove ",(0,i.kt)("inlineCode",{parentName:"a"},"EraBased")," prefix and add ",(0,i.kt)("inlineCode",{parentName:"a"},"Cmd")," suffix")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/250"},"#221 Update description fields on delegation certificates")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/249"},"Update error message for eras mismatch between node and cli")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/248"},"Era based ",(0,i.kt)("inlineCode",{parentName:"a"},"address")," commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/246"},"Consistent naming for ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-pool")," command related types, functions and modules")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/245"},"Disable ",(0,i.kt)("inlineCode",{parentName:"a"},"redundant-constraints")," warning only on ",(0,i.kt)("inlineCode",{parentName:"a"},"ghc-8.10.7"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/244"},"Remove ",(0,i.kt)("inlineCode",{parentName:"a"},"EraBased")," prefix from era-based commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/243"},"Rename ",(0,i.kt)("inlineCode",{parentName:"a"},"delegation-certificate")," to ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-delegation-certificate")," only in era-based command structure")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/242"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"node")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/241"},"Era-based ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address")," command group")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/240"},"Remove duplicate instances and add new ",(0,i.kt)("inlineCode",{parentName:"a"},"FeatureInEra ShelleyBasedEra")," instance")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/239"},"Remove ",(0,i.kt)("inlineCode",{parentName:"a"},"EraBased")," prefix from errors")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/238"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"text-view")," run commands implementation into era-based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/237"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"key")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/236"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"query")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/235"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"genesis")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/234"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"pool")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/233"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"stake-address")," run commands implementation into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/232"},"Move ",(0,i.kt)("inlineCode",{parentName:"a"},"address")," run command implementation into era-based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/231"},"Delete legacy ",(0,i.kt)("inlineCode",{parentName:"a"},"conway governance")," commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/230"},"Era sensitive transaction run commands")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/229"},"Move transaction command code into era based")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/228"},"Fix query ",(0,i.kt)("inlineCode",{parentName:"a"},"key-period-info"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/227"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"hprop_golden_shelleyStakeAddressRegistrationCertificateWithBuildRaw")," test")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/225"},"Prefix complex delegation certificate option"))),(0,i.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/233"},"Fix test constraints functions")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/231"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"caseShelleyToBabbageAndConwayEraOnwards")," function")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/230"},"Delete deprecated functions and types")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/228"},"Release 8.19.0.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/226"},(0,i.kt)("inlineCode",{parentName:"a"},"FeatureInEra")," instances for ",(0,i.kt)("inlineCode",{parentName:"a"},"CardanoEra")," and ",(0,i.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/225"},"New ",(0,i.kt)("inlineCode",{parentName:"a"},"mapSomeAddressVerification")," key function")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/224"},"Fix type signature of ",(0,i.kt)("inlineCode",{parentName:"a"},"queryGenesisParameters")," so that it can be queried in any era")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/222"},"Release 8.18.0.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/221"},"Fix exception when executing drep queries"))),(0,i.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.3.0-pre"},"Cardano-node 8.3.0-pre")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5460"},"Fix deadlock issue with stdout tracer in tx-generator")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5453"},"nix: workbench tracing configuration"))),(0,i.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,i.kt)("h3",{id:"docs"},"docs"),(0,i.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e135bd86.35a0a708.js b/assets/js/e135bd86.35a0a708.js new file mode 100644 index 00000000000..227e9713986 --- /dev/null +++ b/assets/js/e135bd86.35a0a708.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[69791],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(n),m=r,d=c["".concat(l,".").concat(m)]||c[m]||h[m]||a;return n?o.createElement(d,s(s({ref:t},u),{},{components:n})):o.createElement(d,s({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:r,s[1]=i;for(var p=2;p<a;p++)s[p]=n[p];return o.createElement.apply(null,s)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},96223:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2022-11-30-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-11-30-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-consensus.md",source:"@site/blog/2022-11-30-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2022-11-30T00:00:00.000Z",formattedDate:"November 30, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.4,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-11-30-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-12-01-system-test"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-30-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD prototype",id:"utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:3},{value:"CSJ prototype",id:"csj-prototype",level:3},{value:"New VRF and KES crypto integration",id:"new-vrf-and-kes-crypto-integration",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],u={toc:p},c="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the past two weeks, the consensus team merged improvements to the monadic\ncursor API that was needed to implement LMDB range reads, which is in turn\nrequired for the implementation of the UTxO HD feature. We added tables to\nseveral tests in for the UTxO HD feature, which increases our confidence in the\ncorrectness of the prototype. The mempool property tests are close to being\ncompleted. Also, we finished the LSM tree tuning algorithm."),(0,r.kt)("p",null,"On the Genesis front we started simplifying the BlockFetch logic with\nCSJ-specific workloads in mind. "),(0,r.kt)("p",null,"We are also documenting the Block Diffusion Pipelining feature, and added a\nhigh-level overview of consensus to the top level documentation of\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"."),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD prototype"),(0,r.kt)("p",null,"We merged the implementation of a monadic cursor API (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"#1"),")) which was\nneeded to solve a bug with LMDB range-reads. After this PR was merged, we focused on\nbridging the gap between the ",(0,r.kt)("inlineCode",{parentName:"p"},"lmdb-simple")," interface and consensus by facilitating\nusing ",(0,r.kt)("inlineCode",{parentName:"p"},"lmdb-simple"),"'s cursor API without ",(0,r.kt)("inlineCode",{parentName:"p"},"Serialise")," constraints (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/3"},"#3"),")."),(0,r.kt)("p",null,"We refactored the backing store property tests to use ",(0,r.kt)("inlineCode",{parentName:"p"},"quickcheck-lockstep"),"\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4081"},"#4081"),")."),(0,r.kt)("p",null,"We added tables to the mock ledger in the UTxO-HD feature branch\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4184"},"#4184"),"). Every test that used to run with ",(0,r.kt)("inlineCode",{parentName:"p"},"SimpleBlocks")," now uses\ntables. This will enable us to exercise the UTxO HD mempool integration by\nleveraging the existing mempool property-tests. The new state-machine\nproperty-tests are still needed for testing the parallel behaviour of the\nmempool."),(0,r.kt)("p",null,"Our work on the mempool state-machine tests revealed the need for improvements\nin the ",(0,r.kt)("inlineCode",{parentName:"p"},"quickcheck-state-machine")," library. Parallel testing assumed that the\nstate machine did not have access to mutable references. However, the mempool\ntests require the use of such mutable references for mocking the ledger\ninterface. As a result, our parallel tests were failing with rather obscure\nmessages. @Jasagredo submitted a pull request (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/stevana/quickcheck-state-machine/pull/12"},"#12"),") that allows for\nnew mutable references to be created at each run of the state machine."),(0,r.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,r.kt)("h3",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,r.kt)("p",null,"We finished the LSM Tree tuning algorithm. We are currently tidying up the code\nand gathering results (i.e., plots and their interpretation)."),(0,r.kt)("h3",{id:"csj-prototype"},"CSJ prototype"),(0,r.kt)("p",null,"We started simplifying the BlockFetch logic with CSJ-specific workloads in mind."),(0,r.kt)("h3",{id:"new-vrf-and-kes-crypto-integration"},"New VRF and KES crypto integration"),(0,r.kt)("p",null,"Started working on supporting new version of ",(0,r.kt)("inlineCode",{parentName:"p"},"StandardCrypto")," which uses compact\nKES and batched VRF (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4151"},"#4151"),")."),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,'We reviewed the existing state of the Block Diffusion Pipelining document. We\nare now working on the "Implementation" section (',(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4020"},"#4020"),")."),(0,r.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("p",null,"We cleared up our understanding of the error dynamics of forecasting\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4146"},"#4146")," and ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4174"},"#4174"),")."),(0,r.kt)("p",null,"We submitted a pull request that adds an overview of consensus to the ",(0,r.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/ouroboros-network/"},"top level\ndocumentation")," of\nouroboros-network (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4197"},"#4197"),"). This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4197"},"https://github.com/input-output-hk/ouroboros-network/pull/4197")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e158fd47.041cd656.js b/assets/js/e158fd47.041cd656.js new file mode 100644 index 00000000000..dc22b924440 --- /dev/null +++ b/assets/js/e158fd47.041cd656.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88829],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=s(n),u=a,f=d["".concat(p,".").concat(u)]||d[u]||m[u]||o;return n?r.createElement(f,l(l({ref:t},c),{},{components:n})):r.createElement(f,l({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:a,l[1]=i;for(var s=2;s<o;s++)l[s]=n[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},64964:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-03-31-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-31-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-goedel.md",source:"@site/blog/2023-03-31-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.455,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-03-31-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-31-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-31-hydra"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:s},d="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"This sprint the team has been working on final drafts of two papers\nfor internal review and planning next steps of analysis of consensus\ndesign refiniments."),(0,a.kt)("h2",{id:"details"},"Details"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Preparing final draft of DeltaQSD algebra paper for internal review")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Preparing final draft of verifying design refinements for\ndistributed system design for internal review")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Planning next phase of consensus design refinement analysis"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e1f21c3f.7f2072d9.js b/assets/js/e1f21c3f.7f2072d9.js new file mode 100644 index 00000000000..06916479788 --- /dev/null +++ b/assets/js/e1f21c3f.7f2072d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58680],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),s=u(a),d=r,h=s["".concat(p,".").concat(d)]||s[d]||m[d]||l;return a?n.createElement(h,o(o({ref:t},c),{},{components:a})):n.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:r,o[1]=i;for(var u=2;u<l;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},32235:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const l={title:"Node API & CLI Team Update",slug:"2023-11-14-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-11-14-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-14-node-cli-api.md",source:"@site/blog/2023-11-14-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-11-14T00:00:00.000Z",formattedDate:"November 14, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.155,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-11-14-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-15-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-10-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},s="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(s,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-11-01---2023-11-14"},"2023-11-01 - 2023-11-14"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CARDANO-NODE"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.6.0-pre"},"Pre-release of Cardano Node 8.6.0-pre"))),(0,r.kt)("p",null,"CARDANO-CLI"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Improve golden tests"),(0,r.kt)("li",{parentName:"ul"},"Clean-up of conway era commands")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/451"},"Replace usages of assertFileOccurences (6/6)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/448"},"Replace usages of assertFileOccurences (5/6)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/444"},"Replace usages of assertFileOccurences by usage of new functions \u2728 (4/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/443"},"put n shelley/byron key witnesses arguments in correct order")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/441"},"Replace usages of assertFileOccurences by comparisons with golden files (3/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/436"},"Replace usages of assertFileOccurences by comparisons with golden files (2/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/435"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-8.31.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/434"},"Remove remaining uses of ",(0,r.kt)("inlineCode",{parentName:"a"},"IsCardanoEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/432"},"Release 8.14.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/430"},"Upgrade cardano-api to 8.30")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/428"},"Command types for ",(0,r.kt)("inlineCode",{parentName:"a"},"node")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/427"},"Split governance ",(0,r.kt)("inlineCode",{parentName:"a"},"MIRTransferConstructor"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/426"},"Replace usages of assertFileOccurences by comparisons with golden files (1/n)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/425"},"Command argument types for ",(0,r.kt)("inlineCode",{parentName:"a"},"drep")," commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/421"},"Add golden test for ",(0,r.kt)("inlineCode",{parentName:"a"},"governance action create-no-confidence"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/419"},"Command arguments types for stake-pool commands"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/364"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.31.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/360"},"Use ledger presentation of multi-asset values directly. Lens to make this uniform over ",(0,r.kt)("inlineCode",{parentName:"a"},"ShelleyBasedEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/358"},"Protocol version change is not common to all versions anymore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/355"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"ByronAndAllegraEraOnwards"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/354"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"IsCardanoEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"IsShelleyBasedEra")," contraints in GADT constructors with ",(0,r.kt)("inlineCode",{parentName:"a"},"Typeable"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/353"},"Modify foldBlocks to recurse on ledger events ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/352"},"Add generators for ",(0,r.kt)("inlineCode",{parentName:"a"},"EraBasedProtocolParametersUpdate"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/351"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.30.0.0")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.6.0-pre"},"Pre-release of Cardano Node 8.6.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5525"},"cardano-node: use ouroboros-network-protocols-0.5.2"))))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e2011657.8d35be8c.js b/assets/js/e2011657.8d35be8c.js new file mode 100644 index 00000000000..62362433519 --- /dev/null +++ b/assets/js/e2011657.8d35be8c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[30849],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,c=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},51505:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-17-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-17-hydra.md",source:"@site/blog/2023-03-17-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-17T00:00:00.000Z",formattedDate:"March 17, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.015,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-17-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-17-crypto"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-17-ledger"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has continued work on the mainnet compatibility of the\nhydra-node. They added a golden test suite for ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts, added\nsome detection of ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," misconfiguration, established a limit of 100 ADA\nper commit and other smaller tasks to prepare for a mainnet beta release."),(0,n.kt)("p",null,"Next week there will be a small team workshop to push for demonstrating a Hydra\nHead on the Cardano mainnet, ideally just in time for the monthly review\nmeeting. See the hydra channels on the IOG Technical Community discord server\nfor details."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement a 100 ADA hard-coded commit limit in the hydra-node\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/763"},"#763")),(0,n.kt)("li",{parentName:"ul"},"Pay back funds to faucet after smoke-test run\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/773"},"#773")),(0,n.kt)("li",{parentName:"ul"},"Setup custom github runner for smoke-tests on mainnet\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/775"},"#775")),(0,n.kt)("li",{parentName:"ul"},"Created golden tests to assure the script hash stays the same between\nchanges ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/772"},"#772")),(0,n.kt)("li",{parentName:"ul"},"Removed hardcoded error codes in plutus scripts\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/768"},"#768")),(0,n.kt)("li",{parentName:"ul"},"Detect misconfiguration of a hydra-node given persistent state\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/767"},"#767")),(0,n.kt)("li",{parentName:"ul"},"Met with potential users for hydra-pay"),(0,n.kt)("li",{parentName:"ul"},"Prepared hydra workshop")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Hydra monthly meeting"),(0,n.kt)("li",{parentName:"ul"},"Open a multi-party head on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e25ae581.b6c5260b.js b/assets/js/e25ae581.b6c5260b.js new file mode 100644 index 00000000000..a0269bb2301 --- /dev/null +++ b/assets/js/e25ae581.b6c5260b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1929],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(a),d=n,c=s["".concat(p,".").concat(d)]||s[d]||m[d]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},4890:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-06-23-hydra",authors:["ffakenz","pgrange"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-23-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-hydra.md",source:"@site/blog/2023-06-23-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.79,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Pascal Grange",title:"Hydra Software Engineer",url:"https://github.com/pgrange",imageURL:"https://github.com/pgrange.png",key:"pgrange"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-23-hydra",authors:["ffakenz","pgrange"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-23-goedel"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-23-network"}},p={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team shared progress updates during the monthly review\nmeeting (monthly report and video recording available soon) and started\nexperimenting on preview network with the new commit from external wallet\nfeature."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting, demonstrating ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/887"},"commit from external\nwallet")),(0,n.kt)("li",{parentName:"ul"},"Published regular ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/benchmarks/end-to-end-benchmarks"},"benchmarks for\nHydra")),(0,n.kt)("li",{parentName:"ul"},"Moved forward the journey for external commits using multiple script UTxOs\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"Changed the API to only put transaction id in snapshots, instead of the full\ntransactions ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/922"},"#922")," -> this\nis now evolved into fully addressing ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Fuel marking is now optional as one can now commit from an external wallet\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/924"},"#924")),(0,n.kt)("li",{parentName:"ul"},"Add flag option to display node version on tui\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/934"},"#934"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete external commits using multiple script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"New release 0.11.0"),(0,n.kt)("li",{parentName:"ul"},"Dirtroad solution of improved persistence performance ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/913"},"#913"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e2a7c340.17f426f9.js b/assets/js/e2a7c340.17f426f9.js new file mode 100644 index 00000000000..d6e7946c3a7 --- /dev/null +++ b/assets/js/e2a7c340.17f426f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48622],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=d(a),c=n,m=h["".concat(s,".").concat(c)]||h[c]||u[c]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},36391:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-01-13-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-01-13-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-13-hydra.md",source:"@site/blog/2023-01-13-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-01-13T00:00:00.000Z",formattedDate:"January 13, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.56,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-01-13-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-01-14-db-sync"},nextItem:{title:"Node Release Team Update",permalink:"/cardano-updates/2023-01-13-release"}},s={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:d},h="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"Since last weekly update before christmas, the Hydra team worked on the\ntechnical specification, closed gaps in ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts, made the unique\n",(0,n.kt)("inlineCode",{parentName:"p"},"headId")," available to Hydra clients through the API, allow the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," to\nexplicitly synchronize from genesis (if configured), and fixed smaller log and\nbuild issues reported by new users."),(0,n.kt)("p",null,"Besides this, a retrospective ",(0,n.kt)("a",{parentName:"p",href:"https://cardanofoundation.org/en/news/hydra-head-protocol-an-open-source-solution-for-scalability/"},"blog\npost"),"\nwas published by Matthias Benkort (CF) on Hydra, summarizing our progress made\nin 2022 also an outlook where Hydra is headed for in 2023. Also, the team had\nsome first sessions on the voting project with Catalyst and the CF."),(0,n.kt)("p",null,"A full digest monthly digest for December 2022 can be found on the ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2022-12"},"hydra\nwebsite"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Had some first sessions on the voting project with Catalyst and CF"),(0,n.kt)("li",{parentName:"ul"},"Published retrospective ",(0,n.kt)("a",{parentName:"li",href:"https://cardanofoundation.org/en/news/hydra-head-protocol-an-open-source-solution-for-scalability/"},"blog\npost"),"\nby Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also\nan outlook where Hydra is headed for in 2023."),(0,n.kt)("li",{parentName:"ul"},"Worked on the LaTeX spec for HydraHeadV1, not final or published yet - ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/ch1bo/hydra-spec"},"latest\nversion in this repository"),"."),(0,n.kt)("li",{parentName:"ul"},"Add unique ",(0,n.kt)("inlineCode",{parentName:"li"},"headId")," to API and hence make it available to clients."),(0,n.kt)("li",{parentName:"ul"},"Allow ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")," to explicitly synchronize from genesis using ",(0,n.kt)("inlineCode",{parentName:"li"},"--start-chain-from 0"),"."),(0,n.kt)("li",{parentName:"ul"},"Closed gaps in ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-plutus")," scripts",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"bounded transaction validity (",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/adr/21/"},"ADR21"),")"),(0,n.kt)("li",{parentName:"ul"},"enforcing contract continuity via state token in output"))),(0,n.kt)("li",{parentName:"ul"},"Fixed JSON for some logs and smaller build issues reported by new users.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Reach out to have ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tutorial")," integrated."),(0,n.kt)("li",{parentName:"ul"},"Plan the next couple of months."),(0,n.kt)("li",{parentName:"ul"},"Complete checking reimbursing of commits in head validator."),(0,n.kt)("li",{parentName:"ul"},"Align plutus scripts to spec and simplify them (identified some simplifications)"),(0,n.kt)("li",{parentName:"ul"},"Improve mutation framework to be sure we fail tests for the right reasons"),(0,n.kt)("li",{parentName:"ul"},"Complete the spec except the open points (<5) and also discuss them with researchers.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e2c8baed.fe76b678.js b/assets/js/e2c8baed.fe76b678.js new file mode 100644 index 00000000000..7e4e0879cc3 --- /dev/null +++ b/assets/js/e2c8baed.fe76b678.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36721],{80615:a=>{a.exports=JSON.parse('{"label":"crypto","permalink":"/cardano-updates/tags/crypto","allTagsPath":"/cardano-updates/tags","count":18}')}}]); \ No newline at end of file diff --git a/assets/js/e3067ecd.64e66e32.js b/assets/js/e3067ecd.64e66e32.js new file mode 100644 index 00000000000..2c0edf93ff4 --- /dev/null +++ b/assets/js/e3067ecd.64e66e32.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[84599],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function u(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),h=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=h(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),s=h(a),c=n,m=s["".concat(l,".").concat(c)]||s[c]||d[c]||i;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var u={};for(var l in t)hasOwnProperty.call(t,l)&&(u[l]=t[l]);u.originalType=e,u[s]="string"==typeof e?e:n,o[1]=u;for(var h=2;h<i;h++)o[h]=a[h];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},11113:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>u,toc:()=>h});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-09-22-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,u={permalink:"/cardano-updates/2023-09-22-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-22-hydra.md",source:"@site/blog/2023-09-22-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-22T00:00:00.000Z",formattedDate:"September 22, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.035,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-22-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-26-node-cli-api"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-09-22-performance-and-tracing"}},l={authorsImageUrls:[void 0]},h=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:h},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team conducted the monthly review meeting in\ncollaboration with Mithril, enhancing project coordination."),(0,n.kt)("p",null,"The team improved the gen-hydra-key node command for smoother usability\nand identified concrete steps to enhance network resiliency in feature\nitems ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188"),",\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1080"},"#1080"),", and\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/1079"},"#1079"),".\nAdditionally, they contributed the aiken-mode editor integration to the\naiken-lang organization, updated dependencies to utilize cardano-api\n8.20, and published the Hydra security advisory CVE-2023-42806 with a\nworkaround available for users."),(0,n.kt)("p",null,"These efforts demonstrate the team\\'s commitment to project improvement,\nsecurity, and open-source community collaboration."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Conducted the monthly review meeting together with Mithril"),(0,n.kt)("li",{parentName:"ul"},"Improved gen-hydra-key node command\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1077"},"#1077")),(0,n.kt)("li",{parentName:"ul"},"Established a clear plan to improve resiliency of network and manifested\nfeature items ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188"),",\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1080"},"#1080")," and\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1079"},"#1079")),(0,n.kt)("li",{parentName:"ul"},"Moved ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/aiken-lang/aiken-mode"},"aiken-mode")," (created by SN)\nto aiken-lang organization"),(0,n.kt)("li",{parentName:"ul"},"Updated dependencies to using cardano-api 8.20\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1075"},"#1075")),(0,n.kt)("li",{parentName:"ul"},"Published security advisory\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq"},"CVE-2023-42806"),"\n(workaround available)")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Write-up the monthly report for September"),(0,n.kt)("li",{parentName:"ul"},'Finish "network resilience to disconnects"\n',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"Finish kupo integration with hydra\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1078"},"#1078")),(0,n.kt)("li",{parentName:"ul"},"Discuss and decide on using aiken or not"),(0,n.kt)("li",{parentName:"ul"},"Address the published security advisory\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq"},"CVE-2023-42806"),"\n(to not require workaround)"),(0,n.kt)("li",{parentName:"ul"},"Ideally, release 0.13.0")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e356bfd0.a7639fa4.js b/assets/js/e356bfd0.a7639fa4.js new file mode 100644 index 00000000000..7bb7e69a5f9 --- /dev/null +++ b/assets/js/e356bfd0.a7639fa4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90083],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(r),h=a,m=u["".concat(s,".").concat(h)]||u[h]||d[h]||o;return r?n.createElement(m,i(i({ref:t},c),{},{components:r})):n.createElement(m,i({ref:t},c))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}h.displayName="MDXCreateElement"},96391:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2022-10-27-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-27-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-27-crypto.md",source:"@site/blog/2022-10-27-crypto.md",title:"Crypto Team Update",description:"High level overview",date:"2022-10-27T00:00:00.000Z",formattedDate:"October 27, 2022",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.095,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2022-10-27-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2022-08-12-sre"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-21-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"SECP built-ins",id:"secp-built-ins",level:3},{value:"KES agent",id:"kes-agent",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to\nmeeting the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-base/issues/315"},"acceptance criteria")," in cardano-base,\nwhich lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and\nwe are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution,\nbut also progressing on the implementation."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"secp-built-ins"},"SECP built-ins"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"(missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/313"},"PR 313")),(0,a.kt)("li",{parentName:"ul"},"CIP-0049 was addressed in the editors meeting, and ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/250"},"PR 250")," was merged"),(0,a.kt)("li",{parentName:"ul"},"The unit-tests ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/320"},"PR 320")," is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.")),(0,a.kt)("h3",{id:"kes-agent"},"KES agent"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them."),(0,a.kt)("li",{parentName:"ul"},"We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e38c8545.52bffd2c.js b/assets/js/e38c8545.52bffd2c.js new file mode 100644 index 00000000000..ef2f24f40e3 --- /dev/null +++ b/assets/js/e38c8545.52bffd2c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51092],{50047:a=>{a.exports=JSON.parse('{"label":"system-test","permalink":"/cardano-updates/tags/system-test","allTagsPath":"/cardano-updates/tags","count":5}')}}]); \ No newline at end of file diff --git a/assets/js/e3c3ef1c.61c2b7ed.js b/assets/js/e3c3ef1c.61c2b7ed.js new file mode 100644 index 00000000000..d05611f7ceb --- /dev/null +++ b/assets/js/e3c3ef1c.61c2b7ed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[9107],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>d});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),s=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),h=s(a),m=n,d=h["".concat(l,".").concat(m)]||h[m]||c[m]||o;return a?r.createElement(d,i(i({ref:t},u),{},{components:a})):r.createElement(d,i({ref:t},u))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[h]="string"==typeof e?e:n,i[1]=p;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},4394:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>p,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2022-11-04-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2022-11-04-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-04-hydra.md",source:"@site/blog/2022-11-04-hydra.md",title:"Hydra Team Update",description:"High level summary",date:"2022-11-04T00:00:00.000Z",formattedDate:"November 4, 2022",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.935,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2022-11-04-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-11-11-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-11-04-mithril"}},l={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],u={toc:s},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun ",(0,n.kt)("inlineCode",{parentName:"p"},"preview")," network, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},"0.8.0 release notes"),". They also completed implementation of ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/adr/18/"},"ADR18")," and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-poc/issues/195#issuecomment-1300503557"},"#195")," and alignment of the specification document with auditors."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete and merge ADR18 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/579"},"#579")),(0,n.kt)("li",{parentName:"ul"},"Re-deploy hydra scripts to respun ",(0,n.kt)("inlineCode",{parentName:"li"},"preview")," network, see ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0"},"0.8.0 release notes")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/595"},"#595")),(0,n.kt)("li",{parentName:"ul"},"Have first gap of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/452"},"#452")," in review."),(0,n.kt)("li",{parentName:"ul"},"Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot."),(0,n.kt)("li",{parentName:"ul"},"Engineering meeting to discuss hard forks and protocol parameter updates ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/195#issuecomment-1300503557"},"#195")),(0,n.kt)("li",{parentName:"ul"},"Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions."),(0,n.kt)("li",{parentName:"ul"},"Drafted project scope for an external audit RFP.")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement event-sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/issues/580"},"#580")),(0,n.kt)("li",{parentName:"ul"},"Answer the internal auditor","\u2019","s questions"),(0,n.kt)("li",{parentName:"ul"},"Have a draft RFP ready for a first review internally"),(0,n.kt)("li",{parentName:"ul"},"Close some gaps ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra-poc/pull/452"},"#452"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e406e44d.c4e96dd4.js b/assets/js/e406e44d.c4e96dd4.js new file mode 100644 index 00000000000..c121c9d6d6e --- /dev/null +++ b/assets/js/e406e44d.c4e96dd4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23531],{30099:a=>{a.exports=JSON.parse('{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing","allTagsPath":"/cardano-updates/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/e44a2883.8da70635.js b/assets/js/e44a2883.8da70635.js new file mode 100644 index 00000000000..0af1e59da00 --- /dev/null +++ b/assets/js/e44a2883.8da70635.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96755],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(n),m=a,f=d["".concat(s,".").concat(m)]||d[m]||p[m]||o;return n?r.createElement(f,l(l({ref:t},c),{},{components:n})):r.createElement(f,l({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=n[u];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},80740:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>p,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={sidebar_position:2},l="Translate your site",i={unversionedId:"tutorial-extras/translate-your-site",id:"tutorial-extras/translate-your-site",title:"Translate your site",description:"Let's translate docs/intro.md to French.",source:"@site/docs/tutorial-extras/translate-your-site.md",sourceDirName:"tutorial-extras",slug:"/tutorial-extras/translate-your-site",permalink:"/cardano-updates/docs/tutorial-extras/translate-your-site",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"defaultSidebar",previous:{title:"Manage Docs Versions",permalink:"/cardano-updates/docs/tutorial-extras/manage-docs-versions"}},s={},u=[{value:"Configure i18n",id:"configure-i18n",level:2},{value:"Translate a doc",id:"translate-a-doc",level:2},{value:"Start your localized site",id:"start-your-localized-site",level:2},{value:"Add a Locale Dropdown",id:"add-a-locale-dropdown",level:2},{value:"Build your localized site",id:"build-your-localized-site",level:2}],c={toc:u},d="wrapper";function p(e){let{components:t,...o}=e;return(0,a.kt)(d,(0,r.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"translate-your-site"},"Translate your site"),(0,a.kt)("p",null,"Let's translate ",(0,a.kt)("inlineCode",{parentName:"p"},"docs/intro.md")," to French."),(0,a.kt)("h2",{id:"configure-i18n"},"Configure i18n"),(0,a.kt)("p",null,"Modify ",(0,a.kt)("inlineCode",{parentName:"p"},"docusaurus.config.js")," to add support for the ",(0,a.kt)("inlineCode",{parentName:"p"},"fr")," locale:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="docusaurus.config.js"',title:'"docusaurus.config.js"'},"module.exports = {\n i18n: {\n defaultLocale: 'en',\n locales: ['en', 'fr'],\n },\n};\n")),(0,a.kt)("h2",{id:"translate-a-doc"},"Translate a doc"),(0,a.kt)("p",null,"Copy the ",(0,a.kt)("inlineCode",{parentName:"p"},"docs/intro.md")," file to the ",(0,a.kt)("inlineCode",{parentName:"p"},"i18n/fr")," folder:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/\n\ncp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md\n")),(0,a.kt)("p",null,"Translate ",(0,a.kt)("inlineCode",{parentName:"p"},"i18n/fr/docusaurus-plugin-content-docs/current/intro.md")," in French."),(0,a.kt)("h2",{id:"start-your-localized-site"},"Start your localized site"),(0,a.kt)("p",null,"Start your site on the French locale:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"npm run start -- --locale fr\n")),(0,a.kt)("p",null,"Your localized site is accessible at ",(0,a.kt)("a",{parentName:"p",href:"http://localhost:3000/fr/"},"http://localhost:3000/fr/")," and the ",(0,a.kt)("inlineCode",{parentName:"p"},"Getting Started")," page is translated."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"In development, you can only use one locale at a same time.")),(0,a.kt)("h2",{id:"add-a-locale-dropdown"},"Add a Locale Dropdown"),(0,a.kt)("p",null,"To navigate seamlessly across languages, add a locale dropdown."),(0,a.kt)("p",null,"Modify the ",(0,a.kt)("inlineCode",{parentName:"p"},"docusaurus.config.js")," file:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="docusaurus.config.js"',title:'"docusaurus.config.js"'},"module.exports = {\n themeConfig: {\n navbar: {\n items: [\n // highlight-start\n {\n type: 'localeDropdown',\n },\n // highlight-end\n ],\n },\n },\n};\n")),(0,a.kt)("p",null,"The locale dropdown now appears in your navbar:"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Locale Dropdown",src:n(4911).Z,width:"370",height:"302"})),(0,a.kt)("h2",{id:"build-your-localized-site"},"Build your localized site"),(0,a.kt)("p",null,"Build your site for a specific locale:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"npm run build -- --locale fr\n")),(0,a.kt)("p",null,"Or build your site to include all the locales at once:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"npm run build\n")))}p.isMDXComponent=!0},4911:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png"}}]); \ No newline at end of file diff --git a/assets/js/e4619b9c.0e5fd447.js b/assets/js/e4619b9c.0e5fd447.js new file mode 100644 index 00000000000..e1cd9c044f6 --- /dev/null +++ b/assets/js/e4619b9c.0e5fd447.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56482],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),u=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=u(r),m=a,h=d["".concat(p,".").concat(m)]||d[m]||c[m]||o;return r?n.createElement(h,i(i({ref:t},s),{},{components:r})):n.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},70761:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={title:"Developer Experience Update",slug:"2023-07-06-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-06-developer-experience",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-06-developer-experience.md",source:"@site/blog/2023-07-06-developer-experience.md",title:"Developer Experience Update",description:"High level summary",date:"2023-07-06T00:00:00.000Z",formattedDate:"July 6, 2023",tags:[{label:"devx",permalink:"/cardano-updates/tags/devx"}],readingTime:1.145,hasTruncateMarker:!1,authors:[{name:"Moritz Angermann",title:"Head of Developer Experience",url:"https://github.com/angerman",imageURL:"https://github.com/angerman.png",key:"angerman"}],frontMatter:{title:"Developer Experience Update",slug:"2023-07-06-developer-experience",authors:"angerman",tags:["devx"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-07-sre"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-07-04-db-sync"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"build support & maintainance",id:"build-support--maintainance",level:3},{value:"compiler upgrades",id:"compiler-upgrades",level:3},{value:"Hydra Tools",id:"hydra-tools",level:3},{value:"haskell.nix",id:"haskellnix",level:3},{value:"devx",id:"devx",level:3},{value:"upstream tooling",id:"upstream-tooling",level:3}],s={toc:u},d="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("h3",{id:"build-support--maintainance"},"build support & maintainance"),(0,a.kt)("p",null,"The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions."),(0,a.kt)("h3",{id:"compiler-upgrades"},"compiler upgrades"),(0,a.kt)("p",null,"Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests."),(0,a.kt)("h3",{id:"hydra-tools"},"Hydra Tools"),(0,a.kt)("p",null,"Our repository, ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra-tools"},"input-output-hk/actions"),", has seen quite some improvements to facility the hydra <-> github integration."),(0,a.kt)("h3",{id:"haskellnix"},"haskell.nix"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/haskell.nix"},"Haskell.nix")," has been maintained and updated with the addition of preliminary GHC 9.8 support."),(0,a.kt)("h3",{id:"devx"},"devx"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/devx"},"devx")," repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/actions"},"actions/devx")," GitHub Actions, we have a consistent set of tooling for"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"nix develop shells"),(0,a.kt)("li",{parentName:"ul"},"GitHub CodeSpaces integration"),(0,a.kt)("li",{parentName:"ul"},"VSCode DevContainer support"),(0,a.kt)("li",{parentName:"ul"},"GitHub Actions integration")),(0,a.kt)("h3",{id:"upstream-tooling"},"upstream tooling"),(0,a.kt)("p",null,"Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e4a61baa.347ef4cf.js b/assets/js/e4a61baa.347ef4cf.js new file mode 100644 index 00000000000..e49e99f1108 --- /dev/null +++ b/assets/js/e4a61baa.347ef4cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53121],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){l(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,a,l=function(e,t){if(null==e)return{};var r,a,l={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var p=a.createContext({}),i=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=i(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},s=a.forwardRef((function(e,t){var r=e.components,l=e.mdxType,n=e.originalType,p=e.parentName,d=u(e,["components","mdxType","originalType","parentName"]),c=i(r),s=l,h=c["".concat(p,".").concat(s)]||c[s]||m[s]||n;return r?a.createElement(h,o(o({ref:t},d),{},{components:r})):a.createElement(h,o({ref:t},d))}));function h(e,t){var r=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=r.length,o=new Array(n);o[0]=s;var u={};for(var p in t)hasOwnProperty.call(t,p)&&(u[p]=t[p]);u.originalType=e,u[c]="string"==typeof e?e:l,o[1]=u;for(var i=2;i<n;i++)o[i]=r[i];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}s.displayName="MDXCreateElement"},32288:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>i});var a=r(87462),l=(r(67294),r(3905));const n={title:"Ledger Team Update",slug:"2023-05-26-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,u={permalink:"/cardano-updates/2023-05-26-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-26-ledger.md",source:"@site/blog/2023-05-26-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-05-26T00:00:00.000Z",formattedDate:"May 26, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.565,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-05-26-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-26-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-26-network"}},p={authorsImageUrls:[void 0]},i=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway progress",id:"conway-progress",level:3},{value:"Improve testing",id:"improve-testing",level:3},{value:"Integration work",id:"integration-work",level:3},{value:"Technical debt",id:"technical-debt",level:3}],d={toc:i},c="wrapper";function m(e){let{components:t,...r}=e;return(0,l.kt)(c,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"The ledger team made progress on the conway ledger era. In particular, the design and implementation\nof the new certificates is near complete, we refactored some of our data structures\nto be able to support DReps, we cleaned up the serialization format, and renamed things to make\nclearer the differences with Shelley."),(0,l.kt)("p",null,"The team also completed integration work for the next node release, namely 8.1.0.\nAnd, as always, we continue to address technical debt."),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway-progress"},"Conway progress"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3408"},"pull-3408")," - Improve conway delegation certificates"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3428"},"pull-3428")," - Get rid of Constitutional in favor of Genesis and Committee"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3426"},"pull-3426")," - Add DRep to internal data struture (UMap)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3425"},"pull-3425")," - Improve witness logic needed for conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3423"},"pull-3423")," - Rename ShelleyDelegCerts constructors to distinguish them from Conway"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3421"},"pull-3421")," - Rename DCert -> TxCert"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3454"},"pull-3454")," - conway CDDL minor fixes")),(0,l.kt)("h3",{id:"improve-testing"},"Improve testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3403"},"pull-3403")," - Add Plutus script context golden tests")),(0,l.kt)("h3",{id:"integration-work"},"Integration work"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3410"},"pull-3410")," - Update chaps index"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3416"},"pull-3416")," - Bump cardano-ledger-alonzo-test version"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3414"},"pull-3414")," - Bump cardano-ledger-shelley-test minor version"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3420"},"pull-3420")," - Bump cardano-ledger-shelley-ma-test version"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3441"},"pull-3441")," - Release cardano-ledger-","[alonzo|babbage]","-1.2.1")),(0,l.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3409"},"pull-3409")," - Unit test - no such thing as a reference datum"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3407"},"pull-3407")," - Fixup release process documentation"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3404"},"pull-3404")," - Create TotalDeposits events during all eras"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3402"},"pull-3402")," - Fix broken references in the Shelley spec"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3424"},"pull-3424")," - Remove no longer used cardano-ledger-shelley-ma package"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3432"},"pull-3432")," - Add an example on how to bump up versions in the changelog "),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3440"},"pull-3440")," - Revert back to the group serialization for ProtVer for PParams ")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e54fb861.dc652803.js b/assets/js/e54fb861.dc652803.js new file mode 100644 index 00000000000..042890ebb9a --- /dev/null +++ b/assets/js/e54fb861.dc652803.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[89248],{35997:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/9","page":9,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/8","nextPage":"/cardano-updates/tags/hydra/page/10","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/e56a9a29.d1d0f3d4.js b/assets/js/e56a9a29.d1d0f3d4.js new file mode 100644 index 00000000000..3acb515cbbe --- /dev/null +++ b/assets/js/e56a9a29.d1d0f3d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43412],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>g});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),s=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},p=function(e){var n=s(e.components);return r.createElement(c.Provider,{value:n},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=s(t),d=a,g=m["".concat(c,".").concat(d)]||m[d]||u[d]||o;return t?r.createElement(g,i(i({ref:n},p),{},{components:t})):r.createElement(g,i({ref:n},p))}));function g(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=d;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=t[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,t)}d.displayName="MDXCreateElement"},43937:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=t(87462),a=(t(67294),t(3905));const o={title:"Performance & tracing update",slug:"2023-08-24-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-08-24-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-24-performance-and-tracing.md",source:"@site/blog/2023-08-24-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-08-24T00:00:00.000Z",formattedDate:"August 24, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.7,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-08-24-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-25-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-23-consensus"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],p={toc:s},m="wrapper";function u(e){let{components:n,...t}=e;return(0,a.kt)(m,(0,r.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: Benchmarking node version ",(0,a.kt)("inlineCode",{parentName:"li"},"8.2.1")," has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Our analysis pipeline has received improvements reducing memory footprint."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"We've performed and analysed the benchmarks for the ",(0,a.kt)("inlineCode",{parentName:"p"},"8.2.1")," version of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node")," as part of our release benchmarking cycle. "),(0,a.kt)("p",null,"Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held\nin memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The next portion of optimizations has been completed and merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", getting rid of Haskell's native ",(0,a.kt)("inlineCode",{parentName:"p"},"String")," representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),". "),(0,a.kt)("p",null,"The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster\nand porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e57d1f62.5be8a504.js b/assets/js/e57d1f62.5be8a504.js new file mode 100644 index 00000000000..bfbcd85d7ac --- /dev/null +++ b/assets/js/e57d1f62.5be8a504.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79362],{29042:a=>{a.exports=JSON.parse('{"label":"consensus","permalink":"/cardano-updates/tags/consensus","allTagsPath":"/cardano-updates/tags","count":32}')}}]); \ No newline at end of file diff --git a/assets/js/e5a8e689.c5c3df95.js b/assets/js/e5a8e689.c5c3df95.js new file mode 100644 index 00000000000..478e4b94476 --- /dev/null +++ b/assets/js/e5a8e689.c5c3df95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25946],{88019:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/16","page":16,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/15","nextPage":"/cardano-updates/page/17","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/e5b737ed.3fd1fabf.js b/assets/js/e5b737ed.3fd1fabf.js new file mode 100644 index 00000000000..12e04d9ac82 --- /dev/null +++ b/assets/js/e5b737ed.3fd1fabf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54750],{1879:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/system-test","page":1,"postsPerPage":5,"totalPages":1,"totalCount":5,"blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/e5dd9161.eed06922.js b/assets/js/e5dd9161.eed06922.js new file mode 100644 index 00000000000..b83dcfd7e77 --- /dev/null +++ b/assets/js/e5dd9161.eed06922.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[37329],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=p(a),m=n,c=s["".concat(u,".").concat(m)]||s[m]||d[m]||i;return a?r.createElement(c,o(o({ref:t},h),{},{components:a})):r.createElement(c,o({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},16036:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-02-24-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-24-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-24-hydra.md",source:"@site/blog/2023-02-24-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-24T00:00:00.000Z",formattedDate:"February 24, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.93,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-24-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-02-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-23-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team continue closing many gaps and aligning the\nimplementation with the specification. More over, they have groomed a plan to\nmake Hydra Mainnet compatible. Also, they continue moving forward with the\ninternal auditing and have published some auditing guidelines to receive\ncontributions from the community."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/452"},"#452")," (what is\nremaining in there)"),(0,n.kt)("li",{parentName:"ul"},"Aligned the Head protocol logic implementation with the specification"),(0,n.kt)("li",{parentName:"ul"},"Completed full minting policy implementation and spec\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/720"},"#720")),(0,n.kt)("li",{parentName:"ul"},"Clarified message authentication with researchers"),(0,n.kt)("li",{parentName:"ul"},"Groomed what is left to do for Mainnet compatibility\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713")," and drafted a\n0.10.0 version"),(0,n.kt)("li",{parentName:"ul"},"Added a tutorial by ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/perturbing/"},"@perturbing")," to the\nwebsite ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/docs/tutorial/"},"LINK")),(0,n.kt)("li",{parentName:"ul"},"Published auditing guidelines\n",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/audit-guidelines"},"LINK")),(0,n.kt)("li",{parentName:"ul"},"Made hydra-node work for macos\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/746"},"#746")," and added support\nfor building on aarch64\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/673"},"#673")),(0,n.kt)("li",{parentName:"ul"},"Met with a potential customer of Hydra for Payments")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Have the monthly review meeting incl. the report"),(0,n.kt)("li",{parentName:"ul"},"Have smoke tests fixed and running regularly"),(0,n.kt)("li",{parentName:"ul"},"Release 0.9.0 with updated scripts"),(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs for specification")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e6402687.8934f415.js b/assets/js/e6402687.8934f415.js new file mode 100644 index 00000000000..08519d5dd28 --- /dev/null +++ b/assets/js/e6402687.8934f415.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93524],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(n),m=o,h=c["".concat(l,".").concat(m)]||c[m]||d[m]||r;return n?a.createElement(h,i(i({ref:t},u),{},{components:n})):a.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<r;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},26879:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={title:"Network Team Update",slug:"2022-11-28-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-11-28-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-28-network.md",source:"@site/blog/2022-11-28-network.md",title:"Network Team Update",description:"Stake-Driven Data Diffusion Release for Relays",date:"2022-11-28T00:00:00.000Z",formattedDate:"November 28, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"},{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:3.675,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-11-28-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-30-performance-and-tracing"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2022-11-25-crypto"}},l={authorsImageUrls:[void 0]},p=[{value:"Stake-Driven Data Diffusion Release for Relays",id:"stake-driven-data-diffusion-release-for-relays",level:2},{value:"Peer Sharing",id:"peer-sharing",level:3},{value:"DeltaQ",id:"deltaq",level:3},{value:"What have we achieve last sprint",id:"what-have-we-achieve-last-sprint",level:2},{value:"DeltaQ",id:"deltaq-1",level:3}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"stake-driven-data-diffusion-release-for-relays"},"Stake-Driven Data Diffusion Release for Relays"),(0,o.kt)("p",null,"IOG networking team decided to release the ",(0,o.kt)("em",{parentName:"p"},"Stake-Driven Data Diffusion with\nRobust Optimised Peer Selection")," also more commonly known as ",(0,o.kt)("em",{parentName:"p"},"P2P"),". In the\nlast update, we informed about a performance regression, but it turns out it\nonly affects block producers, and thus we highly advise against running it on\nsuch nodes. Further investigation is required to find the cause of it."),(0,o.kt)("p",null,"On IOG's benchmarking cluster we have seen quite a good performance improvement\non block propagation itself. The cluster is running a static topology with\nvalency 6 (each node is connected to 6 other nodes). In which every of the 50\nnodes are block producers. The setup of this network is the same as mainnet.\nWe've seen 40-50% performance improvement on block propagation comparing to the\nsame cluster deployed with the same topology but using non-P2P nodes. We think\nthis performance improvement is caused by using full duplex connections. Quite\nlikely the transaction traffic floating in both directions on the same TCP\nconnection helps to keep the TCP window open. Note that in a cluster of 50\nnodes with valency 6 the probability of having at least one duplex connection\nis more than 50%. We don't expect the same improvement on mainnet because the\nnetwork is much wider and the transaction traffic is not as large."),(0,o.kt)("p",null,"Just before the release we squashed two small bugs:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4163"},"issue #4163")," - top level integration bug in ",(0,o.kt)("inlineCode",{parentName:"li"},"keep-alive"),";"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177")," - a bug in ",(0,o.kt)("inlineCode",{parentName:"li"},"outbound-governor"),";"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4165"},"PR #4165")," - a fix ",(0,o.kt)("inlineCode",{parentName:"li"},"cardano-ping")," support of ",(0,o.kt)("inlineCode",{parentName:"li"},"NodeToNodeV_10"),".")),(0,o.kt)("h3",{id:"peer-sharing"},"Peer Sharing"),(0,o.kt)("p",null,"We were carrying a review of ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"peer sharing PR"),"."),(0,o.kt)("h3",{id:"deltaq"},"DeltaQ"),(0,o.kt)("p",null,"Neil Davies was invited to give a guest lecture entitled ",(0,o.kt)("inlineCode",{parentName:"p"},"Avoiding System Catastrophes")," at ",(0,o.kt)("a",{parentName:"p",href:"https://uclouvain.be/en/index.html"},"UCLouvain"),"."),(0,o.kt)("h2",{id:"what-have-we-achieve-last-sprint"},"What have we achieve last sprint"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4163"},"issue #4163"),": we found out that a control message is not passed to the\n",(0,o.kt)("inlineCode",{parentName:"p"},"keep-alive")," mini-protocol, this results in every demotion executing demotion\ntimeout rather than a graceful termination. With the fix the node will no longer log:"),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{ "kind": "PeerStatusChangeFailure"\n, "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"\n, "reason": "TimeoutError"\n}\n'))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4177"},"issue #4177"),": we fixed an assertion failure in the ",(0,o.kt)("inlineCode",{parentName:"p"},"outbound-governor"),"; now\nwe don't try demoted peers which are being demoted already.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4155"},"PR #4155"),": we refactored ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," packages. There's a top level\n",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-diffusion")," package which integrates ",(0,o.kt)("inlineCode",{parentName:"p"},"network"),"\n& ",(0,o.kt)("inlineCode",{parentName:"p"},"consensus")," code. We also introduced:"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ouroboros-network-api")," package which contains the API shared between\n",(0,o.kt)("inlineCode",{parentName:"li"},"network")," & ",(0,o.kt)("inlineCode",{parentName:"li"},"conensus"),";"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ouroboros-network-mock")," package which contains mock API used for testing\n(e.g. a mock chain & chain producer, etc.)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ouroboros-network-protocols")," package which contains implementation of all\n(but ",(0,o.kt)("inlineCode",{parentName:"li"},"handshake"),") mini-protocols, exposes a ",(0,o.kt)("inlineCode",{parentName:"li"},"testlib")," and contains ",(0,o.kt)("inlineCode",{parentName:"li"},"test"),"\nand ",(0,o.kt)("inlineCode",{parentName:"li"},"cddl")," components.")),(0,o.kt)("p",{parentName:"li"},"This made the dependency tree of ",(0,o.kt)("inlineCode",{parentName:"p"},"network")," & ",(0,o.kt)("inlineCode",{parentName:"p"},"consensus")," packages much\ncleaner.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4169"},"PR #4169"),": we described the usage of release branches in ",(0,o.kt)("inlineCode",{parentName:"p"},"CONTRIBUTING.md"),"\ndoc.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4165"},"PR #4165"),": we fixed ",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-ping")," support of ",(0,o.kt)("inlineCode",{parentName:"p"},"NodeToNodeV_10")," protocol."))),(0,o.kt)("h3",{id:"deltaq-1"},"DeltaQ"),(0,o.kt)("p",null,"The abstract of the talk:"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"An essential step to ensuring that distributed systems are fit for\npurpose."),(0,o.kt)("p",{parentName:"blockquote"},"Distributed systems have become an integral part of our society and\ndaily lives. We are, both implicitly and explicitly, individually as well as\ncollectively, placing ever more trust in them."),(0,o.kt)("p",{parentName:"blockquote"},"Are they worthy of this trust? Our need for them to be \u2018fit-for-purpose\u2019 goes\nwell beyond notions of functional correctness (i.e. never getting the wrong\nanswer). We need them to deliver the desired outcomes in a timely, robust,\nreliable, resilient fashion, at scale and in a sustainable way (both\neconomically and environmentally)."),(0,o.kt)("p",{parentName:"blockquote"},"This all sounds like a worthy aspiration, but what would be a practical\napproach to capturing and reasoning about these issues? How can we ensure that\nsystems can meet their fit-for-purpose objectives, not just in their design but\nas they are deployed, encounter the imperfect world, are scaled to become\neconomic, and proceed into ongoing maintenance?"),(0,o.kt)("p",{parentName:"blockquote"},"This talk will illustrate how the notions of Outcomes and Quality Attenuation\n(as captured by \u2018\u2206Q\u2019) are being used to both frame the necessary notions and\nprovide a basis for assuring the refinement and reification of such systems,\nfrom initial concept to operational infrastructure.")),(0,o.kt)("p",null,"You can download the slides from ",(0,o.kt)("a",{target:"_blank",href:n(98946).Z},"here"),"."))}d.isMDXComponent=!0},98946:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/files/2022-11-24-UCL-60c46564c5dee25b0060304c060ab1cf.pdf"}}]); \ No newline at end of file diff --git a/assets/js/e695f231.2dfaf583.js b/assets/js/e695f231.2dfaf583.js new file mode 100644 index 00000000000..e82ab60a8be --- /dev/null +++ b/assets/js/e695f231.2dfaf583.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26540],{9562:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/performance-tracing/page/3","page":3,"postsPerPage":5,"totalPages":5,"totalCount":25,"previousPage":"/cardano-updates/tags/performance-tracing/page/2","nextPage":"/cardano-updates/tags/performance-tracing/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/e6ea9b03.a0904c0a.js b/assets/js/e6ea9b03.a0904c0a.js new file mode 100644 index 00000000000..866541ecb82 --- /dev/null +++ b/assets/js/e6ea9b03.a0904c0a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[88869],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=p(r),d=n,h=s["".concat(u,".").concat(d)]||s[d]||m[d]||i;return r?a.createElement(h,o(o({ref:t},c),{},{components:r})):a.createElement(h,o({ref:t},c))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},53187:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-03-31-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-03-31-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-31-crypto.md",source:"@site/blog/2023-03-31-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-03-31T00:00:00.000Z",formattedDate:"March 31, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.105,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-03-31-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-05-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-31-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3},{value:"MuSig2",id:"musig2",level:3}],c={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: Started looking into full-node verifier"),(0,n.kt)("li",{parentName:"ul"},"cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties."),(0,n.kt)("li",{parentName:"ul"},"KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent. "),(0,n.kt)("li",{parentName:"ul"},"Sidechains: Included BLS12-381 & JubJub to halo2curves"),(0,n.kt)("li",{parentName:"ul"},"MuSig2: Final modifs to C version.")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started designing how a full-node verifier would work. Issue comming in the next couple of weeks. ")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"BLS12-381 branch merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"),". "),(0,n.kt)("li",{parentName:"ul"},"Testing strategy for BLS bindings:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Test-vectors for Groth16, and simple BLS signatures ready."),(0,n.kt)("li",{parentName:"ul"},"Test-vectors with different library, and created by different engineer. ")))),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Resolved issues of circular dependency"),(0,n.kt)("li",{parentName:"ul"},"Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same. "),(0,n.kt)("li",{parentName:"ul"},"Opened a PR for raw bearer branch in ouroboros network ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395"},"PR4395")),(0,n.kt)("li",{parentName:"ul"},"Resolved a bug where the agent node did not properly closed connections"),(0,n.kt)("li",{parentName:"ul"},"Updated version of ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/io-sim/pull/70"},"IOSim")," allowed us to finish a first version of KES agent.")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Included ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/iquerejeta/halo2curves/commit/1ccf987b772dcfaa3c1e3439a4a28f23fcf07c7a"},"BLS12-381")," curve to our branch of halo2curves"),(0,n.kt)("li",{parentName:"ul"},"Included ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/iquerejeta/halo2curves/commit/3f20edb2ed112733a0a0986b0a0386c1b9bc439f"},"JubJub")," to our branch of halo2curves ")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Minor reorg ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/42"},"PR#42")),(0,n.kt)("li",{parentName:"ul"},"Started including fuzz testing for deserialisation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/musig2/pull/43"},"PR#"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e70f68c6.0a94e2cb.js b/assets/js/e70f68c6.0a94e2cb.js new file mode 100644 index 00000000000..12066840dbf --- /dev/null +++ b/assets/js/e70f68c6.0a94e2cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[72815],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=c(r),u=n,f=d["".concat(p,".").concat(u)]||d[u]||m[u]||o;return r?a.createElement(f,l(l({ref:t},s),{},{components:r})):a.createElement(f,l({ref:t},s))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var c=2;c<o;c++)l[c]=r[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}u.displayName="MDXCreateElement"},80684:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-03-16-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-03-16-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-16-goedel.md",source:"@site/blog/2023-03-16-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-03-16T00:00:00.000Z",formattedDate:"March 16, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.55,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-03-16-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-17-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-03-10-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},d="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team has been working on drafts of two papers\nimproving the deltaQ tutorial, consulting on performance design, and\nthe final version of the Djed paper."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Preparing draft of DeltaQSD algebra paper for ICE 2023")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Successful outcome of Marlowe consultancy leading to substantial\nimprovement in performance")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Preparing sections on the communication language and bisimulation\nproofs for draft paper about verifying design refinements for\ndistributed system design")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Camera ready version of Djed paper under preparation"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e716e5b6.99afaa36.js b/assets/js/e716e5b6.99afaa36.js new file mode 100644 index 00000000000..5e4b5fe50ef --- /dev/null +++ b/assets/js/e716e5b6.99afaa36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[94379],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=s(n),d=r,h=c["".concat(p,".").concat(d)]||c[d]||m[d]||o;return n?a.createElement(h,i(i({ref:t},u),{},{components:n})):a.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var s=2;s<o;s++)i[s]=n[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},13179:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const o={title:"SRE Q3 2023 Update",slug:"2023-Q3-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2023-Q3-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q3-sre.md",source:"@site/quarterly/2023-Q3-sre.md",title:"SRE Q3 2023 Update",description:"2023-07 - 2023-09",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"sre",permalink:"/cardano-updates/quarterly/tags/sre"}],readingTime:.905,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Q3 2023 Update",slug:"2023-Q3-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Q3 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q3-performance-and-tracing"},nextItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2023-04-25-consensus"}},p={authorsImageUrls:[void 0]},s=[{value:"2023-07 - 2023-09",id:"2023-07---2023-09",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"Next steps",id:"next-steps",level:3}],u={toc:s},c="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-07---2023-09"},"2023-07 - 2023-09"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("p",null,"In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completion of mainnet relay networking conversion to p2p topology"),(0,r.kt)("li",{parentName:"ul"},"Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality"),(0,r.kt)("li",{parentName:"ul"},"Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines"),(0,r.kt)("li",{parentName:"ul"},"Creation of a nix content addressed packages repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs"},"capkgs"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a cardano performance benchmarking cluster, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-perf"},"cardano-perf"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"To replace legacy cluster benchmark tooling"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a cardano cluster composition repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts"},"cardano-parts"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"For enabling multi-cluster, multi-role cardano network deployments"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a cardano testnets repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Utilizing cardano-parts for testnet deployments"))),(0,r.kt)("li",{parentName:"ul"},"Creation of a sanchonet demo repository, ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo"},"sanchonet-demo"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Utilizing cardano-parts for fast sanchonet test environment and demo purposes")))),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Continue with migration of cardano-world testnets to cardano-playground"),(0,r.kt)("li",{parentName:"ul"},"Proceed with spinup of mainnet p2p bootstrap cluster"),(0,r.kt)("li",{parentName:"ul"},"Scale down mainnet non-p2p legacy cluster at the appropriate time")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e7486169.d066da59.js b/assets/js/e7486169.d066da59.js new file mode 100644 index 00000000000..66e64180ecc --- /dev/null +++ b/assets/js/e7486169.d066da59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45237],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(n),c=a,h=m["".concat(s,".").concat(c)]||m[c]||d[c]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}c.displayName="MDXCreateElement"},74349:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const o={title:"Network Team Update",slug:"2022-11-09-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/quarterly/2022-11-09-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2022-11-09-network.md",source:"@site/quarterly/2022-11-09-network.md",title:"Network Team Update",description:"Network Quarterly Update",date:"2022-11-09T00:00:00.000Z",formattedDate:"November 9, 2022",tags:[{label:"network",permalink:"/cardano-updates/quarterly/tags/network"}],readingTime:3.87,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-11-09-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Consensus Quarterly Update",permalink:"/cardano-updates/quarterly/2022-11-15-consensus"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/quarterly/2022-11-07-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"Network Quarterly Update",id:"network-quarterly-update",level:2},{value:"2022-09 - 2022-11",id:"2022-09---2022-11",level:2},{value:"Summary of most important improvements",id:"summary-of-most-important-improvements",level:3},{value:"Detailed log",id:"detailed-log",level:3},{value:"Next quarter",id:"next-quarter",level:2}],u={toc:p},m="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"network-quarterly-update"},"Network Quarterly Update"),(0,a.kt)("h2",{id:"2022-09---2022-11"},"2022-09 - 2022-11"),(0,a.kt)("h3",{id:"summary-of-most-important-improvements"},"Summary of most important improvements"),(0,a.kt)("p",null,"During this quarter the networking team delivered low level specification of\npeer sharing & eclipse evasion. We held a session with the consensus & the\nscientists; we got a positive feedback on the design."),(0,a.kt)("p",null,"Further we focused on implementation of peer sharing. We produced a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/wiki/Peer-Sharing-Implementation-Plan"},"detail\ndesign")," and an ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"early implementation"),"."),(0,a.kt)("p",null,"We prepared the ",(0,a.kt)("em",{parentName:"p"},"P2P Single Relay Release")," (",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node-1.35.5"),"). It\nincludes over ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4120"},"130 patches")," of network stack improvements over the\nprevious version ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.4"),", which were accomplished over a longer period of\ntime. Among them are both bug fixes and UX improvements for stake pool\noperators like simplified format of the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4563"},"topology file"),", or\nimprovements in the logged messages:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4015"},"tracing of early consensus exceptions")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4127"},"tracing of demotion of local root peers")," (traced with\n",(0,a.kt)("inlineCode",{parentName:"li"},"Warning")," severity), the trace is called ",(0,a.kt)("inlineCode",{parentName:"li"},"TraceDemoteLocalAsynchronous"),", in\n",(0,a.kt)("inlineCode",{parentName:"li"},"json")," format it is encoded as ",(0,a.kt)("inlineCode",{parentName:"li"},"DemoteLocalAsynchronous"),". For an SPO\ntracking these demotion is vital (such demotion could indicate that a block\nproducer is no longer connected to its relays or vice versa)")),(0,a.kt)("p",null,"We also provide better integration with ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3979"},"systemd")," (socket\nactivation improvements) or improvements in the networking stack:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3785"},"exit policies"),","),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3915"},"peer metrics improvements"),","),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4106"},"DNS TTL")," improvements (which make it harder to misconfigure the\nsystem, an issue discovered by the performance & monitoring team),"),(0,a.kt)("li",{parentName:"ul"},"do not trigger inbound idle timeout for ",(0,a.kt)("inlineCode",{parentName:"li"},"node-to-client")," connections (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/3844"},"pr\n#3844"),"), an issue reported to us by Matthias Benkort from\nCardano Foundation.")),(0,a.kt)("p",null,"Duncan has been making progress with the input endorsers demo. His simulation\nprovides a useful animated visualisation and live quantification of behaviour\nof the modeled design."),(0,a.kt)("p",null,"We also improved our e2e diffusion simulation by implementing header-body\nsplit, similar to what the real implementation does."),(0,a.kt)("p",null,"We also made some advances towards our future goals of P2P release for block\nproducer nodes (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/3800"},"pr #3800")," - in review) & for Daedalus users\n(",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3968"},"pr #3690")," - merged)."),(0,a.kt)("h3",{id:"detailed-log"},"Detailed log"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We expanded diffusion simulation with block-fetch protocol bringing it closer\nto the production system.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We addressed some additional technical depth in diffusion simulation")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We slightly improved documentation & CI of io-sim and typed-protocols\nrepositories for open-source contributors.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We closed a number of issues towards publishing io-sim on Hackage (only two\nessential issues are left open).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We pushed a branch of typed-protocols which captures one of the developer UX\nproblems in the API which we need to solve.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified and fixed an issue related to systemd sockets.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified and fixed an issue in consensus initialisation not giving\nfeedback on early errors.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We deployed RT View, identified a number of issues which were communicated to\nthe performance & monitoring team.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We finished high level & detailed design of peer sharing, very early\nimplementation of peer sharing is done (note that peer sharing cannot be\nsafely deployed without eclipse evasion & genesis).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We finished high level design of eclipse evasion, and started working on\na detailed design.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We were assigned the role of release engineer for 1.35.5 release (the P2P\nsingle relay release); we prepared a cardano-node for 1.35.5 release which\ncontains more than 130 patches of just network stack improvements done over\nlast few months.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We diagnosed and fixed an tricky bug in the peer state actions (a component\nwhich sits between outbound governor and connection manager). That bug was\nintroduced earlier this year and never released. It was caught by the QA\ntesting framework. We expanded our diffusion simulation to cover such case and\nalso mitigated a chance for reintroducing such a bug in future.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We identified and quite likely mitigated a misconfiguration in the\nbenchmarking cluster (next benchmarking run will confirm our hypothesis).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We simplified the format of p2p topology file, we got positive feedback from\nSPOs.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We raised severities of some of the logging messages, which is an important\nimprovement for SPOs, exchanges and other users of the system.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"We worked on input endorsers simulation which gives both animated and\nquantified live feedback on network operation, using a simplified model of\na TCP/IP network. "))),(0,a.kt)("h2",{id:"next-quarter"},"Next quarter"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Release the Single Relay P2P Release ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.5"),".")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Carry on with Peer Sharing (review, testing).")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Deliver a talk at ",(0,a.kt)("a",{parentName:"p",href:"https://sites.uclouvain.be/OPODIS2022/"},"Conference on Principles of Distributed Systems 2022")," in Brussels, Belgium.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Present Detailed Design of Eclipse Evasion and start implementation phase.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Work on P2P Block Producer release.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Carry on with publishing of ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim")," on ",(0,a.kt)("inlineCode",{parentName:"p"},"Hackage"),"."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e7a72da0.d7b2d45e.js b/assets/js/e7a72da0.d7b2d45e.js new file mode 100644 index 00000000000..935e4e5581a --- /dev/null +++ b/assets/js/e7a72da0.d7b2d45e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46846],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>h});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),c=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return r.createElement(s.Provider,{value:n},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(t),u=a,h=p["".concat(s,".").concat(u)]||p[u]||m[u]||i;return t?r.createElement(h,o(o({ref:n},d),{},{components:t})):r.createElement(h,o({ref:n},d))}));function h(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=u;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=t[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}u.displayName="MDXCreateElement"},66876:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=t(87462),a=(t(67294),t(3905));const i={title:"Performance & tracing update",slug:"2023-04-19-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-04-19-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-19-performance-and-tracing.md",source:"@site/blog/2023-04-19-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.",date:"2023-04-19T00:00:00.000Z",formattedDate:"April 19, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.575,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-04-19-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-19-consensus"},nextItem:{title:"Incident Report",permalink:"/cardano-updates/2023-04-17-ledger"}},s={authorsImageUrls:[void 0]},c=[{value:"Detailed manifest",id:"detailed-manifest",level:3},{value:"GHC profiling inside workbench",id:"ghc-profiling-inside-workbench",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],d={toc:c},p="wrapper";function m(e){let{components:n,...t}=e;return(0,a.kt)(p,(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We performed a series of benchmarks aimed at the new ",(0,a.kt)("inlineCode",{parentName:"li"},"8.0")," release branch and built a timeline from the ",(0,a.kt)("inlineCode",{parentName:"li"},"1.35")," releases to that branch."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.")),(0,a.kt)("h1",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"We have performed various cluster runs targeting the ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0")," release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile ",(0,a.kt)("inlineCode",{parentName:"p"},"epoch-transition")," for local reproduction of what we observed on the benchmarking cluster. "),(0,a.kt)("p",null,"Furthermore, we bridged the gap between the run data from the ",(0,a.kt)("inlineCode",{parentName:"p"},"1.35.x")," releases to the the new ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0.x")," release branch. This included walking the\n",(0,a.kt)("inlineCode",{parentName:"p"},"master")," branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial\nin locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of\nbenchmarks."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still\nongoing. "),(0,a.kt)("p",null,"In coordination with Galois, who are developing a system assurance service by observing a number of ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),"s, we're working with the implementation\nof data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational\nburden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," could be extended with a richer\nfeature set to that end."),(0,a.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,a.kt)("h3",{id:"detailed-manifest"},"Detailed manifest"),(0,a.kt)("p",null,"A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with.\nThese dependencies come from different package sources, have different versioning policies, and an identical package version might provide different\nperformance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated\nby making all component bumps visible and accessible."),(0,a.kt)("h3",{id:"ghc-profiling-inside-workbench"},"GHC profiling inside workbench"),(0,a.kt)("p",null,"The workbench has been equipped with a new ",(0,a.kt)("inlineCode",{parentName:"p"},"-profnix")," profile flavour. This enforces a ",(0,a.kt)("inlineCode",{parentName:"p"},"-fprof-auto")," build for all node-related packages. The type of\nprofiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already\nbeen merged to ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances.\nThis results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e80f56fd.6510f040.js b/assets/js/e80f56fd.6510f040.js new file mode 100644 index 00000000000..b1d4165e4f2 --- /dev/null +++ b/assets/js/e80f56fd.6510f040.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73336],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),s=u(a),m=n,h=s["".concat(p,".").concat(m)]||s[m]||c[m]||o;return a?r.createElement(h,i(i({ref:t},d),{},{components:a})):r.createElement(h,i({ref:t},d))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},78673:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-04-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-04-14-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-14-hydra.md",source:"@site/blog/2023-04-14-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-04-14T00:00:00.000Z",formattedDate:"April 14, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.98,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-04-14-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-04-14-goedel"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-07-hydra"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team focused on improving the smoke test, fixing developer\ntooling, and improving the API for voting use cases. They reviewed progress on\nauction, payments, and voting projects and made worked on reproducing a bug with\nhandling rollbacks. Moving forward, the team plans to update dependencies,\nimplement a dirt road fix for the rollbacks bug, and explore adding Hydra\nsupport to kupo."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Reviewed progress on auction, payments and voting projects"),(0,n.kt)("li",{parentName:"ul"},"Improved smoke tests so they can run on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Fixed a regression in the development environment and updated cardano-node\nused in tests"),(0,n.kt)("li",{parentName:"ul"},"Improved API with more configurability to unblock voting use case",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Exclude utxo in ",(0,n.kt)("inlineCode",{parentName:"li"},"SnapshotConfirmed")," outputs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/808"},"#808")),(0,n.kt)("li",{parentName:"ul"},"Addressed a user request by only sending ",(0,n.kt)("inlineCode",{parentName:"li"},"Greetings")," once ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/813"},"#813")))),(0,n.kt)("li",{parentName:"ul"},"Reproduced the rollback bug by improving our model-based test suite ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update dependencies to match ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-node")," master"),(0,n.kt)("li",{parentName:"ul"},"Dirt road fix for rollbacks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/784"},"#784")),(0,n.kt)("li",{parentName:"ul"},"Update Hydraw to maintain state locally"),(0,n.kt)("li",{parentName:"ul"},"Explore adding Hydra support to kupo"),(0,n.kt)("li",{parentName:"ul"},"Put disclaimer texts and closing mainnet compatibility feature ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e84709f6.bffbbe4e.js b/assets/js/e84709f6.bffbbe4e.js new file mode 100644 index 00000000000..d4944d0c6f7 --- /dev/null +++ b/assets/js/e84709f6.bffbbe4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46033],{90005:a=>{a.exports=JSON.parse('{"label":"hydra","permalink":"/cardano-updates/tags/hydra","allTagsPath":"/cardano-updates/tags","count":55}')}}]); \ No newline at end of file diff --git a/assets/js/e86dcd26.125084b6.js b/assets/js/e86dcd26.125084b6.js new file mode 100644 index 00000000000..f9b2be5eecf --- /dev/null +++ b/assets/js/e86dcd26.125084b6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[162],{12200:a=>{a.exports=JSON.parse('{"label":"performance-tracing","permalink":"/cardano-updates/tags/performance-tracing","allTagsPath":"/cardano-updates/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/e8d4d6c0.20140c19.js b/assets/js/e8d4d6c0.20140c19.js new file mode 100644 index 00000000000..14ec7045b5a --- /dev/null +++ b/assets/js/e8d4d6c0.20140c19.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[52818],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=o,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(h,i(i({ref:t},c),{},{components:n})):r.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:o,i[1]=l;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},32340:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(87462),o=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2023-02-17-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-17-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-network.md",source:"@site/blog/2023-02-17-network.md",title:"Network Team Update",description:"High level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.865,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-02-17-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-17-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-10-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"Recently QA found a bug in P2P code, which results in busy loops. We added one\nfix to ",(0,o.kt)("inlineCode",{parentName:"p"},"1.35.6")," release, another one will likely be part of next release. The\nfirst one is already included in ",(0,o.kt)("inlineCode",{parentName:"p"},"ouroboros-network-0.3.0.1")," release. These\nbugs could only affect nodes which are out of sync and thus should not impose\nrisk on well maintained nodes on mainnet. We also advertise to deploy at most\none of the relays as a P2P node, which shields from possible consequences."),(0,o.kt)("p",null,"We recently finished design phase of eclipse evasion and we started\nimplementing it (see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?pane=issue&itemId=19819205"},"issue #3886")," for progress)."),(0,o.kt)("p",null,"Galois finished implementing Handshake extension which will allow to query\nnetwork protocol versions (see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"pr #4256"),")."),(0,o.kt)("p",null,"We also recently released a newer set of network packages to be integrated with\n",(0,o.kt)("inlineCode",{parentName:"p"},"cardano-node")," ",(0,o.kt)("inlineCode",{parentName:"p"},"master")," branch, this includes:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"* monoidal-synchronisation-0.1.0.2\n* cardano-client-0.1.0.2\n* network-mux-0.3.0.0\n* ouroboros-network-api-0.1.0.0\n* ouroboros-network-protocols-0.2.0.0\n* ouroboros-network-testing-0.2.0.1\n* ouroboros-network-mock-0.1.0.0\n* ouroboros-network-framework-0.3.0.0\n* ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included\n in `0.3.0.1`)\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e8f5afda.eb7f2404.js b/assets/js/e8f5afda.eb7f2404.js new file mode 100644 index 00000000000..021adc17773 --- /dev/null +++ b/assets/js/e8f5afda.eb7f2404.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25540],{8990:a=>{a.exports=JSON.parse('{"label":"ledger","permalink":"/cardano-updates/tags/ledger","allTagsPath":"/cardano-updates/tags","count":30}')}}]); \ No newline at end of file diff --git a/assets/js/e90b2ff0.7fbed957.js b/assets/js/e90b2ff0.7fbed957.js new file mode 100644 index 00000000000..bb6f98ef823 --- /dev/null +++ b/assets/js/e90b2ff0.7fbed957.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[96840],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function l(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?n(Object(i),!0).forEach((function(t){r(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function o(e,t){if(null==e)return{};var i,a,r=function(e,t){if(null==e)return{};var i,a,r={},n=Object.keys(e);for(a=0;a<n.length;a++)i=n[a],t.indexOf(i)>=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)i=n[a],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var p=a.createContext({}),u=function(e){var t=a.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,n=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),h=u(i),d=r,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return i?a.createElement(c,l(l({ref:t},s),{},{components:i})):a.createElement(c,l({ref:t},s))}));function c(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=i.length,l=new Array(n);l[0]=d;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[h]="string"==typeof e?e:r,l[1]=o;for(var u=2;u<n;u++)l[u]=i[u];return a.createElement.apply(null,l)}return a.createElement.apply(null,i)}d.displayName="MDXCreateElement"},99480:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>n,metadata:()=>o,toc:()=>u});var a=i(87462),r=(i(67294),i(3905));const n={title:"Mithril Team Update",slug:"2023-07-13-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-07-13-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-13-mithril.md",source:"@site/blog/2023-07-13-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-07-13T00:00:00.000Z",formattedDate:"July 13, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.92,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-07-13-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-14-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-07-12-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(h,(0,a.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,r.kt)("p",null,"The Mithril team created a new ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2327.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2327.0"))," distribution. They focused on preparing the beta launch on the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet"),": they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet")," infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library. "),(0,r.kt)("p",null,"Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs."),(0,r.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Released the new distribution ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2327.0"},(0,r.kt)("inlineCode",{parentName:"a"},"2327.0"))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add infrastructure monitoring")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/987"},"#987")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Deploy 'mainnet' infrastructure")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/988"},"#988")),(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Handle Secrets management")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/989"},"#989")))),(0,r.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,r.kt)("inlineCode",{parentName:"li"},"Benchmark performances of Mithril Aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/904"},"#904"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Design & implement basic stress test tool for aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/991"},"#991")))),(0,r.kt)("li",{parentName:"ul"},"Worked on optimizations:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Remove certificate hash from Artifact")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/932"},"#932")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Check vulnerabilities in CI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1037"},"#1037")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add 'created_at' in Mithril Stake Distribution messages")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1030"},"#1030")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add a 'run-only' option in end to end test")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1048"},"#1048")))),(0,r.kt)("li",{parentName:"ul"},"Worked on refactoring:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Factorize protocol crypto operations")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/669"},"#669")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Refactor aggregator dependency injection and services")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1058"},"#1058")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Build static binaries in CI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/874"},"#874")))),(0,r.kt)("li",{parentName:"ul"},"Worked on documentation:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Prepare SPO on-boarding guide")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1049"},"#1049")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Add instructions to set firewall using iptables")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1040"},"#1040")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Update ufw command to set firewall on Mithril Signer installation instructions")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1041"},"#1041")))),(0,r.kt)("li",{parentName:"ul"},"Worked on bugs:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Aggregator does not detect certificate chain epoch gap")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/952"},"#952")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"'testing-preview' network does not create certificates")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1015"},"#1015")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"SQLite compatibility in aggregator")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/837"},"#837")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"Q&A followup fixes")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1035"},"#1035")),(0,r.kt)("li",{parentName:"ul"},"Completed the issue ",(0,r.kt)("inlineCode",{parentName:"li"},"E2E tests are flaky in CI")," ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1023"},"#1023"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e9310706.e46f5ee8.js b/assets/js/e9310706.e46f5ee8.js new file mode 100644 index 00000000000..1e8286021d4 --- /dev/null +++ b/assets/js/e9310706.e46f5ee8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[43363],{90133:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/performance-tracing/page/2","page":2,"postsPerPage":5,"totalPages":5,"totalCount":25,"previousPage":"/cardano-updates/tags/performance-tracing","nextPage":"/cardano-updates/tags/performance-tracing/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ea2603ff.ae5b22eb.js b/assets/js/ea2603ff.ae5b22eb.js new file mode 100644 index 00000000000..89eb936cebe --- /dev/null +++ b/assets/js/ea2603ff.ae5b22eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86326],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){l(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,l=function(e,t){if(null==e)return{};var a,r,l={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var o=r.createContext({}),u=function(e){var t=r.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(o.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,o=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=u(a),h=l,c=d["".concat(o,".").concat(h)]||d[h]||m[h]||n;return a?r.createElement(c,i(i({ref:t},s),{},{components:a})):r.createElement(c,i({ref:t},s))}));function c(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,i=new Array(n);i[0]=h;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[d]="string"==typeof e?e:l,i[1]=p;for(var u=2;u<n;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},28380:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>m,frontMatter:()=>n,metadata:()=>p,toc:()=>u});var r=a(87462),l=(a(67294),a(3905));const n={title:"Ledger Team Update",slug:"2023-11-08-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-11-08-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-08-ledger.md",source:"@site/blog/2023-11-08-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-11-08T00:00:00.000Z",formattedDate:"November 8, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.685,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-11-08-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-11-09-db-sync"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-08-mithril"}},o={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway",id:"conway",level:3},{value:"Testing",id:"testing",level:3},{value:"Improvements and releasing",id:"improvements-and-releasing",level:3}],s={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,l.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,l.kt)("p",null,"This update contains mostly improvements to quality of Conway era implementation and\ntooling that we use for testing Ledger. Major Conway bugs that were discovered and\nsquashed are:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"PParamsUpdate proposals will now correctly use DRep thresholds for ratification"),(0,l.kt)("li",{parentName:"ul"},"Treasury withdrawals are now properly enacted."),(0,l.kt)("li",{parentName:"ul"},"Corrected snapshotting and DRep Stake Distribution Pulser initialization"),(0,l.kt)("li",{parentName:"ul"},"Delegation to non-existent Stake pool is no longer possible")),(0,l.kt)("p",null,"Other important quality of life improvements are addition of reusable interfaces for an\nordered set ",(0,l.kt)("inlineCode",{parentName:"p"},"OSet")," and ordered map ",(0,l.kt)("inlineCode",{parentName:"p"},"OMap"),". Which allowed us to disable duplicate\ncertificates and proposals in a transaction. As a precursor to ",(0,l.kt)("inlineCode",{parentName:"p"},"PlutusV3")," integration, a\nserious reorganization of Plutus related functionality was performed."),(0,l.kt)("p",null,"Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on\nexpired proposals, addition of Anchor to Constitutional Committee resignation proposals."),(0,l.kt)("p",null,'Significant improvements have been made to a specialized "Imp" test library that allows us\nwriting concise stateful unit tests for verifying the Ledger logic. Serious progress has\nbeen made on the conformance testing, where we can now interface with Haskell generated\ncode from the Agda specification. Serialization testing has been extended to increase\nbinary conformance coverage.'),(0,l.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,l.kt)("h3",{id:"conway"},"Conway"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3808"},"pull-3808")," - Enhance ",(0,l.kt)("inlineCode",{parentName:"li"},"CommitteeMembersState")," query to return quorum and NoConfidence"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3801"},"pull-3801")," - Fix epoch rule and tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3803"},"pull-3803")," - Fix delegation validation"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3759"},"pull-3759")," - Reshuffle things to the DRepPulser incorporates some snap shot things"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3779"},"pull-3779")," - Prevent duplicate certs and proposals"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3794"},"pull-3794")," - Added anchor to resign certs"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3797"},"pull-3797")," - Cleanup JSON instances for Conway governance"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3848"},"pull-3848")," - Plutus modules restructure"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3840"},"pull-3840")," - Fix anomalies in Deposits in the Conway Era"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3856"},"pull-3856")," - Add governance related ledger events"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3825"},"pull-3825")," - Prevent voting on expired GovActions"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3831"},"pull-3831")," - Treasury withdrawal fix"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3791"},"pull-3791")," - Use a Data.OMap.Strict to replace ProposalsSnapshot"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3836"},"pull-3836")," - PParamsUpdate enactment fix"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3846"},"pull-3846")," - Revert argument order swap.")),(0,l.kt)("h3",{id:"testing"},"Testing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3782"},"pull-3782")," - Move ",(0,l.kt)("inlineCode",{parentName:"li"},"ImpTest")," to Shelley testlib"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3842"},"pull-3842")," - Imp improvements"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3844"},"pull-3844")," - Add mappings to Agda types"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3853"},"pull-3853")," - Fix strange assertion failure, which hides real Block too big problem."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3809"},"pull-3809")," - CDDL roundtrip testing"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3832"},"pull-3832")," - Treasury withdrawals tests"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3839"},"pull-3839")," - Added ",(0,l.kt)("inlineCode",{parentName:"li"},"cardano-ledger-conformance")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3841"},"pull-3841")," - Add ",(0,l.kt)("inlineCode",{parentName:"li"},"sha256")," to ",(0,l.kt)("inlineCode",{parentName:"li"},"cardano-ledger-executable-spec"))),(0,l.kt)("h3",{id:"improvements-and-releasing"},"Improvements and releasing"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3843"},"pull-3843")," - Add ...WithLogs versions of evalScripts and friends"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3795"},"pull-3795")," - Bump plutus to 1.15"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3798"},"pull-3798")," - Bump urllib3 from 1.26.17 to 1.26.18 in /doc"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3799"},"pull-3799")," - Changes needed for 8.6 release"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3807"},"pull-3807")," - Add invalidBeforeL and invalidHereAfterL functions"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3819"},"pull-3819")," - Fixups needed for a release"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3829"},"pull-3829")," - Post release CHANGELOG version bumps"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3830"},"pull-3830")," - Bump aeson to 2.2"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3833"},"pull-3833")," - Backport release cardano-ledger-conway-1.10.1.0"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3828"},"pull-3828")," - Add changelog for node release 8.6")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ea5726b6.2672f5db.js b/assets/js/ea5726b6.2672f5db.js new file mode 100644 index 00000000000..7c65c2e73ea --- /dev/null +++ b/assets/js/ea5726b6.2672f5db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35846],{88675:a=>{a.exports=JSON.parse('{"label":"cip1694","permalink":"/cardano-updates/tags/cip-1694","allTagsPath":"/cardano-updates/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/ea7f8016.7c07b525.js b/assets/js/ea7f8016.7c07b525.js new file mode 100644 index 00000000000..12ebaf104be --- /dev/null +++ b/assets/js/ea7f8016.7c07b525.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67820],{35602:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/consensus/page/4","page":4,"postsPerPage":5,"totalPages":7,"totalCount":32,"previousPage":"/cardano-updates/tags/consensus/page/3","nextPage":"/cardano-updates/tags/consensus/page/5","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ea84a009.36271ad3.js b/assets/js/ea84a009.36271ad3.js new file mode 100644 index 00000000000..e72579c3457 --- /dev/null +++ b/assets/js/ea84a009.36271ad3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92501],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=n,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return r?a.createElement(h,i(i({ref:t},s),{},{components:r})):a.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},602:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Crypto Team Update",slug:"2023-03-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-03-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-crypto.md",source:"@site/blog/2023-03-03-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:1.155,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-03-03-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-03-08-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-03-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"cardano-base",id:"cardano-base",level:3},{value:"KES agent",id:"kes-agent",level:3},{value:"Sidechains",id:"sidechains",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit."),(0,n.kt)("li",{parentName:"ul"},"cardano-base: BLS branch is now ready for review. We are workign forward its merge. "),(0,n.kt)("li",{parentName:"ul"},"KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase."),(0,n.kt)("li",{parentName:"ul"},"Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Bumped to version ",(0,n.kt)("a",{parentName:"li",href:"https://crates.io/crates/kes-summed-ed25519/0.2.0"},"0.2.0")," the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using ",(0,n.kt)("inlineCode",{parentName:"li"},"mlock"),"."),(0,n.kt)("li",{parentName:"ul"},"Opened ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/783"},"PR#783")," to update dependency"),(0,n.kt)("li",{parentName:"ul"},"Improved testing for batch opening of mtree, ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/773"},"PR#773")),(0,n.kt)("li",{parentName:"ul"},"Improved testing for batch verification of STM sigs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/774"},"PR#774")),(0,n.kt)("li",{parentName:"ul"},"RFP for crypto audit almost ready.")),(0,n.kt)("h3",{id:"cardano-base"},"cardano-base"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"BLS12-381 branch finally ready for review ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/266"},"PR#266"))),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("p",null,"Team off for one week. Other progress:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Learning about raw direct-bearer abstraction. An interface for sockets in consensus."),(0,n.kt)("li",{parentName:"ul"},"use that for direct ser/deser"),(0,n.kt)("li",{parentName:"ul"},"written those syntaxes for ouroboros (coming PR)"),(0,n.kt)("li",{parentName:"ul"},"the kes agent will depend on that. \t")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("p",null,"Progress with familiarisation of Halo2 library to write circuits."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/eab6de32.8354251c.js b/assets/js/eab6de32.8354251c.js new file mode 100644 index 00000000000..9838187ac04 --- /dev/null +++ b/assets/js/eab6de32.8354251c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[7891],{80771:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/consensus/page/6","page":6,"postsPerPage":5,"totalPages":7,"totalCount":32,"previousPage":"/cardano-updates/tags/consensus/page/5","nextPage":"/cardano-updates/tags/consensus/page/7","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/eac6bb0a.1aa24d10.js b/assets/js/eac6bb0a.1aa24d10.js new file mode 100644 index 00000000000..a1862270c14 --- /dev/null +++ b/assets/js/eac6bb0a.1aa24d10.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87445],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),m=r,h=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u<o;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},97940:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2022-11-16-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2022-11-16-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-16-node-cli-api.md",source:"@site/blog/2022-11-16-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2022-11-16T00:00:00.000Z",formattedDate:"November 16, 2022",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:.68,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2022-11-16-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-16-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2022-11-16-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3}],c={toc:u},d="wrapper";function s(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2022-11-16---2022-11-29"},"2022-11-16 - 2022-11-29"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("h2",{id:"completed"},"Completed"),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4562"},"Add a native tokens tutorial and exercises"))),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4674"},"Update cardano-cli's help")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4644"},"Remove error calls in renderShelleyTxCmdError"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4639"},"Implement Cardano.Api.DeserialiseAnyOf"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4650"},"Fix windows CI"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("h2",{id:"in-progress"},"In Progress"),(0,r.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"[BUGFIX]","- ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4431"},"Infer protocol params in transaction build")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4408"},"Allow assembling transactions with no witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4279"},"Multiple pools support in query stake snapshot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4250"},"Optimise query leadership schedule command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4179"},"Optimise query stake snapshot command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli"))),(0,r.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4458"},"Make TxBodyContent an instance of Monoid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions"))),(0,r.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/eac9cf07.e77df8c6.js b/assets/js/eac9cf07.e77df8c6.js new file mode 100644 index 00000000000..6131a8c40dd --- /dev/null +++ b/assets/js/eac9cf07.e77df8c6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[59037],{89207:a=>{a.exports=JSON.parse('{"label":"sre","permalink":"/cardano-updates/quarterly/tags/sre","allTagsPath":"/cardano-updates/quarterly/tags","count":2}')}}]); \ No newline at end of file diff --git a/assets/js/eb0e2fb1.07255769.js b/assets/js/eb0e2fb1.07255769.js new file mode 100644 index 00000000000..75fdbd9db6e --- /dev/null +++ b/assets/js/eb0e2fb1.07255769.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[80622],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),c=p(r),d=n,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||i;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=d;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},19040:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-08-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-08-17-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-17-crypto.md",source:"@site/blog/2023-08-17-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-08-17T00:00:00.000Z",formattedDate:"August 17, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.65,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-08-17-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-08-18-sre"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-08-17-db-sync"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Mithril",id:"mithril",level:3},{value:"MuSig2",id:"musig2",level:3},{value:"Sidechains",id:"sidechains",level:3},{value:"KES agent",id:"kes-agent",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation"),(0,n.kt)("li",{parentName:"ul"},"mithril: Full node verifier"),(0,n.kt)("li",{parentName:"ul"},"musig2: Include MuSig2 description in cryptography handbook"),(0,n.kt)("li",{parentName:"ul"},"kes_agent: Finilising test and CI. Working on KES binary")),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"mithril"},"Mithril"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Full Node Verifier merged ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"),".")),(0,n.kt)("h3",{id:"musig2"},"MuSig2"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Started describing MuSig2 to include it as part of the cryptography handbook ")),(0,n.kt)("h3",{id:"sidechains"},"Sidechains"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/alexandroszacharakis8/halo2/tree/iquerejeta"},"this")," fork.")),(0,n.kt)("h3",{id:"kes-agent"},"KES agent"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"KES agent is ready:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"CI ready ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/19"},"#19")),(0,n.kt)("li",{parentName:"ul"},"Receipt confirmation message ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/20"},"#20")),(0,n.kt)("li",{parentName:"ul"},"KES agent binary ready ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/21"},"#21")),(0,n.kt)("li",{parentName:"ul"},"Control client implemented ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/11"},"#11"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ebf8adea.dcda8491.js b/assets/js/ebf8adea.dcda8491.js new file mode 100644 index 00000000000..718dcb891b0 --- /dev/null +++ b/assets/js/ebf8adea.dcda8491.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54669],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>c});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),d=i,c=h["".concat(p,".").concat(d)]||h[d]||m[d]||n;return r?a.createElement(c,o(o({ref:t},u),{},{components:r})):a.createElement(c,o({ref:t},u))}));function c(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:i,o[1]=l;for(var s=2;s<n;s++)o[s]=r[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},45668:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Mithril Team Update",slug:"2023-05-17-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-05-17-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-17-mithril.md",source:"@site/blog/2023-05-17-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-05-17T00:00:00.000Z",formattedDate:"May 17, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.555,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-05-17-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-05-17-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-17-performance-and-tracing"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,i.kt)("p",null,"The Mithril team released a new ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2318.0"},(0,i.kt)("inlineCode",{parentName:"a"},"2318.0"))," distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types."),(0,i.kt)("p",null,"Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node ",(0,i.kt)("inlineCode",{parentName:"p"},"8.0.0")," (along with the backward compatibility for previous ",(0,i.kt)("inlineCode",{parentName:"p"},"1.35.x")," versions)."),(0,i.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that designs and implements generic signing/verification of entity services ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the handling of multiple types of signed entity in the aggregator runtime ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/907"},"#907")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the signer runtime to use the signable builder service ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/854"},"#854")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the aggregator runtime to use the artifact builder service ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/869"},"#869")),(0,i.kt)("li",{parentName:"ul"},"Completed the appending of the next AVK to all protocol messages ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/888"},"#888")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/893"},"#893")),(0,i.kt)("li",{parentName:"ul"},"Completed the adaptation of the explorer to handle new artifact routes of the aggregator ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/927"},"#927")))),(0,i.kt)("li",{parentName:"ul"},"Worked on the epic that implements the computation of the stake distribution for ",(0,i.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/880"},"#880"),":",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Completed the implementation of the new stake distribution computation in the chain observer ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/919"},"#919")),(0,i.kt)("li",{parentName:"ul"},"Worked on upgrading the Cardano node to ",(0,i.kt)("inlineCode",{parentName:"li"},"8.0.0")," ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/920"},"#920"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec06fa8a.8d919f1b.js b/assets/js/ec06fa8a.8d919f1b.js new file mode 100644 index 00000000000..d368c26516f --- /dev/null +++ b/assets/js/ec06fa8a.8d919f1b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46271],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>k});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function p(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function l(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),u=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):p(p({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(o.Provider,{value:e},t.children)},m="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,c=l(t,["components","mdxType","originalType","parentName"]),m=u(a),h=r,k=m["".concat(o,".").concat(h)]||m[h]||d[h]||i;return a?n.createElement(k,p(p({ref:e},c),{},{components:a})):n.createElement(k,p({ref:e},c))}));function k(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,p=new Array(i);p[0]=h;var l={};for(var o in e)hasOwnProperty.call(e,o)&&(l[o]=e[o]);l.originalType=t,l[m]="string"==typeof t?t:r,p[1]=l;for(var u=2;u<i;u++)p[u]=a[u];return n.createElement.apply(null,p)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},1091:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>o,contentTitle:()=>p,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-10-10-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},p="Node-Api-Cli Update",l={permalink:"/cardano-updates/2023-10-10-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-10-node-cli-api.md",source:"@site/blog/2023-10-10-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-10-10T00:00:00.000Z",formattedDate:"October 10, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.985,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-10-10-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-10-11-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-06-hydra"}},o={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(t){let{components:e,...a}=t;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-09-27---2023-10-10"},"2023-09-27 - 2023-10-10"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"CARDANO-NODE"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.5.0-pre"},"Pre-release of cardano-node 8.5.0-pre"))),(0,r.kt)("p",null,"CARDANO-CLI"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Depracated governance query commands and moved all governance related queries to ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli <era> query")),(0,r.kt)("li",{parentName:"ul"},"Drep registration certificates now allow to include an anchor"),(0,r.kt)("li",{parentName:"ul"},"Integrated Drep retirement ceriticates"),(0,r.kt)("li",{parentName:"ul"},"clean up of Drep registration certificates.")),(0,r.kt)("p",null,"CARDANO-API"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add support for committee hot key witnesses"),(0,r.kt)("li",{parentName:"ul"},"Require conway onwards for voting"),(0,r.kt)("li",{parentName:"ul"},"Conway drep registration: expose ledger anchor parameter"),(0,r.kt)("li",{parentName:"ul"},"Add certs to txbody of Conway transactions")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/347"},"Move ",(0,r.kt)("inlineCode",{parentName:"a"},"governance query")," commands to ",(0,r.kt)("inlineCode",{parentName:"a"},"query")," command group")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/344"},"Rename create-new-committee into update-committee")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/341"},"New version cardano-cli-8.12.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/338"},"Add support for committee hot key witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/337"},"conway governance vote create: make it possible to use cc hot keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/331"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.11.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/330"},"Drep certification registration: add parameters for anchor")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/329"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.25.0.1"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/327"},"Move files that are not golden files into ",(0,r.kt)("inlineCode",{parentName:"a"},"input")," directory")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/324"},"Update to cardano-api-8.24")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/323"},"Fix #311 - Add Cold Committee Key text envelope")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/322"},"create-poll, answer-poll, verify-poll: move to 'babbage governance' block")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/320"},"Update to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.23.1.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/319"},"Make ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction view")," emit JSON")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/318"},"Tidy up query command structure")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/317"},"Use ",(0,r.kt)("inlineCode",{parentName:"a"},"caseShelleyToBabbageOrConwayEraOnwards")," from ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/316"},"Add DRep Retirement Certificate command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/310"},"Update to cardano api 8.22.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/309"},"drep registration-certificate: remove mix with SPO registration"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/307"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"EraCast")," instance for ",(0,r.kt)("inlineCode",{parentName:"a"},"Certificate"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/306"},"Add certs to txbody of Conway transactions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/305"},"Move DRep reg certificate anchor types from cardano-cli to cardano-api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/304"},"Add BabbageEraOnly")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/303"},"New version cardano-api-8.25.2.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/300"},"Add support for committee hot key witnesses")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/299"},"Reduce constraint usage with eons")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/297"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"withShelleyBasedEraConstraintsForLedger"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/296"},"Simplify ",(0,r.kt)("inlineCode",{parentName:"a"},"DebugLedgerState")," with eons")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/294"},"New version cardano-api-8.25.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/293"},"Require conway onwards for voting")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/292"},"Add witness committee cold key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/291"},"Fix CHaP failure due to haddock issue")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/290"},"Amend cardano-api/pull/284 to use ReexposeLedger")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/289"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEraInEon")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"EraInEon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/288"},"Release 8.24.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/287"},"Parameterize ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEraInEon"),". Add ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/286"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.23.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/284"},"conway drep registration: expose ledger anchor parameter")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/282"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"caseAlonzoOnlyOrBabbageEraOnwards")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"alonzoEraOnlyToAlonzoEraOnwards")," functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/281"},"Rename eon functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/280"},"New ",(0,r.kt)("inlineCode",{parentName:"a"},"AnyEraInEon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/279"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"ValidityLowerBoundSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/278"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"TxExtraKeyWitnessesSupportedInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/277"},"Explicit pattern match on all ledger certificates constructors. Remove redundant module")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/276"},"Release 8.22.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/275"},"Replace ",(0,r.kt)("inlineCode",{parentName:"a"},"TxTotalAndReturnCollateralSupportedInEra")))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5490"},"Integrate upstream libraries for 8.5"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5497"},"bump cardano-api to 8.25.2")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5491"},"Remove unused code in cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5490"},"Integrate upstream libraries for 8.5"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec344652.83a054ec.js b/assets/js/ec344652.83a054ec.js new file mode 100644 index 00000000000..c2f5d0129d2 --- /dev/null +++ b/assets/js/ec344652.83a054ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[68580],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=a,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||i;return r?n.createElement(h,o(o({ref:t},s),{},{components:r})):n.createElement(h,o({ref:t},s))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},13231:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Crypto Team Update",slug:"2023-07-07-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-07-07-crypto",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-crypto.md",source:"@site/blog/2023-07-07-crypto.md",title:"Crypto Team Update",description:"High level summary",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"crypto",permalink:"/cardano-updates/tags/crypto"}],readingTime:.795,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Crypto Team Update",slug:"2023-07-07-crypto",authors:"iquerejeta",tags:["crypto"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-07-12-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-07-07-goedel"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"kes_agent",id:"kes_agent",level:3},{value:"Mithril",id:"mithril",level:3},{value:"Sidechains",id:"sidechains",level:3},{value:"CIPs and community",id:"cips-and-community",level:3}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The open fronts that the crypto team is working on are:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sidechains: First version of snark-based ATMS"),(0,a.kt)("li",{parentName:"ul"},"mithril: Full node verifier"),(0,a.kt)("li",{parentName:"ul"},"kes_agent: Keep progress, and prepare CIP and CPS"),(0,a.kt)("li",{parentName:"ul"},"CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP")),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("h3",{id:"kes_agent"},"kes_agent"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"KES Agent CIP/CSP. Preparing documents. Will become public in the future."),(0,a.kt)("li",{parentName:"ul"},"KES Agent testsuite (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/kes-agent/issues/14"},"https://github.com/input-output-hk/kes-agent/issues/14"),")"),(0,a.kt)("li",{parentName:"ul"},"RawBearer abstraction in ouroboros-network-framework (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4395"},"https://github.com/input-output-hk/ouroboros-network/pull/4395"),")"),(0,a.kt)("li",{parentName:"ul"},"Maintaining required changes to cardano-base for KES Agent (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-base/pull/317"},"https://github.com/input-output-hk/cardano-base/pull/317"),")")),(0,a.kt)("h3",{id:"mithril"},"Mithril"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Final review of the implementation of Full Node Verifier ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/pull/939"},"#939"),".\nIncluded benchmarks and further tests.")),(0,a.kt)("h3",{id:"sidechains"},"Sidechains"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Schnorr signature implemented"),(0,a.kt)("li",{parentName:"ul"},"ATMS signature implemented"),(0,a.kt)("li",{parentName:"ul"},"First benchmarks show that for the committe size we expect, we need 2^21 constraints. ")),(0,a.kt)("h3",{id:"cips-and-community"},"CIPs and community"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Addressed some review comments in ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/506"},"#PR506")),(0,a.kt)("li",{parentName:"ul"},"Worked with the communityt on ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/524"},"#PR524")," to include Keccak as part of the next Plutus release.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ec53298b.c7e575ce.js b/assets/js/ec53298b.c7e575ce.js new file mode 100644 index 00000000000..b5c21c16f5c --- /dev/null +++ b/assets/js/ec53298b.c7e575ce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[21129],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,g=p["".concat(s,".").concat(m)]||p[m]||d[m]||i;return n?r.createElement(g,o(o({ref:t},u),{},{components:n})):r.createElement(g,o({ref:t},u))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},94656:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-04-05-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-04-05-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-performance-and-tracing.md",source:"@site/blog/2023-04-05-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.",date:"2023-04-05T00:00:00.000Z",formattedDate:"April 5, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.33,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-04-05-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-04-05-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-31-crypto"}},s={authorsImageUrls:[void 0]},c=[{value:"General",id:"general",level:3},{value:"Plutus library",id:"plutus-library",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We worked on adjusting our infrastructure to the new ",(0,a.kt)("inlineCode",{parentName:"li"},"8.0")," release branch and performed a (very) early run."),(0,a.kt)("li",{parentName:"ul"},"New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.")),(0,a.kt)("h1",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"We have adapted our benchmarking cluster to the requirements of the ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0")," release branch. Testing runs of a very early feature branch for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0"),"\nhelped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for ",(0,a.kt)("inlineCode",{parentName:"p"},"8.0")," soon."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very\ndetailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing\nthe highest possible throughput of data for forwarding to ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer"),". "),(0,a.kt)("p",null,"Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions\nfor tunneling trace forwarding from a node to ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-tracer")," via an easy to manage system service, which will match the production setup of most users."),(0,a.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,a.kt)("h3",{id:"general"},"General"),(0,a.kt)("p",null,"Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance\nanalysis can be fed back and serve as an additional point of comparison."),(0,a.kt)("p",null,"Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations."),(0,a.kt)("h3",{id:"plutus-library"},"Plutus library"),(0,a.kt)("p",null,"We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles.\nThis will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile.\nIt is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is\nbeing improved to minimize any friction for the backend user."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ed730a1d.19e36255.js b/assets/js/ed730a1d.19e36255.js new file mode 100644 index 00000000000..5c1cff1ba06 --- /dev/null +++ b/assets/js/ed730a1d.19e36255.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[61137],{87638:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/consensus/page/5","page":5,"postsPerPage":5,"totalPages":7,"totalCount":32,"previousPage":"/cardano-updates/tags/consensus/page/4","nextPage":"/cardano-updates/tags/consensus/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ed930750.a3d3ae4d.js b/assets/js/ed930750.a3d3ae4d.js new file mode 100644 index 00000000000..be3dde99370 --- /dev/null +++ b/assets/js/ed930750.a3d3ae4d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[23318],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,a=function(e,t){if(null==e)return{};var n,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),c=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,h=d["".concat(l,".").concat(m)]||d[m]||p[m]||r;return n?o.createElement(h,s(s({ref:t},u),{},{components:n})):o.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,s=new Array(r);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,s[1]=i;for(var c=2;c<r;c++)s[c]=n[c];return o.createElement.apply(null,s)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},64185:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var o=n(87462),a=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2023-05-03-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-05-03-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-03-consensus.md",source:"@site/blog/2023-05-03-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-05-03T00:00:00.000Z",formattedDate:"May 3, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.755,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-05-03-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-05-04-mithril"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-05-03-performance-and-tracing"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis",id:"genesis",level:2},{value:"Fostering collaboration",id:"fostering-collaboration",level:2}],u={toc:c},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"During the past two weeks we made some important progress in the Genesis design.\nIt seems the ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch")," logic need not be modified for Genesis, although this\nneeds to be confirmed. We started a DoS mitigation handbook and updated our\nconceptual component diagram to guide the Genesis design. We engaged with the\nIOG researchers to work on the Limit on Patience attack vector, work in this\narea is still ongoing. We sketched a design to decouple the CPU load of the node\nfrom its responsiveness to the socket. Finally, we discussed with Networking our\napproach to lower the performance impact of the BlockFetch decision logic, and\ngot green light from them."),(0,a.kt)("p",null,"We migrated the consensus code to a ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus"},"new\nrepository"),", splitting\nit from the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," repository, and released version 0.6 of\nConsensus."),(0,a.kt)("p",null,"We also merged the mempool fairness improvement to main branch."),(0,a.kt)("p",null,"Another significant enhancement to our documentation was the addition of an\nexplanation of the hardfork combinator forecast horizon."),(0,a.kt)("p",null,"See the sections below for more details."),(0,a.kt)("h2",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"We reviewed the ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch")," design documentation, and added some source-code\ncomments that emphasize certain properties of the decisions the ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch"),"\nlogic makes that are helping us confirm that Genesis does not require any\nchanges to ",(0,a.kt)("inlineCode",{parentName:"p"},"BlockFetch"),". We are waiting on input from our former system\narchitect to verify this."),(0,a.kt)("p",null,"We migrated and updated the conceptual component diagram in the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),"\nrepository which helps us situate the Genesis design and argument."),(0,a.kt)("p",null,"We engaged with the IOG researchers about the Genesis design. We sketched out a\nway to address the concern that the Limit on Patiente (LoP) attack vector duty\ncycle is indeed low, but it's still non-trivial to ultimately conclude it's\nsufficiently low."),(0,a.kt)("p",null,"We also sketched a design to decouple the CPU load of the node from its\nresponsiveness to the socket, since the LoP is a relatively tight timeout, and\nnode performance bugs inducing seconds-worth of latency are unfortunately\nfamiliar phenomena."),(0,a.kt)("h2",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/62"},"added an\nexplanation")," of\na question that we had to explain many times about the exact behavior of the\nhardfork combinator forecast horizon."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ed99d55f.e3582b94.js b/assets/js/ed99d55f.e3582b94.js new file mode 100644 index 00000000000..1924d6d5fc8 --- /dev/null +++ b/assets/js/ed99d55f.e3582b94.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[65318],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),s=u(a),m=n,c=s["".concat(p,".").concat(m)]||s[m]||h[m]||i;return a?r.createElement(c,o(o({ref:t},d),{},{components:a})):r.createElement(c,o({ref:t},d))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},73437:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-10-27-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-27-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-27-hydra.md",source:"@site/blog/2023-10-27-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-10-27T00:00:00.000Z",formattedDate:"October 27, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.895,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-10-27-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-11-01-mithril"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-10-27-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:3},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:3},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:3}],d={toc:u},s="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h3",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team fixed the ",(0,n.kt)("inlineCode",{parentName:"p"},"gen-hydra-keys")," command to avoid\noverwriting existing keys, and resolved issues related to the rewritten\n",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-tui"),'. They also worked on a \\"dirt road\\" implementation for the\n\\"Ignored init tx\\" notification, improving the robustness of the system.'),(0,n.kt)("p",null,"The team finalized preparations for the Cardano Summit presentation, including\nimplementation of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-poll")," example DApp."),(0,n.kt)("p",null,'If you happen to read this and attend the Summit in Dubai, make sure to check\nout our Masterclass about \\"Developing Hydra + Mithril for Scaling Cardano\\" on\nFriday, November 3 at 14:00-15:30 local time in the \\"Al Dar\\" room!'),(0,n.kt)("h3",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Fix ",(0,n.kt)("inlineCode",{parentName:"li"},"gen-hydra-keys")," command to not overwrite existing keys\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1136"},"#1136")),(0,n.kt)("li",{parentName:"ul"},"Fixed the rewritten ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-tui"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1113"},"#1113"),(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1137"},"#1137")),(0,n.kt)("li",{parentName:"ul"},"Finalized cardano summit preparation\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1109"},"#1109")),(0,n.kt)("li",{parentName:"ul"},"Implemented the ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-poll")," example DApp ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-scaling/hydra-poll"},"link to\nrepository")),(0,n.kt)("li",{parentName:"ul"},'Dirt road implementation for \\"Ignored init tx\\" notification\n',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/529"},"#529"))),(0,n.kt)("h3",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Attend cardano summit and deliver presentation"),(0,n.kt)("li",{parentName:"ul"},"Clarify / close user created issues"),(0,n.kt)("li",{parentName:"ul"},"Build ",(0,n.kt)("inlineCode",{parentName:"li"},"aarch64-darwin")," binaries in CI")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/eda7cf83.e9a49dd3.js b/assets/js/eda7cf83.e9a49dd3.js new file mode 100644 index 00000000000..4d15a473cf6 --- /dev/null +++ b/assets/js/eda7cf83.e9a49dd3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48423],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>d});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),h=p(a),m=n,d=h["".concat(u,".").concat(m)]||h[m]||c[m]||i;return a?r.createElement(d,o(o({ref:t},s),{},{components:a})):r.createElement(d,o({ref:t},s))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},10725:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-02-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-10-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-10-hydra.md",source:"@site/blog/2023-02-10-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-10T00:00:00.000Z",formattedDate:"February 10, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.14,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-02-17-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-09-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},h="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,'This week, the Hydra team closed several gaps to align the Hydra scripts\nimplementation further with the specification. This also resulted in a slight\nimprovement on Hydra script size and costs. They consequently analysed the\nasymptotic complexity of collect and fanout and how they relate. Also plutus-tx\nprofiling toolchain was evaluated and set up for future improvements on Hydra\non-chain performance. In discussions with researchers and internal auditors,\nthey also uncovered next steps on further securing the Head protocl using a\n"full" minting policy.'),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Closed several gaps to align script implementation with specification ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/452"},"#452"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Allow contest only once ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/680"},"#680")),(0,n.kt)("li",{parentName:"ul"},"Optimization through head output at index 0 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/700"},"#700")),(0,n.kt)("li",{parentName:"ul"},"Value is preserved ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/702"},"#702")," + optimized exact value equality ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/709"},"#709")))),(0,n.kt)("li",{parentName:"ul"},"Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/721"},"#721"),(0,n.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/2621189/218124686-7a85b40d-12f7-4b00-ad16-128c99f5b707.png",alt:null})),(0,n.kt)("li",{parentName:"ul"},"Fixed our tooling around the Haskell language server"),(0,n.kt)("li",{parentName:"ul"},"Discussed full minting policy with researchers"),(0,n.kt)("li",{parentName:"ul"},"Started grooming \u201cwhat we need for mainnet\u201d on ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"this")," idea ticket and ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/milestone/8"},"milestone"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implement full minting policy"),(0,n.kt)("li",{parentName:"ul"},"All remaining protocol discrepancies are implemented or groomed as individual features"),(0,n.kt)("li",{parentName:"ul"},"Ideally release 0.9.0 with updated scripts"),(0,n.kt)("li",{parentName:"ul"},"Discuss what we need for mainnet (milestone planning)"),(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs for specification (upon feedback)")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/edca0251.665a94cd.js b/assets/js/edca0251.665a94cd.js new file mode 100644 index 00000000000..458ac537515 --- /dev/null +++ b/assets/js/edca0251.665a94cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39066],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,h=d["".concat(c,".").concat(m)]||d[m]||u[m]||i;return r?n.createElement(h,o(o({ref:t},p),{},{components:r})):n.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var s=2;s<i;s++)o[s]=r[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},22704:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const i={title:"Performance & tracing update",slug:"2023-02-08-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-08-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-performance-and-tracing.md",source:"@site/blog/2023-02-08-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-02-08T00:00:00.000Z",formattedDate:"February 8, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.445,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2023-02-08-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-08-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-03-crypto"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions."),(0,a.kt)("li",{parentName:"ol"},"Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks."),(0,a.kt)("li",{parentName:"ol"},"New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node."),(0,a.kt)("li",{parentName:"ol"},"New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,"),(0,a.kt)("li",{parentName:"ul"},"after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,"),(0,a.kt)("li",{parentName:"ul"},"finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.")),(0,a.kt)("p",null,"In addition, we started benchmarks of the 1.35.6 release."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way."),(0,a.kt)("p",null,"Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders."),(0,a.kt)("p",null,"The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment."),(0,a.kt)("p",null,"The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ee0b7a59.f2d5e972.js b/assets/js/ee0b7a59.f2d5e972.js new file mode 100644 index 00000000000..0dd732f0e0f --- /dev/null +++ b/assets/js/ee0b7a59.f2d5e972.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26544],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},c),{},{components:n})):r.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},1679:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-07-26-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-07-26-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-26-consensus.md",source:"@site/blog/2023-07-26-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-07-26T00:00:00.000Z",formattedDate:"July 26, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:.85,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-07-26-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-07-27-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-21-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Genesis liaising",id:"genesis-liaising",level:3}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"db-sync")," team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now.\nWe also focused on completing tracing support for UTxO-HD in ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node"),".\nCurrently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further. "),(0,a.kt)("p",null,"The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ChainSync")," client as part of the onboarding efforts for the team that will implement Genesis."),(0,a.kt)("p",null,"The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team."),(0,a.kt)("h3",{id:"genesis-liaising"},"Genesis liaising"),(0,a.kt)("p",null,"Improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ChainSync")," client:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/222"},"#222"),"."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/233"},"#233"),".")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ee94a44f.72450e08.js b/assets/js/ee94a44f.72450e08.js new file mode 100644 index 00000000000..cee87d4e223 --- /dev/null +++ b/assets/js/ee94a44f.72450e08.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[56815],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),c=n,d=h["".concat(s,".").concat(c)]||h[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},6855:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-12-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-12-15-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-15-mithril.md",source:"@site/blog/2022-12-15-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2022-12-15T00:00:00.000Z",formattedDate:"December 15, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.11,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2022-12-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-16-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-12-14-consensus"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team has released the new distribution ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2248.1"},(0,n.kt)("inlineCode",{parentName:"a"},"2248.1"))," of their nodes. They have published the first version of the Mithril cryptographic library on ",(0,n.kt)("a",{parentName:"p",href:"https://crates.io/crates/mithril-stm"},(0,n.kt)("inlineCode",{parentName:"a"},"crates.io")),", the Rust community\u2019s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots."),(0,n.kt)("p",null,"Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Implemented removing verification key and stake from single signatures ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/619"},"#619")),(0,n.kt)("li",{parentName:"ul"},"Completed the extraction of the signer registration from the multi-signer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/642"},"#642")),(0,n.kt)("li",{parentName:"ul"},"Completed the extraction of the certificate creation from the multi-signer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/638"},"#638")),(0,n.kt)("li",{parentName:"ul"},"Implemented a workflow to test client binaries (Linux / MacOS / Windows) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/601"},"#601")),(0,n.kt)("li",{parentName:"ul"},"Completed the signature of the artifacts produced by the CI ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/587"},"#587")),(0,n.kt)("li",{parentName:"ul"},"Fixed the protocol parameters transition ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/627"},"#627")),(0,n.kt)("li",{parentName:"ul"},"Worked on optimizing the snapshot digest computation ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/510"},"#510")),(0,n.kt)("li",{parentName:"ul"},"Worked on enforcing the API protocol versions in the client and signer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/633"},"#633")),(0,n.kt)("li",{parentName:"ul"},"Worked on deactivating the non certified signer registration mode ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/621"},"#621")),(0,n.kt)("li",{parentName:"ul"},"Worked on the re-genesis of the test networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/651"},"#651"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ef2b1d07.41206daf.js b/assets/js/ef2b1d07.41206daf.js new file mode 100644 index 00000000000..52199cf98d2 --- /dev/null +++ b/assets/js/ef2b1d07.41206daf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70729],{91102:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/hydra/page/3","page":3,"postsPerPage":5,"totalPages":11,"totalCount":55,"previousPage":"/cardano-updates/tags/hydra/page/2","nextPage":"/cardano-updates/tags/hydra/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/ef2b6a3f.276cebb0.js b/assets/js/ef2b6a3f.276cebb0.js new file mode 100644 index 00000000000..b3c8c79ee42 --- /dev/null +++ b/assets/js/ef2b6a3f.276cebb0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1338],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,s(s({ref:t},u),{},{components:n})):r.createElement(h,s({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},50818:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"DB-sync Team Update",slug:"2022-12-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-12-14-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-db-sync.md",source:"@site/blog/2022-12-14-db-sync.md",title:"DB-sync Team Update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.73,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB-sync Team Update",slug:"2022-12-14-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-12-14-consensus"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-14-node-cli-api"}},l={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DBSync team continued testing release ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.0"),". The QA team has reported that no issues have\nbeen found. The DBSync team also worked on cherry-picks back to master and on fixing bugs."),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Release is cherry-picked back to master, which uses the new rollback mechanism which uses\nreverse indexes, same as the release\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1320"},"#1320"),"\nThis also fixes a bug number of issues on master."),(0,a.kt)("li",{parentName:"ul"},"Depenencies upgrade and CHaP integration\n",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1324"},"#1324")),(0,a.kt)("li",{parentName:"ul"},"AdaPots fix ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-db-sync/pull/1323"},"#1323"),". This\nfixes an issue where the per epoch AdaPots didn't match the epoch boundary, but\nthey also included changes from the first block of the epoch."),(0,a.kt)("li",{parentName:"ul"},"Deposits Event fix ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3212"},"#3212"),". This pr\nadjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the\nnumber of queries that db-sync does during syncing an make syncing faster.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ef4801f7.5d3fc9af.js b/assets/js/ef4801f7.5d3fc9af.js new file mode 100644 index 00000000000..b86b7499094 --- /dev/null +++ b/assets/js/ef4801f7.5d3fc9af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75394],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,h=d["".concat(c,".").concat(m)]||d[m]||u[m]||i;return r?n.createElement(h,o(o({ref:t},p),{},{components:r})):n.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var s=2;s<i;s++)o[s]=r[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},45443:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=r(87462),a=(r(67294),r(3905));const i={title:"Performance & tracing update",slug:"2023-02-08-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-08-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-performance-and-tracing.md",source:"@site/blog/2023-02-08-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2023-02-08T00:00:00.000Z",formattedDate:"February 8, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.445,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2023-02-08-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-08-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-02-03-crypto"}},c={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],p={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions."),(0,a.kt)("li",{parentName:"ol"},"Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks."),(0,a.kt)("li",{parentName:"ol"},"New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node."),(0,a.kt)("li",{parentName:"ol"},"New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,"),(0,a.kt)("li",{parentName:"ul"},"after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,"),(0,a.kt)("li",{parentName:"ul"},"finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.")),(0,a.kt)("p",null,"In addition, we started benchmarks of the 1.35.6 release."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way."),(0,a.kt)("p",null,"Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders."),(0,a.kt)("p",null,"The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment."),(0,a.kt)("p",null,"The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ef4f60e7.f66551bc.js b/assets/js/ef4f60e7.f66551bc.js new file mode 100644 index 00000000000..901deeb78cf --- /dev/null +++ b/assets/js/ef4f60e7.f66551bc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55531],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(a),d=n,g=m["".concat(p,".").concat(d)]||m[d]||u[d]||o;return a?r.createElement(g,l(l({ref:t},s),{},{components:a})):r.createElement(g,l({ref:t},s))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c<o;c++)l[c]=a[c];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},86601:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-04-14-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-04-14-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-14-goedel.md",source:"@site/blog/2023-04-14-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-04-14T00:00:00.000Z",formattedDate:"April 14, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.415,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-04-14-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Incident Report",permalink:"/cardano-updates/2023-04-17-ledger"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-04-14-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(m,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team has submitted two papers for publication, carried\nout consultancy with other teams and has an opening for an intern."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Finalised and submitted two papers to ICE 2023")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Studying Praos paper.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/"))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Design exploration for congestion management."))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/efad53df.45dcc7a1.js b/assets/js/efad53df.45dcc7a1.js new file mode 100644 index 00000000000..fdbc62ee7d6 --- /dev/null +++ b/assets/js/efad53df.45dcc7a1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53426],{84260:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/cli-api/page/3","page":3,"postsPerPage":5,"totalPages":6,"totalCount":27,"previousPage":"/cardano-updates/tags/cli-api/page/2","nextPage":"/cardano-updates/tags/cli-api/page/4","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/eff08811.39187769.js b/assets/js/eff08811.39187769.js new file mode 100644 index 00000000000..1b56965dc5a --- /dev/null +++ b/assets/js/eff08811.39187769.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[95816],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),d=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=d(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=d(a),h=r,m=c["".concat(p,".").concat(h)]||c[h]||u[h]||o;return a?n.createElement(m,i(i({ref:t},s),{},{components:a})):n.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},72837:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-02-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-03-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-hydra.md",source:"@site/blog/2023-02-03-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-03T00:00:00.000Z",formattedDate:"February 3, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.12,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-03-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-02-ledger"}},p={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:d},c="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"This week, the Hydra team completed the Hydra specification with a section about\nrollbacks and updated graphs\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/448"},"#448"),"). In a next step,\nthe specification will be made more approachable and an open standard. They\nimproved their ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-cluster")," tool to launch a local ",(0,r.kt)("inlineCode",{parentName:"p"},"--devnet")," sandbox\nenvironment and continued aligning the ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts with the\nspecification by hardening the checks on ",(0,r.kt)("inlineCode",{parentName:"p"},"close")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"contest")," transactions."),(0,r.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completed the specification with a section about rollbacks and updated graphs\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/448"},"#448"),", with a follow-up on making it more approachable and an open standard."),(0,r.kt)("li",{parentName:"ul"},"Continued spec review with internal auditor and incorporated changes."),(0,r.kt)("li",{parentName:"ul"},"Talked to TxPipe about how Demeter and Hydra could work together"),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"hydra-cluster")," executable can be used to launch a local ",(0,r.kt)("inlineCode",{parentName:"li"},"--devnet")," sandbox environment."),(0,r.kt)("li",{parentName:"ul"},"Reproduced the \u201chead being stuck on network outage\u201d bug",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed."))),(0,r.kt)("li",{parentName:"ul"},"Progressed with higher velocity by addressing more and more gaps ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/677"},"#677"))),(0,r.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Upstream our JSON instances to the ledger"),(0,r.kt)("li",{parentName:"ul"},"Close all transaction security related on-chain gaps"),(0,r.kt)("li",{parentName:"ul"},"Ideally release 0.9.0 with updated scripts"),(0,r.kt)("li",{parentName:"ul"},"Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f0418a99.2c34ef4d.js b/assets/js/f0418a99.2c34ef4d.js new file mode 100644 index 00000000000..4d37c8fc930 --- /dev/null +++ b/assets/js/f0418a99.2c34ef4d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73799],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function p(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),s=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=s(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=s(r),d=n,h=c["".concat(l,".").concat(d)]||c[d]||m[d]||a;return r?o.createElement(h,i(i({ref:t},u),{},{components:r})):o.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=d;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:n,i[1]=p;for(var s=2;s<a;s++)i[s]=r[s];return o.createElement.apply(null,i)}return o.createElement.apply(null,r)}d.displayName="MDXCreateElement"},25770:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>p,toc:()=>s});var o=r(87462),n=(r(67294),r(3905));const a={title:"Network Team Update",slug:"2023-11-16-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,p={permalink:"/cardano-updates/2023-11-16-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-16-network.md",source:"@site/blog/2023-11-16-network.md",title:"Network Team Update",description:"High-level overview of sprint 48",date:"2023-11-16T00:00:00.000Z",formattedDate:"November 16, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:.545,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-11-16-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Performance & Tracing Update",permalink:"/cardano-updates/2023-11-17-performance-and-tracing"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-15-consensus"}},l={authorsImageUrls:[void 0]},s=[{value:"High-level overview of sprint 48",id:"high-level-overview-of-sprint-48",level:2},{value:"Bootstrap Peers",id:"bootstrap-peers",level:3},{value:"IOClasses / IOSim",id:"ioclasses--iosim",level:3},{value:"Tech debt",id:"tech-debt",level:3}],u={toc:s},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,o.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview-of-sprint-48"},"High-level overview of ",(0,n.kt)("a",{parentName:"h2",href:"https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+48%22"},"sprint 48")),(0,n.kt)("h3",{id:"bootstrap-peers"},"Bootstrap Peers"),(0,n.kt)("p",null,"We continued reviewing bootstrap peers, ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4555"},"ouroboros-network#4555"),"."),(0,n.kt)("h3",{id:"ioclasses--iosim"},"IOClasses / IOSim"),(0,n.kt)("p",null,"We prepared slides for a Haskell meetup were we presented a talk on ",(0,n.kt)("inlineCode",{parentName:"p"},"IOSimPOR"),".\nThe recording will be availble on ",(0,n.kt)("inlineCode",{parentName:"p"},"YouTube"),"."),(0,n.kt)("p",null,"We also used the opportunity to do some refactoring of the ",(0,n.kt)("inlineCode",{parentName:"p"},"IOSim")," code base: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/117"},"io-sim#117"),".\nWe released ",(0,n.kt)("inlineCode",{parentName:"p"},"io-sim-1.3.0.0")," on ",(0,n.kt)("inlineCode",{parentName:"p"},"Hackage"),": ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/119"},"io-sim#119"),"."),(0,n.kt)("p",null,"We also added ",(0,n.kt)("inlineCode",{parentName:"p"},"forkFinally")," to ",(0,n.kt)("inlineCode",{parentName:"p"},"MonadFork")," (not included in ",(0,n.kt)("inlineCode",{parentName:"p"},"1.3.0.0")," release): ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/123"},"io-sim#123"),"."),(0,n.kt)("h3",{id:"tech-debt"},"Tech debt"),(0,n.kt)("p",null,"We refactored ",(0,n.kt)("inlineCode",{parentName:"p"},"Resource")," used by the DNS subsystem: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4707"},"ouroboros-network#4707"),".\nWe continued reviewing the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4625"},"ouroboros-network#4625")," PR, which refactors\n",(0,n.kt)("inlineCode",{parentName:"p"},"RootPeersDNS")," module."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f117ec90.7fad2391.js b/assets/js/f117ec90.7fad2391.js new file mode 100644 index 00000000000..8847fc0f25f --- /dev/null +++ b/assets/js/f117ec90.7fad2391.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51522],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),s=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=s(r),d=n,m=c["".concat(u,".").concat(d)]||c[d]||h[d]||i;return r?a.createElement(m,o(o({ref:t},p),{},{components:r})):a.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<i;s++)o[s]=r[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},64385:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Hydra Team Update",slug:"2023-09-08-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-08-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-08-hydra.md",source:"@site/blog/2023-09-08-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-08T00:00:00.000Z",formattedDate:"September 8, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.06,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-08-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-12-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-07-mithril"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},c="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team improved the commit process with support for inline\ndatums. They simplified the chain layer by refactoring how the chain state is\npersisted. Updates to the Hydra tutorial were completed, including CI workflows\nto keep it up-to-date. The team engaged in discussions with researchers about\nincremental commits & decommits, and drafted an architectural decision record\nfor a resource-based API. They also explored simpler solutions for the upcoming\nnetwork resilience feature."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Support InlineScriptDatum in commit\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1043"},"#1043")),(0,n.kt)("li",{parentName:"ul"},"Refactored chain state persistency\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1049"},"#1049")),(0,n.kt)("li",{parentName:"ul"},"Completed tutorial updates (by adding CI and some cleanup)\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/997"},"#997")),(0,n.kt)("li",{parentName:"ul"},"Intersect Open Source committee meeting"),(0,n.kt)("li",{parentName:"ul"},'Experimented with various models to better express the \\"Network\nresilience problem\\" to find a KISS solution for\n',(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/188"},"#188")),(0,n.kt)("li",{parentName:"ul"},"Drafted and discussed incremental de-/commit features within team\nand with researchers\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/199"},"#199")," and\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/1057"},"#1057")),(0,n.kt)("li",{parentName:"ul"},"Created ADR for a resource based overhaul of the API\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1028"},"#1028"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Meetup of Hydra & Mithril contributors in Nantes, France"),(0,n.kt)("li",{parentName:"ul"},"Integrated cardano-api 8.15 to have GHC 9.6 support"),(0,n.kt)("li",{parentName:"ul"},"A clear design for incremental commits (decommits are already\nunderstood)"),(0,n.kt)("li",{parentName:"ul"},"An ADR for improving tx construction & observation to not need chain\nstate")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f13a89c7.c87b817b.js b/assets/js/f13a89c7.c87b817b.js new file mode 100644 index 00000000000..38df13db2a9 --- /dev/null +++ b/assets/js/f13a89c7.c87b817b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[86582],{17825:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/sre/page/2","page":2,"postsPerPage":5,"totalPages":3,"totalCount":15,"previousPage":"/cardano-updates/tags/sre","nextPage":"/cardano-updates/tags/sre/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/f1bfc30d.4bc1270e.js b/assets/js/f1bfc30d.4bc1270e.js new file mode 100644 index 00000000000..6dc1e19c380 --- /dev/null +++ b/assets/js/f1bfc30d.4bc1270e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[35877],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(r),h=n,d=c["".concat(s,".").concat(h)]||c[h]||m[h]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}h.displayName="MDXCreateElement"},30394:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-10-11-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-10-11-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-11-mithril.md",source:"@site/blog/2023-10-11-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-10-11T00:00:00.000Z",formattedDate:"October 11, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.77,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-10-11-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-13-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-10-10-node-cli-api"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on ",(0,n.kt)("a",{parentName:"p",href:"https://crates.io/"},"crates.io"),", the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures."),(0,n.kt)("p",null,"Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Make ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," crate a library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1141"},"#1141")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano transactions history PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"ProtocolKeyRegistration")," creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1187"},"#1187")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Update ",(0,n.kt)("inlineCode",{parentName:"strong"},"Rust")," compiler in ",(0,n.kt)("inlineCode",{parentName:"strong"},"nix")," CI")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1282"},"#1282")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Mithril networks infrastructure maintenance")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1218"},"#1218")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Activate Cloudflare protection of infrastructure")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1230"},"#1230"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f1df5007.afbfc914.js b/assets/js/f1df5007.afbfc914.js new file mode 100644 index 00000000000..f2ca49956c2 --- /dev/null +++ b/assets/js/f1df5007.afbfc914.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[53288],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>c});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=p(r),m=n,c=h["".concat(s,".").concat(m)]||h[m]||d[m]||a;return r?i.createElement(c,o(o({ref:t},u),{},{components:r})):i.createElement(c,o({ref:t},u))}));function c(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}m.displayName="MDXCreateElement"},80999:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-08-28-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-08-28-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-28-mithril.md",source:"@site/blog/2023-08-28-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-08-28T00:00:00.000Z",formattedDate:"August 28, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-08-28-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-08-29-node-cli-api"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-25-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},h="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of ",(0,n.kt)("inlineCode",{parentName:"p"},"zstandard")," compression of the snapshot archive, and streaming its download and decompression in the client."),(0,n.kt)("p",null,"Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer. "),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Create explorer page with registered signers")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1097"},"#1097")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Simplify logs on the Signer/Aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1106"},"#1106")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Refactor (de)serialization of crypto entities")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/668"},"#668")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Mithril client last snapshot download")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1078"},"#1078")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Use the '/signers/registered' route to verify if a signer is registered")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1152"},"#1152")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Provide progress information with '--json' option in Client")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1095"},"#1095")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Use 'zstandard' compression for snapshot archives")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/876"},"#876")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("inlineCode",{parentName:"li"},"Make client download and extract the archive simultaneously")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1115"},"#1115"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f210b4b5.8690c2eb.js b/assets/js/f210b4b5.8690c2eb.js new file mode 100644 index 00000000000..9ead2de0770 --- /dev/null +++ b/assets/js/f210b4b5.8690c2eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[24745],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=l(r),m=a,h=u["".concat(c,".").concat(m)]||u[m]||d[m]||s;return r?n.createElement(h,o(o({ref:t},p),{},{components:r})):n.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:a,o[1]=i;for(var l=2;l<s;l++)o[l]=r[l];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},68831:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var n=r(87462),a=(r(67294),r(3905));const s={title:"DB sync Team Update",slug:"2022-12-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2022-12-01-db-sync",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-01-db-sync.md",source:"@site/blog/2022-12-01-db-sync.md",title:"DB sync Team Update",description:"High level summary",date:"2022-12-01T00:00:00.000Z",formattedDate:"December 1, 2022",tags:[{label:"db-sync",permalink:"/cardano-updates/tags/db-sync"}],readingTime:.78,hasTruncateMarker:!1,authors:[{name:"Kostas Dermentzis",title:"Cardano DB-Sync Software Engineer",url:"https://github.com/kderme",imageURL:"https://github.com/kderme.png",key:"kderme"}],frontMatter:{title:"DB sync Team Update",slug:"2022-12-01-db-sync",authors:"kderme",tags:["db-sync"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-02-hydra"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2022-12-01-mithril"}},c={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2}],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The DB Sync team prepared a release ",(0,a.kt)("inlineCode",{parentName:"p"},"13.1.0.0-rc2")," which includes many improvements for db-sync,\nit makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces\nmigrations. This release finalises the objectives that were set for db-sync for the previous\n3 months period and part of the syncing speed objective set for the next period\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/blob/3640e5aa00b8bada61e5d4b6eee063749866711b/cardano-db-sync/CHANGELOG.md#13100"},"Changelog")),(0,a.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Branch ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/compare/release/13.0.x..3640e5aa00b8bada61e5d4b6eee063749866711b"},"release/13.1.0.x"),"\nincludes all the improvements related to the release. The release is passing through the testing\nphase and a number of bugs and issues have been fixed, like\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1312"},"#1312"),"\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1311"},"#1311"),".\nAlso many new unit tests have been added.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Part of the release branch is cherry-picked back into master, in a way that it respects the new\nrelease and development process, so that it takes into account migrations\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-db-sync/issues/1305"},"release process"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"The DB Sync team has also tagged release ",(0,a.kt)("inlineCode",{parentName:"p"},"13.0.6")," which better supports preview and preprod for\ndocker."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f2180c0a.2c802d5e.js b/assets/js/f2180c0a.2c802d5e.js new file mode 100644 index 00000000000..514e829d621 --- /dev/null +++ b/assets/js/f2180c0a.2c802d5e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[17433],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),c=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=c(a),m=n,g=s["".concat(u,".").concat(m)]||s[m]||d[m]||l;return a?r.createElement(g,o(o({ref:t},p),{},{components:a})):r.createElement(g,o({ref:t},p))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:n,o[1]=i;for(var c=2;c<l;c++)o[c]=a[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},9304:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-05-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-05-05-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-05-ledger.md",source:"@site/blog/2023-05-05-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-05-05T00:00:00.000Z",formattedDate:"May 5, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.235,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-05-05-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-05-12-network"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-05-05-node-cli-api"}},u={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway certificates",id:"conway-certificates",level:2},{value:"Constraint based testing",id:"constraint-based-testing",level:2},{value:"Integration work",id:"integration-work",level:2},{value:"Technical debt",id:"technical-debt",level:2}],p={toc:c},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The ledger team focused mainly on the conway ledger era and node integration.\nFor conway, we completed a large structural change that now allows\nfor delegation certificates to be parameterized by era, and introducing\nnew certificates for the first time since Shelley.\nWe also continue to build out our contraint based generators that we will\nuse to property test the conway era.\nIn particular, we can now generate an entire ledger state and a\ntransaction which is balanced with respect to the ledger state."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h2",{id:"conway-certificates"},"Conway certificates"),(0,n.kt)("p",null,"Certificiates are now abstracted as a type family in the ledger codebase.\nMoreover, there are new certificates in the Conway era to support CIP-1694,\nand MIR certificates have been removed."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3387"},"pull-3387"))),(0,n.kt)("h2",{id:"constraint-based-testing"},"Constraint based testing"),(0,n.kt)("p",null,"Our plan for property testing in the conway era is to no longer use the trace generators,\nbut instead generate ledger states and transactions based on constraints.\nWe hit a milestone this week, namely the ability to generate a balanced transaction in the context\nof a ledger state, all based on our ever growing constaint language."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3374"},"pull-3374")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3386"},"pull-3386"))),(0,n.kt)("h2",{id:"integration-work"},"Integration work"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3393"},"pull-3393")," - Performance improvements"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3395"},"pull-3395")," - Conway instances"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3398"},"pull-3398")," - Fix mint translation in the script context")),(0,n.kt)("h2",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3389"},"pull-3389")," - Reduce github pages size"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3390"},"pull-3390")," - Reinstate the tickf optimizations")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f2423430.bec1d3ae.js b/assets/js/f2423430.bec1d3ae.js new file mode 100644 index 00000000000..c8360378c6c --- /dev/null +++ b/assets/js/f2423430.bec1d3ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1321],{3905:(e,n,r)=>{r.d(n,{Zo:()=>u,kt:()=>g});var t=r(67294);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function c(e,n){if(null==e)return{};var r,t,a=function(e,n){if(null==e)return{};var r,t,a={},i=Object.keys(e);for(t=0;t<i.length;t++)r=i[t],n.indexOf(r)>=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)r=i[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=t.createContext({}),l=function(e){var n=t.useContext(s),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},u=function(e){var n=l(e.components);return t.createElement(s.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},m=t.forwardRef((function(e,n){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=l(r),m=a,g=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return r?t.createElement(g,o(o({ref:n},u),{},{components:r})):t.createElement(g,o({ref:n},u))}));function g(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c[d]="string"==typeof e?e:a,o[1]=c;for(var l=2;l<i;l++)o[l]=r[l];return t.createElement.apply(null,o)}return t.createElement.apply(null,r)}m.displayName="MDXCreateElement"},28149:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var t=r(87462),a=(r(67294),r(3905));const i={title:"Performance & tracing update",slug:"2023-03-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",c={permalink:"/cardano-updates/2023-03-22-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-22-performance-and-tracing.md",source:"@site/blog/2023-03-22-performance-and-tracing.md",title:"Performance & tracing update",description:"* Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.",date:"2023-03-22T00:00:00.000Z",formattedDate:"March 22, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.5,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-03-22-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-22-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-21-network"}},s={authorsImageUrls:[void 0]},l=[{value:"New tracing",id:"new-tracing",level:3},{value:"GHC RTS parametrization",id:"ghc-rts-parametrization",level:3},{value:"Open Sourcing",id:"open-sourcing",level:3},{value:"General",id:"general",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],u={toc:l},d="wrapper";function p(e){let{components:n,...r}=e;return(0,a.kt)(d,(0,t.Z)({},u,r,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations."),(0,a.kt)("li",{parentName:"ul"},"New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users."),(0,a.kt)("li",{parentName:"ul"},"Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks."),(0,a.kt)("li",{parentName:"ul"},"Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing."),(0,a.kt)("li",{parentName:"ul"},"Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.")),(0,a.kt)("h1",{id:"performance"},"Performance"),(0,a.kt)("h3",{id:"new-tracing"},"New tracing"),(0,a.kt)("p",null,"The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe\na slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use."),(0,a.kt)("h3",{id:"ghc-rts-parametrization"},"GHC RTS parametrization"),(0,a.kt)("p",null,"We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies\non different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use."),(0,a.kt)("h3",{id:"open-sourcing"},"Open Sourcing"),(0,a.kt)("p",null,"Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases."),(0,a.kt)("h1",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well\nas a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points\nfor users of the new system, depending on their wants and needs. "),(0,a.kt)("h1",{id:"infrastructure--analysis"},"Infrastructure & Analysis"),(0,a.kt)("h3",{id:"general"},"General"),(0,a.kt)("p",null,"Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will\nincrease confidence in specific metrics."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis\nis patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f2b32cff.39abae3b.js b/assets/js/f2b32cff.39abae3b.js new file mode 100644 index 00000000000..ed950bdf938 --- /dev/null +++ b/assets/js/f2b32cff.39abae3b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58566],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),u=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),h=u(r),c=n,m=h["".concat(p,".").concat(c)]||h[c]||d[c]||l;return r?a.createElement(m,o(o({ref:t},s),{},{components:r})):a.createElement(m,o({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=c;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[h]="string"==typeof e?e:n,o[1]=i;for(var u=2;u<l;u++)o[u]=r[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},59485:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-02-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-02-17-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-17-ledger.md",source:"@site/blog/2023-02-17-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-02-17T00:00:00.000Z",formattedDate:"February 17, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.33,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2023-02-17-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-02-17-hydra"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-02-17-network"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Integration work",id:"integration-work",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Small documentation improvements",id:"small-documentation-improvements",level:3},{value:"Specifying CIP-1694",id:"specifying-cip-1694",level:3},{value:"Constraint based testing",id:"constraint-based-testing",level:3}],s={toc:u},h="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This past two weeks saw many months worth of ledger changes integrated with the ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-base"),"\nand ",(0,n.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," repositories.\nThe vast majority of the effort involved all the changes to the ledger serialization libraries\n(and the interplay with ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-base"),") which now support proper versioning.\nSupporting the conway ledger era, and in particular allowing the ledger state to transition\nto a whole new system of governance, also played a noticeable part in the integration."),(0,n.kt)("p",null,"Besides the integration work, the team continues to address technical debt, improve the\ndocumentation, make our testing infrastructure better (such as experimenting with better\nnightly tests), and formally specifying more parts of CIP-1694."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"integration-work"},"Integration work"),(0,n.kt)("p",null,"Below is all the integration work completed, which will enable a release to node from\nthe current ledger master. Many thanks to\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/lehins"},"Alexey")," for this colossal undertaking!"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3303"},"pull-3303")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3302"},"pull-3302")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3300"},"pull-3300")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3299"},"pull-3299")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3298"},"pull-3298")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3297"},"pull-3297")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3292"},"pull-3292")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3289"},"pull-3289")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3288"},"pull-3288")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3279"},"pull-3279")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3282"},"pull-3282")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4349"},"pull-4349"))),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("p",null,"Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted\nin the CBOR specification. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3241"},"pull-3241"),"."),(0,n.kt)("p",null,"We now have our ",(0,n.kt)("inlineCode",{parentName:"p"},".cabal")," files being checked for a consistent formatting given by\n",(0,n.kt)("inlineCode",{parentName:"p"},"cabal format")," in our CI. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3286"},"pull-3286"),"."),(0,n.kt)("p",null,"We are still experimenting with better nightly tests for our long running\nproperty based tests. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3276"},"pull-3276")," and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3296"},"pull-3296"),"."),(0,n.kt)("h3",{id:"small-documentation-improvements"},"Small documentation improvements"),(0,n.kt)("p",null,"The hand proofs of the preservation ADA property have been added back to the\nShelley ledger specification. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3295"},"pull-3295"),"."),(0,n.kt)("p",null,"We have clarified how the script integrity hash is computed in the CDDL description.\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3290"},"pull-3290"),"."),(0,n.kt)("h3",{id:"specifying-cip-1694"},"Specifying CIP-1694"),(0,n.kt)("p",null,"Our new formal specifications backed by Agda have seen a lot of progress!\nUpgrading to Agda 2.6.3 fixed our main build infrastructure problems,\nand we no longer have to rely on our custom fork. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/50"},"pull-50"),"."),(0,n.kt)("p",null,"Our progress on formally specifying CIP-1694 can be followed here:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"in Agda: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/40"},"pull-40")),(0,n.kt)("li",{parentName:"ul"},"the corresponding Haskell: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3291"},"pull-3291"))),(0,n.kt)("h3",{id:"constraint-based-testing"},"Constraint based testing"),(0,n.kt)("p",null,"We are still actively working on our new constraint based property testing framework.\nWe have nearly all of the constraints for an entire ledger state\nhooked into generators, and tests that the generators do indeed obey the constraints.\nThe variable count in the constraints is over 100!\nThere is still much work to do on shrinking, making the generators faster,\nand writing actual property tests for the ledger, but the approach still seems viable and\nwe are hopeful that it could replace our trace generators.\nThe WIP can be followed here: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3219"},"pull-3219"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f2deb2f1.b1733abd.js b/assets/js/f2deb2f1.b1733abd.js new file mode 100644 index 00000000000..c8b9d00307c --- /dev/null +++ b/assets/js/f2deb2f1.b1733abd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[82164],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,h=d["".concat(p,".").concat(m)]||d[m]||c[m]||o;return a?r.createElement(h,l(l({ref:t},u),{},{components:a})):r.createElement(h,l({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s<o;s++)l[s]=a[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},80599:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"SRE Team Update",slug:"2023-11-10-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-11-10-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-10-sre.md",source:"@site/blog/2023-11-10-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-11-10T00:00:00.000Z",formattedDate:"November 10, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:2.225,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-11-10-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-10-hydra"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-11-09-db-sync"}},p={authorsImageUrls:[void 0]},s=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Iohk-nix",id:"iohk-nix",level:3},{value:"Sanchonet-demo",id:"sanchonet-demo",level:3}],u={toc:s},d="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,n.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground"},"cardano-playground")," stack")),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"capkgs"},"Capkgs"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Minor bug fix and db-sync sanchonet package update: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/b1f1cbd...994696f"},"capkgs-compare"))),(0,n.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"General migration support PR for cardano-world to cardano-playground ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/18"},"cardano-parts-pull-18"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground"),(0,n.kt)("li",{parentName:"ul"},"Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes"),(0,n.kt)("li",{parentName:"ul"},"Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains"),(0,n.kt)("li",{parentName:"ul"},"The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state"),(0,n.kt)("li",{parentName:"ul"},"The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable"),(0,n.kt)("li",{parentName:"ul"},"Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0"),(0,n.kt)("li",{parentName:"ul"},"For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true"),(0,n.kt)("li",{parentName:"ul"},"Template updates include:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds optional TF AZ declaration on ec2 resources"),(0,n.kt)("li",{parentName:"ul"},"Adds a cardano node p2p dashboard to the grafana cloud stack"),(0,n.kt)("li",{parentName:"ul"},"Adds a dbsync pool performance analysis query"),(0,n.kt)("li",{parentName:"ul"},"Updates python distribute and delegation scripts from world for playground compatibility"),(0,n.kt)("li",{parentName:"ul"},"Starts a python script lib to reduce shared code among the python scripts"),(0,n.kt)("li",{parentName:"ul"},"Several justfile improvements and new recipes"))),(0,n.kt)("li",{parentName:"ul"},"More detail is available in the PR description"))),(0,n.kt)("li",{parentName:"ul"},"Update submit action script for 8.6 ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/19"},"cardano-parts-pull-19")),(0,n.kt)("li",{parentName:"ul"},"Update scripts for 8.6.0-pre ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/21"},"cardano-parts-pull-21"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Fixes subcommand names based on ERA_CMD"),(0,n.kt)("li",{parentName:"ul"},"Adds deposits to some commands"),(0,n.kt)("li",{parentName:"ul"},"Separates CC cold/hot key generation as host authorization has to occur after action is approved"),(0,n.kt)("li",{parentName:"ul"},"CC voting enabled in vote job")))),(0,n.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migration PR to largely complete the network migration from cardano-world to cardano-playground: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/5"},"cardano-playground-pull-5"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Adds re-spun private chain network"),(0,n.kt)("li",{parentName:"ul"},"Migrates shelley-qa chain network from world"),(0,n.kt)("li",{parentName:"ul"},"Justfile improvements and new recipes"),(0,n.kt)("li",{parentName:"ul"},"Improve concurrent environment chain support"),(0,n.kt)("li",{parentName:"ul"},"More detail is available in the PR description")))),(0,n.kt)("h3",{id:"iohk-nix"},"Iohk-nix"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Migration to play: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/iohk-nix/pull/561"},"iohk-nix-pull-561"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org"),(0,n.kt)("li",{parentName:"ul"},"Remove deprecated cardano-lib p2p network environment"),(0,n.kt)("li",{parentName:"ul"},"Update sanchonet chain with respin changes"),(0,n.kt)("li",{parentName:"ul"},"Update private chain with respin changes"),(0,n.kt)("li",{parentName:"ul"},"Bump private and shelley-qa chains to sanchonet equivalent conway genesis"),(0,n.kt)("li",{parentName:"ul"},"Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing")))),(0,n.kt)("h3",{id:"sanchonet-demo"},"Sanchonet-demo"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update for cardano-node 8.6.0-pre demo: ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/sanchonet-demo/commit/b54da94057ac0949421918208fd04795d029447d"},"sanchonet-demo-commit"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f302e248.841b73d3.js b/assets/js/f302e248.841b73d3.js new file mode 100644 index 00000000000..b3e2bb2d5d4 --- /dev/null +++ b/assets/js/f302e248.841b73d3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83214],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(67294);function o(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function r(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?r(Object(a),!0).forEach((function(e){o(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,o=function(t,e){if(null==t)return{};var a,n,o={},r=Object.keys(t);for(n=0;n<r.length;n++)a=r[n],e.indexOf(a)>=0||(o[a]=t[a]);return o}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n<r.length;n++)a=r[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(o[a]=t[a])}return o}var p=n.createContext({}),u=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},c=function(t){var e=u(t.components);return n.createElement(p.Provider,{value:e},t.children)},d="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},h=n.forwardRef((function(t,e){var a=t.components,o=t.mdxType,r=t.originalType,p=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),d=u(a),h=o,s=d["".concat(p,".").concat(h)]||d[h]||m[h]||r;return a?n.createElement(s,l(l({ref:e},c),{},{components:a})):n.createElement(s,l({ref:e},c))}));function s(t,e){var a=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var r=a.length,l=new Array(r);l[0]=h;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[d]="string"==typeof t?t:o,l[1]=i;for(var u=2;u<r;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},31079:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>i,toc:()=>u});var n=a(87462),o=(a(67294),a(3905));const r={title:"Node API & CLI Team Update",slug:"2023-02-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-02-22-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-22-node-cli-api.md",source:"@site/blog/2023-02-22-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-02-22T00:00:00.000Z",formattedDate:"February 22, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.385,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-02-22-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-02-22-consensus"},nextItem:{title:"DB-sync Team Update",permalink:"/cardano-updates/2023-02-21-db-sync"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Completed",id:"completed",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"In Progress",id:"in-progress",level:2},{value:"Documentation",id:"documentation",level:2},{value:"CI & project mainteance",id:"ci--project-mainteance",level:2},{value:"cardano-cli",id:"cardano-cli-1",level:3},{value:"cardano-api",id:"cardano-api-1",level:3},{value:"cardano-node",id:"cardano-node-1",level:3},{value:"cardano-testnet",id:"cardano-testnet-1",level:3}],c={toc:u},d="wrapper";function m(t){let{components:e,...a}=t;return(0,o.kt)(d,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"2023-02-22---2023-03-07"},"2023-02-22 - 2023-03-07"),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"General bug fixes "),(0,o.kt)("h2",{id:"completed"},"Completed"),(0,o.kt)("h3",{id:"docs"},"docs"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4882"},"Fix some markdown links")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4881"},"Update changelog with PR4788 changes"))),(0,o.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,o.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,o.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4761"},"Fix bug in hash computation in cardano-cli genesis create-cardano")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4636"},"Cleanup exports of cardano-testnet")),(0,o.kt)("li",{parentName:"ul"},"[BUGFIX]"," - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4537"},"Stop the cli from changing the bytes in user-supplied data")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4625"},"Handle pipes in cardano-cli")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4753"},"Export SubmitResult from Cardano.Api"))),(0,o.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4901"},"Remove pattern Tx"))),(0,o.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4263"},"Stop running CI when the only changes are to docs"))),(0,o.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,o.kt)("h2",{id:"in-progress"},"In Progress"),(0,o.kt)("h2",{id:"documentation"},"Documentation"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4949"},"Fix path to mkfiles.sh script in documentation"))),(0,o.kt)("h2",{id:"ci--project-mainteance"},"CI & project mainteance"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4932"},"New build complete job")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4764"},"Update ouroboros-network"))),(0,o.kt)("h3",{id:"cardano-cli-1"},"cardano-cli"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3819"},"Debug output for transaction submit")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4713"},"Fully remove the cli intermediate TxBody format")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4659"},"Render consistent plutus script failure output")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4666"},"Read network ID from environment")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4647"},"CLI option to append additional signatures to a transactions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"Cardano ping")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4777"},"Better error message for query utxo on oops")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4910"},"New --node-socket-path cli option")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4909"},"Fix qKesKesKeyExpiry to not always be null")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4880"},"Detect invalid counter and certificate")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4823"},"Straight line code for tx commands")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4664"},"New cardano-cli ping command.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4655"},"Move cardano-ping from ouroboros-network to cardano-node project"))),(0,o.kt)("h3",{id:"cardano-api-1"},"cardano-api"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4450"},"Auto-balance multiasset transactions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4763"},"Remove simple script distinction")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4941"},"Combinators for TxBodyCon\u017btent and related types")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4903"},"Reduce number of calls to toLedgerPParams")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4825"},"Better error message for query utxo without oops 2"))),(0,o.kt)("h3",{id:"cardano-node-1"},"cardano-node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4911"},"Less verbose node-to-client and node-to-node version logging"))),(0,o.kt)("h3",{id:"cardano-testnet-1"},"cardano-testnet"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4845"},"Use Haskell variables for passing values")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4879"},"Re-enable kes-period-info test")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/3783"},"Transaction debug script command"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f3c06362.96ecb4f3.js b/assets/js/f3c06362.96ecb4f3.js new file mode 100644 index 00000000000..345a5bbba37 --- /dev/null +++ b/assets/js/f3c06362.96ecb4f3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[34985],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>d});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,d=p["".concat(l,".").concat(m)]||p[m]||h[m]||o;return n?a.createElement(d,i(i({ref:t},c),{},{components:n})):a.createElement(d,i({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var u=2;u<o;u++)i[u]=n[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},22460:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Q2 2023 Update",slug:"2023-Q2-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/quarterly/2023-Q2-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/quarterly/2023-Q2-consensus.md",source:"@site/quarterly/2023-Q2-consensus.md",title:"Consensus Q2 2023 Update",description:"2023-04 -- 2023-06",date:"2023-12-07T21:19:58.000Z",formattedDate:"December 7, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/quarterly/tags/consensus"}],readingTime:4.47,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Q2 2023 Update",slug:"2023-Q2-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},nextItem:{title:"Network Q2 2023 Update",permalink:"/cardano-updates/quarterly/2023-Q2-network"}},l={authorsImageUrls:[void 0]},u=[{value:"2023-04 -- 2023-06",id:"2023-04----2023-06",level:2},{value:"Main achievements",id:"main-achievements",level:3},{value:"UTxO HD",id:"utxo-hd",level:4},{value:"Genesis",id:"genesis",level:4},{value:"Support",id:"support",level:4},{value:"Technical debt",id:"technical-debt",level:4},{value:"Fostering collaboration",id:"fostering-collaboration",level:4},{value:"Next steps",id:"next-steps",level:3},{value:"UTxO HD",id:"utxo-hd-1",level:4},{value:"Genesis",id:"genesis-1",level:4}],c={toc:u},p="wrapper";function h(e){let{components:t,...o}=e;return(0,r.kt)(p,(0,a.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"2023-04----2023-06"},"2023-04 -- 2023-06"),(0,r.kt)("h3",{id:"main-achievements"},"Main achievements"),(0,r.kt)("h4",{id:"utxo-hd"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We finished a major prototype refactoring, which includes:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"A better and finer grained DB lock mechanism."),(0,r.kt)("li",{parentName:"ul"},"Elimination of race conditions."),(0,r.kt)("li",{parentName:"ul"},"Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance."),(0,r.kt)("li",{parentName:"ul"},"Architectural simplifications and performance improvements."))),(0,r.kt)("li",{parentName:"ul"},"We implemented a new package to support db-sync integration with UTxO-HD."),(0,r.kt)("li",{parentName:"ul"},"We ran another set of ad-hoc benchmarks:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We uncovered a performance regression on the Network component when using ",(0,r.kt)("inlineCode",{parentName:"li"},"GHC-9.2/9.4"),"."),(0,r.kt)("li",{parentName:"ul"},"The synchronization and replay speed are as expected."),(0,r.kt)("li",{parentName:"ul"},"However, we uncovered memory consumption issues (see figure below).",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The in-memory backend is consuming more memory than the baseline."),(0,r.kt)("li",{parentName:"ul"},"The LMDB backend shows an unexpected memory usage peak."),(0,r.kt)("li",{parentName:"ul"},"Investigation on these issues is ongoing."))))),(0,r.kt)("li",{parentName:"ul"},"We integrated the latest changes in ",(0,r.kt)("inlineCode",{parentName:"li"},"main")," branch.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"This required a re-design of the mempool to include the mempool fairness\nimprovement.")))),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(49718).Z,width:"2500",height:"1700"})),(0,r.kt)("h4",{id:"genesis"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The Genesis work for this PI focused on an high-priority issue from the IOG Researchers' feedback on the proposal.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"This particular question was not anticipated when the Q2 PI was planned."),(0,r.kt)("li",{parentName:"ul"},"As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized."),(0,r.kt)("li",{parentName:"ul"},"That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package."))),(0,r.kt)("li",{parentName:"ul"},"The IOG Researchers' feedback on the design was very valuable. It had two primary effects."),(0,r.kt)("li",{parentName:"ul"},'Outcome 1: We re-introduced distinct behaviors when the node is "syncing" versus when it is "caught up".',(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated."),(0,r.kt)("li",{parentName:"ul"},"The additional design complexity is relatively small."))),(0,r.kt)("li",{parentName:"ul"},"Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era."),(0,r.kt)("li",{parentName:"ul"},"All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras."),(0,r.kt)("li",{parentName:"ul"},"Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later."),(0,r.kt)("li",{parentName:"ul"},"The primary invention was a model for bounding how much benefit the adversary's long-range attack could possibly gain from Praos's natural short forks."))),(0,r.kt)("li",{parentName:"ul"},"Relevant questions that the IOG Researchers are still assessing.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"These do not block the Genesis implementation, but do affect the ultimate values of specific parameters."),(0,r.kt)("li",{parentName:"ul"},"Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?"),(0,r.kt)("li",{parentName:"ul"},"Question 2: what is the upper bound on how much grinding can improve the adversary's leader schedule within some Genesis window?")))),(0,r.kt)("h4",{id:"support"},"Support"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We performed an analysis on number of file descriptors used by Consensus, this\ninformation can be used by the node operators to check if the number of file\ndescriptors they want to support are enough, thus improving the user (eg node\noperator) experience."),(0,r.kt)("li",{parentName:"ul"},"We implemented a mempool fairness improvement, by which transactions are\nguaranteed to be processed irrespective of their size.")),(0,r.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We fixed a bug in followers logic, which was discovered by our ",(0,r.kt)("inlineCode",{parentName:"li"},"QuickCheck"),"\nproperty tests."),(0,r.kt)("li",{parentName:"ul"},"We created an ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/68"},"immutable DB\nserver"),". This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results."),(0,r.kt)("li",{parentName:"ul"},"We created a ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/70"},(0,r.kt)("inlineCode",{parentName:"a"},"db-truncater"))," tool, which can be used in disaster recovery and benchmarking scenarios."),(0,r.kt)("li",{parentName:"ul"},"We created a ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/161"},"benchmarks comparison tool")," that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance ",(0,r.kt)("em",{parentName:"li"},"improvements")," introduced by the Ledger team in version ",(0,r.kt)("inlineCode",{parentName:"li"},"0.6.0.0")," of Consensus wrt version ",(0,r.kt)("inlineCode",{parentName:"li"},"0.5.0.0"),".")),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(23425).Z,width:"1840",height:"1372"})),(0,r.kt)("h4",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We released ",(0,r.kt)("inlineCode",{parentName:"li"},"fs-sim")," as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project."),(0,r.kt)("li",{parentName:"ul"},"We migrated the consensus code to a ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus"},"new repository"),", splitting\nit from the ",(0,r.kt)("inlineCode",{parentName:"li"},"ouroboros-network")," repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases)."),(0,r.kt)("li",{parentName:"ul"},"We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users)."),(0,r.kt)("li",{parentName:"ul"},"We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.")),(0,r.kt)("h3",{id:"next-steps"},"Next steps"),(0,r.kt)("h4",{id:"utxo-hd-1"},"UTxO HD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We will ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/28"},"get UTxO-HD ready for handover"),".")),(0,r.kt)("h4",{id:"genesis-1"},"Genesis"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work.")))}h.isMDXComponent=!0},23425:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2023-Q2-beacon-graph-ded65e814bfe6d927faa1c5c66bbbfad.png"},49718:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks-74f9d76c2602f09652f584cc4d6a0962.png"}}]); \ No newline at end of file diff --git a/assets/js/f452efc5.b66888d2.js b/assets/js/f452efc5.b66888d2.js new file mode 100644 index 00000000000..120d79d1b31 --- /dev/null +++ b/assets/js/f452efc5.b66888d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[44281],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=c(n),d=r,f=u["".concat(p,".").concat(d)]||u[d]||m[d]||o;return n?a.createElement(f,i(i({ref:t},s),{},{components:n})):a.createElement(f,i({ref:t},s))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var c=2;c<o;c++)i[c]=n[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},89556:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"Goedel Team Update",slug:"2023-07-07-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-07-07-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-07-goedel.md",source:"@site/blog/2023-07-07-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-07-07T00:00:00.000Z",formattedDate:"July 7, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.42,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-07-07-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-07-07-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-07-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},u="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"This sprint the teams have been working on finalising their ICE papers\nfor publication in EPTCS, formalising concensus, and investigating chain\nsync."),(0,r.kt)("h2",{id:"details"},"Details"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Preparing final versions of ICE papers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Reviewing the chain sync design and documentation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Refactoring the thorn calculus")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"First draft of Praos specification")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Developing bounding factors on timeouts"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f4548430.7eb98ed2.js b/assets/js/f4548430.7eb98ed2.js new file mode 100644 index 00000000000..4c47bccaaa5 --- /dev/null +++ b/assets/js/f4548430.7eb98ed2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[93789],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),s=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),h=s(r),c=n,d=h["".concat(p,".").concat(c)]||h[c]||m[c]||i;return r?a.createElement(d,o(o({ref:t},u),{},{components:r})):a.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<i;s++)o[s]=r[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},84374:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const i={title:"Mithril Team Update",slug:"2023-09-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-09-27-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-27-mithril.md",source:"@site/blog/2023-09-27-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-09-27T00:00:00.000Z",formattedDate:"September 27, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.975,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-09-27-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-09-29-sre"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-09-26-node-cli-api"}},p={authorsImageUrls:[void 0]},s=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:s},h="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(h,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team has released a new distribution ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/releases/tag/2337.0"},(0,n.kt)("inlineCode",{parentName:"a"},"2337.0")),", which includes the following enhancements: support for ",(0,n.kt)("inlineCode",{parentName:"p"},"zstandard")," compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator."),(0,n.kt)("p",null,"They also completed the refactoring and standardization of the errors in the Mithril nodes and published an ",(0,n.kt)("a",{parentName:"p",href:"https://mithril.network/doc/adr/6"},"Architectural decision record")," on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure."),(0,n.kt)("p",null,"Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Release new ",(0,n.kt)("inlineCode",{parentName:"strong"},"2337")," distribution")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1219"},"#1219")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Errors refactoring")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/798"},"#798")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Client traffic creates performance bottleneck in aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1207"},"#1207")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Record statistics about the downloaded snapshot in the aggregator")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1127"},"#1127")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Create a SPO checklist for KES keys update")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1267"},"#1267")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Spike: Run client in browser WASM PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1254"},"#1254")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Benchmark aggregator performances")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1220"},"#1220")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Activate Cloudflare protection of infrastructure")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1230"},"#1230"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f47d214c.7885e24c.js b/assets/js/f47d214c.7885e24c.js new file mode 100644 index 00000000000..3a037c7f03d --- /dev/null +++ b/assets/js/f47d214c.7885e24c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[55791],{52078:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/cip-1694","page":1,"postsPerPage":5,"totalPages":1,"totalCount":1,"blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/f48535bf.29fcdfb3.js b/assets/js/f48535bf.29fcdfb3.js new file mode 100644 index 00000000000..47ecad4d22a --- /dev/null +++ b/assets/js/f48535bf.29fcdfb3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[45821],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),s=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),h=s(a),c=n,m=h["".concat(u,".").concat(c)]||h[c]||d[c]||i;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=c;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[h]="string"==typeof e?e:n,o[1]=l;for(var s=2;s<i;s++)o[s]=a[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},99684:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-06-16-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-06-16-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-16-hydra.md",source:"@site/blog/2023-06-16-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-16T00:00:00.000Z",formattedDate:"June 16, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.815,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-16-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-06-23-sre"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-15-mithril"}},u={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],p={toc:s},h="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team focused their efforts on continuing to investigate and\nexperiment operating a head on mainnet. They collected several bugs and issues\nand worked on fixing them. Now the team is soon to release a new version,\n0.11.0, which comes with a lot of improvements and bug fixes."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Restored and fixed a bug which stalled our head on mainnet ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/927"},"#927")),(0,n.kt)("li",{parentName:"ul"},"Solved one user issue ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/914"},"#914")),(0,n.kt)("li",{parentName:"ul"},"Reduced significantly local state size and logs by removing the full scripts from it ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/928"},"#928")),(0,n.kt)("li",{parentName:"ul"},"(pending review) Reduced snapshot size in the API, by only including tx ids ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/922"},"#922"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"New release 0.11.0"),(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting."),(0,n.kt)("li",{parentName:"ul"},"Fix some minor bugs discovered when operating our head on mainnet"),(0,n.kt)("li",{parentName:"ul"},"Complete journey for external commits using multiple script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"Publish benchmarks and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f4cb7e87.0c2f8fe1.js b/assets/js/f4cb7e87.0c2f8fe1.js new file mode 100644 index 00000000000..68736d4f49d --- /dev/null +++ b/assets/js/f4cb7e87.0c2f8fe1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70085],{76777:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/mithril/page/2","page":2,"postsPerPage":5,"totalPages":7,"totalCount":34,"previousPage":"/cardano-updates/tags/mithril","nextPage":"/cardano-updates/tags/mithril/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/f51bb76d.7f54a00b.js b/assets/js/f51bb76d.7f54a00b.js new file mode 100644 index 00000000000..8cd3a397e7d --- /dev/null +++ b/assets/js/f51bb76d.7f54a00b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[12626],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(n),u=r,g=d["".concat(c,".").concat(u)]||d[u]||p[u]||i;return n?a.createElement(g,o(o({ref:t},m),{},{components:n})):a.createElement(g,o({ref:t},m))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},21772:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const i={title:"Performance & tracing update",slug:"2023-03-08-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},o="High level summary",l={permalink:"/cardano-updates/2023-03-08-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-performance-and-tracing.md",source:"@site/blog/2023-03-08-performance-and-tracing.md",title:"Performance & tracing update",description:"* Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.",date:"2023-03-08T00:00:00.000Z",formattedDate:"March 8, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:1.805,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & tracing update",slug:"2023-03-08-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-08-node-cli-api"},nextItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-03-03-crypto"}},c={authorsImageUrls:[void 0]},s=[{value:"1.35.6 release",id:"1356-release",level:3},{value:"Analysis pipeline",id:"analysis-pipeline",level:3},{value:"Open Sourcing",id:"open-sourcing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:s},d="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate."),(0,r.kt)("li",{parentName:"ul"},"New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users."),(0,r.kt)("li",{parentName:"ul"},"Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination."),(0,r.kt)("li",{parentName:"ul"},"Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation."),(0,r.kt)("li",{parentName:"ul"},"Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.")),(0,r.kt)("h1",{id:"performance"},"Performance"),(0,r.kt)("h3",{id:"1356-release"},"1.35.6 release"),(0,r.kt)("p",null,"Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health."),(0,r.kt)("h3",{id:"analysis-pipeline"},"Analysis pipeline"),(0,r.kt)("p",null,"Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better\ndifferentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance.\nAdditionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking\ndata more easily accessible."),(0,r.kt)("h3",{id:"open-sourcing"},"Open Sourcing"),(0,r.kt)("p",null,"As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable\nthird parties to make use of that data much more easily, by having reliable guidelines and a working example."),(0,r.kt)("h1",{id:"tracing"},"Tracing"),(0,r.kt)("p",null,"The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make\nthe switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process."),(0,r.kt)("h1",{id:"infrastructure"},"Infrastructure"),(0,r.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,r.kt)("p",null,"The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f522921c.3a805440.js b/assets/js/f522921c.3a805440.js new file mode 100644 index 00000000000..a1aabd35076 --- /dev/null +++ b/assets/js/f522921c.3a805440.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[75556],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),u=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),h=u(a),d=n,c=h["".concat(l,".").concat(d)]||h[d]||m[d]||i;return a?r.createElement(c,o(o({ref:t},s),{},{components:a})):r.createElement(c,o({ref:t},s))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[h]="string"==typeof e?e:n,o[1]=p;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},55660:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-06-02-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,p={permalink:"/cardano-updates/2023-06-02-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-02-hydra.md",source:"@site/blog/2023-06-02-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-02T00:00:00.000Z",formattedDate:"June 2, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.215,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-02-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-06-07-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-01-mithril"}},l={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has put their effort on finding solutions on many\ndifferent problems, such as our broken head on mainnet\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/897"},"#897"),", our fragile monthly\nreport publications on the website and implementing ","\u201c","Option A","\u201d"," for\nexternal commits ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),".\nAlthough most of these items are still open, huge progress has been made. To\naccelerate the investigation, they improved their logging to give more precise\nerrors when a transition requirement fails, and to reduce duplication on effets\nlogged content. Last but not least, the team is exploring formal methods and\nattended a workshop on formalizing cryptographic protocols in Agda."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Continued investigating broken head and opened an issue to keep track ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/897"},"#897"),"."),(0,n.kt)("p",{parentName:"li"},"As part of this issue, improvements were made to the node logs:"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Give a precise error when a transition requirement fails ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/895"},"#895"),".")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Reduce duplication for effects logged content by using sequential eventId and effectId pair ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/896"},"#896"),".")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Fixed references in the hydra specification ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/893"},"#893"),".")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Attended a workshop on formal methods and crypto in Agda."))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Investigate and re-open our team-internal head on mainnet."),(0,n.kt)("li",{parentName:"ul"},"Improve and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete journey for external commits implementing ","\u201c","Option A","\u201d"," and start implementing ","\u201c","Option B","\u201d"," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),"."),(0,n.kt)("li",{parentName:"ul"},"Authenticate network messages ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"#727"),"."),(0,n.kt)("li",{parentName:"ul"},"Add hydra as tool to developr platform ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/872"},"#872"),"."),(0,n.kt)("li",{parentName:"ul"},"Fix monthly report publication on docs website.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f530b85c.90d61588.js b/assets/js/f530b85c.90d61588.js new file mode 100644 index 00000000000..b58582fe757 --- /dev/null +++ b/assets/js/f530b85c.90d61588.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[49605],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),u=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),s=r,h=d["".concat(p,".").concat(s)]||d[s]||m[s]||o;return a?n.createElement(h,l(l({ref:t},c),{},{components:a})):n.createElement(h,l({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var u=2;u<o;u++)l[u]=a[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},35118:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const o={title:"Node API & CLI Team Update",slug:"2023-04-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},l="Node-Api-Cli Update",i={permalink:"/cardano-updates/2023-04-05-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-04-05-node-cli-api.md",source:"@site/blog/2023-04-05-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-04-05T00:00:00.000Z",formattedDate:"April 5, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.315,hasTruncateMarker:!1,authors:[{name:"Jordan Millar",title:"Node Team Lead",url:"https://github.com/Jimbo4350",imageURL:"https://github.com/Jimbo4350.png",key:"Jimbo4350"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-04-05-node-cli-api",authors:"Jimbo4350",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-04-05-consensus"},nextItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-04-05-performance-and-tracing"}},p={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3},{value:"Developer experience",id:"developer-experience",level:3},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3}],c={toc:u},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-04-05---2023-04-19"},"2023-04-05 - 2023-04-19"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Introduce new governance commands create, answer and verify. This allows us to have onchain polls."),(0,r.kt)("li",{parentName:"ul"},"Begin making changes in cardano-api to accomodate for CIP-1694"),(0,r.kt)("li",{parentName:"ul"},"Rename ",(0,r.kt)("inlineCode",{parentName:"li"},"TestEnableDevelopmentHardForkEras")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"ExperimentalHardForksEnabled")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"TestEnableDevelopmentNetworkProtocols")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"ExperimentalProtocolsEnabled")),(0,r.kt)("li",{parentName:"ul"},"Various bug fixes and improvements ")),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"),(0,r.kt)("h3",{id:"developer-experience"},"Developer experience"),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5112"},"Add new interim governance commands: {create, answer, verify}-poll")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5061"},"Remove --stake-address option from stake-address build")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5059"},"Frozen callstack for checkTextEnvelopeFormat function")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5053"},"#5052 Remove reading protocol parameters from Shelley genesis file")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5046"},"Move parsers to reusable location")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4910"},"New --socket-path cli option")," ")),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5108"},"CIP-1694 make space for DRep certificates")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5105"},"File type to track the content and direction of files")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5087"},"Fix import warning")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5086"},"Expose UsingRawBytes et al types")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5085"},"Expose SerialiseAsRawBytesError in Cardano.Api")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5072"},"Introduce new AnyShelleyBasedEra type and simplify CDDL tests.")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5071"},"New genCardanoKeyWitness function")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5069"},"Replace roundtripCBOR with trippingCbor")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5064"},"Remove non-round-trippable value TxInsReferenceNone for babbage onwards in generator")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5063"},"Improve roundtrip functions to report annotations on callsite")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5057"},"Define Functor instance for FileError")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5049"},"Split serialisation from IO")," ")),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5115"},"Master build failure fixes")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5106"},"Allow renamed fields to exist if values the same")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5091"},"workbench: updates")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5084"},"Delete duplicate packages sort packages and imports")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4341"},"Rename TestEnableDevelopmentHardForkEras and TestEnableDevelopmentNetworkProtocols")," ")),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5110"},"Additional check for not-leader slots in LeadershipSchedule tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5099"},"Fix epochLength and securityParam to conform to the formula 10 * k / f")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5083"},"Ergonomic directory creation code in tests")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5036"},"Default Cardano.Testnet to NodeLoggingFormatAsJson")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5013"},"Integrate latest ledger dependencies"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f55d3e7a.f786acd2.js b/assets/js/f55d3e7a.f786acd2.js new file mode 100644 index 00000000000..3bc9b87ddb2 --- /dev/null +++ b/assets/js/f55d3e7a.f786acd2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[54193],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),u=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(r),y=a,m=c["".concat(l,".").concat(y)]||c[y]||d[y]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=y;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:a,i[1]=s;for(var u=2;u<o;u++)i[u]=r[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},78030:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var n=r(87462),a=(r(67294),r(3905));const o={sidebar_position:5},i="Deploy your site",s={unversionedId:"tutorial-basics/deploy-your-site",id:"tutorial-basics/deploy-your-site",title:"Deploy your site",description:"Docusaurus is a static-site-generator (also called Jamstack).",source:"@site/docs/tutorial-basics/deploy-your-site.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/deploy-your-site",permalink:"/cardano-updates/docs/tutorial-basics/deploy-your-site",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"defaultSidebar",previous:{title:"Markdown Features",permalink:"/cardano-updates/docs/tutorial-basics/markdown-features"},next:{title:"Congratulations!",permalink:"/cardano-updates/docs/tutorial-basics/congratulations"}},l={},u=[{value:"Build your site",id:"build-your-site",level:2},{value:"Deploy your site",id:"deploy-your-site-1",level:2}],p={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"deploy-your-site"},"Deploy your site"),(0,a.kt)("p",null,"Docusaurus is a ",(0,a.kt)("strong",{parentName:"p"},"static-site-generator")," (also called ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("a",{parentName:"strong",href:"https://jamstack.org/"},"Jamstack")),")."),(0,a.kt)("p",null,"It builds your site as simple ",(0,a.kt)("strong",{parentName:"p"},"static HTML, JavaScript and CSS files"),"."),(0,a.kt)("h2",{id:"build-your-site"},"Build your site"),(0,a.kt)("p",null,"Build your site ",(0,a.kt)("strong",{parentName:"p"},"for production"),":"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"npm run build\n")),(0,a.kt)("p",null,"The static files are generated in the ",(0,a.kt)("inlineCode",{parentName:"p"},"build")," folder."),(0,a.kt)("h2",{id:"deploy-your-site-1"},"Deploy your site"),(0,a.kt)("p",null,"Test your production build locally:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"npm run serve\n")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"build")," folder is now served at ",(0,a.kt)("a",{parentName:"p",href:"http://localhost:3000/"},"http://localhost:3000/"),"."),(0,a.kt)("p",null,"You can now deploy the ",(0,a.kt)("inlineCode",{parentName:"p"},"build")," folder ",(0,a.kt)("strong",{parentName:"p"},"almost anywhere")," easily, ",(0,a.kt)("strong",{parentName:"p"},"for free")," or very small cost (read the ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("a",{parentName:"strong",href:"https://docusaurus.io/docs/deployment"},"Deployment Guide")),")."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f59c978c.51f789b1.js b/assets/js/f59c978c.51f789b1.js new file mode 100644 index 00000000000..32570aa26f8 --- /dev/null +++ b/assets/js/f59c978c.51f789b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46545],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(n),m=r,d=c["".concat(l,".").concat(m)]||c[m]||h[m]||a;return n?o.createElement(d,s(s({ref:t},u),{},{components:n})):o.createElement(d,s({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:r,s[1]=i;for(var p=2;p<a;p++)s[p]=n[p];return o.createElement.apply(null,s)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},22053:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2022-11-30-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2022-11-30-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-30-consensus.md",source:"@site/blog/2022-11-30-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2022-11-30T00:00:00.000Z",formattedDate:"November 30, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.4,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-11-30-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"System Test Team Update",permalink:"/cardano-updates/2022-12-01-system-test"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-11-30-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD prototype",id:"utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:3},{value:"CSJ prototype",id:"csj-prototype",level:3},{value:"New VRF and KES crypto integration",id:"new-vrf-and-kes-crypto-integration",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3}],u={toc:p},c="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"During the past two weeks, the consensus team merged improvements to the monadic\ncursor API that was needed to implement LMDB range reads, which is in turn\nrequired for the implementation of the UTxO HD feature. We added tables to\nseveral tests in for the UTxO HD feature, which increases our confidence in the\ncorrectness of the prototype. The mempool property tests are close to being\ncompleted. Also, we finished the LSM tree tuning algorithm."),(0,r.kt)("p",null,"On the Genesis front we started simplifying the BlockFetch logic with\nCSJ-specific workloads in mind. "),(0,r.kt)("p",null,"We are also documenting the Block Diffusion Pipelining feature, and added a\nhigh-level overview of consensus to the top level documentation of\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"."),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD prototype"),(0,r.kt)("p",null,"We merged the implementation of a monadic cursor API (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"#1"),")) which was\nneeded to solve a bug with LMDB range-reads. After this PR was merged, we focused on\nbridging the gap between the ",(0,r.kt)("inlineCode",{parentName:"p"},"lmdb-simple")," interface and consensus by facilitating\nusing ",(0,r.kt)("inlineCode",{parentName:"p"},"lmdb-simple"),"'s cursor API without ",(0,r.kt)("inlineCode",{parentName:"p"},"Serialise")," constraints (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/3"},"#3"),")."),(0,r.kt)("p",null,"We refactored the backing store property tests to use ",(0,r.kt)("inlineCode",{parentName:"p"},"quickcheck-lockstep"),"\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4081"},"#4081"),")."),(0,r.kt)("p",null,"We added tables to the mock ledger in the UTxO-HD feature branch\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4184"},"#4184"),"). Every test that used to run with ",(0,r.kt)("inlineCode",{parentName:"p"},"SimpleBlocks")," now uses\ntables. This will enable us to exercise the UTxO HD mempool integration by\nleveraging the existing mempool property-tests. The new state-machine\nproperty-tests are still needed for testing the parallel behaviour of the\nmempool."),(0,r.kt)("p",null,"Our work on the mempool state-machine tests revealed the need for improvements\nin the ",(0,r.kt)("inlineCode",{parentName:"p"},"quickcheck-state-machine")," library. Parallel testing assumed that the\nstate machine did not have access to mutable references. However, the mempool\ntests require the use of such mutable references for mocking the ledger\ninterface. As a result, our parallel tests were failing with rather obscure\nmessages. @Jasagredo submitted a pull request (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/stevana/quickcheck-state-machine/pull/12"},"#12"),") that allows for\nnew mutable references to be created at each run of the state machine."),(0,r.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,r.kt)("h3",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,r.kt)("p",null,"We finished the LSM Tree tuning algorithm. We are currently tidying up the code\nand gathering results (i.e., plots and their interpretation)."),(0,r.kt)("h3",{id:"csj-prototype"},"CSJ prototype"),(0,r.kt)("p",null,"We started simplifying the BlockFetch logic with CSJ-specific workloads in mind."),(0,r.kt)("h3",{id:"new-vrf-and-kes-crypto-integration"},"New VRF and KES crypto integration"),(0,r.kt)("p",null,"Started working on supporting new version of ",(0,r.kt)("inlineCode",{parentName:"p"},"StandardCrypto")," which uses compact\nKES and batched VRF (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4151"},"#4151"),")."),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,'We reviewed the existing state of the Block Diffusion Pipelining document. We\nare now working on the "Implementation" section (',(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4020"},"#4020"),")."),(0,r.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("p",null,"We cleared up our understanding of the error dynamics of forecasting\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4146"},"#4146")," and ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4174"},"#4174"),")."),(0,r.kt)("p",null,"We submitted a pull request that adds an overview of consensus to the ",(0,r.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/ouroboros-network/"},"top level\ndocumentation")," of\nouroboros-network (",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4197"},"#4197"),"). This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4197"},"https://github.com/input-output-hk/ouroboros-network/pull/4197")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f5a24224.d169d439.js b/assets/js/f5a24224.d169d439.js new file mode 100644 index 00000000000..9c9377a8a05 --- /dev/null +++ b/assets/js/f5a24224.d169d439.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[71844],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),h=n,m=c["".concat(u,".").concat(h)]||c[h]||d[h]||o;return r?a.createElement(m,i(i({ref:t},s),{},{components:r})):a.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}h.displayName="MDXCreateElement"},66255:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-10-14-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-14-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-14-ledger.md",source:"@site/blog/2022-10-14-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-10-14T00:00:00.000Z",formattedDate:"October 14, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.03,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-10-14-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-14-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-10-05-consensus"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Completed Technical Debt",id:"completed-technical-debt",level:3},{value:"In-progress Technical Debt",id:"in-progress-technical-debt",level:3}],s={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The ledger team is still primarily focused on addressing\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues?q=is%3Aissue+is%3Aopen+label%3A%22%3Acredit_card%3A+technical-debt%22"},"technical"),"\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/3"},"debt"),".\nWe now have the infrastructure for versioning our serialization schemes,\nwhich we continue to put into action.\nWe have made first steps towards getting proper support for the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger repository"),"\n(in particular, we've added nix builds and\ncontinuous integration support).\nWe are wrapping up an investigation of the performance of a critical\nfunction used by the consensus layer for leader checks.\nFinally, we are improving the packaging and versioning of our code."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"completed-technical-debt"},"Completed Technical Debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of\nour code lives in the ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-ledger-shelley")," package, though with hindsight we can say that\nmuch of it should live in ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-ledger-core"),".\nWe continue to move things to ",(0,n.kt)("inlineCode",{parentName:"li"},"cardano-ledger-core"),", and have much more to come. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3059"},"pull-3059"),"]"),(0,n.kt)("li",{parentName:"ul"},"We now have the infrastructure to support ",(0,n.kt)("strong",{parentName:"li"},"versioned")," serialization schemes.\nThe inability to do this has caused us a lot difficulties,\nsuch as [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3003"},"issue-3003"),"], [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2965"},"issue-2965"),"] and [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2444"},"issue-2444"),"].\nWe are still in the process of switching to the versioned serialization scheme\n(such as [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3078"},"pull-3078"),"]),\nbut the infrastructure was completed in [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3063"},"pull-3063"),"]."),(0,n.kt)("li",{parentName:"ul"},"We now have proper nix and CI support for the formal ledger project. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/19"},"pull-19"),"]"),(0,n.kt)("li",{parentName:"ul"},"A separate team is helping bring support for\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP"),"\nto all the cardano-node repositories.\nWe have been helping out with this effort.")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"A separate team continues working on upgrading all the\ncardano-node repositories to work with ghc 9.2.4.\nWe have been helping out with this effort.")),(0,n.kt)("h3",{id:"in-progress-technical-debt"},"In-progress Technical Debt"),(0,n.kt)("p",null,"We also have several fairly large pull-requests in review\nthat we are working on."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"In an on-going attempt to build out a more user-friendly API,\nwe continue to remove ",(0,n.kt)("inlineCode",{parentName:"li"},"HasField")," instances in place of using micro-lenses.\nThe protocol parameters, in particular, are being worked on. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3045"},"pull-3045"),"]"),(0,n.kt)("li",{parentName:"ul"},"We are also renaming record fields to be consistent across the repository. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3062"},"pull-3062"),"]"),(0,n.kt)("li",{parentName:"ul"},"We are now cleaning up all the work we did to understand the performance\nof the TICKF transition. We have some improvements to the computatation\nas well. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3068"},"pull-3068"),"]"),(0,n.kt)("li",{parentName:"ul"},"We are adding more documentation, in particular to our ",(0,n.kt)("inlineCode",{parentName:"li"},"Twiddler")," functionality. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3073"},"pull-3073"),"]"),(0,n.kt)("li",{parentName:"ul"},"The formal ledger is adding support for finite set theory. [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/formal-ledger-specifications/pull/20"},"pull-20"),"]")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f5b1250e.5a405e64.js b/assets/js/f5b1250e.5a405e64.js new file mode 100644 index 00000000000..91a8652173b --- /dev/null +++ b/assets/js/f5b1250e.5a405e64.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[1129],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},h=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),u=p(a),c=n,m=u["".concat(s,".").concat(c)]||u[c]||d[c]||o;return a?r.createElement(m,l(l({ref:t},h),{},{components:a})):r.createElement(m,l({ref:t},h))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=c;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:n,l[1]=i;for(var p=2;p<o;p++)l[p]=a[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},25013:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-08-04-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-04-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-04-hydra.md",source:"@site/blog/2023-08-04-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-08-04T00:00:00.000Z",formattedDate:"August 4, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.06,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-08-04-hydra",authors:["ch1bo"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-04-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-08-04-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},u="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team achieved notable progress in various aspects of the\nproject. The team updated the use case section for auctions on the ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/unstable/use-cases/"},"/unstable"),"\nbranch of the website, improving the understanding of Hydra","\u2019","s applicability."),(0,n.kt)("p",null,"From the development side, the team successfully completed event-sourced\npersistence, a key enhancement in the project","\u2019","s architecture which improves\noff-chain transaction processing performance. They also added a\n","\u201c","submit-transaction","\u201d"," endpoint to the API."),(0,n.kt)("p",null,"In addition to project-related progress, the team actively engaged in community\nreviews for several catalyst proposals related to Hydra and Mithril,\ncontributing to the wider Cardano ecosystem."),(0,n.kt)("p",null,"Finally, the full report for the month of July was also published ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2023-07"},"here"),"."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Published the ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-07"},"monthly report for July")),(0,n.kt)("li",{parentName:"ul"},"Updated the use case section for auctions (published on ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/use-cases/"},"/unstable")," branch)"),(0,n.kt)("li",{parentName:"ul"},"Completed event sourced persistence ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/913"},"#913")),(0,n.kt)("li",{parentName:"ul"},"Added a ","\u201c","submit-transaction","\u201d"," endpoint to the API ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/966"},"#966")),(0,n.kt)("li",{parentName:"ul"},"Community reviews for several catalyst proposals related to Hydra and Mithril"),(0,n.kt)("li",{parentName:"ul"},"Created a network testing tool (hydra-net) ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/1006"},"#1006"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Update hydra-node to work with cardano-node version 8.x"),(0,n.kt)("li",{parentName:"ul"},"Remove the internal commit functionality"),(0,n.kt)("li",{parentName:"ul"},"Release version 0.12.0"),(0,n.kt)("li",{parentName:"ul"},"Update & streamline tutorial to work with latest version of hydra-node")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f5d27437.a48dcb5c.js b/assets/js/f5d27437.a48dcb5c.js new file mode 100644 index 00000000000..aeb287af41e --- /dev/null +++ b/assets/js/f5d27437.a48dcb5c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[85351],{71522:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/51","page":51,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/50","nextPage":"/cardano-updates/page/52","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/f5e5d1cf.409624be.js b/assets/js/f5e5d1cf.409624be.js new file mode 100644 index 00000000000..b8178ae4ff8 --- /dev/null +++ b/assets/js/f5e5d1cf.409624be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[51410],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),h=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=h(e.components);return i.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=h(r),c=n,d=p["".concat(s,".").concat(c)]||p[c]||m[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var h=2;h<a;h++)o[h]=r[h];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},45256:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>h});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2022-11-18-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2022-11-18-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-18-mithril.md",source:"@site/blog/2022-11-18-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2022-11-18T00:00:00.000Z",formattedDate:"November 18, 2022",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.35,hasTruncateMarker:!1,authors:[{name:"I\xf1igo Querejeta Azurmendi",title:"Cardano Lead Cryptography Engineer",url:"https://github.com/iquerejeta",imageURL:"https://github.com/iquerejeta.png",key:"iquerejeta"}],frontMatter:{title:"Mithril Team Update",slug:"2022-11-18-mithril",authors:"iquerejeta",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-18-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2022-11-16-consensus"}},s={authorsImageUrls:[void 0]},h=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:h},p="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks. "),(0,n.kt)("p",null,"Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Released a new Mithril distribution ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/releases/tag/2246.1"},"2246.1")),(0,n.kt)("li",{parentName:"ul"},"Completed the first stage of the store migrations process ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/562"},"#562")),(0,n.kt)("li",{parentName:"ul"},"Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/565"},"#565")),(0,n.kt)("li",{parentName:"ul"},"Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/576"},"#576")),(0,n.kt)("li",{parentName:"ul"},"Prepared a Daedalus synchronization benchmark video with/without Mithril ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/606"},"#606")),(0,n.kt)("li",{parentName:"ul"},"Upgraded the Cardano nodes of the testing Mithril networks to ",(0,n.kt)("inlineCode",{parentName:"li"},"1.35.4")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/594"},"#594")),(0,n.kt)("li",{parentName:"ul"},"Worked on implementing SPO tests nodes on testing Mithril networks ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/563"},"#563")),(0,n.kt)("li",{parentName:"ul"},"Worked on the CIP design for Mithril piggybacked on the Cardano network layer ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/588"},"#588")),(0,n.kt)("li",{parentName:"ul"},"Worked on the refactorizaton of the aggregator multi signer engine ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/398"},"#398"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f5f103cc.b1cf07d2.js b/assets/js/f5f103cc.b1cf07d2.js new file mode 100644 index 00000000000..571e2139c38 --- /dev/null +++ b/assets/js/f5f103cc.b1cf07d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67170],{53162:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/5","page":5,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/4","nextPage":"/cardano-updates/page/6","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/f63b6b72.003220d2.js b/assets/js/f63b6b72.003220d2.js new file mode 100644 index 00000000000..994d93e1081 --- /dev/null +++ b/assets/js/f63b6b72.003220d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87389],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),p=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=p(r),c=n,m=d["".concat(u,".").concat(c)]||d[c]||h[c]||l;return r?a.createElement(m,o(o({ref:t},s),{},{components:r})):a.createElement(m,o({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=c;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var p=2;p<l;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},36793:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const l={title:"Ledger Team Update",slug:"2023-07-21-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2023-07-21-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-07-21-ledger.md",source:"@site/blog/2023-07-21-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-07-21T00:00:00.000Z",formattedDate:"July 21, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:1.715,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-07-21-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-07-21-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-07-21-sre"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"What we achieved",id:"what-we-achieved",level:2},{value:"What is currently in progress",id:"what-is-currently-in-progress",level:2}],s={toc:p},d="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet.\nAll members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era.\nWe also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release).\nAdditionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available.\nWe also made progress on the constraint-based generators, which can now generate valid transactions and ledger states. "),(0,n.kt)("h2",{id:"what-we-achieved"},"What we achieved"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3521"},"pull-3521"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3554"},"pull-3554"),"] Improved Governance model (GovernanceProcedures, ProposalProcedure)"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3520"},"pull-3520"),"] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert ) "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3531"},"pull-3531"),"] Refactored and simplified code interacting with Plutus"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3558"},"pull-3558"),"] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix. "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3550"},"pull-3550"),"] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed."),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3551"},"pull-3551"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3546"},"pull-3546"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3472"},"pull-3472"),"] Updated tools and added some small improvements "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3146"},"issue-3146"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3498"},"pull-3498"),"] Introduced Conway protocol parameters "),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/2948"},"issue-2948"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3499"},"pull-3499"),"] Implemented ConwayGenesis with the new protocol parameters")),(0,n.kt)("h2",{id:"what-is-currently-in-progress"},"What is currently in progress"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3494"},"issue-3494"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3495"},"pull-3495"),"] Implement returning of proposal deposits"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3436"},"issue-3436"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3523"},"pull-3523"),"] Implement transferring lovelace from UTxO to treasury"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3509"},"issue-3509"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3552"},"pull-3552"),"] Add script-support for the committee hot key"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3532"},"issue-3532"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3556"},"pull-3556"),"] Add script-support for the constitution"),(0,n.kt)("li",{parentName:"ul"},"[",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/issues/3543"},"issue-3543"),"] [",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3557"},"pull-3557"),"] Improve the 'new committee' governance action by specifying the members to be replaced, expiration epoch of new members and adding script-support")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f6a3ab66.dd8c87cc.js b/assets/js/f6a3ab66.dd8c87cc.js new file mode 100644 index 00000000000..4f60b812b42 --- /dev/null +++ b/assets/js/f6a3ab66.dd8c87cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[12634],{2832:a=>{a.exports=JSON.parse('{"label":"mithril","permalink":"/cardano-updates/tags/mithril","allTagsPath":"/cardano-updates/tags","count":34}')}}]); \ No newline at end of file diff --git a/assets/js/f6aa5556.97793938.js b/assets/js/f6aa5556.97793938.js new file mode 100644 index 00000000000..0dc2c74f2b3 --- /dev/null +++ b/assets/js/f6aa5556.97793938.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[376],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),u=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(d.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=u(a),h=n,m=s["".concat(d,".").concat(h)]||s[h]||c[h]||l;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=h;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i[s]="string"==typeof e?e:n,o[1]=i;for(var u=2;u<l;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},86936:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2022-12-09-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2022-12-09-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-ledger.md",source:"@site/blog/2022-12-09-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-12-09T00:00:00.000Z",formattedDate:"December 9, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.87,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-12-09-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-09-hydra"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-02-hydra"}},d={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano ledger API",id:"cardano-ledger-api",level:4},{value:"Architectural Decision Records (ADRs)",id:"architectural-decision-records-adrs",level:4},{value:"Tracking individual deposits",id:"tracking-individual-deposits",level:4},{value:"Removing pointer addresses",id:"removing-pointer-addresses",level:4},{value:"Technical debt",id:"technical-debt",level:4}],p={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The Plutus tools team at IOG has started helping the ledger team to build out a user friendly\n",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-ledger-api")," package!\nA ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/5"},"GitHub project"),"\nwill be filled out in the days ahead,\npeople interested in the API can use it to follow along and join in on the conversations."),(0,n.kt)("p",null,"The ledger team has started using\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/blob/6fc0e198560fb4169d435da882394930789a8af8/docs/adr/2022-12-01_001-record-architectural-decisions.md"},"architectural decision records"),"\nto leave a record of important decisions that the team makes.\nWe will retroactively go back through past decisions and make ADRs for them."),(0,n.kt)("p",null,"The logic to track individual deposits is now nearly in place.\nWe are prioritizing correctness with our first pull request, and will follow up with\nperformance optimizations and general cleanup next."),(0,n.kt)("p",null,"Pointer addresses are being deprecated with the Cardano major protocol version 8.\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/374"},"CPS-0002"),"\nfor more context."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h4",{id:"cardano-ledger-api"},"Cardano ledger API"),(0,n.kt)("p",null,"The ",(0,n.kt)("strong",{parentName:"p"},"Plutus tools team")," has taken our minimal ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-ledger-api")," package and started filling it\nout and adding much needed documentation.\nThey have also added doctests!\nIn the days to come, the Plutus tools team will map out a lot more work for the API and record\nit in this\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/5"},"GitHub project"),"."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3182"},"pull-3182")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3188"},"pull-3188"))),(0,n.kt)("h4",{id:"architectural-decision-records-adrs"},"Architectural Decision Records (ADRs)"),(0,n.kt)("p",null,"We are now providing more context and leaving a record of important decisions that are made\nin the ledger. The first ADR explains the very lightweight process."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3177"},"pull-3177")," (rendered ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/blob/6fc0e198560fb4169d435da882394930789a8af8/docs/adr/2022-12-01_001-record-architectural-decisions.md"},"here"),")")),(0,n.kt)("h4",{id:"tracking-individual-deposits"},"Tracking individual deposits"),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3190/files"},"ADR-3"),"\nfor background.\nWe now have the logic in place to track individual deposits, and a host of property tests\nto make sure that the logic is correct.\nThe current implementation uses more memory than it needs to, and we will address that next,\nwith our hope being to only use one word (8 bytes) per registered stake credential.\nThere is a fair amount of other cleanup needed for general maintainability."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3127"},"pull-3127")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3195"},"pull-3195")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3202"},"pull-3202"))),(0,n.kt)("h4",{id:"removing-pointer-addresses"},"Removing pointer addresses"),(0,n.kt)("p",null,"Pointer addresses, which have never seen any real use\n(there are something like eleven on mainnet), are being deprecated starting at Cardano major\nversion 9.\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/374"},"CPS-0002")," gives the context.\nWe are disabling them by first preventing transaction outputs containing them\nfrom being serialized by the node at the moment we switch to version 9.\nAt the hard fork after that, we will translate the existing few pointer addresses\nto enterprise addresses."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3174"},"pull-3174"))),(0,n.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3162"},"pull-3162")," - Sometimes we have to put safeguards in place for hard forks which may never\nbe exercised. After we have passed the given hardfork, we are able to clean up the code\nand simplify our logic. We removed all of the ones that we are currently easily able to."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3165"},"pull-3165")," - We improved the type safety of our code while also discovering and fixing\na serialization bug."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3172"},"pull-3172")," - We removed dead code."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3175"},"pull-3175")," - The Allegra and the Mary code used to be coupled in a particular way the we grew to\ndislike. We made these two ledger eras now uniform with the rest of our code base."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3184"},"pull-3184")," - We organized our property testing code."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3200"},"pull-3200")," - The Plutus tools teams fixed an outstanding bug in the translation from the\nledger state to the Plutus script context.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f6b8faad.decb8bc1.js b/assets/js/f6b8faad.decb8bc1.js new file mode 100644 index 00000000000..07d9d1daa37 --- /dev/null +++ b/assets/js/f6b8faad.decb8bc1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[83584],{28460:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/35","page":35,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/34","nextPage":"/cardano-updates/page/36","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/f6ec1152.c2043e3a.js b/assets/js/f6ec1152.c2043e3a.js new file mode 100644 index 00000000000..9a7630c8e81 --- /dev/null +++ b/assets/js/f6ec1152.c2043e3a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[11254],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,g=d["".concat(u,".").concat(c)]||d[c]||m[c]||l;return a?r.createElement(g,i(i({ref:t},s),{},{components:a})):r.createElement(g,i({ref:t},s))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var p=2;p<l;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},53954:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2023-10-13-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},i=void 0,o={permalink:"/cardano-updates/2023-10-13-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-10-13-ledger.md",source:"@site/blog/2023-10-13-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2023-10-13T00:00:00.000Z",formattedDate:"October 13, 2023",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:.965,hasTruncateMarker:!1,authors:[{name:"Alexey Kuleshevich",title:"Ledger Team Software Engineer",url:"https://github.com/lehins",imageURL:"https://github.com/lehins.png",key:"lehins"}],frontMatter:{title:"Ledger Team Update",slug:"2023-10-13-ledger",authors:"lehins",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-13-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-10-13-sre"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2},{value:"Conway era",id:"conway-era",level:3},{value:"Integration and releasing",id:"integration-and-releasing",level:3},{value:"Testing",id:"testing",level:3}],s={toc:p},d="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The Ledger team has been shifting focus from implementing Conway related features to\ntesting. For this reason there is a very little amount features that are reported this\ntime aorund. Notable Conway related changes are a specialized ledger query for getting\nConstitutional Committee state and prevention of submitting proposal procedures that have\nno valid path to enactment."),(0,n.kt)("p",null,"Testing related work was mainly on a constraint base system as well as on roundtrip\nserialization. As a result of this extra testing a bug in Conway Genesis serialization\nwas eliminated."),(0,n.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,n.kt)("h3",{id:"conway-era"},"Conway era"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3768"},"pull-3768")," - Fail proposal on invalid prevGovActionId"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3781"},"pull-3781")," - CommitteeState query")),(0,n.kt)("h3",{id:"integration-and-releasing"},"Integration and releasing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3774"},"pull-3774")," - Bump urllib3 from 1.26.10 to 1.26.17 in /doc"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3770"},"pull-3770")," - cabal.project: Bump index states"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3778"},"pull-3778")," - Bump plutus to 1.14")),(0,n.kt)("h3",{id:"testing"},"Testing"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3769"},"pull-3769")," - Add roundtrip testing by validating FlatTerm"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3783"},"pull-3783")," - Update TranslationInstance.hs"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3775"},"pull-3775")," - Refactor and improve constraint based STS tests"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3793"},"pull-3793")," - Fix sums with negative RHS.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f7e5e70a.061609b3.js b/assets/js/f7e5e70a.061609b3.js new file mode 100644 index 00000000000..80cc6b8eb43 --- /dev/null +++ b/assets/js/f7e5e70a.061609b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[48909],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(r),c=n,d=m["".concat(s,".").concat(c)]||m[c]||h[c]||a;return r?i.createElement(d,o(o({ref:t},u),{},{components:r})):i.createElement(d,o({ref:t},u))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<a;p++)o[p]=r[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,r)}c.displayName="MDXCreateElement"},78370:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const a={title:"Mithril Team Update",slug:"2023-11-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-11-01-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-01-mithril.md",source:"@site/blog/2023-11-01-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-11-01T00:00:00.000Z",formattedDate:"November 1, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:.895,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-11-01-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-11-01-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-10-27-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],u={toc:p},m="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,n.kt)("p",null,"This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the ",(0,n.kt)("inlineCode",{parentName:"p"},"release-mainnet")," aggregator."),(0,n.kt)("p",null,"Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI."),(0,n.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"P2P Networking - Proof of Concept")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1300"},"#1300")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Build ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-common")," and ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," in WASM PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1284"},"#1284")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Fix ",(0,n.kt)("inlineCode",{parentName:"strong"},"devnet")," Mithril Docker images")," ","[#1272]","(",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1272"},"https://github.com/input-output-hk/mithril/issues/1272")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Light Wallet: Release ",(0,n.kt)("inlineCode",{parentName:"strong"},"mithril-client")," library")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1311"},"#1311")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},"Compute deterministic Cardano UTxO set PoC")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1283"},"#1283")),(0,n.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,n.kt)("strong",{parentName:"li"},(0,n.kt)("inlineCode",{parentName:"strong"},"release-mainnet")," aggregator is unreachable")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1310"},"#1310")),(0,n.kt)("li",{parentName:"ul"},"Completed the issue ",(0,n.kt)("strong",{parentName:"li"},"Client regressions in snapshot list and download")," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/1321"},"#1321"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f850a5f3.536e35f2.js b/assets/js/f850a5f3.536e35f2.js new file mode 100644 index 00000000000..7702c8f6f3c --- /dev/null +++ b/assets/js/f850a5f3.536e35f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25403],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=p(r),d=a,h=c["".concat(u,".").concat(d)]||c[d]||m[d]||o;return r?n.createElement(h,i(i({ref:t},s),{},{components:r})):n.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},23498:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Network Team Update",slug:"2023-01-20-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-01-20-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-01-20-network.md",source:"@site/blog/2023-01-20-network.md",title:"Network Team Update",description:"High level summary",date:"2023-01-20T00:00:00.000Z",formattedDate:"January 20, 2023",tags:[{label:"network",permalink:"/cardano-updates/tags/network"},{label:"release",permalink:"/cardano-updates/tags/release"}],readingTime:1.045,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2023-01-20-network",authors:"coot",tags:["network","release"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-01-20-hydra"},nextItem:{title:"SRE Team Update",permalink:"/cardano-updates/2023-01-20-sre"}},u={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level summary",id:"low-level-summary",level:2}],s={toc:p},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"We have been working towards ",(0,a.kt)("inlineCode",{parentName:"p"},"cardano-node-1.35.5")," release. QA & benchmarking\nteams gave a green light for the release, and we made decent progress with some\nCI problem which we encountered on the way (",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4612"},"PR #4612"),"). We are also working on\npeer sharing, making improvements in our testing infrastructure, reducing\ntechnical debt and making progress towards ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim-1.0.0.0"),". Galois is making\nprogress on Handshake improvements."),(0,a.kt)("h2",{id:"low-level-summary"},"Low level summary"),(0,a.kt)("p",null,"Our diffusion simulation network now includes a mixed network of ",(0,a.kt)("inlineCode",{parentName:"p"},"initiator\nonly")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"initiator and responder")," nodes. ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4222"},"issue #4222")),(0,a.kt)("p",null,"We are now reviewing the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"peer sharing pull request"),"."),(0,a.kt)("p",null,"We are also reviewing pull request which introduces handshake query flag. ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4256"},"PR #4256")),(0,a.kt)("p",null,"We fixed a bug in our network simulator. The bug was triggered when a node\ndied when performing a simultaneous TCP open (a corner case of a corner case!). ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4265"},"PR #4265")),(0,a.kt)("p",null,"We also refactored ",(0,a.kt)("inlineCode",{parentName:"p"},"Snocket")," interface and removed the bearer construction from\nits methods. ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4260"},"PR #4260")),(0,a.kt)("p",null,"We are working towards releasing ",(0,a.kt)("inlineCode",{parentName:"p"},"io-sim-1.0.0.0")," on Hackage, which includes\nreviewing two PRs: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/57"},"PR #57")," and ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/60"},"PR #60")," as well as writing an announcement\nblog post. "))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f8681695.f50d9273.js b/assets/js/f8681695.f50d9273.js new file mode 100644 index 00000000000..f13bc0f0f5d --- /dev/null +++ b/assets/js/f8681695.f50d9273.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32464],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>c});var n=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function l(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function o(e,t){if(null==e)return{};var i,n,a=function(e,t){if(null==e)return{};var i,n,a={},r=Object.keys(e);for(n=0;n<r.length;n++)i=r[n],t.indexOf(i)>=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)i=r[n],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var p=n.createContext({}),u=function(e){var t=n.useContext(p),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},s=function(e){var t=u(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=u(i),d=a,c=m["".concat(p,".").concat(d)]||m[d]||h[d]||r;return i?n.createElement(c,l(l({ref:t},s),{},{components:i})):n.createElement(c,l({ref:t},s))}));function c(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=i.length,l=new Array(r);l[0]=d;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[m]="string"==typeof e?e:a,l[1]=o;for(var u=2;u<r;u++)l[u]=i[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,i)}d.displayName="MDXCreateElement"},67885:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>u});var n=i(87462),a=(i(67294),i(3905));const r={title:"Mithril Team Update",slug:"2023-06-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},l=void 0,o={permalink:"/cardano-updates/2023-06-15-mithril",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-15-mithril.md",source:"@site/blog/2023-06-15-mithril.md",title:"Mithril Team Update",description:"High level overview",date:"2023-06-15T00:00:00.000Z",formattedDate:"June 15, 2023",tags:[{label:"mithril",permalink:"/cardano-updates/tags/mithril"}],readingTime:1.795,hasTruncateMarker:!1,authors:[{name:"Jean-Philippe Raynaud",title:"Mithril Tech Lead",url:"https://github.com/jpraynaud",imageURL:"https://github.com/jpraynaud.png",key:"jpraynaud"}],frontMatter:{title:"Mithril Team Update",slug:"2023-06-15-mithril",authors:"jpraynaud",tags:["mithril"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-06-16-hydra"},nextItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-06-14-consensus"}},p={authorsImageUrls:[void 0]},u=[{value:"High level overview",id:"high-level-overview",level:2},{value:"Low level overview",id:"low-level-overview",level:2}],s={toc:u},m="wrapper";function h(e){let{components:t,...i}=e;return(0,a.kt)(m,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-overview"},"High level overview"),(0,a.kt)("p",null,"The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client\u2019s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet."),(0,a.kt)("p",null,"Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI."),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Completed on the epic that designs and implements generic signing/verification of entity services ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/780"},"#780"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Create the sub-command for 'Mithril Stake Distribution' in client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/896"},"#896")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Adapt end to end tests to handle new types of data")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/899"},"#899")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update client documentation")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/897"},"#897")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Update architecture documentations for new types of data")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/898"},"#898")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactoring client")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/960"},"#960")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic that prepares the Mithril infrastructure for ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/767"},"#767"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Enhance terraform infrastructure")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/930"},"#930")))),(0,a.kt)("li",{parentName:"ul"},"Completed the epic that implements the computation of the stake distribution for ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/880"},"#880"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Check performance impact of new stake distribution command on the 'mainnet'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/962"},"#962")))),(0,a.kt)("li",{parentName:"ul"},"Worked on the epic ",(0,a.kt)("inlineCode",{parentName:"li"},"Prepare Mithril Signer deployment model for SPO")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/862"},"#862"),":",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/961"},"#961")))),(0,a.kt)("li",{parentName:"ul"},"Worked on bugs and optimizations:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Aggregator does not always detect new immutable file")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/953"},"#953")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"CI tests fail with Rust '1.70.0'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/958"},"#958")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"End to end tests are flaky")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/954"},"#954")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Certificate dates in metadata are not on the same timezone")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/946"},"#946")),(0,a.kt)("li",{parentName:"ul"},"Worked on the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Refactor 'MithrilStakeDistribution' entity")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/967"},"#967")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Fix 'Mithril Client multi-platform test' with new client interface")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/956"},"#956")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Enhance 'ImmutableDigesterError::NotEnoughImmutable' error")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/969"},"#969")),(0,a.kt)("li",{parentName:"ul"},"Completed the issue ",(0,a.kt)("inlineCode",{parentName:"li"},"Client 'snapshot download' command fails with option '--download-dir'")," ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/mithril/issues/979"},"#979"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f872275a.dbdfeb4f.js b/assets/js/f872275a.dbdfeb4f.js new file mode 100644 index 00000000000..8bd37c9e23c --- /dev/null +++ b/assets/js/f872275a.dbdfeb4f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[46922],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,a=function(e,t){if(null==e)return{};var n,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},h="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=p(n),m=a,d=h["".concat(l,".").concat(m)]||h[m]||c[m]||r;return n?o.createElement(d,i(i({ref:t},u),{},{components:n})):o.createElement(d,i({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:a,i[1]=s;for(var p=2;p<r;p++)i[p]=n[p];return o.createElement.apply(null,i)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},87739:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var o=n(87462),a=(n(67294),n(3905));const r={title:"Consensus Team Update",slug:"2023-03-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2023-03-08-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-08-consensus.md",source:"@site/blog/2023-03-08-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-03-08T00:00:00.000Z",formattedDate:"March 8, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:2.46,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-03-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-09-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-03-08-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3},{value:"Support",id:"support",level:3}],u={toc:p},h="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(h,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"The Consensus team continued working on refactoring and improving the UTxO-HD\nprototype, and introducing improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"lmdb")," related packages. In\nparticular we identified an opportunity to gain performance by handling locks in\na more optimal way."),(0,a.kt)("p",null,"On the Genesis front, we sketched a mitigation for an issue that ",(0,a.kt)("inlineCode",{parentName:"p"},"PNSol")," and\nResearchers caught. We also came op with a road map for not only testing the\nGenesis prototypes, but also for enriching the tests we already have."),(0,a.kt)("p",null,"Regarding technical debt, next to some minor improvements, we created\ncomponent-level micro-benchmarks for adding transactions to the mempool. The\nresults of these benchmarks will be published in the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," ",(0,a.kt)("a",{parentName:"p",href:"https://input-output-hk.github.io/ouroboros-consensus/"},"web\npage"),"."),(0,a.kt)("p",null,"We also finished moving the Consensus documentation to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),"\nrepository, released ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus")," ",(0,a.kt)("inlineCode",{parentName:"p"},"0.3.0.0"),", and reduced the time\nGitHub actions take in ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"."),(0,a.kt)("h2",{id:"workstreams"},"Workstreams"),(0,a.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,a.kt)("p",null,"We continued working on refactoring and improving the UTxO-HD prototype. As a\nresult of the first round of sytem-level benchmarks, we identified an\nopportunity to optimise the way we handle locks to improve performance\n(",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4393"},"#4393"),")."),(0,a.kt)("p",null,"Also, we introduced several improvements to the ",(0,a.kt)("inlineCode",{parentName:"p"},"lmdb")," related packages:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/19"},"New tests")," for read-only transaction handles."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/18"},"New functions")," and ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/13"},"data types"),"."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/lmdb-simple/pull/11"},"Updates")," to support improved type safety and smaller constraints in\nthe UTxO HD prototype."),(0,a.kt)("li",{parentName:"ul"},"Windows and MacOS ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/haskell-lmdb/pull/8"},"CI support"),".")),(0,a.kt)("h3",{id:"genesis"},"Genesis"),(0,a.kt)("p",null,"We sketched out a mitigation of the issue that ",(0,a.kt)("inlineCode",{parentName:"p"},"PNSol")," and Researchers caught in\nthe Genesis design."),(0,a.kt)("p",null,"We came up with a road map for testing the Genesis prototypes, including early\nmilestones that are applicable to today's master branch, ie tests that are\nuseful before Genesis, and that will be nicely enriched when we do add Genesis."),(0,a.kt)("p",null,"We developed the aforementioned tests, specifically a ",(0,a.kt)("inlineCode",{parentName:"p"},"QuickCheck")," generator for\nthe Honest leader schedule and one as-aggressive-as-possible Adversarial\nleader schedule that together satisfy the Praos properties that the Consensus\ndesign takes as invariants."),(0,a.kt)("p",null,"We investigated why the improved ",(0,a.kt)("inlineCode",{parentName:"p"},"ChainDB")," queueing implementation behaves\ndifferently in the baseline compared to the prototype, and we are close to\nhaving a full picture of how the Consensus components interact during bulk sync."),(0,a.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4400"},"created")," component-level micro-benchmarks for adding transactions\nto the mempool. We plan on extending this to more mempool actions and different\ntypes of blocks. We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4422"},"store")," the benchmark data to make it available\nto the GitHub action that ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/12"},"publishes")," the benchmarks results."),(0,a.kt)("p",null,"Other minor improvements include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4429"},"Removal")," of ",(0,a.kt)("inlineCode",{parentName:"li"},"Test.Util.Classify")," in favour of ",(0,a.kt)("inlineCode",{parentName:"li"},"Test.StateMachine.Labelling"),"."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4423"},"Addition")," of ",(0,a.kt)("inlineCode",{parentName:"li"},"-Wunused-packages")," to the default ",(0,a.kt)("inlineCode",{parentName:"li"},"ghc-options")," for Consensus\npackages.")),(0,a.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,a.kt)("p",null,"We finished moving the Consensus documentation ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4374"},"from"),"\n",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/haskell-lmdb/pull/8"},"to")," ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),", in preparation for\nmigrating the code to the latter repository."),(0,a.kt)("h3",{id:"support"},"Support"),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4412"},"released")," ouroboros-consensus 0.3.0.0."),(0,a.kt)("p",null,"We ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4421"},"reduced")," the load in the ",(0,a.kt)("inlineCode",{parentName:"p"},"ouroboros-network")," GitHub actions,\nthereby reducing the time CI jobs take."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f89a4337.d99ad3e6.js b/assets/js/f89a4337.d99ad3e6.js new file mode 100644 index 00000000000..066c5084a0a --- /dev/null +++ b/assets/js/f89a4337.d99ad3e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[25189],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>s});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),m=u(a),h=r,s=m["".concat(l,".").concat(h)]||m[h]||d[h]||i;return a?n.createElement(s,o(o({ref:t},c),{},{components:a})):n.createElement(s,o({ref:t},c))}));function s(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=h;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[m]="string"==typeof e?e:r,o[1]=p;for(var u=2;u<i;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},54416:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var n=a(87462),r=(a(67294),a(3905));const i={title:"Node API & CLI Team Update",slug:"2023-09-26-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},o="Node-Api-Cli Update",p={permalink:"/cardano-updates/2023-09-26-node-cli-api",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-26-node-cli-api.md",source:"@site/blog/2023-09-26-node-cli-api.md",title:"Node API & CLI Team Update",description:"High level summary",date:"2023-09-26T00:00:00.000Z",formattedDate:"September 26, 2023",tags:[{label:"cli-api",permalink:"/cardano-updates/tags/cli-api"}],readingTime:1.68,hasTruncateMarker:!1,authors:[{name:"Carlos LopezDeLara",title:"Node Product Owner",url:"https://github.com/CarlosLopezDeLara",imageURL:"https://github.com/CarlosLopezDeLara.png",key:"carlos"}],frontMatter:{title:"Node API & CLI Team Update",slug:"2023-09-26-node-cli-api",authors:"carlos",tags:["cli-api"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-09-27-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-09-22-hydra"}},l={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"cardano-cli",id:"cardano-cli",level:3},{value:"cardano-api",id:"cardano-api",level:3},{value:"cardano-node",id:"cardano-node",level:3},{value:"cardano-testnet",id:"cardano-testnet",level:3},{value:"docs",id:"docs",level:3},{value:"CI & project maintenance",id:"ci--project-maintenance",level:3}],c={toc:u},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"2023-09-13---2023-09-26"},"2023-09-13 - 2023-09-26"),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.4.0-pre"},"cardano-node 8.4.0-pre")," release suitable for SanchoNet."),(0,r.kt)("li",{parentName:"ul"},"CLI continues making progress integrating governance features. During this sprint we integrated the ",(0,r.kt)("strong",{parentName:"li"},"info")," and ",(0,r.kt)("strong",{parentName:"li"},"new-committee")," governance actions."),(0,r.kt)("li",{parentName:"ul"},"The team continued moving to the ERA top-level commands structure. Removed ",(0,r.kt)("inlineCode",{parentName:"li"},"--conway-era")," flag from the legacy commands making conway era commands only accessible via ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli conway"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"stake-pool")," command is now under the ERA top level structure."),(0,r.kt)("li",{parentName:"ul"},"API continues integration with governance features, it is worth to higlight that now ",(0,r.kt)("em",{parentName:"li"},"ProposeNewCommitee")," uses the right key type (cc-cold)")),(0,r.kt)("h3",{id:"cardano-cli"},"cardano-cli"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/302"},"Disambiguate 2-n flags in governance new-committee action")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/298"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli-8.10.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/295"},"Upgrade to ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.20.2"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/292"},"cardano-cli: add governance create-info command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/287"},"Release 8.9.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/286"},"Export ",(0,r.kt)("inlineCode",{parentName:"a"},"Cardano.CLI.Legacy.Options.pLegacyCardanoEra")," for cardano-testnet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/284"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"SomeWitness")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"SomeSigningWitness"),". Rename constructors to avoid name conflicts.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/283"},"Update cardano-api to 8.20.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/282"},"Remove unused governance-related code")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/281"},"Fix typo in stake-pool help text and clarify drep queries arguments")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/280"},"Remove redundant conversions in JSON friendly instances ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/279"},"Regularise era based command structure")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/277"},"Simplify era handling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/276"},"Remove ",(0,r.kt)("inlineCode",{parentName:"a"},"--conway-era")," flag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/275"},"Era-based ",(0,r.kt)("inlineCode",{parentName:"a"},"stake-pool")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/274"},"Fix git revision in ",(0,r.kt)("inlineCode",{parentName:"a"},"version")," command")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-cli/pull/273"},"cardano-cli-8.8.0.0"))),(0,r.kt)("h3",{id:"cardano-api"},"cardano-api"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/265"},"Organise eon re-exports. Export ",(0,r.kt)("inlineCode",{parentName:"a"},"MaryEraOnwards"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/264"},"cardano-api-internal: ProposeNewCommittee: StakeKey -> CommitteeColdKey")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/262"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.21.0.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/256"},"Delete unused eon constraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/255"},"Export ByronEraOnly")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/254"},"Replace only ",(0,r.kt)("inlineCode",{parentName:"a"},"AdaSupportedInEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"MultiAssetSupportedInEra")," with eons")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/250"},"New version ",(0,r.kt)("inlineCode",{parentName:"a"},"cardano-api-8.20.2.0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/249"},"Add JSON instance for Hash GenesisKey ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/248"},"Support more ledger constraints")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/247"},"Rename ",(0,r.kt)("inlineCode",{parentName:"a"},"FeatureInEra")," to ",(0,r.kt)("inlineCode",{parentName:"a"},"Eon"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/246"},"Release 8.20.1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/245"},"Fix DRep Stake and DRep Stake queries for empty lists")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/244"},"Delete ",(0,r.kt)("inlineCode",{parentName:"a"},"TxFeesExplicitInEra")," and ",(0,r.kt)("inlineCode",{parentName:"a"},"TxFeesImplicitInEra"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/243"},"Fix typos in some deserialization error messages")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/pull/240"},"Fix querying for dreps in ",(0,r.kt)("inlineCode",{parentName:"a"},"transaction build")," in eras before conway"))),(0,r.kt)("h3",{id:"cardano-node"},"cardano-node"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5480"},"Trace Configuration Trace Message Enhancement")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5474"},"Bump versions for cardano-node-8.4.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5467"},"Updated dependencies for cardano-node-8.4.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5466"},"cardano-node: reduce orphan instances"))),(0,r.kt)("h3",{id:"cardano-testnet"},"cardano-testnet"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5474"},"Bump versions for cardano-node-8.4.0-pre")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5471"},"Update to cardano-cli 8.9.0.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5467"},"Updated dependencies for cardano-node-8.4.0-pre"))),(0,r.kt)("h3",{id:"docs"},"docs"),(0,r.kt)("h3",{id:"ci--project-maintenance"},"CI & project maintenance"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f96c80d6.4ce4cb71.js b/assets/js/f96c80d6.4ce4cb71.js new file mode 100644 index 00000000000..2cea2e0e329 --- /dev/null +++ b/assets/js/f96c80d6.4ce4cb71.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90288],{3905:(e,n,t)=>{t.d(n,{Zo:()=>m,kt:()=>g});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),c=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},m=function(e){var n=c(e.components);return r.createElement(s.Provider,{value:n},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=c(t),p=a,g=u["".concat(s,".").concat(p)]||u[p]||d[p]||o;return t?r.createElement(g,i(i({ref:n},m),{},{components:t})):r.createElement(g,i({ref:n},m))}));function g(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=p;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=t[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,t)}p.displayName="MDXCreateElement"},75947:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=t(87462),a=(t(67294),t(3905));const o={title:"Performance & Tracing Update",slug:"2023-12-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-12-04-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-12-04-performance-and-tracing.md",source:"@site/blog/2023-12-04-performance-and-tracing.md",title:"Performance & Tracing Update",description:"High level summary",date:"2023-12-04T00:00:00.000Z",formattedDate:"December 4, 2023",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:2.085,hasTruncateMarker:!1,authors:[{name:"Michael Karg",title:"Performance and Tracing Team Lead",url:"https://github.com/mgmeier",imageURL:"https://github.com/mgmeier.png",key:"mgmeier"}],frontMatter:{title:"Performance & Tracing Update",slug:"2023-12-04-performance-and-tracing",authors:"mgmeier",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-12-06-mithril"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-12-01-hydra"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Low level overview",id:"low-level-overview",level:2},{value:"Benchmarking",id:"benchmarking",level:3},{value:"Development",id:"development",level:3},{value:"Infrastructure",id:"infrastructure",level:3},{value:"Tracing",id:"tracing",level:3},{value:"Nomad backend",id:"nomad-backend",level:3}],m={toc:c},u="wrapper";function d(e){let{components:n,...t}=e;return(0,a.kt)(u,(0,r.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Benchmarking: Release benchmarking for node ",(0,a.kt)("inlineCode",{parentName:"li"},"8.7.0"),". Also, we performed the first-ever Conway benchmarks."),(0,a.kt)("li",{parentName:"ul"},"Development: Conway capability of our workload generator has been implemented and merged to ",(0,a.kt)("inlineCode",{parentName:"li"},"master"),"."),(0,a.kt)("li",{parentName:"ul"},"Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data."),(0,a.kt)("li",{parentName:"ul"},"Tracing: Quality-of-life improvements to tracing output and addition of a test suite."),(0,a.kt)("li",{parentName:"ul"},"Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.")),(0,a.kt)("h2",{id:"low-level-overview"},"Low level overview"),(0,a.kt)("h3",{id:"benchmarking"},"Benchmarking"),(0,a.kt)("p",null,"A full set of benchmarks for node ",(0,a.kt)("inlineCode",{parentName:"p"},"8.7.0")," has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of ",(0,a.kt)("inlineCode",{parentName:"p"},"8.7.0")," over ",(0,a.kt)("inlineCode",{parentName:"p"},"8.6.0"),", and can confirm no regressions have been introduced."),(0,a.kt)("p",null,"Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version.\nOnly Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty."),(0,a.kt)("h3",{id:"development"},"Development"),(0,a.kt)("p",null,"Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era.\nCurrently, we're looking into adding Conway-exclusive features, such as ",(0,a.kt)("inlineCode",{parentName:"p"},"DRep")," registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining ",(0,a.kt)("inlineCode",{parentName:"p"},"DRep")," sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying."),(0,a.kt)("h3",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've\nimproved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data."),(0,a.kt)("h3",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages.\nAdditionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system."),(0,a.kt)("h3",{id:"nomad-backend"},"Nomad backend"),(0,a.kt)("p",null,"We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f96c80dc.85f32d0b.js b/assets/js/f96c80dc.85f32d0b.js new file mode 100644 index 00000000000..d53e7a6b7a5 --- /dev/null +++ b/assets/js/f96c80dc.85f32d0b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[70641],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),s=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,d=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(a),h=n,m=u["".concat(d,".").concat(h)]||u[h]||p[h]||o;return a?r.createElement(m,i(i({ref:t},c),{},{components:a})):r.createElement(m,i({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},9022:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-09-01-hydra",authors:["v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-09-01-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-09-01-hydra.md",source:"@site/blog/2023-09-01-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-09-01T00:00:00.000Z",formattedDate:"September 1, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.93,hasTruncateMarker:!1,authors:[{name:"Sasha Bogicevic",title:"Hydra Software Engineer",url:"https://github.com/v0d1ch",imageURL:"https://github.com/v0d1ch.png",key:"v0d1ch"}],frontMatter:{title:"Hydra Team Update",slug:"2023-09-01-hydra",authors:["v0d1ch"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-09-01-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-09-01-ledger"}},d={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],c={toc:s},u="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team focused primarily on changes needed in the network\nlayer and have the first draft document related to needed design. They also\nimproved the user experience by allowing a commit using inline datums.\nDiscussed the off-chain governance with researchers and improved internal model\ntests. "),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report published"),(0,n.kt)("li",{parentName:"ul"},"Small changes to hydraw and tutorial in light of the Masterclass"),(0,n.kt)("li",{parentName:"ul"},"Investigated a bug and saw it was solved by recent developments"),(0,n.kt)("li",{parentName:"ul"},"Improved the model tests by fully validating L1 transactions"),(0,n.kt)("li",{parentName:"ul"},"Enhanced the /commit API to also allow commit from scripts with inline datums (user request)"),(0,n.kt)("li",{parentName:"ul"},"Discussed off-chain governance with IOG and CF researchers"),(0,n.kt)("li",{parentName:"ul"},"Drafted a first network specification document in the context of Network resilience")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},'Have a clear understanding of the changes we need for the "Improve network resiliency" feature'),(0,n.kt)("li",{parentName:"ul"},"Groomed and agreed plan on incremental commits/decommits"),(0,n.kt)("li",{parentName:"ul"},"Updated tutorials including CI workflows to check consistency"),(0,n.kt)("li",{parentName:"ul"},"Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fa00d705.cb0aaed6.js b/assets/js/fa00d705.cb0aaed6.js new file mode 100644 index 00000000000..c33f061d7e9 --- /dev/null +++ b/assets/js/fa00d705.cb0aaed6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[26710],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var r=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){o(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,o=function(e,t){if(null==e)return{};var a,r,o={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=p(a),m=o,f=u["".concat(s,".").concat(m)]||u[m]||c[m]||n;return a?r.createElement(f,l(l({ref:t},d),{},{components:a})):r.createElement(f,l({ref:t},d))}));function f(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,l=new Array(n);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:o,l[1]=i;for(var p=2;p<n;p++)l[p]=a[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},94828:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>n,metadata:()=>i,toc:()=>p});var r=a(87462),o=(a(67294),a(3905));const n={title:"SRE Team Update",slug:"2023-11-24-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-11-24-sre",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-11-24-sre.md",source:"@site/blog/2023-11-24-sre.md",title:"SRE Team Update",description:"High level summary",date:"2023-11-24T00:00:00.000Z",formattedDate:"November 24, 2023",tags:[{label:"sre",permalink:"/cardano-updates/tags/sre"}],readingTime:3.115,hasTruncateMarker:!1,authors:[{name:"John Lotoski",title:"Service Reliability Engineer",url:"https://github.com/johnalotoski",imageURL:"https://github.com/johnalotoski.png",key:"johnalotoski"}],frontMatter:{title:"SRE Team Update",slug:"2023-11-24-sre",authors:"johnalotoski",tags:["sre"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-11-24-hydra"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-11-22-ledger"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Capkgs",id:"capkgs",level:3},{value:"Cardano-node",id:"cardano-node",level:3},{value:"Cardano-parts",id:"cardano-parts",level:3},{value:"Cardano-playground",id:"cardano-playground",level:3},{value:"Offchain-metadata-tools",id:"offchain-metadata-tools",level:3}],d={toc:p},u="wrapper";function c(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,o.kt)("p",null,"The SRE team continues work on cardano environment improvements and general environment maintenance."),(0,o.kt)("p",null,"Some notable recent changes, updates or improvements include:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"The cardano-node nixos service now supports SIGHUP p2p topology reloading when the ",(0,o.kt)("inlineCode",{parentName:"li"},"useSystemdReload")," option is enabled")),(0,o.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,o.kt)("h3",{id:"capkgs"},"Capkgs"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Update cardano-db-sync and offchain-metadata-tools package paths and/or references: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/capkgs/compare/994696f...3ce364f"},"capkgs-compare"))),(0,o.kt)("h3",{id:"cardano-node"},"Cardano-node"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/5537"},"cardano-node-pull-5537"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Creates a useSystemdReload bool option for the cardano-node nixos service"),(0,o.kt)("li",{parentName:"ul"},"This will move the topology file(s) to ",(0,o.kt)("inlineCode",{parentName:"li"},"/etc/cardano-node/topology-$i.yaml")," and inject systemd reload hooks for p2p configured cardano-node instances"),(0,o.kt)("li",{parentName:"ul"},"Moving topology files to ",(0,o.kt)("inlineCode",{parentName:"li"},"/etc")," also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired")))),(0,o.kt)("h3",{id:"cardano-parts"},"Cardano-parts"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Adds a metadata server profile and a number of other features and improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-parts/pull/20"},"cardano-parts-pull-20"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Adds a new metadata-service profile"),(0,o.kt)("li",{parentName:"ul"},"Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile"),(0,o.kt)("li",{parentName:"ul"},"Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish"),(0,o.kt)("li",{parentName:"ul"},"Adds extra node list producers and public producers for cardano-node-topology profile"),(0,o.kt)("li",{parentName:"ul"},"Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch"),(0,o.kt)("li",{parentName:"ul"},"Adds select systemd metrics reporting to grafana-agent profile"),(0,o.kt)("li",{parentName:"ul"},"Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS"),(0,o.kt)("li",{parentName:"ul"},"Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it"),(0,o.kt)("li",{parentName:"ul"},"Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo"),(0,o.kt)("li",{parentName:"ul"},"Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation"),(0,o.kt)("li",{parentName:"ul"},"Adds support for grafana recording rules in the template files"),(0,o.kt)("li",{parentName:"ul"},"Improves cardano-group profile handling of producers with respect to multiple instance nodes"),(0,o.kt)("li",{parentName:"ul"},"Improves grafana-agent profile metrics handling for multi-instance cardano-node servers"),(0,o.kt)("li",{parentName:"ul"},"Improves smash service preStart handling while waiting for a node socket"),(0,o.kt)("li",{parentName:"ul"},"Updates Justfile for ERA_CMD demo support"),(0,o.kt)("li",{parentName:"ul"},"Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates"),(0,o.kt)("li",{parentName:"ul"},"Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile"),(0,o.kt)("li",{parentName:"ul"},"Defaults cardano-postgres profile psqlrc use to false")))),(0,o.kt)("h3",{id:"cardano-playground"},"Cardano-playground"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Adds a new testnet metadata server, cluster webserver, and other improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-playground/pull/6"},"cardano-playground-pull-6"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Adds a new metadata server"),(0,o.kt)("li",{parentName:"ul"},"Adds a new webserver for the cluster's static virtualhost needs"),(0,o.kt)("li",{parentName:"ul"},"Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo"),(0,o.kt)("li",{parentName:"ul"},"Adds systemd metrics monitoring to the cluster"),(0,o.kt)("li",{parentName:"ul"},"Resizes sanchonet machines to support the growing chain"),(0,o.kt)("li",{parentName:"ul"},"Completes migration of preprod from world"),(0,o.kt)("li",{parentName:"ul"},"Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes"),(0,o.kt)("li",{parentName:"ul"},"Updates Justfile for ERA_CMD demo support"),(0,o.kt)("li",{parentName:"ul"},"Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile"),(0,o.kt)("li",{parentName:"ul"},"Migrates book static code to playground from world, with refactor, cleanup and updates"),(0,o.kt)("li",{parentName:"ul"},"Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules")))),(0,o.kt)("h3",{id:"offchain-metadata-tools"},"Offchain-metadata-tools"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Adds db password option with obfuscation plus misc improvements: ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/offchain-metadata-tools/pull/61"},"offchain-metadata-tools-pull-61"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services"),(0,o.kt)("li",{parentName:"ul"},"Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile"),(0,o.kt)("li",{parentName:"ul"},"Moves from std use in the nix flake to standard flake schema"),(0,o.kt)("li",{parentName:"ul"},"Fixes hydra CI failures"),(0,o.kt)("li",{parentName:"ul"},"Builds update-docs in hydra to avoid long local build times"),(0,o.kt)("li",{parentName:"ul"},"Removes deprecated tullia"),(0,o.kt)("li",{parentName:"ul"},"Removes deprecated check-hydra from pkgs"),(0,o.kt)("li",{parentName:"ul"},"Removes deprecated bors files and references")))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fa0b1b5d.f62143b4.js b/assets/js/fa0b1b5d.f62143b4.js new file mode 100644 index 00000000000..df404f57aa8 --- /dev/null +++ b/assets/js/fa0b1b5d.f62143b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[90056],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=a.createContext({}),c=function(e){var t=a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=c(r),u=n,h=m["".concat(p,".").concat(u)]||m[u]||d[u]||o;return r?a.createElement(h,l(l({ref:t},s),{},{components:r})):a.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var c=2;c<o;c++)l[c]=r[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}u.displayName="MDXCreateElement"},62140:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const o={title:"Goedel Team Update",slug:"2023-05-12-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-05-12-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-05-12-goedel.md",source:"@site/blog/2023-05-12-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-05-12T00:00:00.000Z",formattedDate:"May 12, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.445,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-05-12-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Crypto Team Update",permalink:"/cardano-updates/2023-05-12-crypto"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-05-12-hydra"}},p={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],s={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"This sprint the team had two paper accepted for ICE 2023\n(",(0,n.kt)("a",{parentName:"p",href:"https://www.discotec.org/2023/ice"},"https://www.discotec.org/2023/ice"),"). The event will be held in Lisbon\non 19th June 2023. The papers will be published in EPTCS."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Application layer for Praos formalisation in review.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Participating in interactive peer review process for ICE 2023.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"The team is hiring a performance engineering intern - ",(0,n.kt)("a",{parentName:"p",href:"https://apply.workable.com/io-global/j/BFEC5B0AFF/"},"https://apply.workable.com/io-global/j/BFEC5B0AFF/")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fa57bfdd.f14710cf.js b/assets/js/fa57bfdd.f14710cf.js new file mode 100644 index 00000000000..861ba3bd49f --- /dev/null +++ b/assets/js/fa57bfdd.f14710cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92149],{64665:a=>{a.exports=JSON.parse('{"label":"network","permalink":"/cardano-updates/tags/network","allTagsPath":"/cardano-updates/tags","count":24}')}}]); \ No newline at end of file diff --git a/assets/js/fa5dce7e.e833700b.js b/assets/js/fa5dce7e.e833700b.js new file mode 100644 index 00000000000..41ebb7482cb --- /dev/null +++ b/assets/js/fa5dce7e.e833700b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[73001],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,f=u["".concat(s,".").concat(d)]||u[d]||m[d]||o;return a?r.createElement(f,l(l({ref:t},c),{},{components:a})):r.createElement(f,l({ref:t},c))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:n,l[1]=i;for(var p=2;p<o;p++)l[p]=a[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},20486:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Goedel Team Update",slug:"2023-08-18-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2023-08-18-goedel",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-18-goedel.md",source:"@site/blog/2023-08-18-goedel.md",title:"Goedel Team Update",description:"The team works on applied research and consulting in formal methods",date:"2023-08-18T00:00:00.000Z",formattedDate:"August 18, 2023",tags:[{label:"goedel",permalink:"/cardano-updates/tags/goedel"}],readingTime:.72,hasTruncateMarker:!1,authors:[{name:"James Chapman",title:"Head of Formal Methods",url:"https://github.com/jmchapman",imageURL:"https://github.com/jmchapman.png",key:"jmchapman"}],frontMatter:{title:"Goedel Team Update",slug:"2023-08-18-goedel",authors:"jmchapman",tags:["goedel"],hide_table_of_contents:!1},prevItem:{title:"Consensus Team Update",permalink:"/cardano-updates/2023-08-23-consensus"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2023-08-18-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Details",id:"details",level:2}],c={toc:p},u="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond."),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype."),(0,n.kt)("h2",{id:"details"},"Details"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Development of an automated prover for showing conformance of\nprograms to state machines (as part of the mini-protocol framework)")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Completion of the documentation of the (current state of the)\nmini-protocol framework")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Discussion about two DeltaQ lectures with two practical sessions as part\nof 4th year masters course on distributed systemsby colleagues at UC\nLouvain in the Autumn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Discussion about four DeltaQ lectures by colleagues at U. Bergen as part\nof a 5th year Masters course in the Autumn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Adapted original DeltaQ implementation to the new typeclasses and\nwrote property tests for its algebraic laws"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/faece773.2d8cf6c5.js b/assets/js/faece773.2d8cf6c5.js new file mode 100644 index 00000000000..0e4d900894f --- /dev/null +++ b/assets/js/faece773.2d8cf6c5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[32023],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),d=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=d(e.components);return n.createElement(p.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=d(a),h=r,m=c["".concat(p,".").concat(h)]||c[h]||u[h]||o;return a?n.createElement(m,i(i({ref:t},s),{},{components:a})):n.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var d=2;d<o;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},58910:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-02-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-02-03-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-03-hydra.md",source:"@site/blog/2023-02-03-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-03T00:00:00.000Z",formattedDate:"February 3, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.12,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-02-03-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-02-02-ledger"}},p={authorsImageUrls:[void 0]},d=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:d},c="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"This week, the Hydra team completed the Hydra specification with a section about\nrollbacks and updated graphs\n(",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/448"},"#448"),"). In a next step,\nthe specification will be made more approachable and an open standard. They\nimproved their ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-cluster")," tool to launch a local ",(0,r.kt)("inlineCode",{parentName:"p"},"--devnet")," sandbox\nenvironment and continued aligning the ",(0,r.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts with the\nspecification by hardening the checks on ",(0,r.kt)("inlineCode",{parentName:"p"},"close")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"contest")," transactions."),(0,r.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completed the specification with a section about rollbacks and updated graphs\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/448"},"#448"),", with a follow-up on making it more approachable and an open standard."),(0,r.kt)("li",{parentName:"ul"},"Continued spec review with internal auditor and incorporated changes."),(0,r.kt)("li",{parentName:"ul"},"Talked to TxPipe about how Demeter and Hydra could work together"),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"hydra-cluster")," executable can be used to launch a local ",(0,r.kt)("inlineCode",{parentName:"li"},"--devnet")," sandbox environment."),(0,r.kt)("li",{parentName:"ul"},"Reproduced the \u201chead being stuck on network outage\u201d bug",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed."))),(0,r.kt)("li",{parentName:"ul"},"Progressed with higher velocity by addressing more and more gaps ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/677"},"#677"))),(0,r.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Upstream our JSON instances to the ledger"),(0,r.kt)("li",{parentName:"ul"},"Close all transaction security related on-chain gaps"),(0,r.kt)("li",{parentName:"ul"},"Ideally release 0.9.0 with updated scripts"),(0,r.kt)("li",{parentName:"ul"},"Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fb0b9e22.7e06c8d0.js b/assets/js/fb0b9e22.7e06c8d0.js new file mode 100644 index 00000000000..0b136f0dba6 --- /dev/null +++ b/assets/js/fb0b9e22.7e06c8d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[92522],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),u=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=u(a),d=n,c=s["".concat(p,".").concat(d)]||s[d]||m[d]||o;return a?r.createElement(c,i(i({ref:t},h),{},{components:a})):r.createElement(c,i({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:n,i[1]=l;for(var u=2;u<o;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},20214:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-06-23-hydra",authors:["ffakenz","pgrange"],tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-06-23-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-23-hydra.md",source:"@site/blog/2023-06-23-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-23T00:00:00.000Z",formattedDate:"June 23, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.79,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"},{name:"Pascal Grange",title:"Hydra Software Engineer",url:"https://github.com/pgrange",imageURL:"https://github.com/pgrange.png",key:"pgrange"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-23-hydra",authors:["ffakenz","pgrange"],tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-06-23-goedel"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-06-23-network"}},p={authorsImageUrls:[void 0,void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:u},s="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team shared progress updates during the monthly review\nmeeting (monthly report and video recording available soon) and started\nexperimenting on preview network with the new commit from external wallet\nfeature."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly report & review meeting, demonstrating ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/887"},"commit from external\nwallet")),(0,n.kt)("li",{parentName:"ul"},"Published regular ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/unstable/benchmarks/end-to-end-benchmarks"},"benchmarks for\nHydra")),(0,n.kt)("li",{parentName:"ul"},"Moved forward the journey for external commits using multiple script UTxOs\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"Changed the API to only put transaction id in snapshots, instead of the full\ntransactions ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/922"},"#922")," -> this\nis now evolved into fully addressing ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/728"},"#728")),(0,n.kt)("li",{parentName:"ul"},"Fuel marking is now optional as one can now commit from an external wallet\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/924"},"#924")),(0,n.kt)("li",{parentName:"ul"},"Add flag option to display node version on tui\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/934"},"#934"))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete external commits using multiple script UTxOs ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/903"},"#903")),(0,n.kt)("li",{parentName:"ul"},"New release 0.11.0"),(0,n.kt)("li",{parentName:"ul"},"Dirtroad solution of improved persistence performance ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/913"},"#913"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fb63aa20.850437a9.js b/assets/js/fb63aa20.850437a9.js new file mode 100644 index 00000000000..ef64af01161 --- /dev/null +++ b/assets/js/fb63aa20.850437a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[58470],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=c(r),p=a,h=m["".concat(s,".").concat(p)]||m[p]||d[p]||o;return r?n.createElement(h,i(i({ref:t},u),{},{components:r})):n.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=r[c];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}p.displayName="MDXCreateElement"},62389:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Performance & tracing update",slug:"2022-12-14-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-12-14-performance-and-tracing",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-14-performance-and-tracing.md",source:"@site/blog/2022-12-14-performance-and-tracing.md",title:"Performance & tracing update",description:"High level summary",date:"2022-12-14T00:00:00.000Z",formattedDate:"December 14, 2022",tags:[{label:"performance-tracing",permalink:"/cardano-updates/tags/performance-tracing"}],readingTime:3.095,hasTruncateMarker:!1,authors:[{name:"Serge Kosyrev",title:"Performance and Tracing Team Lead",url:"https://github.com/deepfire",imageURL:"https://github.com/deepfire.png",key:"deepfire"}],frontMatter:{title:"Performance & tracing update",slug:"2022-12-14-performance-and-tracing",authors:"deepfire",tags:["performance-tracing"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2022-12-14-node-cli-api"},nextItem:{title:"Network Team Update",permalink:"/cardano-updates/2022-12-12-network"}},s={authorsImageUrls:[void 0]},c=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Performance",id:"performance",level:2},{value:"Tracing",id:"tracing",level:2},{value:"Infrastructure",id:"infrastructure",level:2}],u={toc:c},m="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment."),(0,a.kt)("li",{parentName:"ol"},"A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals."),(0,a.kt)("li",{parentName:"ol"},"Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started."),(0,a.kt)("li",{parentName:"ol"},"Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.")),(0,a.kt)("h2",{id:"performance"},"Performance"),(0,a.kt)("p",null,"The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload."),(0,a.kt)("p",null,"We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling."),(0,a.kt)("h2",{id:"tracing"},"Tracing"),(0,a.kt)("p",null,"After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical."),(0,a.kt)("p",null,"To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration."),(0,a.kt)("li",{parentName:"ol"},"The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.")),(0,a.kt)("p",null,"All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further."),(0,a.kt)("p",null,"In addition, we're still pursuing our performance-enhancing rework of the new tracing internals."),(0,a.kt)("h2",{id:"infrastructure"},"Infrastructure"),(0,a.kt)("p",null,"After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends."),(0,a.kt)("p",null,"Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it.\nThis means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis.\nThis will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports."),(0,a.kt)("p",null,"A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches.\nPreviously we only had automation for two aspects separately, so we only could either:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"compare individual runs (used for different node configurations / versions)"),(0,a.kt)("li",{parentName:"ul"},"collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version)\nNaturally, combining these two capabilities was a long-desired feature of our analysis pipeline.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fb793160.b4e7853d.js b/assets/js/fb793160.b4e7853d.js new file mode 100644 index 00000000000..8d1b311e96e --- /dev/null +++ b/assets/js/fb793160.b4e7853d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[87411],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(n),h=r,m=c["".concat(l,".").concat(h)]||c[h]||d[h]||a;return n?o.createElement(m,s(s({ref:t},u),{},{components:n})):o.createElement(m,s({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:r,s[1]=i;for(var p=2;p<a;p++)s[p]=n[p];return o.createElement.apply(null,s)}return o.createElement.apply(null,n)}h.displayName="MDXCreateElement"},48089:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Consensus Team Update",slug:"2023-02-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-02-08-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-08-consensus.md",source:"@site/blog/2023-02-08-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-02-08T00:00:00.000Z",formattedDate:"February 8, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.5,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-02-08-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-09-mithril"},nextItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-02-08-node-cli-api"}},l={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"UTxO HD Prototype",id:"utxo-hd-prototype",level:3},{value:"Genesis",id:"genesis",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Fostering collaboration",id:"fostering-collaboration",level:3},{value:"Support",id:"support",level:3}],u={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,r.kt)("p",null,"We continue refactoring the UTxO HD prototype while we wait for the system level\nbenchmarks. We have created a new repository that contains the ",(0,r.kt)("inlineCode",{parentName:"p"},"anti-diff"),"\npackages used in this prototype."),(0,r.kt)("p",null,"On the Genesis front, we are preparing another meeting with the researchers to\naudit the implementation design, and we continued working on basic tests and\nsimplifications."),(0,r.kt)("p",null,"During the past two weeks we also introduced two new tools. One for dumping CBOR\nencoded blocks to JSON, and another to serve a local immutable DB."),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"utxo-hd-prototype"},"UTxO HD Prototype"),(0,r.kt)("p",null,"We are in the process of refactoring the UTxO HD prototype, while we wait for\nthe system level benchmarks to confirm if the performance of the prototype is\nsatisfactory."),(0,r.kt)("p",null,"We also set up a repository for the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/anti-diffs"},(0,r.kt)("inlineCode",{parentName:"a"},"anti-diff"))," package, which\nrequired us to refactor the code, write documentation, and prepare a release to\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-haskell-packages"},"CHaP"),"."),(0,r.kt)("h3",{id:"genesis"},"Genesis"),(0,r.kt)("p",null,"We worked on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4347"},"basic tests")," for the ",(0,r.kt)("em",{parentName:"p"},"Limit on Eagerness")," property of\nGenesis. We also introduced further robustness and simplifications in the\nGenesis Density governor. Finally, we developed a presentation to engage again\nwith the researchers on our Genesis implementation design."),(0,r.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,r.kt)("h3",{id:"fostering-collaboration"},"Fostering collaboration"),(0,r.kt)("p",null,"We are in the process of ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/6"},"polishing")," the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus"),"\ndocumentation site, which we will use a the entry point for Consensus related\ndocumentation. The first version will not be complete, but we plan on\nsystematically improving it."),(0,r.kt)("h3",{id:"support"},"Support"),(0,r.kt)("p",null,"We ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4335"},"added a tool")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-consensus-cardano-tools")," which allows\nto dump the Chain DB blocks or any given CBOR encoded blocks as JSON."),(0,r.kt)("p",null,"We also added ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4339"},"another tool")," that serves an existing immutable DB via\nBlockFetch and ChainSync. This tool can help in assisting our local benchmarking\nefforts (for instance Genesis' ChainSync jumping prototype)."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fb8d4667.f082283b.js b/assets/js/fb8d4667.f082283b.js new file mode 100644 index 00000000000..53160e22cb1 --- /dev/null +++ b/assets/js/fb8d4667.f082283b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[57161],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(n),h=r,m=d["".concat(s,".").concat(h)]||d[h]||c[h]||a;return n?o.createElement(m,i(i({ref:t},u),{},{components:n})):o.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var p=2;p<a;p++)i[p]=n[p];return o.createElement.apply(null,i)}return o.createElement.apply(null,n)}h.displayName="MDXCreateElement"},31241:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var o=n(87462),r=(n(67294),n(3905));const a={title:"Network Team Update",slug:"2022-10-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2022-10-28-network",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-10-28-network.md",source:"@site/blog/2022-10-28-network.md",title:"Network Team Update",description:"High-level summary",date:"2022-10-28T00:00:00.000Z",formattedDate:"October 28, 2022",tags:[{label:"network",permalink:"/cardano-updates/tags/network"}],readingTime:2.665,hasTruncateMarker:!1,authors:[{name:"Marcin Szamotulski",title:"Network Team Lead",url:"https://github.com/coot",imageURL:"https://github.com/coot.png",key:"coot"}],frontMatter:{title:"Network Team Update",slug:"2022-10-28-network",authors:"coot",tags:["network"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-10-28-hydra"},nextItem:{title:"Performance & Tracing Team Update",permalink:"/cardano-updates/2022-10-28-performance-and-tracing"}},s={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"Detailed description",id:"detailed-description",level:2},{value:"P2P Network Stack",id:"p2p-network-stack",level:3},{value:"Consensus",id:"consensus",level:3},{value:"Cardano Node",id:"cardano-node",level:3},{value:"Peer Sharing",id:"peer-sharing",level:3},{value:"Eclipse Evasion",id:"eclipse-evasion",level:3},{value:"IO-Sim",id:"io-sim",level:3},{value:"Open Source",id:"open-source",level:3},{value:"Mithril Cardano Integration",id:"mithril-cardano-integration",level:3}],u={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"The team has focused on debuging & fixing bugs for the ",(0,r.kt)("strong",{parentName:"p"},"P2P single relay release"),", which included"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"diagnosing, fixing and writing tests for a bug in ",(0,r.kt)("inlineCode",{parentName:"li"},"peer-state-actions")," which\nfortunately hasn't been released;"),(0,r.kt)("li",{parentName:"ul"},"diagnosing & preventing misconfiguration of DNS")),(0,r.kt)("p",null,"We also focused on developing ",(0,r.kt)("strong",{parentName:"p"},"peer sharing"),". We also held a session with\nthe scientists on eclipse evasion."),(0,r.kt)("h2",{id:"detailed-description"},"Detailed description"),(0,r.kt)("h3",{id:"p2p-network-stack"},"P2P Network Stack"),(0,r.kt)("p",null,"During the past two weeks the team focused on p2p single relay release and peer\nsharing. We found and fixed an important bug recently introduced in one of the\ncomponents of p2p networking stack (fortunately never released). Together with\na fix, we designed a unit test diffusion simulation as well as quickcheck\nproperty test (both could reproduce it). We also changed the code in a way that\nif such a bug is reintroduced in the future, it will be obvious to diagnose.\nFor more see:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4067"},"ouroboros-network#4067")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4086"},"ouroboros-network#4086"))),(0,r.kt)("p",null,"Initial benchmarking run of the P2P code was executed. The results where\nunlike what we see on the mainnet. We found a possible misconfiguration of the\ncluster (caused by 0 TTL on domain names), which could be the direct cause of\nit. We wrote a PR which rules out such misconfiguration. We are awaiting on\nthe next benchmarking results. See more at:"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4106"},"ouroboros-network#4106")),(0,r.kt)("p",null,"We also started working on P2P single relay release. The PR\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4120"},"ouroboros-network#4120"),"\nincludes ",(0,r.kt)("em",{parentName:"p"},"108")," patches cherry-picked from the ",(0,r.kt)("inlineCode",{parentName:"p"},"master")," branch. We started\nworking toward integration these changes against the release branch of\n",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),". Early next week we ought to be able to have an early version\nof ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," with ",(0,r.kt)("em",{parentName:"p"},"non experimental P2P support"),"!"),(0,r.kt)("p",null,"For more detailed release plan please see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/3888"},"P2P - Single\nRelay"),"\nissue."),(0,r.kt)("h3",{id:"consensus"},"Consensus"),(0,r.kt)("p",null,"We identified and fixed missing error reporting in consensus\ninitialisation phase. See more at\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4015"},"ouroboros-network#4015")),(0,r.kt)("h3",{id:"cardano-node"},"Cardano Node"),(0,r.kt)("p",null,"We also made changes in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," in order to give better experience for\nnode operators. This includes updating severities of some of the traces as\nwell as implementing new format of the p2p topology file. For more see:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4563"},"cardano-node#4563"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-node/pull/4561"},"cardano-node#4561"))),(0,r.kt)("h3",{id:"peer-sharing"},"Peer Sharing"),(0,r.kt)("p",null,"We continued working on implementation of peer sharing. We have an early\nimplementation which will be reviewed and analysed in next weeks. We started\nworking on ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," integration. We need\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4392"},"PR #4392")," to be merged\nbefore such integration will be able to land in ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node"),", although this\nis ",(0,r.kt)("em",{parentName:"p"},"not blocking")," us currently. See more at:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-network/pull/4019"},"ouroboros-network#4019"))),(0,r.kt)("h3",{id:"eclipse-evasion"},"Eclipse Evasion"),(0,r.kt)("p",null,"We held a session which included Alexander Russel, Sandro Coretti-Drayton and\nNick Frisby from the consensus team. We discussed high lever design of the\neclipse evasion scheme, which is important for the design and implementation of\n",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-genesis"),". We got a positive feedback from the researchers."),(0,r.kt)("h3",{id:"io-sim"},"IO-Sim"),(0,r.kt)("p",null,"In this period we made little progress towards releasing ",(0,r.kt)("inlineCode",{parentName:"p"},"IO-Sim")," on Hackage.\nA single ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/io-sim/pull/32"},"PR")," which added\na few missing instances of the ",(0,r.kt)("inlineCode",{parentName:"p"},"STM")," monad."),(0,r.kt)("h3",{id:"open-source"},"Open Source"),(0,r.kt)("p",null,"We made sure the CI runs for PRs which comes from forks (which is important to\naccept contributions from 3rd parties)."),(0,r.kt)("h3",{id:"mithril-cardano-integration"},"Mithril Cardano Integration"),(0,r.kt)("p",null,"We held initial discussions with Arnaud Bailly about possible path to integrate\nmithril to ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano-node")," and take advantage of the ",(0,r.kt)("inlineCode",{parentName:"p"},"ouroboros-network"),"\ndiffusion layer."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fba052bd.92a16ec4.js b/assets/js/fba052bd.92a16ec4.js new file mode 100644 index 00000000000..602ffba5162 --- /dev/null +++ b/assets/js/fba052bd.92a16ec4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[36171],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),h=p(n),d=r,m=h["".concat(l,".").concat(d)]||h[d]||u[d]||o;return n?a.createElement(m,i(i({ref:t},c),{},{components:n})):a.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:r,i[1]=s;for(var p=2;p<o;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},54664:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2022-10-02-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},i=void 0,s={permalink:"/cardano-updates/2022-10-02-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-02-consensus.md",source:"@site/blog/2022-11-02-consensus.md",title:"Consensus Team Update",description:"High-level summary",date:"2022-11-02T00:00:00.000Z",formattedDate:"November 2, 2022",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:3.53,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2022-10-02-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Embedding Quality Workstream",permalink:"/cardano-updates/2022-11-03-embedding-quality"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2022-11-02-ledger"}},l={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"High-level status report",id:"high-level-status-report",level:2},{value:"Workstreams",id:"workstreams",level:2},{value:"Finish the UTxO HD prototype",id:"finish-the-utxo-hd-prototype",level:3},{value:"Backing store property tests",id:"backing-store-property-tests",level:4},{value:"LSM tree implementation",id:"lsm-tree-implementation",level:2},{value:"Benchmarking the CSJ prototype",id:"benchmarking-the-csj-prototype",level:3},{value:"Technical debt",id:"technical-debt",level:2}],c={toc:p},h="wrapper";function u(e){let{components:t,...o}=e;return(0,r.kt)(h,(0,a.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,r.kt)("p",null,"During the past two weeks, the consensus team continued its work on testing the\nUTxO HD prototype. We completed the era-transition and backing store tests, and\nthe mempool tests are advancing at a steady pace. Regarding our work in the\nGenesis design, we continued our collaboration with the research and networking\nteams, and we continue investigating strategies for making the chain-sync\njumping prototype faster."),(0,r.kt)("h2",{id:"high-level-status-report"},"High-level status report"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Finish the UTxO HD prototype: on track.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We worked on state-machine tests for the mempool, and spotted potential bugs\nin the implementation. Investigation is ongoing."),(0,r.kt)("li",{parentName:"ul"},"We have a set of property tests for the backing store. We still need to\nincorporate the improvements to the LMDB cursor API that these tests\nmade possible."),(0,r.kt)("li",{parentName:"ul"},"We merged the era-transition tests PR."))),(0,r.kt)("li",{parentName:"ul"},"Genesis: on track.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Design work around Genesis continues in collaboration with researchers and\nthe networking team."),(0,r.kt)("li",{parentName:"ul"},"We continued trying to improve the performance of the chain-sync jumping\nprototype. We gained additional insight on which parameters to tweak next.\nIn spite of the baseline still being faster, the current prototype already\nachieves a significant speedup when compared to the naive approach of simply\nrunning full chain-sync with all peers."))),(0,r.kt)("li",{parentName:"ul"},"Tech debt: on track.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"We clarified a common source of confusion around VRF tie-breaking and\ncross-era chain selection.")))),(0,r.kt)("h2",{id:"workstreams"},"Workstreams"),(0,r.kt)("h3",{id:"finish-the-utxo-hd-prototype"},"Finish the UTxO HD prototype"),(0,r.kt)("p",null,"We continued working on property-tests for the UTxO HD prototype. In particular\nwe merged the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4073"},"era-transition tests\nPR"),"."),(0,r.kt)("h4",{id:"backing-store-property-tests"},"Backing store property tests"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4081"},"backing store property tests\nPR")," has been\nreviewed. The next steps are:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Improve error handling and command generation."),(0,r.kt)("li",{parentName:"ul"},"Add coverage testing to check that we are not failing to cover interesting\ntest cases.")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/lmdb-simple/pull/1"},"monadic cursor API"),"\nwent through its first review round. The API is in a relatively stable state.\nThis PR also unifies the ",(0,r.kt)("inlineCode",{parentName:"p"},"cborg")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"serialise"),"-based interfaces to LMDB\noperations. The next steps are:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Write\n",(0,r.kt)("a",{parentName:"li",href:"https://hackage.haskell.org/package/quickcheck-dynamic"},(0,r.kt)("inlineCode",{parentName:"a"},"quickcheck-dynamic")),"\nstate-machine tests for this API."),(0,r.kt)("li",{parentName:"ul"},"Adapt the changes in the serialisation interface in the backing store property\ntests. This will involve adding boilerplate code in consensus to make up for\nthe removal of the ",(0,r.kt)("inlineCode",{parentName:"li"},"cborg"),"-based interface.")),(0,r.kt)("h2",{id:"lsm-tree-implementation"},"LSM tree implementation"),(0,r.kt)("p",null,"We worked on the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/issues/4121"},"LSM tree\nprototype"),". In\nparticular, we focused on tuning the LSM tree design to the different workloads\nthat consensus has (eg syncing, normal node operation, etc)."),(0,r.kt)("h3",{id:"benchmarking-the-csj-prototype"},"Benchmarking the CSJ prototype"),(0,r.kt)("p",null,'Work on improving the chain-sync jumping performance is ongoing. In particular\nwe compared the performance of different jump intervals, which, somewhat\nsurprisingly, do not make a significant difference. In particular, we are seeing\nperiodic "plateaus" where the chain-sync tip does not progress, but they are\nmuch longer for the prototype. Our hypothesis is that this seem to be due to a\ncombination of the garbage collector (GC) pauses, and the actual time it takes\nthe non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo\nfragment.'),(0,r.kt)("p",null,"In the coming weeks we will try to shorten these plateaus via a combination of\ntweaking GC options and less synchronisation in the CSJ governor."),(0,r.kt)("p",null,"The following plot shows the performance of the chain-sync jumping prototype\nusing different jumping intervals. It compares the syncing progress by plotting\nthe slots of adopted blocks against time. The baseline is still faster, however\nit is worth noting that the current prototype already achieves a significant\nspeedup when compared to the naive approach of simply running full chain-sync\nwith all peers."),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(39294).Z,width:"998",height:"445"})),(0,r.kt)("p",null,'The second plot shows the syncing progress sliced to a chosen ~5min interval,\nand includes, in addition to the slots of adopted blocks, the slots of the tip\nof the ChainSync fragment. This allows us to see how far ahead of the selected\ntip the CS dynamo is, i.e. how much room we have for BlockFetch not to get\nstalled. It shows periodic behaviour (due to the forecasting limit), and shows\nthat the CS fragment tip is not progressing for significant periods\n("plateaus").'),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(96185).Z,width:"998",height:"445"})),(0,r.kt)("h2",{id:"technical-debt"},"Technical debt"),(0,r.kt)("p",null,"We ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/ouroboros-network/pull/4098"},"clarified")," a\ncommon source of confusion around VRF tie-breaking and cross-era chain\nselection. This PR involved correcting potentially misleading names of\nVRF-related functions, and providing context for a particular VRF value is\nused for tie-breaking."))}u.isMDXComponent=!0},96185:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-02-csj-vs-baseline-sliced-77ff018af70191b4122b1e7cf56c79b8.svg"},39294:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2022-11-02-csj-vs-baseline-9fd0e0e080975cc6cfbe035731b4f38d.svg"}}]); \ No newline at end of file diff --git a/assets/js/fbdc54bf.80a293fa.js b/assets/js/fbdc54bf.80a293fa.js new file mode 100644 index 00000000000..d3143847969 --- /dev/null +++ b/assets/js/fbdc54bf.80a293fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[63824],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),u=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),h=u(a),d=n,c=h["".concat(l,".").concat(d)]||h[d]||m[d]||i;return a?r.createElement(c,o(o({ref:t},s),{},{components:a})):r.createElement(c,o({ref:t},s))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[h]="string"==typeof e?e:n,o[1]=p;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},40671:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-06-02-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,p={permalink:"/cardano-updates/2023-06-02-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-06-02-hydra.md",source:"@site/blog/2023-06-02-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-06-02T00:00:00.000Z",formattedDate:"June 2, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.215,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-06-02-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Node API & CLI Team Update",permalink:"/cardano-updates/2023-06-07-node-cli-api"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-06-01-mithril"}},l={authorsImageUrls:[void 0]},u=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:u},h="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team has put their effort on finding solutions on many\ndifferent problems, such as our broken head on mainnet\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/897"},"#897"),", our fragile monthly\nreport publications on the website and implementing ","\u201c","Option A","\u201d"," for\nexternal commits ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),".\nAlthough most of these items are still open, huge progress has been made. To\naccelerate the investigation, they improved their logging to give more precise\nerrors when a transition requirement fails, and to reduce duplication on effets\nlogged content. Last but not least, the team is exploring formal methods and\nattended a workshop on formalizing cryptographic protocols in Agda."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Continued investigating broken head and opened an issue to keep track ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/issues/897"},"#897"),"."),(0,n.kt)("p",{parentName:"li"},"As part of this issue, improvements were made to the node logs:"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Give a precise error when a transition requirement fails ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/895"},"#895"),".")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Reduce duplication for effects logged content by using sequential eventId and effectId pair ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/896"},"#896"),".")))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Fixed references in the hydra specification ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/pull/893"},"#893"),".")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Attended a workshop on formal methods and crypto in Agda."))),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Investigate and re-open our team-internal head on mainnet."),(0,n.kt)("li",{parentName:"ul"},"Improve and provide regular benchmarks for Hydra ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/186"},"#186"),"."),(0,n.kt)("li",{parentName:"ul"},"Complete journey for external commits implementing ","\u201c","Option A","\u201d"," and start implementing ","\u201c","Option B","\u201d"," ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/215"},"#215"),"."),(0,n.kt)("li",{parentName:"ul"},"Authenticate network messages ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/727"},"#727"),"."),(0,n.kt)("li",{parentName:"ul"},"Add hydra as tool to developr platform ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/872"},"#872"),"."),(0,n.kt)("li",{parentName:"ul"},"Fix monthly report publication on docs website.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fc0eac3b.320a4227.js b/assets/js/fc0eac3b.320a4227.js new file mode 100644 index 00000000000..805b9e3520d --- /dev/null +++ b/assets/js/fc0eac3b.320a4227.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[67927],{49063:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/10","page":10,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/9","nextPage":"/cardano-updates/page/11","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/fc8c3309.746176a0.js b/assets/js/fc8c3309.746176a0.js new file mode 100644 index 00000000000..55661fcf204 --- /dev/null +++ b/assets/js/fc8c3309.746176a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[77642],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=l(n),d=a,m=c["".concat(u,".").concat(d)]||c[d]||h[d]||o;return n?r.createElement(m,s(s({ref:t},p),{},{components:n})):r.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[c]="string"==typeof e?e:a,s[1]=i;for(var l=2;l<o;l++)s[l]=n[l];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},64267:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Consensus Team Update",slug:"2023-08-23-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},s=void 0,i={permalink:"/cardano-updates/2023-08-23-consensus",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-08-23-consensus.md",source:"@site/blog/2023-08-23-consensus.md",title:"Consensus Team Update",description:"High level summary",date:"2023-08-23T00:00:00.000Z",formattedDate:"August 23, 2023",tags:[{label:"consensus",permalink:"/cardano-updates/tags/consensus"}],readingTime:1.42,hasTruncateMarker:!1,authors:[{name:"Damian Nadales",title:"Consensus Team Lead",url:"https://github.com/dnadales",imageURL:"https://github.com/dnadales.png",key:"dnadales"}],frontMatter:{title:"Consensus Team Update",slug:"2023-08-23-consensus",authors:"dnadales",tags:["consensus"],hide_table_of_contents:!1},prevItem:{title:"Performance & tracing update",permalink:"/cardano-updates/2023-08-24-performance-and-tracing"},nextItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-08-18-goedel"}},u={authorsImageUrls:[void 0]},l=[{value:"High level summary",id:"high-level-summary",level:2},{value:"UTxO-HD",id:"utxo-hd",level:2},{value:"Tech debt",id:"tech-debt",level:2},{value:"Support",id:"support",level:2}],p={toc:l},c="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,a.kt)("p",null,"On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests.\nOn the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base."),(0,a.kt)("h2",{id:"utxo-hd"},"UTxO-HD"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We addressed the issues that came from the benchmarking and testing phase (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/314"},"#314"),").",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"We fixed the operational-certificate update exception (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/305"},"#305"),").")))),(0,a.kt)("h2",{id:"tech-debt"},"Tech debt"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-api/tree/jasagredo/consensus-api"},"this branch"),")."),(0,a.kt)("li",{parentName:"ul"},"We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/tree/jasagredo/test-sop"},"this branch"),")."),(0,a.kt)("li",{parentName:"ul"},"We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/issues/275"},"#275"),")."),(0,a.kt)("li",{parentName:"ul"},"We decreased the flakiness for our test suite (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/284"},"#284"),")."),(0,a.kt)("li",{parentName:"ul"},"We incorporated and merged the pull-request on query versioning (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/273"},"#273"),")."),(0,a.kt)("li",{parentName:"ul"},"We started working on new performance-based regression tests for mempool operations.")),(0,a.kt)("h2",{id:"support"},"Support"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/nfrisby"},"Nick Frisby")," continues with his engineer responsibilities. Notably getting the Consensus release out for node ",(0,a.kt)("inlineCode",{parentName:"li"},"pre-release 8.3"),". Nick also began integrating it into downstream branches (",(0,a.kt)("inlineCode",{parentName:"li"},"cardano{-api,-cli,-node}"),"). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/283"},"#283")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/301"},"#301")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/304"},"#304")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/ouroboros-consensus/pull/308"},"#308"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fce7e268.e65bf999.js b/assets/js/fce7e268.e65bf999.js new file mode 100644 index 00000000000..48bb54ab73c --- /dev/null +++ b/assets/js/fce7e268.e65bf999.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[62140],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var h=r.createContext({}),p=function(e){var t=r.useContext(h),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(h.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,h=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=p(a),c=n,m=d["".concat(h,".").concat(c)]||d[c]||u[c]||o;return a?r.createElement(m,i(i({ref:t},s),{},{components:a})):r.createElement(m,i({ref:t},s))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=c;var l={};for(var h in t)hasOwnProperty.call(t,h)&&(l[h]=t[h]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p<o;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},50153:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>h,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-03-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-03-hydra.md",source:"@site/blog/2023-03-03-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-03T00:00:00.000Z",formattedDate:"March 3, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:1.19,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-03-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-03-goedel"},nextItem:{title:"Ledger Team Update",permalink:"/cardano-updates/2023-03-03-ledger"}},h={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],s={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team released version\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/hydra/releases/tag/0.9.0"},"0.9.0")," - a version\nof the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," with fully specified behavior of on-chain scripts and\noff-chain head-logic, decreased costs for opening/closing a Head and scalable\ncontestation deadline semantics. Check out the full release notes for details."),(0,n.kt)("p",null,"Furthermore, they published the ",(0,n.kt)("a",{parentName:"p",href:"https://hydra.family/head-protocol/monthly/2023-03"},"monthly\nreport")," of the Hydra project\nand conducted a review meeting with an increasingly wider audience. The team\nplans to extend invitations through the new Hydra\n",(0,n.kt)("a",{parentName:"p",href:"https://discord.gg/Bwdy2jNdm2"},"#announcements")," discord channel for the next\nmonths, stay tuned!"),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Monthly review meeting with report published ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/monthly/2023-03"},"on website")),(0,n.kt)("li",{parentName:"ul"},"Fixed smoke tests ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/726"},"#726")),(0,n.kt)("li",{parentName:"ul"},"Reduced the cost of opening/closing a Head (error codes ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/748"},"#748")," + head reference script ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/701"},"#701"),")"),(0,n.kt)("li",{parentName:"ul"},"Released version ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/releases/tag/0.9.0"},"0.9.0")),(0,n.kt)("li",{parentName:"ul"},"Conducted a first experiment on mainnet compatibility ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713")),(0,n.kt)("li",{parentName:"ul"},"New discord category with ",(0,n.kt)("a",{parentName:"li",href:"https://discord.gg/Bwdy2jNdm2"},"#announcements")," channel"),(0,n.kt)("li",{parentName:"ul"},"Received a demo about the Hydra for Voting project"),(0,n.kt)("li",{parentName:"ul"},"Lightning talk on mutation-based testing (to be shared)"),(0,n.kt)("li",{parentName:"ul"},"New ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/orgs/input-output-hk/projects/21/views/26"},"themes view")," in on our roadmap and some rearranging as we align it with high-level objectives"),(0,n.kt)("li",{parentName:"ul"},"Clarified things with researchers, but mostly identified action items for them")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs and address TODOs specification"),(0,n.kt)("li",{parentName:"ul"},"Run hydraw with 0.9.0 on preprod"),(0,n.kt)("li",{parentName:"ul"},"Make smoke tests on mainnet possible"),(0,n.kt)("li",{parentName:"ul"},"Groom the explorer item"),(0,n.kt)("li",{parentName:"ul"},"Unblock the auctions projecth with ","\u201c","commit from script","\u201d"," a solution")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fd6fd4a3.1f94006f.js b/assets/js/fd6fd4a3.1f94006f.js new file mode 100644 index 00000000000..45389a9bc84 --- /dev/null +++ b/assets/js/fd6fd4a3.1f94006f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[37495],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(r),c=n,m=d["".concat(s,".").concat(c)]||d[c]||h[c]||o;return r?a.createElement(m,l(l({ref:t},u),{},{components:r})):a.createElement(m,l({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=c;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var p=2;p<o;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}c.displayName="MDXCreateElement"},66366:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const o={title:"Ledger Team Update",slug:"2022-11-23-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},l=void 0,i={permalink:"/cardano-updates/2022-11-23-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-23-ledger.md",source:"@site/blog/2022-11-23-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-11-23T00:00:00.000Z",formattedDate:"November 23, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.19,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-11-23-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-25-hydra"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-11-18-hydra"}},s={authorsImageUrls:[void 0]},p=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"The Conway ledger era",id:"the-conway-ledger-era",level:3},{value:"Versioned CBOR",id:"versioned-cbor",level:3},{value:"Deposit tracking",id:"deposit-tracking",level:3},{value:"Technical debt",id:"technical-debt",level:3},{value:"Node release",id:"node-release",level:3}],u={toc:p},d="wrapper";function h(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"We released ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694"),",\nour proposal for entering the ",(0,n.kt)("a",{parentName:"p",href:"https://roadmap.cardano.org/en/voltaire/"},"Voltaire phase"),".\n",(0,n.kt)("strong",{parentName:"p"},"Please come join the discussion"),", this will be an incredibly exciting transition for\nCardano and we want everyone to participate!"),(0,n.kt)("p",null,"We now have a sensible way to version all of the serialization schemes used in the ledger.\nThe draft pull request was polished, reviewed, and merged this week.\nThis solves many problems that have vexed us since the beginning of the Shelley ledger era."),(0,n.kt)("p",null,"Everyone working on the Cardano node is working together to improve our release process,\nand the ledger team in particular dedicated one engineer to help with these efforts\nfor the next release."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h3",{id:"the-conway-ledger-era"},"The Conway ledger era"),(0,n.kt)("p",null,"The current proposal in ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694")," encompasses two new ledger eras.\nThe first era will be called Conway, after the English mathematician John Horton Conway.\nThe community facing aspects of the Conway ledger era will be very minimal,\nbut it will pave the way for introducing liquid democracy.\nThe details can be viewed ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/4"},"here"),".\nWe do not yet have a formal specification for the Conway era.\nOur plan is to debut the\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/formal-ledger-specifications"},"formal ledger model"),".\nBriefly, the Conway ledger era will:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"introduce SPO voting for hard forks (in the spirit of the now abandoned ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/318"},"CIP-47"),")"),(0,n.kt)("li",{parentName:"ul"},"provide an on-chain mechanism for rotating the governance keys"),(0,n.kt)("li",{parentName:"ul"},"re-plumb the ledger rules involving governance to be in line with ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/cardano-foundation/CIPs/pull/380"},"CIP-1694"))),(0,n.kt)("h3",{id:"versioned-cbor"},"Versioned CBOR"),(0,n.kt)("p",null,"We now have the ability to easily tie our serialization schemes to the Cardano\nmajor protocol version.\nWe still aim to preserve backwards compatibility as much as possible, but we now have a principled\nplan for resolving problems (see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/372"},"CIP-ledger-cbor"),").\nIn particular, we can now address several long standing issues, such as\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/2444"},"issue-2444"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/2965"},"issue-2965"),", and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/3003"},"issue-3003"),". "),(0,n.kt)("p",null,"The final (and massive!) pull request which brought us the versioning is ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3138"},"pull-3138"),"."),(0,n.kt)("h3",{id:"deposit-tracking"},"Deposit tracking"),(0,n.kt)("p",null,"The draft pull request which was exploring how best to track individual deposits\nis much closer now to being ready to take out of draft (",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3127"},"pull-3127"),").\nFor background on the issue, see ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/issues/3113"},"issue-3113"),".\nThis is quite an invasive change which effects many of our tests, which we are now addressing."),(0,n.kt)("h3",{id:"technical-debt"},"Technical debt"),(0,n.kt)("p",null,"As always, we keep working on technical debt.\nWe have deduplicated a some things: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3129"},"pull-3129"),", ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3162"},"pull-3162"),".\nWe have memoized a problematic computation (though more due diligence is needed before we can\nmerge): ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3141"},"pull-3141"),"."),(0,n.kt)("h3",{id:"node-release"},"Node release"),(0,n.kt)("p",null,"We have been helping with the node release efforts. See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/pull/4608"},"pull-4608"),"."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fdba8f98.8aadb32b.js b/assets/js/fdba8f98.8aadb32b.js new file mode 100644 index 00000000000..4dfe035d7ed --- /dev/null +++ b/assets/js/fdba8f98.8aadb32b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79224],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),s=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=s(a),h=n,m=u["".concat(p,".").concat(h)]||u[h]||c[h]||o;return a?r.createElement(m,i(i({ref:t},d),{},{components:a})):r.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=a[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},1814:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={title:"Hydra Team Update",slug:"2023-03-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},i=void 0,l={permalink:"/cardano-updates/2023-03-10-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-03-10-hydra.md",source:"@site/blog/2023-03-10-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-03-10T00:00:00.000Z",formattedDate:"March 10, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.825,hasTruncateMarker:!1,authors:[{name:"Sebastian Nagel",title:"Hydra Team Lead",url:"https://github.com/ch1bo",imageURL:"https://github.com/ch1bo.png",key:"ch1bo"}],frontMatter:{title:"Hydra Team Update",slug:"2023-03-10-hydra",authors:"ch1bo",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Goedel Team Update",permalink:"/cardano-updates/2023-03-16-goedel"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-03-09-mithril"}},p={authorsImageUrls:[void 0]},s=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],d={toc:s},u="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team addressed issues with committing complex UTxOs into a\nHydra Head, prepared the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-node")," to be run on mainnet (soon) and improved\nthe test suite of the ",(0,n.kt)("inlineCode",{parentName:"p"},"hydra-plutus")," scripts. The specification is constantly\ngetting improved upon reviewer feedback on overleaf - this week the graphical\nnotation was refined to be more transaction-focused."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Clarified ","\u201c","bug","\u201d"," of committing UTxOs with reference scripts to a Hydra head ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/737"},"#737")),(0,n.kt)("li",{parentName:"ul"},"Prepare usage of ",(0,n.kt)("inlineCode",{parentName:"li"},"hydra-node")," on mainnet by updating command line options ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/pull/715"},"#715")),(0,n.kt)("li",{parentName:"ul"},"Improved our mutation test suite to all expected errors ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/705"},"#705")),(0,n.kt)("li",{parentName:"ul"},"Re-opened our persistent hydraw demo head on ",(0,n.kt)("inlineCode",{parentName:"li"},"preprod")," using version ",(0,n.kt)("inlineCode",{parentName:"li"},"0.9.0")),(0,n.kt)("li",{parentName:"ul"},"Updated on-chain graphs to be more transaction-focused in the specification")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Complete mainnet compatibility feature"),(0,n.kt)("li",{parentName:"ul"},"Prepare the Hydra workshop"),(0,n.kt)("li",{parentName:"ul"},"Address all todo\u2019s in the Hydra specification"),(0,n.kt)("li",{parentName:"ul"},"Unblock the auctions project with ","\u201c","commit from script","\u201d"," a solution")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fdfeff52.d2d4df98.js b/assets/js/fdfeff52.d2d4df98.js new file mode 100644 index 00000000000..d0c9e60b022 --- /dev/null +++ b/assets/js/fdfeff52.d2d4df98.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[81030],{49771:e=>{e.exports=JSON.parse('{"permalink":"/cardano-updates/tags/goedel/page/2","page":2,"postsPerPage":5,"totalPages":4,"totalCount":18,"previousPage":"/cardano-updates/tags/goedel","nextPage":"/cardano-updates/tags/goedel/page/3","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/fe184e91.4c2cc153.js b/assets/js/fe184e91.4c2cc153.js new file mode 100644 index 00000000000..5cbb57505e7 --- /dev/null +++ b/assets/js/fe184e91.4c2cc153.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[79967],{51034:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/tags/cli-api","page":1,"postsPerPage":5,"totalPages":6,"totalCount":27,"nextPage":"/cardano-updates/tags/cli-api/page/2","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/fee99998.1c695705.js b/assets/js/fee99998.1c695705.js new file mode 100644 index 00000000000..14abb131bef --- /dev/null +++ b/assets/js/fee99998.1c695705.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[91760],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),s=p(a),m=n,c=s["".concat(u,".").concat(m)]||s[m]||d[m]||i;return a?r.createElement(c,o(o({ref:t},h),{},{components:a})):r.createElement(c,o({ref:t},h))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},49627:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={title:"Hydra Team Update",slug:"2023-02-24-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},o=void 0,l={permalink:"/cardano-updates/2023-02-24-hydra",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2023-02-24-hydra.md",source:"@site/blog/2023-02-24-hydra.md",title:"Hydra Team Update",description:"High-level summary",date:"2023-02-24T00:00:00.000Z",formattedDate:"February 24, 2023",tags:[{label:"hydra",permalink:"/cardano-updates/tags/hydra"}],readingTime:.93,hasTruncateMarker:!1,authors:[{name:"Franco Testagrossa",title:"Hydra Software Engineer",url:"https://github.com/ffakenz",imageURL:"https://github.com/ffakenz.png",key:"ffakenz"}],frontMatter:{title:"Hydra Team Update",slug:"2023-02-24-hydra",authors:"ffakenz",tags:["hydra"],hide_table_of_contents:!1},prevItem:{title:"Network Team Update",permalink:"/cardano-updates/2023-03-02-network"},nextItem:{title:"Mithril Team Update",permalink:"/cardano-updates/2023-02-23-mithril"}},u={authorsImageUrls:[void 0]},p=[{value:"High-level summary",id:"high-level-summary",level:2},{value:"What did the team achieve this week",id:"what-did-the-team-achieve-this-week",level:2},{value:"What are the goals of next week",id:"what-are-the-goals-of-next-week",level:2}],h={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High-level summary"),(0,n.kt)("p",null,"This week, the Hydra team continue closing many gaps and aligning the\nimplementation with the specification. More over, they have groomed a plan to\nmake Hydra Mainnet compatible. Also, they continue moving forward with the\ninternal auditing and have published some auditing guidelines to receive\ncontributions from the community."),(0,n.kt)("h2",{id:"what-did-the-team-achieve-this-week"},"What did the team achieve this week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Completed ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/452"},"#452")," (what is\nremaining in there)"),(0,n.kt)("li",{parentName:"ul"},"Aligned the Head protocol logic implementation with the specification"),(0,n.kt)("li",{parentName:"ul"},"Completed full minting policy implementation and spec\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/720"},"#720")),(0,n.kt)("li",{parentName:"ul"},"Clarified message authentication with researchers"),(0,n.kt)("li",{parentName:"ul"},"Groomed what is left to do for Mainnet compatibility\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/713"},"#713")," and drafted a\n0.10.0 version"),(0,n.kt)("li",{parentName:"ul"},"Added a tutorial by ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/perturbing/"},"@perturbing")," to the\nwebsite ",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/docs/tutorial/"},"LINK")),(0,n.kt)("li",{parentName:"ul"},"Published auditing guidelines\n",(0,n.kt)("a",{parentName:"li",href:"https://hydra.family/head-protocol/audit-guidelines"},"LINK")),(0,n.kt)("li",{parentName:"ul"},"Made hydra-node work for macos\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/746"},"#746")," and added support\nfor building on aarch64\n",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/hydra/issues/673"},"#673")),(0,n.kt)("li",{parentName:"ul"},"Met with a potential customer of Hydra for Payments")),(0,n.kt)("h2",{id:"what-are-the-goals-of-next-week"},"What are the goals of next week"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Have the monthly review meeting incl. the report"),(0,n.kt)("li",{parentName:"ul"},"Have smoke tests fixed and running regularly"),(0,n.kt)("li",{parentName:"ul"},"Release 0.9.0 with updated scripts"),(0,n.kt)("li",{parentName:"ul"},"Redraw transaction graphs for specification")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ff276f6a.72f5da9b.js b/assets/js/ff276f6a.72f5da9b.js new file mode 100644 index 00000000000..f0e455ee425 --- /dev/null +++ b/assets/js/ff276f6a.72f5da9b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[39969],{20040:a=>{a.exports=JSON.parse('{"label":"network","permalink":"/cardano-updates/tags/network","allTagsPath":"/cardano-updates/tags","count":24}')}}]); \ No newline at end of file diff --git a/assets/js/ff8cfcf7.83f44d88.js b/assets/js/ff8cfcf7.83f44d88.js new file mode 100644 index 00000000000..7ad9eb2f325 --- /dev/null +++ b/assets/js/ff8cfcf7.83f44d88.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[20203],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),u=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(d.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=u(a),h=n,m=s["".concat(d,".").concat(h)]||s[h]||c[h]||l;return a?r.createElement(m,o(o({ref:t},p),{},{components:a})):r.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=h;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i[s]="string"==typeof e?e:n,o[1]=i;for(var u=2;u<l;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},98149:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const l={title:"Ledger Team Update",slug:"2022-12-09-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},o=void 0,i={permalink:"/cardano-updates/2022-12-09-ledger",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-12-09-ledger.md",source:"@site/blog/2022-12-09-ledger.md",title:"Ledger Team Update",description:"High level summary",date:"2022-12-09T00:00:00.000Z",formattedDate:"December 9, 2022",tags:[{label:"ledger",permalink:"/cardano-updates/tags/ledger"}],readingTime:2.87,hasTruncateMarker:!1,authors:[{name:"Jared Corduan",title:"Ledger Team Lead",url:"https://github.com/JaredCorduan",imageURL:"https://github.com/JaredCorduan.png",key:"JaredCorduan"}],frontMatter:{title:"Ledger Team Update",slug:"2022-12-09-ledger",authors:"JaredCorduan",tags:["ledger"],hide_table_of_contents:!1},prevItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-09-hydra"},nextItem:{title:"Hydra Team Update",permalink:"/cardano-updates/2022-12-02-hydra"}},d={authorsImageUrls:[void 0]},u=[{value:"High level summary",id:"high-level-summary",level:2},{value:"Lower level summary",id:"lower-level-summary",level:2},{value:"Cardano ledger API",id:"cardano-ledger-api",level:4},{value:"Architectural Decision Records (ADRs)",id:"architectural-decision-records-adrs",level:4},{value:"Tracking individual deposits",id:"tracking-individual-deposits",level:4},{value:"Removing pointer addresses",id:"removing-pointer-addresses",level:4},{value:"Technical debt",id:"technical-debt",level:4}],p={toc:u},s="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(s,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"high-level-summary"},"High level summary"),(0,n.kt)("p",null,"The Plutus tools team at IOG has started helping the ledger team to build out a user friendly\n",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-ledger-api")," package!\nA ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/5"},"GitHub project"),"\nwill be filled out in the days ahead,\npeople interested in the API can use it to follow along and join in on the conversations."),(0,n.kt)("p",null,"The ledger team has started using\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/blob/6fc0e198560fb4169d435da882394930789a8af8/docs/adr/2022-12-01_001-record-architectural-decisions.md"},"architectural decision records"),"\nto leave a record of important decisions that the team makes.\nWe will retroactively go back through past decisions and make ADRs for them."),(0,n.kt)("p",null,"The logic to track individual deposits is now nearly in place.\nWe are prioritizing correctness with our first pull request, and will follow up with\nperformance optimizations and general cleanup next."),(0,n.kt)("p",null,"Pointer addresses are being deprecated with the Cardano major protocol version 8.\nSee ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/374"},"CPS-0002"),"\nfor more context."),(0,n.kt)("h2",{id:"lower-level-summary"},"Lower level summary"),(0,n.kt)("h4",{id:"cardano-ledger-api"},"Cardano ledger API"),(0,n.kt)("p",null,"The ",(0,n.kt)("strong",{parentName:"p"},"Plutus tools team")," has taken our minimal ",(0,n.kt)("inlineCode",{parentName:"p"},"cardano-ledger-api")," package and started filling it\nout and adding much needed documentation.\nThey have also added doctests!\nIn the days to come, the Plutus tools team will map out a lot more work for the API and record\nit in this\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/projects/5"},"GitHub project"),"."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3182"},"pull-3182")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3188"},"pull-3188"))),(0,n.kt)("h4",{id:"architectural-decision-records-adrs"},"Architectural Decision Records (ADRs)"),(0,n.kt)("p",null,"We are now providing more context and leaving a record of important decisions that are made\nin the ledger. The first ADR explains the very lightweight process."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3177"},"pull-3177")," (rendered ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/blob/6fc0e198560fb4169d435da882394930789a8af8/docs/adr/2022-12-01_001-record-architectural-decisions.md"},"here"),")")),(0,n.kt)("h4",{id:"tracking-individual-deposits"},"Tracking individual deposits"),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-ledger/pull/3190/files"},"ADR-3"),"\nfor background.\nWe now have the logic in place to track individual deposits, and a host of property tests\nto make sure that the logic is correct.\nThe current implementation uses more memory than it needs to, and we will address that next,\nwith our hope being to only use one word (8 bytes) per registered stake credential.\nThere is a fair amount of other cleanup needed for general maintainability."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3127"},"pull-3127")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3195"},"pull-3195")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3202"},"pull-3202"))),(0,n.kt)("h4",{id:"removing-pointer-addresses"},"Removing pointer addresses"),(0,n.kt)("p",null,"Pointer addresses, which have never seen any real use\n(there are something like eleven on mainnet), are being deprecated starting at Cardano major\nversion 9.\n",(0,n.kt)("a",{parentName:"p",href:"https://github.com/cardano-foundation/CIPs/pull/374"},"CPS-0002")," gives the context.\nWe are disabling them by first preventing transaction outputs containing them\nfrom being serialized by the node at the moment we switch to version 9.\nAt the hard fork after that, we will translate the existing few pointer addresses\nto enterprise addresses."),(0,n.kt)("p",null,"See"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3174"},"pull-3174"))),(0,n.kt)("h4",{id:"technical-debt"},"Technical debt"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3162"},"pull-3162")," - Sometimes we have to put safeguards in place for hard forks which may never\nbe exercised. After we have passed the given hardfork, we are able to clean up the code\nand simplify our logic. We removed all of the ones that we are currently easily able to."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3165"},"pull-3165")," - We improved the type safety of our code while also discovering and fixing\na serialization bug."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3172"},"pull-3172")," - We removed dead code."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3175"},"pull-3175")," - The Allegra and the Mary code used to be coupled in a particular way the we grew to\ndislike. We made these two ledger eras now uniform with the rest of our code base."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3184"},"pull-3184")," - We organized our property testing code."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/input-output-hk/cardano-ledger/pull/3200"},"pull-3200")," - The Plutus tools teams fixed an outstanding bug in the translation from the\nledger state to the Plutus script context.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ffbc2281.bed0db17.js b/assets/js/ffbc2281.bed0db17.js new file mode 100644 index 00000000000..d7a7b316ac1 --- /dev/null +++ b/assets/js/ffbc2281.bed0db17.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[64906],{21299:a=>{a.exports=JSON.parse('{"permalink":"/cardano-updates/page/46","page":46,"postsPerPage":5,"totalPages":61,"totalCount":303,"previousPage":"/cardano-updates/page/45","nextPage":"/cardano-updates/page/47","blogDescription":"Regular updates from Cardano Development Teams","blogTitle":"Cardano Development Updates"}')}}]); \ No newline at end of file diff --git a/assets/js/main.bc51b93f.js b/assets/js/main.bc51b93f.js new file mode 100644 index 00000000000..af293849c15 --- /dev/null +++ b/assets/js/main.bc51b93f.js @@ -0,0 +1,2 @@ +/*! For license information please see main.bc51b93f.js.LICENSE.txt */ +(self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[]).push([[40179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(67294),r=n(87462),o=n(68356),c=n.n(o),i=n(16887);const d={"0048047b":[()=>n.e(38518).then(n.bind(n,79682)),"@site/blog/2022-12-28-node-cli-api.md?truncated=true",79682],"007e4c05":[()=>n.e(73800).then(n.bind(n,65907)),"@site/blog/2023-07-18-node-cli-api.md",65907],"00bb8269":[()=>n.e(51257).then(n.t.bind(n,69088,19)),"~blog/updates/cardano-updates-tags-mithril-page-3-b18.json",69088],"015be621":[()=>n.e(80613).then(n.bind(n,77613)),"@site/blog/2022-09-20-consensus.md",77613],"017cd6b7":[()=>n.e(3649).then(n.bind(n,14286)),"@site/blog/2022-11-18-hydra.md",14286],"019bb279":[()=>n.e(83167).then(n.bind(n,86627)),"@site/blog/2022-08-31-consensus.md?truncated=true",86627],"01a85c17":[()=>Promise.all([n.e(40532),n.e(64013)]).then(n.bind(n,91223)),"@theme/BlogTagsListPage",91223],"0281a492":[()=>n.e(79503).then(n.bind(n,69998)),"@site/blog/2023-06-08-sre.md",69998],"034a14a6":[()=>n.e(95018).then(n.bind(n,10437)),"@site/blog/2023-06-28-performance-and-tracing.md?truncated=true",10437],"03d856aa":[()=>n.e(6413).then(n.bind(n,17040)),"@site/blog/2022-11-11-network.md",17040],"042169f6":[()=>n.e(27449).then(n.bind(n,7841)),"@site/blog/2022-12-01-mithril.md",7841],"0431617f":[()=>n.e(68153).then(n.bind(n,33018)),"@site/blog/2023-04-28-goedel.md?truncated=true",33018],"04326247":[()=>n.e(25759).then(n.bind(n,2327)),"@site/blog/2023-01-25-node-cli-api.md?truncated=true",2327],"046dd16d":[()=>n.e(49237).then(n.bind(n,55442)),"@site/blog/2023-09-15-network.md?truncated=true",55442],"04c3317f":[()=>n.e(83050).then(n.bind(n,10313)),"@site/blog/2023-03-27-system-test.md?truncated=true",10313],"04cbd10c":[()=>n.e(97245).then(n.t.bind(n,4032,19)),"~blog/updates/cardano-updates-tags-hydra-page-5-62d.json",4032],"05f2862f":[()=>n.e(18479).then(n.bind(n,88989)),"@site/blog/2023-04-07-hydra.md",88989],"0645cd02":[()=>n.e(46982).then(n.bind(n,57276)),"@site/blog/2023-07-21-ledger.md?truncated=true",57276],"06a283ef":[()=>n.e(2307).then(n.bind(n,15889)),"@site/blog/2022-10-04-db-sync.md?truncated=true",15889],"07541956":[()=>n.e(39419).then(n.t.bind(n,95884,19)),"~blog/updates/cardano-updates-page-15-d79.json",95884],"07fdf123":[()=>n.e(39439).then(n.bind(n,86757)),"@site/blog/2023-01-13-release.md?truncated=true",86757],"0801ba5a":[()=>n.e(19644).then(n.bind(n,26870)),"@site/blog/2023-05-26-hydra.md?truncated=true",26870],"089154c4":[()=>n.e(72344).then(n.bind(n,83365)),"@site/blog/2022-11-02-node-cli-api.md",83365],"08c82b6d":[()=>n.e(81).then(n.t.bind(n,7232,19)),"/home/runner/work/cardano-updates/cardano-updates/.docusaurus/docusaurus-plugin-content-blog/updates/plugin-route-context-module-100.json",7232],"09abc415":[()=>n.e(416).then(n.t.bind(n,15546,19)),"~blog/updates/cardano-updates-tags-devx-3a5.json",15546],"0a44a251":[()=>n.e(63565).then(n.bind(n,51604)),"@site/blog/2022-12-14-node-cli-api.md?truncated=true",51604],"0ade4266":[()=>n.e(16227).then(n.bind(n,27126)),"@site/blog/2023-11-17-hydra.md",27126],"0af81f82":[()=>n.e(10114).then(n.bind(n,61640)),"@site/blog/2023-03-31-ledger.md?truncated=true",61640],"0b0bfceb":[()=>n.e(60903).then(n.bind(n,27558)),"@site/blog/2023-10-13-sre.md",27558],"0b1b72af":[()=>n.e(26276).then(n.bind(n,23329)),"@site/blog/2022-12-09-crypto.md?truncated=true",23329],"0b5e25e7":[()=>n.e(23621).then(n.bind(n,17681)),"@site/blog/2023-11-01-consensus.md?truncated=true",17681],"0c10bcf4":[()=>n.e(72872).then(n.bind(n,10221)),"@site/blog/2023-05-19-hydra.md",10221],"0c11045c":[()=>n.e(39745).then(n.bind(n,56996)),"@site/blog/2023-02-03-goedel.md?truncated=true",56996],"0c48efb1":[()=>n.e(41794).then(n.bind(n,35468)),"@site/blog/2023-02-17-hydra.md",35468],"0d671897":[()=>n.e(29059).then(n.bind(n,75396)),"@site/blog/2022-11-01-db-sync.md?truncated=true",75396],"0d7612e9":[()=>n.e(95739).then(n.t.bind(n,1844,19)),"~blog/updates/cardano-updates-tags-db-sync-page-3-7db.json",1844],"0d889cfb":[()=>n.e(27237).then(n.bind(n,30309)),"@site/blog/2023-03-17-hydra.md",30309],"0db650db":[()=>n.e(74607).then(n.bind(n,49165)),"@site/blog/2023-03-22-consensus.md?truncated=true",49165],"0dc0e43e":[()=>n.e(29614).then(n.t.bind(n,67195,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-3-d14.json",67195],"0de82e28":[()=>n.e(66743).then(n.t.bind(n,37624,19)),"~docs/default/category-cardano-updatesdocs-defaultsidebar-category-tutorial-extras-741.json",37624],"0dea9a3b":[()=>n.e(4910).then(n.bind(n,96597)),"@site/quarterly/2023-01-13-open-source.md",96597],"0dfea636":[()=>n.e(21200).then(n.bind(n,81038)),"@site/blog/2023-07-04-db-sync.md?truncated=true",81038],"0e0c98f4":[()=>n.e(60280).then(n.bind(n,91321)),"@site/blog/2023-08-18-network.md?truncated=true",91321],"0e384e19":[()=>n.e(59671).then(n.bind(n,59881)),"@site/docs/intro.md",59881],"0e717c32":[()=>n.e(26397).then(n.bind(n,40284)),"@site/blog/2023-11-29-mithril.md",40284],"0e828f3a":[()=>n.e(77338).then(n.bind(n,2105)),"@site/blog/2023-09-15-ledger.md?truncated=true",2105],"0ee9866d":[()=>n.e(87314).then(n.t.bind(n,25206,19)),"~blog/updates/cardano-updates-page-27-9a2.json",25206],"0fa2fd29":[()=>n.e(83646).then(n.bind(n,83216)),"@site/blog/2023-06-16-hydra.md",83216],10532414:[()=>n.e(6890).then(n.bind(n,97835)),"@site/blog/2023-08-04-goedel.md?truncated=true",97835],"10659ce5":[()=>n.e(40400).then(n.bind(n,62471)),"@site/blog/2022-11-16-node-cli-api.md?truncated=true",62471],"113fed8c":[()=>n.e(33215).then(n.bind(n,2073)),"@site/blog/2023-07-12-consensus.md?truncated=true",2073],11423591:[()=>n.e(96410).then(n.bind(n,73677)),"@site/blog/2023-06-08-sre.md?truncated=true",73677],"1147f4da":[()=>n.e(21463).then(n.bind(n,75148)),"@site/blog/2022-11-03-embedding-quality.md",75148],"120c0b00":[()=>n.e(59955).then(n.bind(n,33276)),"@site/blog/2022-11-30-node-cli-api.md",33276],"12208c5e":[()=>n.e(32852).then(n.bind(n,32458)),"@site/blog/2023-07-21-hydra.md",32458],"12525f14":[()=>n.e(46207).then(n.bind(n,96725)),"@site/quarterly/2023-04-03-ledger.md?truncated=true",96725],"12637b23":[()=>n.e(32706).then(n.bind(n,24879)),"@site/blog/2023-05-24-node-cli-api.md?truncated=true",24879],"126e82e6":[()=>n.e(96871).then(n.bind(n,67870)),"@site/blog/2022-11-02-ledger.md?truncated=true",67870],"12a1613f":[()=>n.e(4615).then(n.bind(n,65518)),"@site/blog/2023-08-11-performance-and-tracing.md?truncated=true",65518],"12c83d8a":[()=>n.e(58774).then(n.bind(n,77470)),"@site/blog/2023-07-28-hydra.md",77470],"12d5d907":[()=>n.e(16348).then(n.bind(n,37534)),"@site/blog/2023-04-07-hydra.md?truncated=true",37534],"12ef8706":[()=>n.e(61039).then(n.t.bind(n,91703,19)),"~blog/updates/cardano-updates-tags-hydra-page-6-174-list.json",91703],"1377d1fa":[()=>n.e(79841).then(n.bind(n,92927)),"@site/blog/2022-10-19-node-cli-api.md",92927],"144cea98":[()=>n.e(50881).then(n.bind(n,86528)),"@site/blog/2023-02-22-node-cli-api.md",86528],"144cf255":[()=>n.e(55553).then(n.bind(n,34167)),"@site/blog/2022-11-04-mithril.md?truncated=true",34167],"14eb3368":[()=>Promise.all([n.e(40532),n.e(9817)]).then(n.bind(n,34228)),"@theme/DocCategoryGeneratedIndexPage",34228],"14fc0a72":[()=>n.e(43686).then(n.t.bind(n,52256,19)),"~blog/updates/cardano-updates-tags-performance-tracing-52e-list.json",52256],"14ffac04":[()=>n.e(59494).then(n.bind(n,16801)),"@site/blog/2023-09-01-ledger.md",16801],"15072f11":[()=>n.e(83129).then(n.bind(n,49702)),"@site/quarterly/2022-11-07-ledger.md?truncated=true",49702],"154dea53":[()=>n.e(45542).then(n.t.bind(n,46622,19)),"~blog/updates/cardano-updates-tags-ledger-page-3-db1.json",46622],"15691c1d":[()=>n.e(43729).then(n.bind(n,19289)),"@site/blog/2023-08-17-secp-security-issue-report.md",19289],"15dc596d":[()=>n.e(6962).then(n.bind(n,487)),"@site/blog/2022-11-02-system-test.md?truncated=true",487],"166775fd":[()=>n.e(99847).then(n.t.bind(n,39399,19)),"~blog/updates/cardano-updates-tags-ledger-page-2-c49-list.json",39399],"16a93549":[()=>n.e(4307).then(n.bind(n,68546)),"@site/blog/2023-07-07-sre.md",68546],"1752e4e5":[()=>n.e(770).then(n.bind(n,9131)),"@site/blog/2023-10-18-consensus.md?truncated=true",9131],17630979:[()=>n.e(93724).then(n.bind(n,22903)),"@site/blog/2022-11-02-system-test.md",22903],"177280a4":[()=>n.e(95447).then(n.bind(n,67686)),"@site/blog/2022-11-11-hydra.md?truncated=true",67686],17896441:[()=>Promise.all([n.e(40532),n.e(80210),n.e(27918)]).then(n.bind(n,15154)),"@theme/DocItem",15154],"17e76f05":[()=>n.e(64966).then(n.bind(n,24065)),"@site/blog/2023-05-12-hydra.md?truncated=true",24065],"17f4ca64":[()=>n.e(37426).then(n.t.bind(n,32942,19)),"~blog/updates/cardano-updates-tags-mithril-page-3-b18-list.json",32942],"187056c8":[()=>n.e(40430).then(n.bind(n,1377)),"@site/blog/2022-11-11-crypto.md",1377],"18c41134":[()=>n.e(82859).then(n.bind(n,43494)),"@site/docs/tutorial-basics/markdown-features.mdx",43494],"1a21d6a2":[()=>n.e(18694).then(n.t.bind(n,98253,19)),"~blog/updates/cardano-updates-tags-crypto-b1b-list.json",98253],"1a657a20":[()=>n.e(97382).then(n.t.bind(n,26170,19)),"~blog/updates/cardano-updates-tags-cli-api-page-2-8d5.json",26170],"1a932c01":[()=>n.e(2348).then(n.bind(n,48897)),"@site/blog/2023-08-17-db-sync.md?truncated=true",48897],"1afca88e":[()=>n.e(49835).then(n.bind(n,3693)),"@site/blog/2023-10-02-network.md",3693],"1b0bebd5":[()=>n.e(97801).then(n.t.bind(n,17169,19)),"~blog/updates/cardano-updates-page-61-ee7.json",17169],"1b2a226f":[()=>n.e(88782).then(n.bind(n,67497)),"@site/blog/2023-09-07-mithril.md",67497],"1b2c892c":[()=>n.e(53210).then(n.t.bind(n,69530,19)),"~blog/quarterly/cardano-updates-quarterly-tags-performance-tracing-bbf-list.json",69530],"1b2c8e6e":[()=>n.e(36303).then(n.t.bind(n,43673,19)),"~blog/updates/cardano-updates-tags-cli-api-page-6-f69.json",43673],"1b34f23d":[()=>n.e(91990).then(n.bind(n,91179)),"@site/blog/2023-11-20-cip1694.md",91179],"1be78505":[()=>Promise.all([n.e(40532),n.e(29514)]).then(n.bind(n,19963)),"@theme/DocPage",19963],"1be923a7":[()=>n.e(47658).then(n.bind(n,43079)),"@site/blog/2023-06-12-network.md?truncated=true",43079],"1c192ca4":[()=>n.e(23146).then(n.bind(n,31697)),"@site/blog/2023-11-15-mithril.md?truncated=true",31697],"1caacab6":[()=>n.e(85442).then(n.bind(n,89790)),"@site/blog/2023-03-10-hydra.md?truncated=true",89790],"1d10bd9e":[()=>n.e(5978).then(n.bind(n,66143)),"@site/blog/2023-03-08-node-cli-api.md",66143],"1da92289":[()=>n.e(22954).then(n.bind(n,49363)),"@site/blog/2022-11-03-embedding-quality.md?truncated=true",49363],"1e0f95a7":[()=>n.e(65123).then(n.t.bind(n,85782,19)),"~blog/updates/cardano-updates-page-17-faf.json",85782],"1e24dd00":[()=>n.e(11652).then(n.t.bind(n,42664,19)),"~blog/quarterly/cardano-updates-quarterly-tags-open-source-e7c-list.json",42664],"1e4232ab":[()=>n.e(88818).then(n.bind(n,6193)),"@site/docs/tutorial-basics/create-a-document.md",6193],"1e57c0e2":[()=>n.e(64313).then(n.bind(n,45222)),"@site/blog/2023-08-18-goedel.md?truncated=true",45222],"1f391b9e":[()=>Promise.all([n.e(40532),n.e(80210),n.e(13085)]).then(n.bind(n,14247)),"@theme/MDXPage",14247],"1f965afe":[()=>n.e(20635).then(n.t.bind(n,1948,19)),"~blog/updates/cardano-updates-tags-network-page-3-643-list.json",1948],"1f9c0c9c":[()=>n.e(28323).then(n.bind(n,3315)),"@site/blog/2023-09-20-mithril.md",3315],"2073b851":[()=>Promise.all([n.e(51068),n.e(47704)]).then(n.bind(n,3529)),"@site/blog/2022-09-27-network.md?truncated=true",3529],"209bf559":[()=>n.e(80367).then(n.bind(n,73937)),"@site/blog/2023-10-02-network.md?truncated=true",73937],"20bc6fcd":[()=>n.e(4093).then(n.bind(n,46994)),"@site/blog/2023-06-09-developer-experience.md",46994],"20ca2c37":[()=>n.e(38516).then(n.bind(n,12772)),"@site/blog/2023-07-04-db-sync.md",12772],"2154b8e4":[()=>n.e(28480).then(n.bind(n,39253)),"@site/blog/2023-05-26-ledger.md?truncated=true",39253],"21735eff":[()=>n.e(64156).then(n.t.bind(n,60430,19)),"~blog/updates/cardano-updates-tags-network-page-2-514-list.json",60430],"21857c8f":[()=>n.e(85417).then(n.bind(n,7484)),"@site/blog/2022-12-01-system-test.md",7484],"219856ee":[()=>n.e(2109).then(n.bind(n,47873)),"@site/blog/2023-04-28-goedel.md",47873],"2276e554":[()=>n.e(28843).then(n.bind(n,6380)),"@site/blog/2023-08-04-network.md",6380],"237aa4d6":[()=>n.e(98918).then(n.bind(n,71014)),"@site/blog/2023-07-20-goedel.md",71014],"23a95b4f":[()=>n.e(94583).then(n.t.bind(n,56372,19)),"~blog/updates/cardano-updates-tags-consensus-page-4-6d0.json",56372],"2455acc4":[()=>n.e(21642).then(n.bind(n,36107)),"@site/blog/2023-08-15-node-cli-api.md",36107],"245ecae9":[()=>n.e(65356).then(n.bind(n,27417)),"@site/blog/2023-09-15-hydra.md",27417],"246d9f04":[()=>n.e(7966).then(n.bind(n,52531)),"@site/blog/2023-08-04-crypto.md?truncated=true",52531],"2494f6fc":[()=>n.e(57583).then(n.t.bind(n,4452,19)),"~blog/quarterly/cardano-updates-quarterly-tags-tags-a76.json",4452],"24d5a6d9":[()=>n.e(98698).then(n.bind(n,35142)),"@site/blog/2023-09-27-mithril.md?truncated=true",35142],"255b72b4":[()=>n.e(22109).then(n.t.bind(n,42018,19)),"~blog/updates/cardano-updates-tags-ledger-page-6-e5e.json",42018],"26678b7e":[()=>n.e(47724).then(n.bind(n,32447)),"@site/blog/2022-12-02-hydra.md",32447],"26a4b8b3":[()=>n.e(47669).then(n.bind(n,39448)),"@site/blog/2023-12-04-performance-and-tracing.md?truncated=true",39448],"274d7200":[()=>n.e(26565).then(n.bind(n,38189)),"@site/blog/2022-11-11-ledger.md?truncated=true",38189],"27c15961":[()=>n.e(73798).then(n.t.bind(n,32264,19)),"~blog/updates/cardano-updates-tags-goedel-page-2-248.json",32264],"27c463c7":[()=>n.e(24327).then(n.t.bind(n,83769,19)),"/home/runner/work/cardano-updates/cardano-updates/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],28874657:[()=>n.e(28592).then(n.bind(n,68472)),"@site/blog/2023-03-08-consensus.md",68472],"28bc1d1b":[()=>n.e(1285).then(n.bind(n,41578)),"@site/blog/2023-06-08-system-test.md?truncated=true",41578],"28d85025":[()=>n.e(5214).then(n.bind(n,85773)),"@site/blog/2023-12-06-ledger.md",85773],"29801efc":[()=>n.e(50307).then(n.t.bind(n,22660,19)),"~blog/updates/cardano-updates-page-45-d2f.json",22660],"2a8f0182":[()=>n.e(57227).then(n.bind(n,82749)),"@site/blog/2023-03-22-node-cli-api.md",82749],"2b637fd9":[()=>n.e(69376).then(n.bind(n,75477)),"@site/blog/2023-09-14-db-sync.md",75477],"2bc04bf6":[()=>n.e(56010).then(n.bind(n,16010)),"@site/blog/2023-06-01-mithril.md",16010],"2c045882":[()=>n.e(98777).then(n.t.bind(n,52488,19)),"~blog/updates/cardano-updates-tags-performance-tracing-52e.json",52488],"2d0da244":[()=>n.e(26299).then(n.bind(n,91989)),"@site/blog/2023-04-28-crypto.md?truncated=true",91989],"2d52a685":[()=>n.e(20553).then(n.bind(n,7623)),"@site/blog/2023-05-31-performance-and-tracing.md?truncated=true",7623],"2d72833d":[()=>n.e(18303).then(n.bind(n,22472)),"@site/blog/2023-02-17-hydra.md?truncated=true",22472],"2d91c21f":[()=>n.e(30335).then(n.bind(n,27810)),"@site/blog/2023-04-17-incident.md",27810],"2dd2949a":[()=>n.e(6996).then(n.t.bind(n,64145,19)),"~blog/updates/cardano-updates-page-58-02b.json",64145],"2e28eb6b":[()=>n.e(46576).then(n.bind(n,74929)),"@site/blog/2023-08-10-mithril.md?truncated=true",74929],"2e2abe90":[()=>n.e(69467).then(n.bind(n,18367)),"@site/blog/2023-01-19-ledger.md?truncated=true",18367],"2e52ad4e":[()=>n.e(66840).then(n.bind(n,80401)),"@site/blog/2023-03-17-crypto.md",80401],"2e69cd33":[()=>n.e(45662).then(n.t.bind(n,15238,19)),"~blog/updates/cardano-updates-tags-ledger-cda.json",15238],"2eba0b82":[()=>n.e(43898).then(n.bind(n,92134)),"@site/blog/2023-01-20-sre.md",92134],"2ebccc4d":[()=>n.e(98370).then(n.t.bind(n,18194,19)),"~blog/updates/cardano-updates-page-47-ed7.json",18194],"2f97c20a":[()=>n.e(15677).then(n.t.bind(n,8806,19)),"~blog/updates/cardano-updates-page-32-9a7.json",8806],"2fa57f55":[()=>n.e(47176).then(n.bind(n,52901)),"@site/blog/2022-09-01-ledger.md?truncated=true",52901],"2fd426fa":[()=>n.e(36016).then(n.bind(n,89488)),"@site/blog/2023-01-11-consensus.md",89488],"301cd1f4":[()=>n.e(11952).then(n.bind(n,30886)),"@site/blog/2023-08-23-consensus.md",30886],"31025fde":[()=>n.e(22519).then(n.bind(n,53320)),"@site/blog/2023-09-08-hydra.md?truncated=true",53320],"3143eb67":[()=>n.e(7204).then(n.bind(n,57574)),"@site/blog/2023-01-11-performance-and-tracing.md?truncated=true",57574],"31889a8f":[()=>n.e(96446).then(n.bind(n,59591)),"@site/blog/2022-11-02-consensus.md?truncated=true",59591],"324138c8":[()=>n.e(95613).then(n.bind(n,42554)),"@site/blog/2023-02-22-consensus.md",42554],"32d4ad41":[()=>n.e(42575).then(n.bind(n,17402)),"@site/blog/2022-11-11-hydra.md",17402],"3328a3bf":[()=>n.e(86393).then(n.bind(n,44495)),"@site/blog/2022-10-04-db-sync.md",44495],"335868d9":[()=>n.e(45480).then(n.bind(n,98404)),"@site/blog/2023-11-29-consensus.md",98404],"3399a664":[()=>n.e(70950).then(n.bind(n,36908)),"@site/blog/2023-09-12-node-cli-api.md?truncated=true",36908],34012593:[()=>n.e(86809).then(n.bind(n,22555)),"@site/blog/2023-03-03-goedel.md",22555],"347c3e4d":[()=>n.e(23271).then(n.bind(n,43292)),"@site/blog/2022-12-01-db-sync.md",43292],"34c17ec8":[()=>n.e(91902).then(n.t.bind(n,52219,19)),"~blog/quarterly/cardano-updates-quarterly-b07.json",52219],"35369e36":[()=>n.e(74433).then(n.t.bind(n,54137,19)),"~blog/updates/cardano-updates-tags-goedel-page-3-ef0.json",54137],"354f96c6":[()=>n.e(78580).then(n.bind(n,21287)),"@site/blog/2023-10-04-consensus.md",21287],"35785fae":[()=>n.e(7233).then(n.bind(n,56031)),"@site/blog/2023-01-27-hydra.md?truncated=true",56031],35961293:[()=>n.e(6115).then(n.bind(n,69047)),"@site/blog/2023-11-22-mithril.md",69047],"359aa856":[()=>n.e(97317).then(n.t.bind(n,2112,19)),"~blog/updates/cardano-updates-tags-embedding-quality-232-list.json",2112],"35c3586e":[()=>n.e(2789).then(n.bind(n,70373)),"@site/blog/2023-10-06-hydra.md?truncated=true",70373],"35e2a0c5":[()=>n.e(90999).then(n.bind(n,53873)),"@site/blog/2023-09-29-ledger.md",53873],"35ef34ae":[()=>n.e(44966).then(n.bind(n,6768)),"@site/blog/2023-08-04-sre.md?truncated=true",6768],"35f1ce0d":[()=>n.e(35400).then(n.t.bind(n,80299,19)),"~blog/updates/cardano-updates-tags-crypto-b1b.json",80299],"36a96f5a":[()=>n.e(92160).then(n.bind(n,5083)),"@site/blog/2023-11-09-db-sync.md",5083],"370c5287":[()=>n.e(32438).then(n.bind(n,24475)),"@site/blog/2022-10-28-network.md",24475],"372219b0":[()=>n.e(24251).then(n.t.bind(n,13598,19)),"~blog/updates/cardano-updates-tags-tags-fe2.json",13598],"376dd8e8":[()=>n.e(55413).then(n.t.bind(n,36140,19)),"~blog/updates/cardano-updates-tags-consensus-page-5-ec6.json",36140],"37b247a8":[()=>n.e(21080).then(n.bind(n,46172)),"@site/blog/2023-12-06-mithril.md?truncated=true",46172],"37b2e4a4":[()=>n.e(83051).then(n.t.bind(n,94819,19)),"~blog/updates/cardano-updates-tags-consensus-page-7-7b5-list.json",94819],"38284ae5":[()=>n.e(49105).then(n.bind(n,66756)),"@site/blog/2023-11-17-performance-and-tracing.md",66756],"387f3426":[()=>n.e(34719).then(n.bind(n,78509)),"@site/blog/2023-11-10-hydra.md",78509],"388f6888":[()=>n.e(96394).then(n.t.bind(n,24279,19)),"~blog/updates/cardano-updates-page-54-61e.json",24279],"391126a1":[()=>n.e(80542).then(n.bind(n,71720)),"@site/blog/2023-03-17-ledger.md?truncated=true",71720],"393be207":[()=>n.e(87414).then(n.bind(n,53123)),"@site/src/pages/markdown-page.md",53123],"393cd824":[()=>n.e(65773).then(n.bind(n,14686)),"@site/blog/2023-04-05-node-cli-api.md?truncated=true",14686],"397686d4":[()=>n.e(89756).then(n.bind(n,54922)),"@site/blog/2023-08-11-performance-and-tracing.md",54922],"3a3a2602":[()=>n.e(20974).then(n.bind(n,17330)),"@site/blog/2023-07-14-hydra.md",17330],"3a40f46b":[()=>n.e(36337).then(n.bind(n,9213)),"@site/blog/2023-11-22-ledger.md",9213],"3a493dd8":[()=>n.e(39071).then(n.bind(n,17741)),"@site/blog/2023-05-26-hydra.md",17741],"3ab5f4e0":[()=>n.e(4376).then(n.bind(n,33684)),"@site/blog/2023-03-23-db-sync.md?truncated=true",33684],"3ac14561":[()=>n.e(79765).then(n.t.bind(n,30455,19)),"~blog/updates/cardano-updates-page-12-58d.json",30455],"3ac610ff":[()=>n.e(15091).then(n.bind(n,79647)),"@site/blog/2023-03-16-goedel.md?truncated=true",79647],"3bb06773":[()=>n.e(65029).then(n.bind(n,36825)),"@site/blog/2023-08-29-node-cli-api.md",36825],"3bb415e3":[()=>n.e(94900).then(n.bind(n,83813)),"@site/blog/2023-06-23-goedel.md?truncated=true",83813],"3bc8fe23":[()=>n.e(12029).then(n.bind(n,3902)),"@site/blog/2023-10-11-mithril.md?truncated=true",3902],"3be95f92":[()=>n.e(9140).then(n.t.bind(n,72016,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-5-215-list.json",72016],"3c2e75b4":[()=>n.e(30843).then(n.t.bind(n,7697,19)),"~blog/updates/cardano-updates-tags-ledger-page-6-e5e-list.json",7697],"3c3d2bff":[()=>n.e(49706).then(n.bind(n,46019)),"@site/blog/2023-08-17-secp-security-issue-report.md?truncated=true",46019],"3c8518bb":[()=>n.e(86983).then(n.t.bind(n,45088,19)),"~blog/updates/cardano-updates-page-25-9c7.json",45088],"3cb4be67":[()=>n.e(96774).then(n.t.bind(n,40264,19)),"~blog/updates/cardano-updates-page-28-2d0.json",40264],"3cb9fdac":[()=>n.e(55638).then(n.bind(n,92191)),"@site/blog/2023-04-20-node-cli-api.md",92191],"3ce290cc":[()=>n.e(18654).then(n.bind(n,64938)),"@site/blog/2023-02-17-goedel.md?truncated=true",64938],"3dbbac8a":[()=>n.e(16855).then(n.bind(n,22358)),"@site/blog/2023-07-13-mithril.md",22358],"3e93a65d":[()=>n.e(51164).then(n.t.bind(n,35089,19)),"~blog/updates/cardano-updates-page-20-c05.json",35089],"3eae7101":[()=>n.e(69399).then(n.t.bind(n,44659,19)),"~blog/quarterly/cardano-updates-quarterly-tags-network-8e3.json",44659],"3ede3d79":[()=>n.e(2221).then(n.t.bind(n,4562,19)),"~blog/updates/cardano-updates-archive-e9d.json",4562],"3ee2c73a":[()=>n.e(50506).then(n.bind(n,71126)),"@site/blog/2023-05-01-db-sync.md",71126],"3f2108ba":[()=>n.e(99610).then(n.bind(n,48560)),"@site/blog/2023-08-10-mithril.md",48560],"3f64a4c5":[()=>n.e(78397).then(n.t.bind(n,16233,19)),"~blog/updates/cardano-updates-page-53-c45.json",16233],"3f9060c3":[()=>n.e(36398).then(n.bind(n,37709)),"@site/blog/2023-04-05-consensus.md?truncated=true",37709],40367786:[()=>n.e(47406).then(n.t.bind(n,88444,19)),"~blog/updates/cardano-updates-tags-hydra-page-8-f0c.json",88444],"40718b14":[()=>n.e(43980).then(n.t.bind(n,71967,19)),"~blog/quarterly/cardano-updates-quarterly-tags-sre-aa0-list.json",71967],"40a4cbba":[()=>n.e(66458).then(n.t.bind(n,43602,19)),"~blog/updates/cardano-updates-tags-embedding-quality-232.json",43602],"40e498fa":[()=>n.e(23092).then(n.bind(n,72311)),"@site/blog/2022-11-02-node-cli-api.md?truncated=true",72311],"41244b80":[()=>n.e(22496).then(n.t.bind(n,43985,19)),"~blog/updates/cardano-updates-tags-ledger-cda-list.json",43985],"415f2cd9":[()=>n.e(21198).then(n.t.bind(n,62989,19)),"~blog/updates/cardano-updates-page-42-4d8.json",62989],41606842:[()=>n.e(88101).then(n.bind(n,79031)),"@site/blog/2022-12-02-hydra.md?truncated=true",79031],"417fc4b4":[()=>n.e(57271).then(n.bind(n,30336)),"@site/blog/2023-01-20-hydra.md?truncated=true",30336],"41d087d7":[()=>n.e(71972).then(n.bind(n,97898)),"@site/blog/2022-11-18-hydra.md?truncated=true",97898],"425dfc0f":[()=>n.e(85349).then(n.bind(n,95911)),"@site/blog/2023-08-04-crypto.md",95911],"42ad0ca4":[()=>n.e(80309).then(n.bind(n,33044)),"@site/blog/2023-03-31-hydra.md",33044],"43289e4d":[()=>n.e(458).then(n.bind(n,54048)),"@site/blog/2023-08-18-hydra.md",54048],"435d8b4c":[()=>n.e(88697).then(n.bind(n,21135)),"@site/blog/2023-04-27-hydra.md",21135],"437db4bf":[()=>n.e(81587).then(n.bind(n,25180)),"@site/blog/2023-02-03-crypto.md",25180],"439b9a57":[()=>n.e(96121).then(n.bind(n,11519)),"@site/blog/2022-11-02-release.md?truncated=true",11519],"43aa4824":[()=>n.e(98347).then(n.bind(n,13379)),"@site/blog/2023-03-17-ledger.md",13379],"43ab8474":[()=>n.e(5106).then(n.bind(n,99276)),"@site/blog/2023-10-15-network.md?truncated=true",99276],"43bbbae7":[()=>n.e(24310).then(n.bind(n,2530)),"@site/blog/2022-10-28-sre.md",2530],"444dad87":[()=>n.e(33815).then(n.bind(n,87921)),"@site/blog/2023-08-04-ledger.md",87921],"44642b2f":[()=>n.e(43108).then(n.bind(n,10798)),"@site/blog/2023-02-10-hydra.md",10798],"44e33f80":[()=>n.e(31636).then(n.bind(n,56423)),"@site/blog/2023-11-08-mithril.md",56423],"459dd1ef":[()=>n.e(67825).then(n.t.bind(n,41867,19)),"~blog/updates/cardano-updates-tags-consensus-330.json",41867],"45a10ae8":[()=>n.e(22206).then(n.bind(n,33786)),"@site/blog/2023-07-07-sre.md?truncated=true",33786],"469935bd":[()=>n.e(47605).then(n.bind(n,74340)),"@site/blog/2023-09-01-network.md?truncated=true",74340],"46c51ef6":[()=>n.e(28298).then(n.bind(n,88673)),"@site/quarterly/2022-11-09-network.md?truncated=true",88673],"46d9aab0":[()=>n.e(40373).then(n.t.bind(n,25545,19)),"~blog/updates/cardano-updates-tags-hydra-page-7-81d.json",25545],"4735cd81":[()=>n.e(15529).then(n.bind(n,68428)),"@site/blog/2023-01-20-network.md?truncated=true",68428],"47658b82":[()=>n.e(60263).then(n.bind(n,64472)),"@site/blog/2023-04-05-performance-and-tracing.md",64472],"47cae651":[()=>n.e(68352).then(n.t.bind(n,81765,19)),"~blog/updates/cardano-updates-page-2-aef.json",81765],"47da279e":[()=>n.e(6236).then(n.bind(n,32978)),"@site/blog/2023-06-23-sre.md",32978],"48292e37":[()=>n.e(18367).then(n.t.bind(n,8448,19)),"~blog/updates/cardano-updates-tags-ledger-page-5-2c6-list.json",8448],"485c7377":[()=>n.e(7322).then(n.bind(n,73200)),"@site/blog/2022-11-04-open-source.md",73200],"4883d618":[()=>n.e(5337).then(n.t.bind(n,3757,19)),"~blog/updates/cardano-updates-tags-db-sync-page-3-7db-list.json",3757],"4906b8e6":[()=>n.e(34070).then(n.t.bind(n,77544,19)),"~blog/updates/cardano-updates-tags-cli-api-page-5-88e.json",77544],"492dc159":[()=>n.e(75748).then(n.bind(n,4)),"@site/blog/2023-07-06-developer-experience.md",4],"496cb9ef":[()=>n.e(60852).then(n.bind(n,5306)),"@site/blog/2023-04-19-consensus.md",5306],"49d642c9":[()=>n.e(80575).then(n.bind(n,93731)),"@site/blog/2023-11-15-consensus.md",93731],"49d88be4":[()=>n.e(73343).then(n.bind(n,18820)),"@site/blog/2023-10-13-hydra.md?truncated=true",18820],"49db7061":[()=>n.e(60183).then(n.t.bind(n,853,19)),"~blog/updates/cardano-updates-tags-ledger-page-5-2c6.json",853],"4aaac366":[()=>n.e(97535).then(n.bind(n,17682)),"@site/blog/2022-11-30-performance-and-tracing.md",17682],"4ab012ff":[()=>n.e(7555).then(n.bind(n,90789)),"@site/blog/2023-06-28-consensus.md",90789],"4b62dc40":[()=>n.e(10335).then(n.bind(n,91534)),"@site/blog/2023-02-21-db-sync.md",91534],"4b90674f":[()=>n.e(92308).then(n.bind(n,7811)),"@site/blog/2023-09-01-goedel.md",7811],"4b996e44":[()=>n.e(7897).then(n.bind(n,92942)),"@site/blog/2023-06-23-network.md",92942],"4be9a3a6":[()=>n.e(25480).then(n.bind(n,47519)),"@site/blog/2023-03-03-ledger.md",47519],"4bed0e48":[()=>n.e(34631).then(n.bind(n,21290)),"@site/blog/2023-02-17-crypto.md",21290],"4c4f8ee1":[()=>n.e(80113).then(n.bind(n,10331)),"@site/blog/2022-10-04-node-cli-api.md?truncated=true",10331],"4c7d0c08":[()=>n.e(40682).then(n.t.bind(n,52595,19)),"~blog/updates/cardano-updates-tags-security-898.json",52595],"4c91b9ee":[()=>n.e(76705).then(n.t.bind(n,5324,19)),"~blog/updates/cardano-updates-page-6-24a.json",5324],"4ce06e64":[()=>n.e(46318).then(n.bind(n,30792)),"@site/blog/2023-01-27-hydra.md",30792],"4cecd320":[()=>n.e(72311).then(n.t.bind(n,77048,19)),"~blog/updates/cardano-updates-tags-cli-api-4f5.json",77048],"4d3eb7e7":[()=>n.e(64827).then(n.bind(n,71235)),"@site/blog/2023-07-07-goedel.md?truncated=true",71235],"4d7c8e78":[()=>n.e(45389).then(n.bind(n,58435)),"@site/blog/2023-03-24-hydra.md?truncated=true",58435],"4da01d42":[()=>n.e(17903).then(n.bind(n,99538)),"@site/quarterly/2023-04-04-network.md",99538],"4dc3be72":[()=>n.e(76074).then(n.bind(n,75804)),"@site/blog/2023-01-26-mithril.md?truncated=true",75804],"4de4e659":[()=>n.e(53662).then(n.bind(n,64703)),"@site/blog/2023-11-29-mithril.md?truncated=true",64703],"4df30499":[()=>n.e(51951).then(n.bind(n,6909)),"@site/blog/2023-01-11-performance-and-tracing.md",6909],"4e45b006":[()=>n.e(63089).then(n.bind(n,11442)),"@site/blog/2023-09-15-ledger.md",11442],"4ed83391":[()=>n.e(22838).then(n.bind(n,50994)),"@site/blog/2023-09-22-performance-and-tracing.md",50994],"4ef71b5f":[()=>n.e(59749).then(n.t.bind(n,28331,19)),"~blog/quarterly/cardano-updates-quarterly-page-2-0af.json",28331],"4fb1471a":[()=>n.e(42347).then(n.t.bind(n,16186,19)),"~blog/updates/cardano-updates-tags-consensus-page-2-fa9.json",16186],"4fd8c72a":[()=>n.e(76294).then(n.t.bind(n,8513,19)),"~blog/updates/cardano-updates-tags-network-page-4-5dc.json",8513],"4fe12b4b":[()=>n.e(48837).then(n.bind(n,91525)),"@site/blog/2023-03-31-goedel.md",91525],"4fe88e48":[()=>n.e(82214).then(n.t.bind(n,17849,19)),"~blog/updates/cardano-updates-tags-db-sync-39c-list.json",17849],"4febca42":[()=>n.e(16349).then(n.bind(n,6690)),"@site/blog/2023-05-05-node-cli-api.md",6690],"50135b75":[()=>n.e(54176).then(n.bind(n,87628)),"@site/blog/2023-06-15-mithril.md",87628],"50d0e663":[()=>n.e(30670).then(n.bind(n,6403)),"@site/blog/2023-03-17-crypto.md?truncated=true",6403],"51457b0b":[()=>n.e(59576).then(n.t.bind(n,67576,19)),"~blog/updates/cardano-updates-tags-hydra-page-5-62d-list.json",67576],"51bf60d9":[()=>n.e(62901).then(n.bind(n,71365)),"@site/blog/2023-05-12-network.md?truncated=true",71365],"51cf8946":[()=>n.e(6324).then(n.bind(n,83753)),"@site/blog/2022-11-25-hydra.md",83753],"5226ad4f":[()=>n.e(17214).then(n.bind(n,45302)),"@site/blog/2023-08-18-ledger.md",45302],"5296f864":[()=>n.e(6255).then(n.bind(n,7408)),"@site/quarterly/2023-Q2-sre.md?truncated=true",7408],"52b8fa8a":[()=>n.e(19516).then(n.bind(n,74143)),"@site/blog/2023-08-25-hydra.md",74143],"533a09ca":[()=>n.e(54607).then(n.bind(n,95802)),"@site/docs/tutorial-basics/create-a-blog-post.md",95802],"533bb9dc":[()=>n.e(70022).then(n.bind(n,44508)),"@site/blog/2022-11-28-network.md?truncated=true",44508],"53f26dca":[()=>n.e(4775).then(n.t.bind(n,92006,19)),"~blog/updates/cardano-updates-page-44-091.json",92006],54597942:[()=>n.e(33596).then(n.t.bind(n,64660,19)),"~blog/updates/cardano-updates-tags-network-page-3-643.json",64660],"548ef7ca":[()=>n.e(25578).then(n.t.bind(n,8960,19)),"~blog/updates/cardano-updates-page-21-527.json",8960],"54a7c81e":[()=>n.e(16878).then(n.bind(n,10396)),"@site/blog/2023-10-24-node-cli-api.md?truncated=true",10396],"550cdc1d":[()=>n.e(75730).then(n.bind(n,70133)),"@site/blog/2023-02-03-goedel.md",70133],"551db1ac":[()=>n.e(86074).then(n.t.bind(n,62085,19)),"~blog/updates/cardano-updates-tags-mithril-page-2-0fe.json",62085],"55b9667a":[()=>n.e(75506).then(n.bind(n,73833)),"@site/blog/2023-03-02-network.md?truncated=true",73833],"55e35eab":[()=>n.e(6249).then(n.bind(n,64911)),"@site/blog/2023-12-06-mithril.md",64911],"563fcf2e":[()=>n.e(94560).then(n.bind(n,54332)),"@site/blog/2023-01-05-ledger.md?truncated=true",54332],"565f686e":[()=>n.e(3445).then(n.t.bind(n,18618,19)),"~blog/quarterly/cardano-updates-quarterly-tags-consensus-562.json",18618],"5668eccd":[()=>n.e(3918).then(n.bind(n,42)),"@site/blog/2022-12-09-hydra.md",42],"5674f153":[()=>n.e(14392).then(n.bind(n,8247)),"@site/blog/2023-09-15-sre.md",8247],"56b3fab8":[()=>n.e(36434).then(n.t.bind(n,71645,19)),"~blog/updates/cardano-updates-tags-goedel-page-3-ef0-list.json",71645],"56f35d85":[()=>n.e(5485).then(n.bind(n,98803)),"@site/blog/2023-03-03-ledger.md?truncated=true",98803],57008883:[()=>n.e(33399).then(n.bind(n,50417)),"@site/blog/2023-11-24-sre.md",50417],"5733c82d":[()=>n.e(94184).then(n.bind(n,97630)),"@site/blog/2022-09-16-ledger.md",97630],57700755:[()=>n.e(13276).then(n.t.bind(n,15745,19)),"/home/runner/work/cardano-updates/cardano-updates/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],"5778ca6b":[()=>n.e(51727).then(n.bind(n,86516)),"@site/quarterly/2022-11-07-nod-api-cli.md",86516],"578d3f15":[()=>n.e(26614).then(n.t.bind(n,7571,19)),"~blog/updates/cardano-updates-tags-goedel-page-4-a08.json",7571],"57e0ab98":[()=>n.e(20779).then(n.bind(n,49514)),"@site/quarterly/2023-Q2-network.md?truncated=true",49514],"5889a844":[()=>n.e(68184).then(n.bind(n,69282)),"@site/blog/2022-10-28-hydra.md",69282],"588e4efd":[()=>n.e(50097).then(n.bind(n,58022)),"@site/blog/2023-05-26-network.md",58022],"59a262d5":[()=>n.e(42198).then(n.bind(n,87547)),"@site/blog/2023-05-17-consensus.md?truncated=true",87547],"5a843cd2":[()=>n.e(37221).then(n.bind(n,73760)),"@site/blog/2023-07-27-mithril.md",73760],"5af0f4f9":[()=>n.e(16165).then(n.bind(n,81057)),"@site/blog/2023-09-01-sre.md",81057],"5c5c653f":[()=>n.e(34828).then(n.t.bind(n,53028,19)),"~blog/updates/cardano-updates-tags-sre-page-3-aa0.json",53028],"5c868d36":[()=>n.e(15589).then(n.bind(n,90187)),"@site/docs/tutorial-basics/create-a-page.md",90187],"5c8fca76":[()=>n.e(44003).then(n.bind(n,2907)),"@site/blog/2023-10-27-sre.md?truncated=true",2907],"5cc32405":[()=>n.e(65562).then(n.bind(n,83838)),"@site/blog/2023-10-13-hydra.md",83838],"5cf7c214":[()=>n.e(20681).then(n.t.bind(n,57654,19)),"~blog/updates/cardano-updates-tags-db-sync-39c.json",57654],"5d0266be":[()=>n.e(33671).then(n.bind(n,56787)),"@site/blog/2023-10-13-ledger.md",56787],"5d5964ec":[()=>n.e(53931).then(n.bind(n,66734)),"@site/blog/2023-04-05-consensus.md",66734],"5df8a536":[()=>n.e(30374).then(n.t.bind(n,92817,19)),"~blog/updates/cardano-updates-tags-release-0fa-list.json",92817],"5e3dc99b":[()=>n.e(67272).then(n.bind(n,56893)),"@site/blog/2022-12-16-hydra.md",56893],"5e730d4f":[()=>n.e(76762).then(n.bind(n,63341)),"@site/blog/2023-05-12-network.md",63341],"5e9a4be9":[()=>n.e(11748).then(n.bind(n,26518)),"@site/blog/2023-11-22-ledger.md?truncated=true",26518],"6004d2a4":[()=>n.e(57193).then(n.bind(n,57610)),"@site/blog/2023-08-04-network.md?truncated=true",57610],"600e4190":[()=>n.e(80599).then(n.bind(n,15191)),"@site/quarterly/2023-04-04-network.md?truncated=true",15191],"60a77258":[()=>n.e(83160).then(n.t.bind(n,72327,19)),"~blog/updates/cardano-updates-page-52-e03.json",72327],"60c9cc01":[()=>n.e(72744).then(n.t.bind(n,36901,19)),"~blog/updates/cardano-updates-page-4-922.json",36901],"60e1630c":[()=>n.e(31831).then(n.bind(n,48895)),"@site/blog/2023-02-08-node-cli-api.md",48895],"60fae5f4":[()=>n.e(40705).then(n.t.bind(n,75293,19)),"~blog/quarterly/cardano-updates-quarterly-tags-ledger-2d0.json",75293],"611f3a9e":[()=>n.e(25351).then(n.bind(n,9434)),"@site/blog/2023-09-15-sre.md?truncated=true",9434],"6190b2fb":[()=>n.e(48600).then(n.bind(n,35996)),"@site/blog/2023-06-09-developer-experience.md?truncated=true",35996],"61d299e1":[()=>n.e(5552).then(n.t.bind(n,88947,19)),"~blog/updates/cardano-updates-tags-release-0fa.json",88947],"61e62d68":[()=>n.e(81169).then(n.bind(n,49569)),"@site/blog/2023-09-01-goedel.md?truncated=true",49569],"61f1e7c8":[()=>n.e(70883).then(n.t.bind(n,63732,19)),"~blog/updates/cardano-updates-tags-consensus-page-3-682.json",63732],"6226ba71":[()=>n.e(70644).then(n.bind(n,88151)),"@site/blog/2022-11-23-ledger.md?truncated=true",88151],"622f92df":[()=>n.e(17923).then(n.t.bind(n,40294,19)),"~blog/updates/cardano-updates-tags-cli-api-page-3-7d2.json",40294],"62422ab6":[()=>n.e(55855).then(n.bind(n,29632)),"@site/blog/2023-02-17-ledger.md?truncated=true",29632],"62a53033":[()=>n.e(24215).then(n.t.bind(n,39252,19)),"~blog/updates/cardano-updates-page-39-32d.json",39252],"62dc90a1":[()=>n.e(86003).then(n.t.bind(n,31371,19)),"~blog/updates/cardano-updates-tags-consensus-page-3-682-list.json",31371],"62ec9f43":[()=>n.e(8694).then(n.bind(n,67097)),"@site/blog/2023-06-01-mithril.md?truncated=true",67097],"62f46a38":[()=>n.e(2681).then(n.bind(n,14066)),"@site/blog/2023-02-17-goedel.md",14066],"632979e8":[()=>n.e(32831).then(n.bind(n,26902)),"@site/blog/2023-06-29-mithril.md",26902],"637356df":[()=>n.e(95979).then(n.bind(n,29388)),"@site/blog/2022-09-19-db-sync.md",29388],"63fae4f0":[()=>n.e(39898).then(n.bind(n,5383)),"@site/blog/2023-03-21-network.md",5383],"65d0391b":[()=>n.e(88572).then(n.bind(n,87655)),"@site/blog/2023-08-17-crypto.md?truncated=true",87655],"65ecf6d5":[()=>n.e(64112).then(n.bind(n,22207)),"@site/blog/2023-08-04-sre.md",22207],"6610396c":[()=>n.e(84340).then(n.t.bind(n,30594,19)),"~blog/updates/cardano-updates-page-31-0d1.json",30594],"66326f4e":[()=>n.e(17837).then(n.t.bind(n,16524,19)),"~blog/updates/cardano-updates-page-8-42b.json",16524],"66345e96":[()=>n.e(48983).then(n.bind(n,1037)),"@site/blog/2023-06-23-goedel.md",1037],"66be9998":[()=>n.e(36186).then(n.t.bind(n,19894,19)),"~blog/updates/cardano-updates-tags-security-898-list.json",19894],"67ce4884":[()=>n.e(86830).then(n.bind(n,31549)),"@site/blog/2023-05-12-goedel.md",31549],"684a796f":[()=>n.e(32871).then(n.t.bind(n,83127,19)),"~blog/updates/cardano-updates-tags-open-source-9d0.json",83127],"68585f67":[()=>n.e(14274).then(n.bind(n,3278)),"@site/blog/2023-07-21-sre.md?truncated=true",3278],"6875c492":[()=>Promise.all([n.e(40532),n.e(80210),n.e(2529),n.e(48610)]).then(n.bind(n,41714)),"@theme/BlogTagsPostsPage",41714],"68fb9d2f":[()=>n.e(80048).then(n.bind(n,33281)),"@site/blog/2022-09-16-ledger.md?truncated=true",33281],"691b1ed7":[()=>n.e(4944).then(n.bind(n,18980)),"@site/blog/2023-01-25-consensus.md",18980],"692497e1":[()=>n.e(92214).then(n.bind(n,29578)),"@site/blog/2023-08-09-consensus.md",29578],"6927f7c4":[()=>n.e(60019).then(n.bind(n,45798)),"@site/blog/2023-10-25-mithril.md",45798],"69c7a5a7":[()=>n.e(56950).then(n.bind(n,91002)),"@site/blog/2023-09-22-performance-and-tracing.md?truncated=true",91002],"6a2140b3":[()=>n.e(88845).then(n.t.bind(n,18702,19)),"~blog/updates/cardano-updates-tags-mithril-page-6-db9-list.json",18702],"6a75c57a":[()=>n.e(88592).then(n.bind(n,50202)),"@site/blog/2023-08-04-performance-and-tracing.md?truncated=true",50202],"6b16e156":[()=>n.e(52650).then(n.bind(n,2133)),"@site/blog/2023-05-01-db-sync.md?truncated=true",2133],"6b51f988":[()=>n.e(24384).then(n.bind(n,99968)),"@site/quarterly/2023-Q2-consensus.md?truncated=true",99968],"6b553c5c":[()=>n.e(93784).then(n.t.bind(n,90804,19)),"~blog/updates/cardano-updates-tags-mithril-page-6-db9.json",90804],"6b6054d2":[()=>n.e(30584).then(n.t.bind(n,75433,19)),"~blog/updates/cardano-updates-page-34-f5d.json",75433],"6bae8700":[()=>n.e(35703).then(n.bind(n,84195)),"@site/blog/2023-08-11-hydra.md",84195],"6c658908":[()=>n.e(73875).then(n.t.bind(n,18860,19)),"~blog/updates/cardano-updates-tags-sre-d43-list.json",18860],"6c8b7ad4":[()=>n.e(28577).then(n.bind(n,55749)),"@site/quarterly/2023-Q3-sre.md",55749],"6d22e028":[()=>n.e(29750).then(n.bind(n,38784)),"@site/blog/2023-11-14-node-cli-api.md?truncated=true",38784],"6d25229c":[()=>n.e(91879).then(n.bind(n,36845)),"@site/blog/2023-06-08-goedel.md?truncated=true",36845],"6d371395":[()=>n.e(97730).then(n.bind(n,73547)),"@site/blog/2022-09-01-ledger.md",73547],"6d826f51":[()=>n.e(7729).then(n.bind(n,87439)),"@site/blog/2022-10-18-consensus.md",87439],"6da0a796":[()=>n.e(80567).then(n.bind(n,41701)),"@site/blog/2022-11-25-crypto.md?truncated=true",41701],"6e43d302":[()=>n.e(59747).then(n.bind(n,3666)),"@site/blog/2023-09-29-ledger.md?truncated=true",3666],"6e743f1b":[()=>n.e(42686).then(n.bind(n,47088)),"@site/blog/2023-01-11-consensus.md?truncated=true",47088],"6e7b669d":[()=>n.e(96799).then(n.bind(n,19258)),"@site/blog/2023-09-15-network.md",19258],"6eecfaae":[()=>n.e(84069).then(n.bind(n,62566)),"@site/blog/2023-06-09-crypto.md?truncated=true",62566],"6f700e99":[()=>n.e(60459).then(n.t.bind(n,90442,19)),"~blog/updates/cardano-updates-tags-mithril-page-4-98c.json",90442],"6fb45133":[()=>n.e(79260).then(n.bind(n,42305)),"@site/blog/2023-03-08-node-cli-api.md?truncated=true",42305],"7030fa2f":[()=>n.e(39640).then(n.bind(n,88752)),"@site/blog/2022-08-31-consensus.md",88752],70372002:[()=>n.e(52703).then(n.bind(n,78155)),"@site/blog/2023-10-06-performance-and-tracing.md",78155],"70396aa3":[()=>n.e(92517).then(n.bind(n,27198)),"@site/blog/2023-10-04-mithril.md?truncated=true",27198],"704e5bb8":[()=>n.e(56733).then(n.bind(n,50085)),"@site/blog/2023-08-04-ledger.md?truncated=true",50085],"709abed9":[()=>n.e(85362).then(n.t.bind(n,92776,19)),"~blog/updates/cardano-updates-page-55-2f8.json",92776],"71d215be":[()=>n.e(74390).then(n.bind(n,87182)),"@site/blog/2023-07-14-hydra.md?truncated=true",87182],"71e4641a":[()=>Promise.all([n.e(51068),n.e(53940)]).then(n.bind(n,16528)),"@site/blog/2022-08-12-network.md",16528],"7221b837":[()=>n.e(90045).then(n.bind(n,45165)),"@site/blog/2023-11-20-cip1694.md?truncated=true",45165],"72c81964":[()=>n.e(94590).then(n.bind(n,25418)),"@site/blog/2023-01-26-mithril.md",25418],"7312b66d":[()=>n.e(3403).then(n.t.bind(n,39898,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-4-7d2-list.json",39898],"7325235b":[()=>n.e(99873).then(n.t.bind(n,50767,19)),"~blog/updates/cardano-updates-tags-hydra-page-11-1e1-list.json",50767],"733f2214":[()=>n.e(947).then(n.bind(n,67719)),"@site/blog/2022-10-14-hydra.md",67719],"73a1bc7a":[()=>n.e(44379).then(n.t.bind(n,32801,19)),"~blog/updates/cardano-updates-tags-ledger-page-4-98a-list.json",32801],"73a96f39":[()=>n.e(95845).then(n.bind(n,70943)),"@site/blog/2023-04-21-hydra.md",70943],"73bbd4d7":[()=>n.e(25590).then(n.bind(n,26293)),"@site/blog/2022-09-20-consensus.md?truncated=true",26293],"73f0dde0":[()=>n.e(30101).then(n.bind(n,94885)),"@site/blog/2023-05-05-node-cli-api.md?truncated=true",94885],"7439ef37":[()=>n.e(20433).then(n.bind(n,31145)),"@site/blog/2023-11-08-ledger.md",31145],"74d66224":[()=>n.e(40767).then(n.bind(n,4793)),"@site/blog/2022-12-14-consensus.md?truncated=true",4793],"752b6ead":[()=>n.e(50165).then(n.bind(n,4691)),"@site/blog/2023-05-31-performance-and-tracing.md",4691],"7574ff34":[()=>n.e(34891).then(n.bind(n,73908)),"@site/blog/2023-09-01-sre.md?truncated=true",73908],"76794a21":[()=>n.e(29071).then(n.bind(n,54861)),"@site/blog/2023-02-23-mithril.md?truncated=true",54861],"769eb34c":[()=>n.e(6919).then(n.bind(n,5102)),"@site/blog/2023-07-26-consensus.md",5102],"76c61a3b":[()=>n.e(91192).then(n.bind(n,6540)),"@site/blog/2022-11-16-performance-and-tracing.md?truncated=true",6540],"771f29e6":[()=>n.e(56674).then(n.bind(n,27064)),"@site/blog/2023-03-31-ledger.md",27064],"77215fb3":[()=>n.e(13680).then(n.bind(n,22549)),"@site/blog/2022-10-21-hydra.md?truncated=true",22549],"77550e96":[()=>n.e(62227).then(n.bind(n,68441)),"@site/blog/2023-08-29-node-cli-api.md?truncated=true",68441],"778ef860":[()=>n.e(96838).then(n.bind(n,92977)),"@site/blog/2023-09-15-goedel.md",92977],"77d69aed":[()=>n.e(29399).then(n.bind(n,60006)),"@site/blog/2023-05-31-consensus.md",60006],"77d820b6":[()=>n.e(76413).then(n.bind(n,88538)),"@site/blog/2023-05-03-performance-and-tracing.md",88538],"77e9cceb":[()=>n.e(54868).then(n.bind(n,19157)),"@site/blog/2023-08-17-db-sync.md",19157],"789f2cca":[()=>n.e(43261).then(n.bind(n,15659)),"@site/blog/2023-08-18-ledger.md?truncated=true",15659],"78c763b8":[()=>n.e(96944).then(n.bind(n,66974)),"@site/blog/2023-10-24-node-cli-api.md",66974],"78d554ba":[()=>n.e(61980).then(n.bind(n,99956)),"@site/blog/2023-05-26-goedel.md",99956],"78d8ce1d":[()=>n.e(73320).then(n.bind(n,82826)),"@site/blog/2022-11-01-db-sync.md",82826],"78df8d65":[()=>n.e(29537).then(n.bind(n,52713)),"@site/blog/2023-04-28-network.md?truncated=true",52713],79239208:[()=>n.e(35748).then(n.t.bind(n,61778,19)),"~blog/updates/cardano-updates-tags-hydra-page-2-af6-list.json",61778],"795480a5":[()=>n.e(78446).then(n.bind(n,14366)),"@site/blog/2023-01-05-ledger.md",14366],79730245:[()=>n.e(61596).then(n.bind(n,57102)),"@site/blog/2023-02-17-network.md?truncated=true",57102],"798d160f":[()=>n.e(82358).then(n.bind(n,66525)),"@site/blog/2023-10-18-consensus.md",66525],"79d76848":[()=>n.e(75379).then(n.bind(n,71256)),"@site/quarterly/2023-01-13-open-source.md?truncated=true",71256],"7a263bfa":[()=>n.e(98450).then(n.bind(n,56210)),"@site/blog/2023-10-27-network.md?truncated=true",56210],"7a4b421f":[()=>n.e(67452).then(n.bind(n,36234)),"@site/blog/2023-04-19-performance-and-tracing.md?truncated=true",36234],"7a6174e7":[()=>n.e(44377).then(n.bind(n,85666)),"@site/blog/2023-08-28-mithril.md?truncated=true",85666],"7a7e39bb":[()=>n.e(61660).then(n.bind(n,88637)),"@site/blog/2023-05-17-mithril.md",88637],"7aaa65e3":[()=>n.e(98882).then(n.t.bind(n,2632,19)),"~blog/updates/cardano-updates-tags-network-page-4-5dc-list.json",2632],"7b73b4cd":[()=>n.e(60881).then(n.t.bind(n,25184,19)),"~blog/updates/cardano-updates-page-19-308.json",25184],"7c359f4d":[()=>n.e(77696).then(n.bind(n,60515)),"@site/blog/2023-01-13-system-test.md?truncated=true",60515],"7c815b5e":[()=>n.e(59318).then(n.bind(n,97771)),"@site/blog/2022-10-05-consensus.md?truncated=true",97771],"7c895c96":[()=>n.e(83036).then(n.bind(n,93424)),"@site/blog/2023-09-06-consensus.md?truncated=true",93424],"7d4ab4f9":[()=>n.e(54007).then(n.t.bind(n,90958,19)),"~blog/updates/cardano-updates-page-9-6db.json",90958],"7d6aa09c":[()=>n.e(18058).then(n.t.bind(n,18069,19)),"~blog/updates/cardano-updates-tags-goedel-5b9.json",18069],"7de7ce98":[()=>n.e(9828).then(n.bind(n,95271)),"@site/quarterly/2023-Q3-performance-and-tracing.md?truncated=true",95271],"7de83161":[()=>n.e(7968).then(n.bind(n,91578)),"@site/blog/2023-11-15-consensus.md?truncated=true",91578],"7e644b1f":[()=>n.e(60375).then(n.bind(n,16503)),"@site/blog/2023-08-04-hydra.md",16503],"7e87972d":[()=>n.e(2432).then(n.bind(n,8671)),"@site/blog/2022-11-30-performance-and-tracing.md?truncated=true",8671],"7e8e081f":[()=>n.e(49238).then(n.t.bind(n,37418,19)),"~blog/updates/cardano-updates-tags-network-page-5-19d-list.json",37418],"7fa9de70":[()=>n.e(38938).then(n.bind(n,65004)),"@site/blog/2023-11-17-hydra.md?truncated=true",65004],"7faccef9":[()=>n.e(75064).then(n.bind(n,37006)),"@site/blog/2022-10-28-performance-and-tracing.md?truncated=true",37006],"7ff27d5d":[()=>n.e(16091).then(n.t.bind(n,97270,19)),"~blog/updates/cardano-updates-tags-cli-api-page-5-88e-list.json",97270],"7ff38eb4":[()=>n.e(19105).then(n.t.bind(n,25873,19)),"~blog/updates/cardano-updates-page-43-bff.json",25873],"80057f85":[()=>n.e(83377).then(n.t.bind(n,13147,19)),"~blog/quarterly/cardano-updates-quarterly-tags-network-8e3-list.json",13147],80537537:[()=>n.e(43140).then(n.bind(n,88265)),"@site/blog/2023-08-01-node-cli-api.md",88265],"805fc822":[()=>n.e(53165).then(n.bind(n,7581)),"@site/blog/2022-12-12-network.md?truncated=true",7581],80617771:[()=>n.e(23427).then(n.bind(n,22977)),"@site/blog/2023-09-29-hydra.md?truncated=true",22977],"8084428b":[()=>n.e(31724).then(n.t.bind(n,16813,19)),"~blog/updates/cardano-updates-tags-cli-api-page-4-e6c.json",16813],"80c54634":[()=>n.e(99808).then(n.bind(n,57809)),"@site/blog/2023-08-11-hydra.md?truncated=true",57809],"81528b00":[()=>n.e(50471).then(n.bind(n,67938)),"@site/blog/2022-12-01-mithril.md?truncated=true",67938],"81bb24c9":[()=>n.e(46003).then(n.bind(n,94887)),"@site/blog/2022-11-18-mithril.md",94887],82209890:[()=>n.e(30141).then(n.bind(n,25680)),"@site/blog/2023-06-14-performance-and-tracing.md",25680],"822bd8ab":[()=>n.e(36504).then(n.bind(n,27428)),"@site/docs/tutorial-basics/congratulations.md",27428],"82c38436":[()=>n.e(36229).then(n.t.bind(n,47683,19)),"~blog/updates/cardano-updates-tags-sre-page-2-3cd.json",47683],"82db709e":[()=>n.e(27647).then(n.bind(n,10627)),"@site/blog/2023-11-10-sre.md?truncated=true",10627],"82ed4471":[()=>n.e(58312).then(n.t.bind(n,9933,19)),"~blog/updates/cardano-updates-page-7-413.json",9933],"82f24945":[()=>n.e(33724).then(n.bind(n,11607)),"@site/blog/2023-01-20-crypto.md?truncated=true",11607],"830ba2c4":[()=>n.e(99726).then(n.t.bind(n,49778,19)),"~blog/updates/cardano-updates-tags-hydra-page-10-f84.json",49778],"831d95cb":[()=>n.e(75319).then(n.bind(n,69346)),"@site/blog/2023-01-13-hydra.md",69346],"8395f67d":[()=>n.e(16934).then(n.t.bind(n,55035,19)),"~blog/updates/cardano-updates-tags-crypto-page-2-57e-list.json",55035],"83e7e4db":[()=>n.e(68102).then(n.bind(n,85321)),"@site/quarterly/2022-11-15-consensus.md",85321],84189288:[()=>n.e(48863).then(n.bind(n,59071)),"@site/blog/2023-07-12-consensus.md",59071],"84677cf0":[()=>n.e(54415).then(n.bind(n,70789)),"@site/blog/2022-12-09-hydra.md?truncated=true",70789],"8470e3c7":[()=>n.e(38141).then(n.bind(n,75734)),"@site/blog/2023-01-06-crypto.md?truncated=true",75734],84823557:[()=>n.e(94771).then(n.t.bind(n,53381,19)),"~blog/updates/cardano-updates-page-36-2f1.json",53381],"8534c2dd":[()=>n.e(39987).then(n.bind(n,88128)),"@site/blog/2023-11-24-hydra.md?truncated=true",88128],"859b6012":[()=>n.e(85173).then(n.t.bind(n,96249,19)),"~blog/updates/cardano-updates-tags-db-sync-page-2-4f6.json",96249],"86c4d158":[()=>n.e(46831).then(n.bind(n,3439)),"@site/blog/2023-06-08-system-test.md",3439],"86cc1b5f":[()=>n.e(62034).then(n.t.bind(n,12783,19)),"~blog/updates/cardano-updates-page-60-066.json",12783],"86e0423a":[()=>n.e(69778).then(n.t.bind(n,6118,19)),"~blog/updates/cardano-updates-tags-mithril-7d9-list.json",6118],87088759:[()=>n.e(90047).then(n.t.bind(n,32425,19)),"~blog/quarterly/blog-post-list-prop-quarterly.json",32425],"871691d4":[()=>n.e(2136).then(n.bind(n,78081)),"@site/blog/2023-06-23-network.md?truncated=true",78081],"876c34e9":[()=>n.e(85369).then(n.bind(n,94306)),"@site/blog/2023-04-27-hydra.md?truncated=true",94306],"878c8163":[()=>n.e(45932).then(n.bind(n,91329)),"@site/blog/2023-09-14-db-sync.md?truncated=true",91329],"884eee03":[()=>n.e(54975).then(n.bind(n,99054)),"@site/blog/2023-12-06-ledger.md?truncated=true",99054],"8864b77b":[()=>n.e(61908).then(n.bind(n,21318)),"@site/blog/2023-03-08-performance-and-tracing.md?truncated=true",21318],"8914fa7e":[()=>n.e(15347).then(n.bind(n,17177)),"@site/blog/2022-11-16-consensus.md?truncated=true",17177],89211367:[()=>n.e(97421).then(n.t.bind(n,89635,19)),"~blog/updates/cardano-updates-page-33-e20.json",89635],89931013:[()=>n.e(10173).then(n.bind(n,34101)),"@site/blog/2023-04-06-mithril.md?truncated=true",34101],"89a43a90":[()=>n.e(82939).then(n.t.bind(n,76907,19)),"~blog/updates/cardano-updates-tags-sre-page-3-aa0-list.json",76907],"8a6fc2ec":[()=>n.e(22154).then(n.bind(n,82391)),"@site/blog/2023-01-19-ledger.md",82391],"8a766cbb":[()=>n.e(24212).then(n.t.bind(n,4627,19)),"~blog/updates/cardano-updates-tags-consensus-page-6-107.json",4627],"8b4d9039":[()=>n.e(55202).then(n.bind(n,81007)),"@site/blog/2023-04-19-consensus.md?truncated=true",81007],"8bfc66fb":[()=>n.e(15623).then(n.bind(n,69907)),"@site/blog/2023-07-07-crypto.md?truncated=true",69907],"8c574ba2":[()=>n.e(78183).then(n.t.bind(n,60540,19)),"~blog/quarterly/cardano-updates-quarterly-tags-performance-tracing-bbf.json",60540],"8c6dbeca":[()=>n.e(96162).then(n.bind(n,32688)),"@site/blog/2023-02-17-crypto.md?truncated=true",32688],"8c75942c":[()=>n.e(3530).then(n.bind(n,6905)),"@site/blog/2023-02-09-mithril.md",6905],"8ccf5d9f":[()=>n.e(66649).then(n.bind(n,78367)),"@site/blog/2022-10-14-ledger.md",78367],"8cd47ea9":[()=>n.e(58628).then(n.bind(n,31550)),"@site/blog/2022-10-21-hydra.md",31550],"8d0075ff":[()=>n.e(99750).then(n.bind(n,65389)),"@site/blog/2023-09-20-consensus.md",65389],"8d209506":[()=>n.e(32936).then(n.bind(n,58373)),"@site/blog/2023-01-20-crypto.md",58373],"8d306cf9":[()=>n.e(18144).then(n.bind(n,9865)),"@site/blog/2023-11-01-mithril.md",9865],"8d3da32e":[()=>n.e(84877).then(n.bind(n,92122)),"@site/blog/2022-11-02-release.md",92122],"8e410d22":[()=>n.e(25272).then(n.bind(n,54212)),"@site/blog/2023-03-23-mithril.md",54212],"8ed15298":[()=>n.e(9928).then(n.bind(n,5378)),"@site/blog/2023-07-04-node-cli-api.md",5378],"8f7e10a3":[()=>n.e(72033).then(n.t.bind(n,79573,19)),"~docs/default/category-cardano-updatesdocs-defaultsidebar-category-tutorial-basics-e06.json",79573],"8fddd37c":[()=>n.e(25778).then(n.t.bind(n,55797,19)),"~blog/updates/cardano-updates-page-26-467.json",55797],"8fe062a7":[()=>n.e(21597).then(n.bind(n,17331)),"@site/blog/2023-10-27-sre.md",17331],"8fea44ca":[()=>n.e(97517).then(n.bind(n,11611)),"@site/blog/2023-01-25-consensus.md?truncated=true",11611],"90bf9c2d":[()=>n.e(32035).then(n.bind(n,91041)),"@site/blog/2023-05-04-mithril.md",91041],"90cc522f":[()=>n.e(75696).then(n.bind(n,73887)),"@site/blog/2023-04-21-hydra.md?truncated=true",73887],"90f359c5":[()=>n.e(66891).then(n.bind(n,83762)),"@site/blog/2022-10-28-sre.md?truncated=true",83762],"9136968b":[()=>n.e(4986).then(n.bind(n,99124)),"@site/blog/2023-03-31-crypto.md?truncated=true",99124],"913aac40":[()=>n.e(92846).then(n.bind(n,97344)),"@site/blog/2023-03-23-mithril.md?truncated=true",97344],91595845:[()=>n.e(51268).then(n.bind(n,3573)),"@site/blog/2023-05-12-crypto.md?truncated=true",3573],91831590:[()=>n.e(29121).then(n.t.bind(n,50864,19)),"~blog/updates/cardano-updates-tags-hydra-page-2-af6.json",50864],"91b05c51":[()=>n.e(17490).then(n.bind(n,34691)),"@site/blog/2022-12-12-network.md",34691],"924be064":[()=>n.e(21798).then(n.bind(n,93825)),"@site/blog/2023-01-06-crypto.md",93825],"925feafa":[()=>n.e(19773).then(n.bind(n,67358)),"@site/blog/2023-02-23-mithril.md",67358],"9291df2e":[()=>n.e(62302).then(n.bind(n,32194)),"@site/blog/2023-10-04-mithril.md",32194],"934a8f8d":[()=>n.e(36370).then(n.bind(n,81779)),"@site/blog/2023-11-09-db-sync.md?truncated=true",81779],"935f2afb":[()=>n.e(80053).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],93729337:[()=>n.e(85845).then(n.bind(n,82597)),"@site/blog/2023-01-14-db-sync.md",82597],"93b15a8c":[()=>n.e(14582).then(n.bind(n,34989)),"@site/blog/2022-10-27-crypto.md",34989],94133299:[()=>n.e(48275).then(n.bind(n,87687)),"@site/blog/2022-09-30-ledger.md",87687],"9440f007":[()=>n.e(98254).then(n.bind(n,59255)),"@site/blog/2022-12-14-consensus.md",59255],"9450fd8f":[()=>n.e(45410).then(n.t.bind(n,9804,19)),"~blog/updates/cardano-updates-page-18-352.json",9804],"94780c38":[()=>n.e(58925).then(n.bind(n,99178)),"@site/blog/2023-01-14-db-sync.md?truncated=true",99178],"948ff80d":[()=>n.e(88767).then(n.t.bind(n,31306,19)),"~blog/updates/cardano-updates-tags-hydra-page-10-f84-list.json",31306],"94a907c9":[()=>n.e(23941).then(n.bind(n,44751)),"@site/blog/2023-03-03-goedel.md?truncated=true",44751],"94c6d911":[()=>n.e(44501).then(n.bind(n,14130)),"@site/blog/2022-11-16-performance-and-tracing.md",14130],"94dc91d7":[()=>n.e(6683).then(n.t.bind(n,59277,19)),"~blog/updates/cardano-updates-page-56-3ca.json",59277],"95f12e12":[()=>n.e(84727).then(n.bind(n,67975)),"@site/quarterly/2023-01-18-consensus.md?truncated=true",67975],"960e3390":[()=>n.e(24913).then(n.t.bind(n,57070,19)),"~blog/updates/cardano-updates-tags-mithril-page-4-98c-list.json",57070],"965e9e9a":[()=>n.e(37595).then(n.t.bind(n,27622,19)),"~blog/quarterly/cardano-updates-quarterly-tags-ledger-2d0-list.json",27622],"9668e24b":[()=>n.e(68044).then(n.bind(n,14624)),"@site/blog/2023-09-20-mithril.md?truncated=true",14624],"97407dee":[()=>n.e(47263).then(n.bind(n,53615)),"@site/quarterly/2023-04-25-consensus.md?truncated=true",53615],"97cbe67b":[()=>n.e(48221).then(n.bind(n,70314)),"@site/blog/2023-04-06-mithril.md",70314],"97daee08":[()=>n.e(32070).then(n.bind(n,43729)),"@site/blog/2023-03-09-mithril.md",43729],98277053:[()=>n.e(66602).then(n.t.bind(n,16938,19)),"~blog/updates/cardano-updates-tags-hydra-18a-list.json",16938],"986e43da":[()=>n.e(6807).then(n.bind(n,61934)),"@site/blog/2023-02-02-ledger.md",61934],"98b2ca25":[()=>n.e(1435).then(n.t.bind(n,27627,19)),"~blog/updates/cardano-updates-tags-cli-api-page-6-f69-list.json",27627],"98e6984f":[()=>n.e(19861).then(n.bind(n,80648)),"@site/blog/2022-12-15-mithril.md?truncated=true",80648],"9945c128":[()=>n.e(89325).then(n.t.bind(n,41340,19)),"~blog/updates/cardano-updates-tags-mithril-page-5-446-list.json",41340],"996aa714":[()=>n.e(70594).then(n.bind(n,73172)),"@site/blog/2022-12-14-performance-and-tracing.md?truncated=true",73172],99881079:[()=>n.e(53004).then(n.bind(n,38772)),"@site/blog/2023-05-17-performance-and-tracing.md?truncated=true",38772],"999e2b46":[()=>n.e(76433).then(n.bind(n,25360)),"@site/blog/2023-06-14-consensus.md?truncated=true",25360],"99b0bd12":[()=>n.e(59798).then(n.bind(n,17110)),"@site/blog/2023-06-12-network.md",17110],"9a01d9b0":[()=>n.e(21158).then(n.t.bind(n,78905,19)),"~blog/updates/cardano-updates-page-23-9f5.json",78905],"9a03c440":[()=>n.e(16959).then(n.bind(n,66401)),"@site/blog/2023-02-23-performance-and-tracing.md",66401],"9a4c05df":[()=>n.e(68077).then(n.t.bind(n,23401,19)),"~blog/updates/cardano-updates-tags-cli-api-page-2-8d5-list.json",23401],"9b5ce5fa":[()=>n.e(75501).then(n.bind(n,64213)),"@site/blog/2023-11-08-mithril.md?truncated=true",64213],"9b6092d7":[()=>n.e(48990).then(n.bind(n,90436)),"@site/blog/2022-12-14-db-sync.md",90436],"9b7a95a2":[()=>n.e(7266).then(n.bind(n,54972)),"@site/blog/2022-10-18-consensus.md?truncated=true",54972],"9ba26136":[()=>n.e(62231).then(n.bind(n,19146)),"@site/blog/2023-10-15-network.md",19146],"9bcfaf7c":[()=>n.e(27850).then(n.t.bind(n,13927,19)),"~blog/updates/cardano-updates-page-48-cb9.json",13927],"9c662d1f":[()=>n.e(75773).then(n.t.bind(n,23714,19)),"~blog/updates/cardano-updates-tags-mithril-7d9.json",23714],"9c7979b1":[()=>n.e(31757).then(n.bind(n,71635)),"@site/blog/2023-08-18-sre.md",71635],"9c96fa11":[()=>n.e(90178).then(n.bind(n,42764)),"@site/blog/2023-03-31-hydra.md?truncated=true",42764],"9cab6d73":[()=>n.e(93203).then(n.bind(n,72305)),"@site/blog/2023-07-07-hydra.md?truncated=true",72305],"9ce37f6e":[()=>n.e(66764).then(n.bind(n,79098)),"@site/blog/2023-12-01-hydra.md?truncated=true",79098],"9d43e047":[()=>n.e(78148).then(n.t.bind(n,29117,19)),"~blog/updates/cardano-updates-page-29-d69.json",29117],"9d7869bb":[()=>n.e(37734).then(n.bind(n,91509)),"@site/blog/2023-09-01-ledger.md?truncated=true",91509],"9dce568f":[()=>n.e(35029).then(n.t.bind(n,35560,19)),"~blog/updates/cardano-updates-tags-network-5a5-list.json",35560],"9dee36e7":[()=>n.e(58744).then(n.bind(n,57912)),"@site/blog/2023-08-18-sre.md?truncated=true",57912],"9e4087bc":[()=>n.e(53608).then(n.bind(n,63169)),"@theme/BlogArchivePage",63169],"9e570fef":[()=>n.e(32925).then(n.bind(n,62129)),"@site/blog/2023-09-15-goedel.md?truncated=true",62129],"9e834cf3":[()=>n.e(24941).then(n.t.bind(n,36262,19)),"~blog/updates/cardano-updates-page-13-7a9.json",36262],"9e9bda24":[()=>n.e(48679).then(n.t.bind(n,30570,19)),"~blog/updates/cardano-updates-page-50-009.json",30570],"9f70a142":[()=>n.e(6169).then(n.bind(n,4756)),"@site/blog/2022-12-09-crypto.md",4756],"9f761678":[()=>n.e(278).then(n.bind(n,32230)),"@site/blog/2023-04-28-crypto.md",32230],"9f7c2154":[()=>n.e(32472).then(n.bind(n,35890)),"@site/blog/2022-12-28-node-cli-api.md",35890],"9fba849d":[()=>n.e(82941).then(n.bind(n,14990)),"@site/blog/2022-11-04-hydra.md?truncated=true",14990],a040c838:[()=>n.e(9499).then(n.bind(n,85704)),"@site/blog/2023-06-09-crypto.md",85704],a0d18a99:[()=>n.e(62767).then(n.bind(n,11960)),"@site/quarterly/2022-11-07-ledger.md",11960],a0fc6770:[()=>n.e(59158).then(n.t.bind(n,94032,19)),"~blog/updates/cardano-updates-tags-db-sync-page-2-4f6-list.json",94032],a14fd889:[()=>n.e(87326).then(n.bind(n,16410)),"@site/blog/2023-10-18-mithril.md?truncated=true",16410],a1597564:[()=>n.e(60715).then(n.bind(n,33286)),"@site/blog/2023-02-02-ledger.md?truncated=true",33286],a1ac97eb:[()=>n.e(36463).then(n.bind(n,25274)),"@site/blog/2022-11-30-node-cli-api.md?truncated=true",25274],a1b4c76a:[()=>n.e(8765).then(n.t.bind(n,48796,19)),"~blog/updates/cardano-updates-page-14-0e3.json",48796],a1cde312:[()=>n.e(90748).then(n.bind(n,47553)),"@site/blog/2023-07-28-hydra.md?truncated=true",47553],a1d1f035:[()=>n.e(91282).then(n.bind(n,39065)),"@site/blog/2023-09-20-consensus.md?truncated=true",39065],a1d4a798:[()=>n.e(25353).then(n.bind(n,53712)),"@site/blog/2023-11-17-performance-and-tracing.md?truncated=true",53712],a1f2945e:[()=>n.e(87407).then(n.bind(n,18936)),"@site/blog/2023-09-26-node-cli-api.md?truncated=true",18936],a2a63bac:[()=>n.e(16002).then(n.bind(n,54903)),"@site/blog/2023-06-09-hydra.md",54903],a2ee852b:[()=>n.e(95208).then(n.bind(n,15302)),"@site/blog/2023-05-03-consensus.md",15302],a34b3179:[()=>n.e(22254).then(n.t.bind(n,94029,19)),"~blog/updates/cardano-updates-tags-crypto-page-4-d7d.json",94029],a3889346:[()=>n.e(49769).then(n.bind(n,8838)),"@site/blog/2022-09-30-ledger.md?truncated=true",8838],a48d66c0:[()=>n.e(77965).then(n.bind(n,69029)),"@site/blog/2023-09-07-performance-and-tracing.md",69029],a572b6ff:[()=>n.e(56618).then(n.bind(n,18104)),"@site/blog/2023-08-04-performance-and-tracing.md",18104],a5bf291f:[()=>n.e(30907).then(n.t.bind(n,97577,19)),"~blog/updates/cardano-updates-tags-open-source-9d0-list.json",97577],a6238997:[()=>n.e(49904).then(n.bind(n,46010)),"@site/blog/2023-04-17-incident.md?truncated=true",46010],a687dd04:[()=>n.e(26026).then(n.bind(n,59536)),"@site/blog/2023-10-13-sre.md?truncated=true",59536],a69f0deb:[()=>n.e(2773).then(n.bind(n,67900)),"@site/blog/2023-07-18-node-cli-api.md?truncated=true",67900],a6aa9e1f:[()=>Promise.all([n.e(40532),n.e(80210),n.e(2529),n.e(93089)]).then(n.bind(n,80046)),"@theme/BlogListPage",80046],a6afc437:[()=>n.e(69565).then(n.t.bind(n,87737,19)),"~blog/updates/cardano-updates-tags-hydra-page-6-174.json",87737],a6e1d45a:[()=>n.e(8737).then(n.bind(n,30221)),"@site/blog/2023-10-27-hydra.md",30221],a6e5ff3c:[()=>n.e(78153).then(n.bind(n,3868)),"@site/blog/2023-08-18-hydra.md?truncated=true",3868],a7418040:[()=>n.e(16886).then(n.bind(n,43603)),"@site/blog/2023-11-15-mithril.md",43603],a7a31948:[()=>n.e(85943).then(n.bind(n,91654)),"@site/blog/2023-09-29-sre.md",91654],a8723288:[()=>n.e(86673).then(n.t.bind(n,51115,19)),"~blog/updates/cardano-updates-tags-sre-d43.json",51115],a8738e5f:[()=>n.e(99881).then(n.bind(n,67461)),"@site/blog/2023-04-20-mithril.md",67461],a9019578:[()=>n.e(4497).then(n.bind(n,65934)),"@site/blog/2022-10-04-node-cli-api.md",65934],a9347c1b:[()=>n.e(76323).then(n.bind(n,95829)),"@site/blog/2023-02-09-mithril.md?truncated=true",95829],aa4c9cc8:[()=>n.e(50919).then(n.bind(n,13503)),"@site/blog/2023-05-19-hydra.md?truncated=true",13503],aafd9eaa:[()=>n.e(89083).then(n.t.bind(n,25543,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-2-43f.json",25543],ab4c3279:[()=>n.e(72690).then(n.bind(n,67660)),"@site/blog/2023-09-22-hydra.md",67660],ac12bff3:[()=>n.e(4608).then(n.t.bind(n,66384,19)),"~blog/updates/cardano-updates-page-49-110.json",66384],ac56cb0b:[()=>n.e(39329).then(n.bind(n,7640)),"@site/blog/2022-11-16-consensus.md",7640],ac87db6a:[()=>n.e(62703).then(n.t.bind(n,20637,19)),"~blog/updates/cardano-updates-tags-hydra-page-4-6e8-list.json",20637],ac8a5a87:[()=>n.e(25853).then(n.t.bind(n,33480,19)),"~blog/quarterly/cardano-updates-quarterly-archive-b33.json",33480],acd2edbe:[()=>n.e(39113).then(n.t.bind(n,52701,19)),"~blog/updates/cardano-updates-page-3-c5b.json",52701],ace79a55:[()=>n.e(61185).then(n.bind(n,40709)),"@site/blog/2023-06-30-hydra.md?truncated=true",40709],add555bf:[()=>n.e(23360).then(n.bind(n,7584)),"@site/blog/2022-11-02-ledger.md",7584],ae2d2424:[()=>n.e(17873).then(n.bind(n,59274)),"@site/blog/2022-10-14-hydra.md?truncated=true",59274],ae455379:[()=>n.e(38672).then(n.t.bind(n,17033,19)),"~blog/quarterly/cardano-updates-quarterly-tags-consensus-562-list.json",17033],ae521593:[()=>n.e(81947).then(n.t.bind(n,59230,19)),"~blog/updates/cardano-updates-tags-crypto-page-3-740.json",59230],ae7f7c70:[()=>n.e(56789).then(n.t.bind(n,97303,19)),"~blog/updates/cardano-updates-tags-crypto-page-4-d7d-list.json",97303],afa83c07:[()=>n.e(68115).then(n.bind(n,27614)),"@site/blog/2023-07-31-network.md?truncated=true",27614],b020ac17:[()=>n.e(33538).then(n.t.bind(n,88564,19)),"~blog/updates/cardano-updates-page-22-cfc.json",88564],b032e7ab:[()=>n.e(292).then(n.bind(n,32167)),"@site/blog/2023-07-27-mithril.md?truncated=true",32167],b03d4a4e:[()=>n.e(52834).then(n.bind(n,44301)),"@site/blog/2022-11-11-ledger.md",44301],b073a55d:[()=>n.e(20955).then(n.bind(n,7729)),"@site/quarterly/2023-Q3-performance-and-tracing.md",7729],b073edd1:[()=>n.e(70613).then(n.t.bind(n,85795,19)),"~blog/updates/cardano-updates-tags-mithril-page-7-afd-list.json",85795],b13803f3:[()=>n.e(96558).then(n.t.bind(n,47768,19)),"~blog/updates/cardano-updates-tags-hydra-page-7-81d-list.json",47768],b242687d:[()=>n.e(22191).then(n.bind(n,95807)),"@site/blog/2023-09-29-sre.md?truncated=true",95807],b28a1077:[()=>n.e(7413).then(n.bind(n,49384)),"@site/blog/2023-05-17-performance-and-tracing.md",49384],b3041b60:[()=>n.e(35889).then(n.bind(n,2592)),"@site/blog/2023-05-05-ledger.md?truncated=true",2592],b3043f02:[()=>n.e(27478).then(n.bind(n,59290)),"@site/blog/2023-10-04-consensus.md?truncated=true",59290],b41783a8:[()=>n.e(89104).then(n.t.bind(n,861,19)),"~blog/updates/cardano-updates-tags-goedel-5b9-list.json",861],b4645a09:[()=>n.e(24910).then(n.t.bind(n,14950,19)),"~blog/updates/cardano-updates-f9b.json",14950],b4cc2dd2:[()=>n.e(70635).then(n.bind(n,52945)),"@site/blog/2023-03-03-hydra.md",52945],b4f5b98b:[()=>n.e(78461).then(n.bind(n,18983)),"@site/blog/2023-08-01-node-cli-api.md?truncated=true",18983],b512dd46:[()=>n.e(47093).then(n.bind(n,5136)),"@site/blog/2022-11-11-network.md?truncated=true",5136],b5164349:[()=>n.e(40176).then(n.bind(n,3644)),"@site/blog/2023-03-22-performance-and-tracing.md",3644],b57687d8:[()=>n.e(24651).then(n.bind(n,17503)),"@site/blog/2023-05-31-consensus.md?truncated=true",17503],b6145ff0:[()=>n.e(71843).then(n.t.bind(n,61785,19)),"~blog/updates/cardano-updates-page-59-25a.json",61785],b65e5ec2:[()=>n.e(15715).then(n.bind(n,79198)),"@site/blog/2023-09-07-performance-and-tracing.md?truncated=true",79198],b6ef4fcb:[()=>n.e(53516).then(n.bind(n,33340)),"@site/blog/2022-12-16-hydra.md?truncated=true",33340],b78698d9:[()=>n.e(33288).then(n.bind(n,52949)),"@site/blog/2023-01-25-node-cli-api.md",52949],b7dd63dc:[()=>n.e(11400).then(n.bind(n,51146)),"@site/blog/2023-11-10-hydra.md?truncated=true",51146],b8465b4d:[()=>n.e(74933).then(n.t.bind(n,42005,19)),"~blog/updates/cardano-updates-page-37-232.json",42005],b88c8fa9:[()=>n.e(42190).then(n.bind(n,22750)),"@site/blog/2022-12-14-node-cli-api.md",22750],b8a3fbda:[()=>n.e(7741).then(n.bind(n,68986)),"@site/blog/2023-09-29-goedel.md",68986],b8bcf1d1:[()=>n.e(73277).then(n.bind(n,98981)),"@site/blog/2023-02-03-crypto.md?truncated=true",98981],b92c36fd:[()=>n.e(52322).then(n.bind(n,84846)),"@site/blog/2022-10-28-hydra.md?truncated=true",84846],b96b3223:[()=>n.e(77411).then(n.t.bind(n,39478,19)),"~blog/updates/cardano-updates-tags-crypto-page-3-740-list.json",39478],b9d87023:[()=>n.e(95850).then(n.t.bind(n,95586,19)),"~blog/updates/cardano-updates-tags-goedel-page-4-a08-list.json",95586],ba0b6dbd:[()=>Promise.all([n.e(51068),n.e(30126)]).then(n.bind(n,50065)),"@site/blog/2022-08-12-network.md?truncated=true",50065],baed1590:[()=>n.e(12812).then(n.t.bind(n,44187,19)),"~blog/updates/cardano-updates-tags-ledger-page-4-98a.json",44187],bb44f9e3:[()=>n.e(45943).then(n.bind(n,90805)),"@site/blog/2023-09-07-mithril.md?truncated=true",90805],bb465a37:[()=>n.e(6246).then(n.bind(n,12332)),"@site/blog/2023-01-13-release.md",12332],bbc31819:[()=>n.e(67330).then(n.t.bind(n,21765,19)),"~blog/quarterly/cardano-updates-quarterly-tags-cli-api-quarterly-1f5.json",21765],bbe7c3bd:[()=>n.e(24379).then(n.t.bind(n,38715,19)),"~blog/updates/cardano-updates-tags-mithril-page-5-446.json",38715],bc6b65d9:[()=>n.e(40160).then(n.bind(n,45335)),"@site/blog/2023-03-02-network.md",45335],bccb35b7:[()=>n.e(94759).then(n.bind(n,19604)),"@site/blog/2023-05-26-network.md?truncated=true",19604],bcf46d9c:[()=>n.e(31617).then(n.bind(n,48880)),"@site/blog/2023-01-20-hydra.md",48880],bd65afd9:[()=>n.e(36160).then(n.bind(n,25362)),"@site/blog/2023-07-12-performance-and-tracing.md",25362],bda3e1c7:[()=>n.e(27335).then(n.bind(n,19203)),"@site/blog/2023-02-08-node-cli-api.md?truncated=true",19203],bdc4c1ed:[()=>n.e(76581).then(n.bind(n,29598)),"@site/blog/2023-06-09-hydra.md?truncated=true",29598],be16a434:[()=>n.e(83247).then(n.bind(n,85869)),"@site/blog/2023-08-24-performance-and-tracing.md",85869],be1e6782:[()=>n.e(25469).then(n.bind(n,12306)),"@site/quarterly/2023-Q2-network.md",12306],be26e761:[()=>n.e(86095).then(n.t.bind(n,20510,19)),"~blog/updates/cardano-updates-page-38-3c2.json",20510],be32a6ec:[()=>n.e(15224).then(n.t.bind(n,27775,19)),"~blog/updates/cardano-updates-tags-hydra-page-9-033.json",27775],bf071e0b:[()=>n.e(67787).then(n.t.bind(n,36898,19)),"~blog/updates/cardano-updates-page-40-5e8.json",36898],c0354ce6:[()=>n.e(36881).then(n.bind(n,50633)),"@site/blog/2023-11-24-hydra.md",50633],c036f08e:[()=>n.e(40309).then(n.bind(n,52303)),"@site/blog/2023-06-23-sre.md?truncated=true",52303],c061e3b1:[()=>n.e(64614).then(n.bind(n,99797)),"@site/blog/2023-03-09-mithril.md?truncated=true",99797],c063df1b:[()=>n.e(21562).then(n.bind(n,7314)),"@site/blog/2023-03-03-crypto.md",7314],c08c0f47:[()=>n.e(64562).then(n.bind(n,63876)),"@site/blog/2023-06-14-consensus.md",63876],c091c5d8:[()=>n.e(39596).then(n.t.bind(n,414,19)),"~blog/updates/cardano-updates-tags-devx-3a5-list.json",414],c0ac1524:[()=>n.e(89752).then(n.bind(n,58905)),"@site/blog/2023-08-04-goedel.md",58905],c0cf6239:[()=>n.e(53482).then(n.bind(n,29025)),"@site/quarterly/2023-01-13-network.md?truncated=true",29025],c10365f3:[()=>n.e(7783).then(n.bind(n,3827)),"@site/blog/2023-04-20-mithril.md?truncated=true",3827],c178b56c:[()=>n.e(92255).then(n.bind(n,80883)),"@site/blog/2023-09-01-network.md",80883],c1c5c6f5:[()=>n.e(95569).then(n.t.bind(n,9564,19)),"/home/runner/work/cardano-updates/cardano-updates/.docusaurus/docusaurus-plugin-content-blog/quarterly/plugin-route-context-module-100.json",9564],c2b4dd94:[()=>n.e(43020).then(n.bind(n,79021)),"@site/blog/2023-07-12-performance-and-tracing.md?truncated=true",79021],c2eec07f:[()=>n.e(35388).then(n.bind(n,6988)),"@site/blog/2023-07-04-node-cli-api.md?truncated=true",6988],c315164d:[()=>n.e(43194).then(n.bind(n,64268)),"@site/blog/2023-01-12-mithril.md?truncated=true",64268],c4479859:[()=>n.e(73321).then(n.bind(n,92606)),"@site/blog/2023-06-07-node-cli-api.md",92606],c511c40f:[()=>n.e(94922).then(n.bind(n,63417)),"@site/blog/2023-05-17-consensus.md",63417],c5858ebd:[()=>n.e(95199).then(n.bind(n,16011)),"@site/quarterly/2023-04-03-ledger.md",16011],c60581f2:[()=>n.e(97094).then(n.bind(n,84718)),"@site/blog/2023-02-08-consensus.md?truncated=true",84718],c6259fbb:[()=>n.e(2506).then(n.t.bind(n,63415,19)),"~blog/updates/cardano-updates-tags-hydra-page-8-f0c-list.json",63415],c63933b3:[()=>n.e(11727).then(n.bind(n,27502)),"@site/blog/2023-03-22-consensus.md",27502],c6ae40c2:[()=>n.e(17693).then(n.bind(n,68680)),"@site/blog/2023-01-20-sre.md?truncated=true",68680],c6f90b29:[()=>n.e(39080).then(n.bind(n,9762)),"@site/blog/2023-06-07-node-cli-api.md?truncated=true",9762],c7337d4e:[()=>n.e(91151).then(n.bind(n,82469)),"@site/quarterly/2023-04-25-consensus.md",82469],c7e43a05:[()=>n.e(65956).then(n.bind(n,75265)),"@site/blog/2023-10-25-mithril.md?truncated=true",75265],c831575d:[()=>n.e(42677).then(n.bind(n,20519)),"@site/blog/2023-02-21-db-sync.md?truncated=true",20519],c90fb258:[()=>n.e(26584).then(n.bind(n,44389)),"@site/blog/2023-06-08-db-sync.md",44389],c9210b26:[()=>n.e(97959).then(n.bind(n,31535)),"@site/blog/2023-05-04-mithril.md?truncated=true",31535],c94f306d:[()=>n.e(98727).then(n.t.bind(n,29127,19)),"~blog/updates/cardano-updates-tags-hydra-page-3-3da.json",29127],ca3b5bc8:[()=>n.e(96140).then(n.bind(n,92861)),"@site/blog/2023-08-09-consensus.md?truncated=true",92861],ca6829cb:[()=>n.e(41153).then(n.bind(n,14193)),"@site/blog/2023-10-20-hydra.md",14193],caab1e2e:[()=>n.e(93570).then(n.bind(n,74145)),"@site/blog/2023-07-20-goedel.md?truncated=true",74145],cb7a1a0b:[()=>n.e(90934).then(n.bind(n,62094)),"@site/blog/2023-11-16-network.md?truncated=true",62094],cc267639:[()=>n.e(81214).then(n.bind(n,27582)),"@site/blog/2023-01-13-system-test.md",27582],cc30e037:[()=>n.e(31421).then(n.t.bind(n,9353,19)),"~blog/updates/cardano-updates-tags-hydra-18a.json",9353],cc5c2602:[()=>n.e(78761).then(n.bind(n,54230)),"@site/quarterly/2023-01-13-network.md",54230],ccb7a847:[()=>n.e(22469).then(n.bind(n,17352)),"@site/blog/2023-11-01-consensus.md",17352],ccc49370:[()=>Promise.all([n.e(40532),n.e(80210),n.e(2529),n.e(46103)]).then(n.bind(n,65203)),"@theme/BlogPostPage",65203],cced6026:[()=>n.e(48818).then(n.bind(n,52869)),"@site/quarterly/2022-11-07-nod-api-cli.md?truncated=true",52869],ccf451f9:[()=>n.e(5237).then(n.bind(n,81451)),"@site/blog/2023-10-20-hydra.md?truncated=true",81451],ccfc9222:[()=>n.e(87233).then(n.bind(n,86986)),"@site/blog/2023-03-22-node-cli-api.md?truncated=true",86986],cd0ded60:[()=>n.e(27668).then(n.bind(n,72238)),"@site/blog/2023-06-30-hydra.md",72238],cd612773:[()=>n.e(67205).then(n.bind(n,26169)),"@site/blog/2023-05-12-crypto.md",26169],ce17d78b:[()=>n.e(77533).then(n.bind(n,9586)),"@site/quarterly/2023-Q2-sre.md",9586],ce6dcc9e:[()=>n.e(77644).then(n.bind(n,56737)),"@site/blog/2022-09-19-db-sync.md?truncated=true",56737],ce7ed51f:[()=>n.e(30830).then(n.bind(n,71367)),"@site/blog/2023-04-14-hydra.md",71367],cf1bc381:[()=>n.e(84773).then(n.bind(n,77907)),"@site/blog/2023-06-14-performance-and-tracing.md?truncated=true",77907],cfb82551:[()=>n.e(6036).then(n.t.bind(n,85146,19)),"~blog/updates/cardano-updates-tags-hydra-page-4-6e8.json",85146],cfdb38ee:[()=>n.e(59736).then(n.t.bind(n,91779,19)),"~blog/updates/cardano-updates-page-24-2e6.json",91779],d0639dee:[()=>n.e(52506).then(n.bind(n,84505)),"@site/blog/2023-11-29-consensus.md?truncated=true",84505],d077dadd:[()=>n.e(88862).then(n.bind(n,4491)),"@site/blog/2023-06-28-consensus.md?truncated=true",4491],d0a351c0:[()=>n.e(51934).then(n.t.bind(n,298,19)),"~blog/updates/cardano-updates-tags-ledger-page-3-db1-list.json",298],d0e182b9:[()=>n.e(32627).then(n.bind(n,81065)),"@site/blog/2023-06-29-mithril.md?truncated=true",81065],d10ad4a6:[()=>n.e(6166).then(n.t.bind(n,9785,19)),"~blog/updates/cardano-updates-page-30-538.json",9785],d124c703:[()=>n.e(15152).then(n.bind(n,54219)),"@site/blog/2022-11-04-open-source.md?truncated=true",54219],d15a0787:[()=>n.e(89548).then(n.bind(n,20257)),"@site/blog/2023-09-29-hydra.md",20257],d19a344f:[()=>n.e(20387).then(n.bind(n,3568)),"@site/blog/2023-04-14-goedel.md",3568],d1d47ba3:[()=>n.e(65319).then(n.t.bind(n,62205,19)),"~blog/updates/cardano-updates-page-11-5be.json",62205],d200e7a4:[()=>n.e(20738).then(n.t.bind(n,32771,19)),"~blog/updates/cardano-updates-page-41-b80.json",32771],d2ab2776:[()=>n.e(16360).then(n.bind(n,40090)),"@site/blog/2023-06-08-goedel.md",40090],d2aca35e:[()=>n.e(13412).then(n.bind(n,62337)),"@site/blog/2023-10-06-hydra.md",62337],d2ea5af2:[()=>n.e(91984).then(n.bind(n,15042)),"@site/blog/2023-04-21-ledger.md",15042],d343e3e1:[()=>n.e(8033).then(n.bind(n,26796)),"@site/blog/2023-09-15-hydra.md?truncated=true",26796],d3a595c1:[()=>n.e(1537).then(n.bind(n,698)),"@site/blog/2022-10-19-node-cli-api.md?truncated=true",698],d3f3f546:[()=>n.e(13764).then(n.bind(n,54994)),"@site/blog/2022-11-25-crypto.md",54994],d442e1d8:[()=>n.e(9821).then(n.t.bind(n,8678,19)),"~blog/updates/cardano-updates-page-57-bbf.json",8678],d5676bf9:[()=>n.e(3270).then(n.bind(n,82850)),"@site/blog/2023-07-07-hydra.md",82850],d5cc3122:[()=>n.e(28669).then(n.bind(n,3047)),"@site/blog/2023-06-08-db-sync.md?truncated=true",3047],d5f27176:[()=>n.e(95558).then(n.bind(n,45623)),"@site/blog/2023-10-10-node-cli-api.md?truncated=true",45623],d65b9dd2:[()=>n.e(93108).then(n.bind(n,59513)),"@site/blog/2023-10-27-network.md",59513],d6a3b4a5:[()=>n.e(30482).then(n.bind(n,19301)),"@site/blog/2023-07-31-network.md",19301],d6a93ba7:[()=>n.e(31349).then(n.bind(n,61256)),"@site/blog/2022-12-01-system-test.md?truncated=true",61256],d6b66cf4:[()=>n.e(95516).then(n.t.bind(n,1673,19)),"~blog/updates/blog-post-list-prop-updates.json",1673],d6c09ac2:[()=>n.e(22393).then(n.bind(n,98294)),"@site/blog/2023-07-21-hydra.md?truncated=true",98294],d6f20405:[()=>n.e(23599).then(n.bind(n,73363)),"@site/blog/2023-09-01-hydra.md",73363],d70b4c5f:[()=>n.e(71870).then(n.bind(n,39446)),"@site/blog/2023-10-06-performance-and-tracing.md?truncated=true",39446],d7836792:[()=>n.e(42126).then(n.bind(n,82217)),"@site/blog/2023-08-25-hydra.md?truncated=true",82217],d7899fea:[()=>n.e(17285).then(n.bind(n,59997)),"@site/blog/2022-11-11-crypto.md?truncated=true",59997],d79a4bb7:[()=>n.e(90206).then(n.bind(n,25790)),"@site/blog/2022-11-25-hydra.md?truncated=true",25790],d7c69167:[()=>n.e(24288).then(n.bind(n,15983)),"@site/blog/2023-09-29-goedel.md?truncated=true",15983],d7d2f3e9:[()=>n.e(97363).then(n.t.bind(n,93901,19)),"~blog/quarterly/cardano-updates-quarterly-tags-cli-api-quarterly-1f5-list.json",93901],d83d9042:[()=>n.e(8580).then(n.bind(n,42611)),"@site/blog/2023-05-12-hydra.md",42611],d857251e:[()=>n.e(75698).then(n.bind(n,14394)),"@site/blog/2023-05-24-node-cli-api.md",14394],d863ede2:[()=>n.e(45766).then(n.bind(n,48709)),"@site/blog/2023-02-22-consensus.md?truncated=true",48709],d8668f0c:[()=>n.e(1821).then(n.bind(n,94658)),"@site/blog/2023-03-23-db-sync.md",94658],d8c4fe87:[()=>n.e(24671).then(n.bind(n,48221)),"@site/blog/2023-09-06-consensus.md",48221],d92df848:[()=>n.e(2578).then(n.bind(n,61895)),"@site/blog/2023-01-12-mithril.md",61895],d957ac34:[()=>n.e(57772).then(n.bind(n,66001)),"@site/blog/2023-03-24-hydra.md",66001],d967308c:[()=>n.e(20957).then(n.bind(n,12811)),"@site/blog/2023-10-18-mithril.md",12811],d96cfa54:[()=>n.e(16171).then(n.bind(n,21351)),"@site/blog/2023-05-03-performance-and-tracing.md?truncated=true",21351],d988d084:[()=>n.e(85138).then(n.bind(n,56663)),"@site/blog/2023-06-28-performance-and-tracing.md",56663],d99d594e:[()=>n.e(46521).then(n.bind(n,43933)),"@site/blog/2023-02-23-performance-and-tracing.md?truncated=true",43933],d9b708eb:[()=>n.e(67463).then(n.bind(n,49915)),"@site/blog/2023-04-20-node-cli-api.md?truncated=true",49915],d9ccb35d:[()=>n.e(3136).then(n.bind(n,62438)),"@site/blog/2023-03-21-network.md?truncated=true",62438],d9e42018:[()=>n.e(70170).then(n.t.bind(n,65246,19)),"~blog/updates/cardano-updates-tags-cli-api-page-4-e6c-list.json",65246],da04b7b0:[()=>n.e(78101).then(n.bind(n,12804)),"@site/blog/2023-08-15-node-cli-api.md?truncated=true",12804],da7937f0:[()=>n.e(62083).then(n.bind(n,52445)),"@site/blog/2022-10-05-consensus.md",52445],daa3e20a:[()=>n.e(29177).then(n.bind(n,34169)),"@site/blog/2023-03-27-system-test.md",34169],daace409:[()=>Promise.all([n.e(51068),n.e(89008)]).then(n.bind(n,23947)),"@site/blog/2022-09-27-network.md",23947],db138d7c:[()=>n.e(18634).then(n.bind(n,78238)),"@site/quarterly/2023-01-18-consensus.md",78238],db50202c:[()=>n.e(63566).then(n.bind(n,99900)),"@site/blog/2023-05-26-goedel.md?truncated=true",99900],db5663d1:[()=>n.e(14348).then(n.t.bind(n,45422,19)),"~blog/updates/cardano-updates-tags-network-page-2-514.json",45422],dceb6e64:[()=>n.e(18242).then(n.bind(n,22300)),"@site/quarterly/2022-11-15-consensus.md?truncated=true",22300],ddcb8bff:[()=>n.e(54642).then(n.bind(n,15811)),"@site/blog/2023-11-22-mithril.md?truncated=true",15811],ddce0bff:[()=>n.e(31005).then(n.bind(n,59319)),"@site/blog/2023-07-21-sre.md",59319],de5b481b:[()=>n.e(72317).then(n.t.bind(n,12630,19)),"~blog/quarterly/cardano-updates-quarterly-tags-open-source-e7c.json",12630],de790939:[()=>n.e(42185).then(n.bind(n,99073)),"@site/blog/2023-04-21-ledger.md?truncated=true",99073],decc8fa8:[()=>n.e(57918).then(n.bind(n,43654)),"@site/blog/2023-12-01-hydra.md",43654],dee5d2d9:[()=>n.e(52560).then(n.bind(n,46159)),"@site/blog/2023-08-18-network.md",46159],df778edc:[()=>n.e(79036).then(n.bind(n,65687)),"@site/blog/2023-04-28-network.md",65687],dfd49ee8:[()=>n.e(60247).then(n.bind(n,72396)),"@site/blog/2022-10-28-performance-and-tracing.md",72396],dff1c289:[()=>n.e(3792).then(n.bind(n,30089)),"@site/docs/tutorial-extras/manage-docs-versions.md",30089],dff84d74:[()=>n.e(65421).then(n.bind(n,812)),"@site/blog/2022-11-04-mithril.md",812],e06746c7:[()=>n.e(64410).then(n.t.bind(n,81981,19)),"~blog/updates/cardano-updates-tags-consensus-page-2-fa9-list.json",81981],e0a90ddc:[()=>n.e(24891).then(n.t.bind(n,44348,19)),"~blog/updates/cardano-updates-tags-consensus-330-list.json",44348],e0b45b46:[()=>n.e(55135).then(n.bind(n,23826)),"@site/blog/2023-09-12-node-cli-api.md",23826],e135bd86:[()=>n.e(69791).then(n.bind(n,96223)),"@site/blog/2022-11-30-consensus.md?truncated=true",96223],e158fd47:[()=>n.e(88829).then(n.bind(n,64964)),"@site/blog/2023-03-31-goedel.md?truncated=true",64964],e1f21c3f:[()=>n.e(58680).then(n.bind(n,32235)),"@site/blog/2023-11-14-node-cli-api.md",32235],e2011657:[()=>n.e(30849).then(n.bind(n,51505)),"@site/blog/2023-03-17-hydra.md?truncated=true",51505],e25ae581:[()=>n.e(1929).then(n.bind(n,4890)),"@site/blog/2023-06-23-hydra.md",4890],e2a7c340:[()=>n.e(48622).then(n.bind(n,36391)),"@site/blog/2023-01-13-hydra.md?truncated=true",36391],e2c8baed:[()=>n.e(36721).then(n.t.bind(n,80615,19)),"~blog/updates/cardano-updates-tags-crypto-page-2-57e.json",80615],e3067ecd:[()=>n.e(84599).then(n.bind(n,11113)),"@site/blog/2023-09-22-hydra.md?truncated=true",11113],e356bfd0:[()=>n.e(90083).then(n.bind(n,96391)),"@site/blog/2022-10-27-crypto.md?truncated=true",96391],e38c8545:[()=>n.e(51092).then(n.t.bind(n,50047,19)),"~blog/updates/cardano-updates-tags-system-test-b49.json",50047],e3c3ef1c:[()=>n.e(9107).then(n.bind(n,4394)),"@site/blog/2022-11-04-hydra.md",4394],e406e44d:[()=>n.e(23531).then(n.t.bind(n,30099,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-4-7d2.json",30099],e44a2883:[()=>n.e(96755).then(n.bind(n,80740)),"@site/docs/tutorial-extras/translate-your-site.md",80740],e4619b9c:[()=>n.e(56482).then(n.bind(n,70761)),"@site/blog/2023-07-06-developer-experience.md?truncated=true",70761],e4a61baa:[()=>n.e(53121).then(n.bind(n,32288)),"@site/blog/2023-05-26-ledger.md",32288],e54fb861:[()=>n.e(89248).then(n.t.bind(n,35997,19)),"~blog/updates/cardano-updates-tags-hydra-page-9-033-list.json",35997],e56a9a29:[()=>n.e(43412).then(n.bind(n,43937)),"@site/blog/2023-08-24-performance-and-tracing.md?truncated=true",43937],e57d1f62:[()=>n.e(79362).then(n.t.bind(n,29042,19)),"~blog/updates/cardano-updates-tags-consensus-page-7-7b5.json",29042],e5a8e689:[()=>n.e(25946).then(n.t.bind(n,88019,19)),"~blog/updates/cardano-updates-page-16-842.json",88019],e5b737ed:[()=>n.e(54750).then(n.t.bind(n,1879,19)),"~blog/updates/cardano-updates-tags-system-test-b49-list.json",1879],e5dd9161:[()=>n.e(37329).then(n.bind(n,16036)),"@site/blog/2023-02-24-hydra.md",16036],e6402687:[()=>n.e(93524).then(n.bind(n,26879)),"@site/blog/2022-11-28-network.md",26879],e695f231:[()=>n.e(26540).then(n.t.bind(n,9562,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-3-d14-list.json",9562],e6ea9b03:[()=>n.e(88869).then(n.bind(n,53187)),"@site/blog/2023-03-31-crypto.md",53187],e70f68c6:[()=>n.e(72815).then(n.bind(n,80684)),"@site/blog/2023-03-16-goedel.md",80684],e716e5b6:[()=>n.e(94379).then(n.bind(n,13179)),"@site/quarterly/2023-Q3-sre.md?truncated=true",13179],e7486169:[()=>n.e(45237).then(n.bind(n,74349)),"@site/quarterly/2022-11-09-network.md",74349],e7a72da0:[()=>n.e(46846).then(n.bind(n,66876)),"@site/blog/2023-04-19-performance-and-tracing.md",66876],e80f56fd:[()=>n.e(73336).then(n.bind(n,78673)),"@site/blog/2023-04-14-hydra.md?truncated=true",78673],e84709f6:[()=>n.e(46033).then(n.t.bind(n,90005,19)),"~blog/updates/cardano-updates-tags-hydra-page-11-1e1.json",90005],e86dcd26:[()=>n.e(162).then(n.t.bind(n,12200,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-5-215.json",12200],e8d4d6c0:[()=>n.e(52818).then(n.bind(n,32340)),"@site/blog/2023-02-17-network.md",32340],e8f5afda:[()=>n.e(25540).then(n.t.bind(n,8990,19)),"~blog/updates/cardano-updates-tags-ledger-page-2-c49.json",8990],e90b2ff0:[()=>n.e(96840).then(n.bind(n,99480)),"@site/blog/2023-07-13-mithril.md?truncated=true",99480],e9310706:[()=>n.e(43363).then(n.t.bind(n,90133,19)),"~blog/updates/cardano-updates-tags-performance-tracing-page-2-43f-list.json",90133],ea2603ff:[()=>n.e(86326).then(n.bind(n,28380)),"@site/blog/2023-11-08-ledger.md?truncated=true",28380],ea5726b6:[()=>n.e(35846).then(n.t.bind(n,88675,19)),"~blog/updates/cardano-updates-tags-cip-1694-380.json",88675],ea7f8016:[()=>n.e(67820).then(n.t.bind(n,35602,19)),"~blog/updates/cardano-updates-tags-consensus-page-4-6d0-list.json",35602],ea84a009:[()=>n.e(92501).then(n.bind(n,602)),"@site/blog/2023-03-03-crypto.md?truncated=true",602],eab6de32:[()=>n.e(7891).then(n.t.bind(n,80771,19)),"~blog/updates/cardano-updates-tags-consensus-page-6-107-list.json",80771],eac6bb0a:[()=>n.e(87445).then(n.bind(n,97940)),"@site/blog/2022-11-16-node-cli-api.md",97940],eac9cf07:[()=>n.e(59037).then(n.t.bind(n,89207,19)),"~blog/quarterly/cardano-updates-quarterly-tags-sre-aa0.json",89207],eb0e2fb1:[()=>n.e(80622).then(n.bind(n,19040)),"@site/blog/2023-08-17-crypto.md",19040],ebf8adea:[()=>n.e(54669).then(n.bind(n,45668)),"@site/blog/2023-05-17-mithril.md?truncated=true",45668],ec06fa8a:[()=>n.e(46271).then(n.bind(n,1091)),"@site/blog/2023-10-10-node-cli-api.md",1091],ec344652:[()=>n.e(68580).then(n.bind(n,13231)),"@site/blog/2023-07-07-crypto.md",13231],ec53298b:[()=>n.e(21129).then(n.bind(n,94656)),"@site/blog/2023-04-05-performance-and-tracing.md?truncated=true",94656],ed730a1d:[()=>n.e(61137).then(n.t.bind(n,87638,19)),"~blog/updates/cardano-updates-tags-consensus-page-5-ec6-list.json",87638],ed930750:[()=>n.e(23318).then(n.bind(n,64185)),"@site/blog/2023-05-03-consensus.md?truncated=true",64185],ed99d55f:[()=>n.e(65318).then(n.bind(n,73437)),"@site/blog/2023-10-27-hydra.md?truncated=true",73437],eda7cf83:[()=>n.e(48423).then(n.bind(n,10725)),"@site/blog/2023-02-10-hydra.md?truncated=true",10725],edca0251:[()=>n.e(39066).then(n.bind(n,22704)),"@site/blog/2023-02-08-performance-and-tracing.md?truncated=true",22704],ee0b7a59:[()=>n.e(26544).then(n.bind(n,1679)),"@site/blog/2023-07-26-consensus.md?truncated=true",1679],ee94a44f:[()=>n.e(56815).then(n.bind(n,6855)),"@site/blog/2022-12-15-mithril.md",6855],ef2b1d07:[()=>n.e(70729).then(n.t.bind(n,91102,19)),"~blog/updates/cardano-updates-tags-hydra-page-3-3da-list.json",91102],ef2b6a3f:[()=>n.e(1338).then(n.bind(n,50818)),"@site/blog/2022-12-14-db-sync.md?truncated=true",50818],ef4801f7:[()=>n.e(75394).then(n.bind(n,45443)),"@site/blog/2023-02-08-performance-and-tracing.md",45443],ef4f60e7:[()=>n.e(55531).then(n.bind(n,86601)),"@site/blog/2023-04-14-goedel.md?truncated=true",86601],efad53df:[()=>n.e(53426).then(n.t.bind(n,84260,19)),"~blog/updates/cardano-updates-tags-cli-api-page-3-7d2-list.json",84260],eff08811:[()=>n.e(95816).then(n.bind(n,72837)),"@site/blog/2023-02-03-hydra.md",72837],f0418a99:[()=>n.e(73799).then(n.bind(n,25770)),"@site/blog/2023-11-16-network.md",25770],f117ec90:[()=>n.e(51522).then(n.bind(n,64385)),"@site/blog/2023-09-08-hydra.md",64385],f13a89c7:[()=>n.e(86582).then(n.t.bind(n,17825,19)),"~blog/updates/cardano-updates-tags-sre-page-2-3cd-list.json",17825],f1bfc30d:[()=>n.e(35877).then(n.bind(n,30394)),"@site/blog/2023-10-11-mithril.md",30394],f1df5007:[()=>n.e(53288).then(n.bind(n,80999)),"@site/blog/2023-08-28-mithril.md",80999],f210b4b5:[()=>n.e(24745).then(n.bind(n,68831)),"@site/blog/2022-12-01-db-sync.md?truncated=true",68831],f2180c0a:[()=>n.e(17433).then(n.bind(n,9304)),"@site/blog/2023-05-05-ledger.md",9304],f2423430:[()=>n.e(1321).then(n.bind(n,28149)),"@site/blog/2023-03-22-performance-and-tracing.md?truncated=true",28149],f2b32cff:[()=>n.e(58566).then(n.bind(n,59485)),"@site/blog/2023-02-17-ledger.md",59485],f2deb2f1:[()=>n.e(82164).then(n.bind(n,80599)),"@site/blog/2023-11-10-sre.md",80599],f302e248:[()=>n.e(83214).then(n.bind(n,31079)),"@site/blog/2023-02-22-node-cli-api.md?truncated=true",31079],f3c06362:[()=>n.e(34985).then(n.bind(n,22460)),"@site/quarterly/2023-Q2-consensus.md",22460],f452efc5:[()=>n.e(44281).then(n.bind(n,89556)),"@site/blog/2023-07-07-goedel.md",89556],f4548430:[()=>n.e(93789).then(n.bind(n,84374)),"@site/blog/2023-09-27-mithril.md",84374],f47d214c:[()=>n.e(55791).then(n.t.bind(n,52078,19)),"~blog/updates/cardano-updates-tags-cip-1694-380-list.json",52078],f48535bf:[()=>n.e(45821).then(n.bind(n,99684)),"@site/blog/2023-06-16-hydra.md?truncated=true",99684],f4cb7e87:[()=>n.e(70085).then(n.t.bind(n,76777,19)),"~blog/updates/cardano-updates-tags-mithril-page-2-0fe-list.json",76777],f51bb76d:[()=>n.e(12626).then(n.bind(n,21772)),"@site/blog/2023-03-08-performance-and-tracing.md",21772],f522921c:[()=>n.e(75556).then(n.bind(n,55660)),"@site/blog/2023-06-02-hydra.md",55660],f530b85c:[()=>n.e(49605).then(n.bind(n,35118)),"@site/blog/2023-04-05-node-cli-api.md",35118],f55d3e7a:[()=>n.e(54193).then(n.bind(n,78030)),"@site/docs/tutorial-basics/deploy-your-site.md",78030],f59c978c:[()=>n.e(46545).then(n.bind(n,22053)),"@site/blog/2022-11-30-consensus.md",22053],f5a24224:[()=>n.e(71844).then(n.bind(n,66255)),"@site/blog/2022-10-14-ledger.md?truncated=true",66255],f5b1250e:[()=>n.e(1129).then(n.bind(n,25013)),"@site/blog/2023-08-04-hydra.md?truncated=true",25013],f5d27437:[()=>n.e(85351).then(n.t.bind(n,71522,19)),"~blog/updates/cardano-updates-page-51-e72.json",71522],f5e5d1cf:[()=>n.e(51410).then(n.bind(n,45256)),"@site/blog/2022-11-18-mithril.md?truncated=true",45256],f5f103cc:[()=>n.e(67170).then(n.t.bind(n,53162,19)),"~blog/updates/cardano-updates-page-5-d4c.json",53162],f63b6b72:[()=>n.e(87389).then(n.bind(n,36793)),"@site/blog/2023-07-21-ledger.md",36793],f6a3ab66:[()=>n.e(12634).then(n.t.bind(n,2832,19)),"~blog/updates/cardano-updates-tags-mithril-page-7-afd.json",2832],f6aa5556:[()=>n.e(376).then(n.bind(n,86936)),"@site/blog/2022-12-09-ledger.md?truncated=true",86936],f6b8faad:[()=>n.e(83584).then(n.t.bind(n,28460,19)),"~blog/updates/cardano-updates-page-35-d30.json",28460],f6ec1152:[()=>n.e(11254).then(n.bind(n,53954)),"@site/blog/2023-10-13-ledger.md?truncated=true",53954],f7e5e70a:[()=>n.e(48909).then(n.bind(n,78370)),"@site/blog/2023-11-01-mithril.md?truncated=true",78370],f850a5f3:[()=>n.e(25403).then(n.bind(n,23498)),"@site/blog/2023-01-20-network.md",23498],f8681695:[()=>n.e(32464).then(n.bind(n,67885)),"@site/blog/2023-06-15-mithril.md?truncated=true",67885],f872275a:[()=>n.e(46922).then(n.bind(n,87739)),"@site/blog/2023-03-08-consensus.md?truncated=true",87739],f89a4337:[()=>n.e(25189).then(n.bind(n,54416)),"@site/blog/2023-09-26-node-cli-api.md",54416],f96c80d6:[()=>n.e(90288).then(n.bind(n,75947)),"@site/blog/2023-12-04-performance-and-tracing.md",75947],f96c80dc:[()=>n.e(70641).then(n.bind(n,9022)),"@site/blog/2023-09-01-hydra.md?truncated=true",9022],fa00d705:[()=>n.e(26710).then(n.bind(n,94828)),"@site/blog/2023-11-24-sre.md?truncated=true",94828],fa0b1b5d:[()=>n.e(90056).then(n.bind(n,62140)),"@site/blog/2023-05-12-goedel.md?truncated=true",62140],fa57bfdd:[()=>n.e(92149).then(n.t.bind(n,64665,19)),"~blog/updates/cardano-updates-tags-network-5a5.json",64665],fa5dce7e:[()=>n.e(73001).then(n.bind(n,20486)),"@site/blog/2023-08-18-goedel.md",20486],faece773:[()=>n.e(32023).then(n.bind(n,58910)),"@site/blog/2023-02-03-hydra.md?truncated=true",58910],fb0b9e22:[()=>n.e(92522).then(n.bind(n,20214)),"@site/blog/2023-06-23-hydra.md?truncated=true",20214],fb63aa20:[()=>n.e(58470).then(n.bind(n,62389)),"@site/blog/2022-12-14-performance-and-tracing.md",62389],fb793160:[()=>n.e(87411).then(n.bind(n,48089)),"@site/blog/2023-02-08-consensus.md",48089],fb8d4667:[()=>n.e(57161).then(n.bind(n,31241)),"@site/blog/2022-10-28-network.md?truncated=true",31241],fba052bd:[()=>n.e(36171).then(n.bind(n,54664)),"@site/blog/2022-11-02-consensus.md",54664],fbdc54bf:[()=>n.e(63824).then(n.bind(n,40671)),"@site/blog/2023-06-02-hydra.md?truncated=true",40671],fc0eac3b:[()=>n.e(67927).then(n.t.bind(n,49063,19)),"~blog/updates/cardano-updates-page-10-021.json",49063],fc8c3309:[()=>n.e(77642).then(n.bind(n,64267)),"@site/blog/2023-08-23-consensus.md?truncated=true",64267],fce7e268:[()=>n.e(62140).then(n.bind(n,50153)),"@site/blog/2023-03-03-hydra.md?truncated=true",50153],fd6fd4a3:[()=>n.e(37495).then(n.bind(n,66366)),"@site/blog/2022-11-23-ledger.md",66366],fdba8f98:[()=>n.e(79224).then(n.bind(n,1814)),"@site/blog/2023-03-10-hydra.md",1814],fdfeff52:[()=>n.e(81030).then(n.t.bind(n,49771,19)),"~blog/updates/cardano-updates-tags-goedel-page-2-248-list.json",49771],fe184e91:[()=>n.e(79967).then(n.t.bind(n,51034,19)),"~blog/updates/cardano-updates-tags-cli-api-4f5-list.json",51034],fee99998:[()=>n.e(91760).then(n.bind(n,49627)),"@site/blog/2023-02-24-hydra.md?truncated=true",49627],ff276f6a:[()=>n.e(39969).then(n.t.bind(n,20040,19)),"~blog/updates/cardano-updates-tags-network-page-5-19d.json",20040],ff8cfcf7:[()=>n.e(20203).then(n.bind(n,98149)),"@site/blog/2022-12-09-ledger.md",98149],ffbc2281:[()=>n.e(64906).then(n.t.bind(n,21299,19)),"~blog/updates/cardano-updates-page-46-e12.json",21299]};function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?a.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},a.createElement("p",null,String(t)),a.createElement("div",null,a.createElement("button",{type:"button",onClick:n},"Retry"))):r?a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},a.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},a.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},a.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},a.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),a.createElement("circle",{cx:"22",cy:"22",r:"8"},a.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var l=n(99670),u=n(30226);function p(e,t){if("*"===e)return c()({loading:s,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return a.createElement(u.z,{value:{plugin:{name:"native",id:"default"}}},a.createElement(n,t))}});const o=i[`${e}-${t}`],p={},f=[],b=[],g=(0,l.Z)(o);return Object.entries(g).forEach((e=>{let[t,n]=e;const a=d[n];a&&(p[t]=a[0],f.push(a[1]),b.push(a[2]))})),c().Map({loading:s,loader:p,modules:f,webpack:()=>b,render(t,n){const c=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,a]=t;const r=a.default;if(!r)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof r&&"function"!=typeof r||Object.keys(a).filter((e=>"default"!==e)).forEach((e=>{r[e]=a[e]}));let o=c;const i=n.split(".");i.slice(0,-1).forEach((e=>{o=o[e]})),o[i[i.length-1]]=r}));const i=c.__comp;delete c.__comp;const d=c.__context;return delete c.__context,a.createElement(u.z,{value:d},a.createElement(i,(0,r.Z)({},c,n)))}})}const f=[{path:"/cardano-updates/2022-08-12-network",component:p("/cardano-updates/2022-08-12-network","e9a"),exact:!0},{path:"/cardano-updates/2022-08-12-sre",component:p("/cardano-updates/2022-08-12-sre","cf2"),exact:!0},{path:"/cardano-updates/2022-08-31-consensus",component:p("/cardano-updates/2022-08-31-consensus","6f9"),exact:!0},{path:"/cardano-updates/2022-09-01-ledger",component:p("/cardano-updates/2022-09-01-ledger","ccc"),exact:!0},{path:"/cardano-updates/2022-09-16-ledger",component:p("/cardano-updates/2022-09-16-ledger","8dd"),exact:!0},{path:"/cardano-updates/2022-09-19-db-sync",component:p("/cardano-updates/2022-09-19-db-sync","a4b"),exact:!0},{path:"/cardano-updates/2022-09-20-consensus",component:p("/cardano-updates/2022-09-20-consensus","b11"),exact:!0},{path:"/cardano-updates/2022-09-27-network",component:p("/cardano-updates/2022-09-27-network","7f3"),exact:!0},{path:"/cardano-updates/2022-09-30-ledger",component:p("/cardano-updates/2022-09-30-ledger","58c"),exact:!0},{path:"/cardano-updates/2022-10-02-consensus",component:p("/cardano-updates/2022-10-02-consensus","758"),exact:!0},{path:"/cardano-updates/2022-10-04-db-sync",component:p("/cardano-updates/2022-10-04-db-sync","114"),exact:!0},{path:"/cardano-updates/2022-10-04-node-cli-api",component:p("/cardano-updates/2022-10-04-node-cli-api","01f"),exact:!0},{path:"/cardano-updates/2022-10-05-consensus",component:p("/cardano-updates/2022-10-05-consensus","020"),exact:!0},{path:"/cardano-updates/2022-10-14-hydra",component:p("/cardano-updates/2022-10-14-hydra","8a0"),exact:!0},{path:"/cardano-updates/2022-10-14-ledger",component:p("/cardano-updates/2022-10-14-ledger","585"),exact:!0},{path:"/cardano-updates/2022-10-18-consensus",component:p("/cardano-updates/2022-10-18-consensus","52a"),exact:!0},{path:"/cardano-updates/2022-10-19-node-cli-api",component:p("/cardano-updates/2022-10-19-node-cli-api","dea"),exact:!0},{path:"/cardano-updates/2022-10-21-hydra",component:p("/cardano-updates/2022-10-21-hydra","577"),exact:!0},{path:"/cardano-updates/2022-10-27-crypto",component:p("/cardano-updates/2022-10-27-crypto","8f1"),exact:!0},{path:"/cardano-updates/2022-10-28-hydra",component:p("/cardano-updates/2022-10-28-hydra","835"),exact:!0},{path:"/cardano-updates/2022-10-28-network",component:p("/cardano-updates/2022-10-28-network","a2a"),exact:!0},{path:"/cardano-updates/2022-10-28-performance-and-tracing",component:p("/cardano-updates/2022-10-28-performance-and-tracing","207"),exact:!0},{path:"/cardano-updates/2022-10-31-open-source",component:p("/cardano-updates/2022-10-31-open-source","374"),exact:!0},{path:"/cardano-updates/2022-11-01-db-sync",component:p("/cardano-updates/2022-11-01-db-sync","aee"),exact:!0},{path:"/cardano-updates/2022-11-02-ledger",component:p("/cardano-updates/2022-11-02-ledger","672"),exact:!0},{path:"/cardano-updates/2022-11-02-node-cli-api",component:p("/cardano-updates/2022-11-02-node-cli-api","a05"),exact:!0},{path:"/cardano-updates/2022-11-02-release",component:p("/cardano-updates/2022-11-02-release","459"),exact:!0},{path:"/cardano-updates/2022-11-02-system-test",component:p("/cardano-updates/2022-11-02-system-test","d6c"),exact:!0},{path:"/cardano-updates/2022-11-03-embedding-quality",component:p("/cardano-updates/2022-11-03-embedding-quality","246"),exact:!0},{path:"/cardano-updates/2022-11-04-hydra",component:p("/cardano-updates/2022-11-04-hydra","f05"),exact:!0},{path:"/cardano-updates/2022-11-04-mithril",component:p("/cardano-updates/2022-11-04-mithril","591"),exact:!0},{path:"/cardano-updates/2022-11-11-crypto",component:p("/cardano-updates/2022-11-11-crypto","1d7"),exact:!0},{path:"/cardano-updates/2022-11-11-hydra",component:p("/cardano-updates/2022-11-11-hydra","83e"),exact:!0},{path:"/cardano-updates/2022-11-11-ledger",component:p("/cardano-updates/2022-11-11-ledger","2f1"),exact:!0},{path:"/cardano-updates/2022-11-11-network",component:p("/cardano-updates/2022-11-11-network","34f"),exact:!0},{path:"/cardano-updates/2022-11-16-consensus",component:p("/cardano-updates/2022-11-16-consensus","a8f"),exact:!0},{path:"/cardano-updates/2022-11-16-node-cli-api",component:p("/cardano-updates/2022-11-16-node-cli-api","bbe"),exact:!0},{path:"/cardano-updates/2022-11-16-performance-and-tracing",component:p("/cardano-updates/2022-11-16-performance-and-tracing","5fa"),exact:!0},{path:"/cardano-updates/2022-11-18-hydra",component:p("/cardano-updates/2022-11-18-hydra","c71"),exact:!0},{path:"/cardano-updates/2022-11-18-mithril",component:p("/cardano-updates/2022-11-18-mithril","0a1"),exact:!0},{path:"/cardano-updates/2022-11-23-ledger",component:p("/cardano-updates/2022-11-23-ledger","53d"),exact:!0},{path:"/cardano-updates/2022-11-25-crypto",component:p("/cardano-updates/2022-11-25-crypto","f67"),exact:!0},{path:"/cardano-updates/2022-11-25-hydra",component:p("/cardano-updates/2022-11-25-hydra","839"),exact:!0},{path:"/cardano-updates/2022-11-28-network",component:p("/cardano-updates/2022-11-28-network","e29"),exact:!0},{path:"/cardano-updates/2022-11-30-consensus",component:p("/cardano-updates/2022-11-30-consensus","e7e"),exact:!0},{path:"/cardano-updates/2022-11-30-node-cli-api",component:p("/cardano-updates/2022-11-30-node-cli-api","e8e"),exact:!0},{path:"/cardano-updates/2022-11-30-performance-and-tracing",component:p("/cardano-updates/2022-11-30-performance-and-tracing","8d0"),exact:!0},{path:"/cardano-updates/2022-12-01-db-sync",component:p("/cardano-updates/2022-12-01-db-sync","ae4"),exact:!0},{path:"/cardano-updates/2022-12-01-mithril",component:p("/cardano-updates/2022-12-01-mithril","543"),exact:!0},{path:"/cardano-updates/2022-12-01-system-test",component:p("/cardano-updates/2022-12-01-system-test","706"),exact:!0},{path:"/cardano-updates/2022-12-02-hydra",component:p("/cardano-updates/2022-12-02-hydra","b24"),exact:!0},{path:"/cardano-updates/2022-12-09-crypto",component:p("/cardano-updates/2022-12-09-crypto","531"),exact:!0},{path:"/cardano-updates/2022-12-09-hydra",component:p("/cardano-updates/2022-12-09-hydra","b00"),exact:!0},{path:"/cardano-updates/2022-12-09-ledger",component:p("/cardano-updates/2022-12-09-ledger","d4c"),exact:!0},{path:"/cardano-updates/2022-12-12-network",component:p("/cardano-updates/2022-12-12-network","550"),exact:!0},{path:"/cardano-updates/2022-12-14-consensus",component:p("/cardano-updates/2022-12-14-consensus","70e"),exact:!0},{path:"/cardano-updates/2022-12-14-db-sync",component:p("/cardano-updates/2022-12-14-db-sync","9c9"),exact:!0},{path:"/cardano-updates/2022-12-14-node-cli-api",component:p("/cardano-updates/2022-12-14-node-cli-api","27e"),exact:!0},{path:"/cardano-updates/2022-12-14-performance-and-tracing",component:p("/cardano-updates/2022-12-14-performance-and-tracing","5c7"),exact:!0},{path:"/cardano-updates/2022-12-15-mithril",component:p("/cardano-updates/2022-12-15-mithril","650"),exact:!0},{path:"/cardano-updates/2022-12-16-hydra",component:p("/cardano-updates/2022-12-16-hydra","d53"),exact:!0},{path:"/cardano-updates/2022-12-28-node-cli-api",component:p("/cardano-updates/2022-12-28-node-cli-api","c05"),exact:!0},{path:"/cardano-updates/2023-01-05-ledger",component:p("/cardano-updates/2023-01-05-ledger","beb"),exact:!0},{path:"/cardano-updates/2023-01-06-crypto",component:p("/cardano-updates/2023-01-06-crypto","4d1"),exact:!0},{path:"/cardano-updates/2023-01-11-consensus",component:p("/cardano-updates/2023-01-11-consensus","632"),exact:!0},{path:"/cardano-updates/2023-01-11-performance-and-tracing",component:p("/cardano-updates/2023-01-11-performance-and-tracing","c8e"),exact:!0},{path:"/cardano-updates/2023-01-12-mithril",component:p("/cardano-updates/2023-01-12-mithril","02f"),exact:!0},{path:"/cardano-updates/2023-01-13-hydra",component:p("/cardano-updates/2023-01-13-hydra","ac6"),exact:!0},{path:"/cardano-updates/2023-01-13-release",component:p("/cardano-updates/2023-01-13-release","f71"),exact:!0},{path:"/cardano-updates/2023-01-13-system-test",component:p("/cardano-updates/2023-01-13-system-test","6c4"),exact:!0},{path:"/cardano-updates/2023-01-14-db-sync",component:p("/cardano-updates/2023-01-14-db-sync","07c"),exact:!0},{path:"/cardano-updates/2023-01-19-ledger",component:p("/cardano-updates/2023-01-19-ledger","2b7"),exact:!0},{path:"/cardano-updates/2023-01-20-crypto",component:p("/cardano-updates/2023-01-20-crypto","985"),exact:!0},{path:"/cardano-updates/2023-01-20-hydra",component:p("/cardano-updates/2023-01-20-hydra","aba"),exact:!0},{path:"/cardano-updates/2023-01-20-network",component:p("/cardano-updates/2023-01-20-network","c85"),exact:!0},{path:"/cardano-updates/2023-01-20-sre",component:p("/cardano-updates/2023-01-20-sre","f1a"),exact:!0},{path:"/cardano-updates/2023-01-25-consensus",component:p("/cardano-updates/2023-01-25-consensus","d6b"),exact:!0},{path:"/cardano-updates/2023-01-25-node-cli-api",component:p("/cardano-updates/2023-01-25-node-cli-api","b8a"),exact:!0},{path:"/cardano-updates/2023-01-26-mithril",component:p("/cardano-updates/2023-01-26-mithril","401"),exact:!0},{path:"/cardano-updates/2023-01-27-hydra",component:p("/cardano-updates/2023-01-27-hydra","2f4"),exact:!0},{path:"/cardano-updates/2023-02-02-ledger",component:p("/cardano-updates/2023-02-02-ledger","7d2"),exact:!0},{path:"/cardano-updates/2023-02-03-crypto",component:p("/cardano-updates/2023-02-03-crypto","ad8"),exact:!0},{path:"/cardano-updates/2023-02-03-goedel",component:p("/cardano-updates/2023-02-03-goedel","2d4"),exact:!0},{path:"/cardano-updates/2023-02-03-hydra",component:p("/cardano-updates/2023-02-03-hydra","45c"),exact:!0},{path:"/cardano-updates/2023-02-08-consensus",component:p("/cardano-updates/2023-02-08-consensus","a91"),exact:!0},{path:"/cardano-updates/2023-02-08-node-cli-api",component:p("/cardano-updates/2023-02-08-node-cli-api","c56"),exact:!0},{path:"/cardano-updates/2023-02-08-performance-and-tracing",component:p("/cardano-updates/2023-02-08-performance-and-tracing","888"),exact:!0},{path:"/cardano-updates/2023-02-09-mithril",component:p("/cardano-updates/2023-02-09-mithril","898"),exact:!0},{path:"/cardano-updates/2023-02-10-hydra",component:p("/cardano-updates/2023-02-10-hydra","fd6"),exact:!0},{path:"/cardano-updates/2023-02-17-crypto",component:p("/cardano-updates/2023-02-17-crypto","933"),exact:!0},{path:"/cardano-updates/2023-02-17-goedel",component:p("/cardano-updates/2023-02-17-goedel","855"),exact:!0},{path:"/cardano-updates/2023-02-17-hydra",component:p("/cardano-updates/2023-02-17-hydra","51e"),exact:!0},{path:"/cardano-updates/2023-02-17-ledger",component:p("/cardano-updates/2023-02-17-ledger","a32"),exact:!0},{path:"/cardano-updates/2023-02-17-network",component:p("/cardano-updates/2023-02-17-network","136"),exact:!0},{path:"/cardano-updates/2023-02-21-db-sync",component:p("/cardano-updates/2023-02-21-db-sync","141"),exact:!0},{path:"/cardano-updates/2023-02-22-consensus",component:p("/cardano-updates/2023-02-22-consensus","6a1"),exact:!0},{path:"/cardano-updates/2023-02-22-node-cli-api",component:p("/cardano-updates/2023-02-22-node-cli-api","c5f"),exact:!0},{path:"/cardano-updates/2023-02-23-mithril",component:p("/cardano-updates/2023-02-23-mithril","f96"),exact:!0},{path:"/cardano-updates/2023-02-23-performance-and-tracing",component:p("/cardano-updates/2023-02-23-performance-and-tracing","570"),exact:!0},{path:"/cardano-updates/2023-02-24-hydra",component:p("/cardano-updates/2023-02-24-hydra","120"),exact:!0},{path:"/cardano-updates/2023-03-02-network",component:p("/cardano-updates/2023-03-02-network","2cf"),exact:!0},{path:"/cardano-updates/2023-03-03-crypto",component:p("/cardano-updates/2023-03-03-crypto","afe"),exact:!0},{path:"/cardano-updates/2023-03-03-goedel",component:p("/cardano-updates/2023-03-03-goedel","6d4"),exact:!0},{path:"/cardano-updates/2023-03-03-hydra",component:p("/cardano-updates/2023-03-03-hydra","b66"),exact:!0},{path:"/cardano-updates/2023-03-03-ledger",component:p("/cardano-updates/2023-03-03-ledger","ad5"),exact:!0},{path:"/cardano-updates/2023-03-08-consensus",component:p("/cardano-updates/2023-03-08-consensus","caa"),exact:!0},{path:"/cardano-updates/2023-03-08-node-cli-api",component:p("/cardano-updates/2023-03-08-node-cli-api","4f2"),exact:!0},{path:"/cardano-updates/2023-03-08-performance-and-tracing",component:p("/cardano-updates/2023-03-08-performance-and-tracing","8bb"),exact:!0},{path:"/cardano-updates/2023-03-09-mithril",component:p("/cardano-updates/2023-03-09-mithril","031"),exact:!0},{path:"/cardano-updates/2023-03-10-hydra",component:p("/cardano-updates/2023-03-10-hydra","7d8"),exact:!0},{path:"/cardano-updates/2023-03-16-goedel",component:p("/cardano-updates/2023-03-16-goedel","2c1"),exact:!0},{path:"/cardano-updates/2023-03-17-crypto",component:p("/cardano-updates/2023-03-17-crypto","91c"),exact:!0},{path:"/cardano-updates/2023-03-17-hydra",component:p("/cardano-updates/2023-03-17-hydra","531"),exact:!0},{path:"/cardano-updates/2023-03-17-ledger",component:p("/cardano-updates/2023-03-17-ledger","b04"),exact:!0},{path:"/cardano-updates/2023-03-21-network",component:p("/cardano-updates/2023-03-21-network","327"),exact:!0},{path:"/cardano-updates/2023-03-22-consensus",component:p("/cardano-updates/2023-03-22-consensus","a73"),exact:!0},{path:"/cardano-updates/2023-03-22-node-cli-api",component:p("/cardano-updates/2023-03-22-node-cli-api","7a9"),exact:!0},{path:"/cardano-updates/2023-03-22-performance-and-tracing",component:p("/cardano-updates/2023-03-22-performance-and-tracing","665"),exact:!0},{path:"/cardano-updates/2023-03-23-db-sync",component:p("/cardano-updates/2023-03-23-db-sync","68e"),exact:!0},{path:"/cardano-updates/2023-03-23-mithril",component:p("/cardano-updates/2023-03-23-mithril","d40"),exact:!0},{path:"/cardano-updates/2023-03-24-hydra",component:p("/cardano-updates/2023-03-24-hydra","91d"),exact:!0},{path:"/cardano-updates/2023-03-27-system-test",component:p("/cardano-updates/2023-03-27-system-test","915"),exact:!0},{path:"/cardano-updates/2023-03-31-crypto",component:p("/cardano-updates/2023-03-31-crypto","53e"),exact:!0},{path:"/cardano-updates/2023-03-31-goedel",component:p("/cardano-updates/2023-03-31-goedel","e53"),exact:!0},{path:"/cardano-updates/2023-03-31-hydra",component:p("/cardano-updates/2023-03-31-hydra","f8f"),exact:!0},{path:"/cardano-updates/2023-03-31-ledger",component:p("/cardano-updates/2023-03-31-ledger","bd1"),exact:!0},{path:"/cardano-updates/2023-04-05-consensus",component:p("/cardano-updates/2023-04-05-consensus","948"),exact:!0},{path:"/cardano-updates/2023-04-05-node-cli-api",component:p("/cardano-updates/2023-04-05-node-cli-api","bca"),exact:!0},{path:"/cardano-updates/2023-04-05-performance-and-tracing",component:p("/cardano-updates/2023-04-05-performance-and-tracing","50a"),exact:!0},{path:"/cardano-updates/2023-04-06-mithril",component:p("/cardano-updates/2023-04-06-mithril","a86"),exact:!0},{path:"/cardano-updates/2023-04-07-hydra",component:p("/cardano-updates/2023-04-07-hydra","c27"),exact:!0},{path:"/cardano-updates/2023-04-14-goedel",component:p("/cardano-updates/2023-04-14-goedel","2bc"),exact:!0},{path:"/cardano-updates/2023-04-14-hydra",component:p("/cardano-updates/2023-04-14-hydra","3aa"),exact:!0},{path:"/cardano-updates/2023-04-17-ledger",component:p("/cardano-updates/2023-04-17-ledger","1d1"),exact:!0},{path:"/cardano-updates/2023-04-19-consensus",component:p("/cardano-updates/2023-04-19-consensus","711"),exact:!0},{path:"/cardano-updates/2023-04-19-performance-and-tracing",component:p("/cardano-updates/2023-04-19-performance-and-tracing","1ef"),exact:!0},{path:"/cardano-updates/2023-04-20-mithril",component:p("/cardano-updates/2023-04-20-mithril","2f6"),exact:!0},{path:"/cardano-updates/2023-04-20-node-cli-api",component:p("/cardano-updates/2023-04-20-node-cli-api","f77"),exact:!0},{path:"/cardano-updates/2023-04-21-hydra",component:p("/cardano-updates/2023-04-21-hydra","12b"),exact:!0},{path:"/cardano-updates/2023-04-21-ledger",component:p("/cardano-updates/2023-04-21-ledger","b7b"),exact:!0},{path:"/cardano-updates/2023-04-27-hydra",component:p("/cardano-updates/2023-04-27-hydra","266"),exact:!0},{path:"/cardano-updates/2023-04-28-crypto",component:p("/cardano-updates/2023-04-28-crypto","8b9"),exact:!0},{path:"/cardano-updates/2023-04-28-goedel",component:p("/cardano-updates/2023-04-28-goedel","0ba"),exact:!0},{path:"/cardano-updates/2023-04-28-network",component:p("/cardano-updates/2023-04-28-network","bb5"),exact:!0},{path:"/cardano-updates/2023-05-01-db-sync",component:p("/cardano-updates/2023-05-01-db-sync","ab4"),exact:!0},{path:"/cardano-updates/2023-05-03-consensus",component:p("/cardano-updates/2023-05-03-consensus","b9e"),exact:!0},{path:"/cardano-updates/2023-05-03-performance-and-tracing",component:p("/cardano-updates/2023-05-03-performance-and-tracing","370"),exact:!0},{path:"/cardano-updates/2023-05-04-mithril",component:p("/cardano-updates/2023-05-04-mithril","427"),exact:!0},{path:"/cardano-updates/2023-05-05-ledger",component:p("/cardano-updates/2023-05-05-ledger","4f2"),exact:!0},{path:"/cardano-updates/2023-05-05-node-cli-api",component:p("/cardano-updates/2023-05-05-node-cli-api","7ed"),exact:!0},{path:"/cardano-updates/2023-05-12-crypto",component:p("/cardano-updates/2023-05-12-crypto","eb6"),exact:!0},{path:"/cardano-updates/2023-05-12-goedel",component:p("/cardano-updates/2023-05-12-goedel","10f"),exact:!0},{path:"/cardano-updates/2023-05-12-hydra",component:p("/cardano-updates/2023-05-12-hydra","dc7"),exact:!0},{path:"/cardano-updates/2023-05-12-network",component:p("/cardano-updates/2023-05-12-network","738"),exact:!0},{path:"/cardano-updates/2023-05-17-consensus",component:p("/cardano-updates/2023-05-17-consensus","f99"),exact:!0},{path:"/cardano-updates/2023-05-17-mithril",component:p("/cardano-updates/2023-05-17-mithril","d0a"),exact:!0},{path:"/cardano-updates/2023-05-17-performance-and-tracing",component:p("/cardano-updates/2023-05-17-performance-and-tracing","976"),exact:!0},{path:"/cardano-updates/2023-05-19-hydra",component:p("/cardano-updates/2023-05-19-hydra","8b0"),exact:!0},{path:"/cardano-updates/2023-05-24-node-cli-api",component:p("/cardano-updates/2023-05-24-node-cli-api","43d"),exact:!0},{path:"/cardano-updates/2023-05-26-goedel",component:p("/cardano-updates/2023-05-26-goedel","5c5"),exact:!0},{path:"/cardano-updates/2023-05-26-hydra",component:p("/cardano-updates/2023-05-26-hydra","d35"),exact:!0},{path:"/cardano-updates/2023-05-26-ledger",component:p("/cardano-updates/2023-05-26-ledger","a41"),exact:!0},{path:"/cardano-updates/2023-05-26-network",component:p("/cardano-updates/2023-05-26-network","3a9"),exact:!0},{path:"/cardano-updates/2023-05-31-consensus",component:p("/cardano-updates/2023-05-31-consensus","bc8"),exact:!0},{path:"/cardano-updates/2023-05-31-performance-and-tracing",component:p("/cardano-updates/2023-05-31-performance-and-tracing","f2d"),exact:!0},{path:"/cardano-updates/2023-06-01-mithril",component:p("/cardano-updates/2023-06-01-mithril","a0d"),exact:!0},{path:"/cardano-updates/2023-06-02-hydra",component:p("/cardano-updates/2023-06-02-hydra","e96"),exact:!0},{path:"/cardano-updates/2023-06-07-node-cli-api",component:p("/cardano-updates/2023-06-07-node-cli-api","9c8"),exact:!0},{path:"/cardano-updates/2023-06-08-db-sync",component:p("/cardano-updates/2023-06-08-db-sync","496"),exact:!0},{path:"/cardano-updates/2023-06-08-goedel",component:p("/cardano-updates/2023-06-08-goedel","3d4"),exact:!0},{path:"/cardano-updates/2023-06-08-sre",component:p("/cardano-updates/2023-06-08-sre","d91"),exact:!0},{path:"/cardano-updates/2023-06-08-system-test",component:p("/cardano-updates/2023-06-08-system-test","62e"),exact:!0},{path:"/cardano-updates/2023-06-09-crypto",component:p("/cardano-updates/2023-06-09-crypto","2e0"),exact:!0},{path:"/cardano-updates/2023-06-09-developer-experience",component:p("/cardano-updates/2023-06-09-developer-experience","c4e"),exact:!0},{path:"/cardano-updates/2023-06-09-hydra",component:p("/cardano-updates/2023-06-09-hydra","bab"),exact:!0},{path:"/cardano-updates/2023-06-12-network",component:p("/cardano-updates/2023-06-12-network","fbe"),exact:!0},{path:"/cardano-updates/2023-06-14-consensus",component:p("/cardano-updates/2023-06-14-consensus","ee8"),exact:!0},{path:"/cardano-updates/2023-06-14-performance-and-tracing",component:p("/cardano-updates/2023-06-14-performance-and-tracing","3ec"),exact:!0},{path:"/cardano-updates/2023-06-15-mithril",component:p("/cardano-updates/2023-06-15-mithril","f0a"),exact:!0},{path:"/cardano-updates/2023-06-16-hydra",component:p("/cardano-updates/2023-06-16-hydra","2e0"),exact:!0},{path:"/cardano-updates/2023-06-23-goedel",component:p("/cardano-updates/2023-06-23-goedel","988"),exact:!0},{path:"/cardano-updates/2023-06-23-hydra",component:p("/cardano-updates/2023-06-23-hydra","ec0"),exact:!0},{path:"/cardano-updates/2023-06-23-network",component:p("/cardano-updates/2023-06-23-network","e4b"),exact:!0},{path:"/cardano-updates/2023-06-23-sre",component:p("/cardano-updates/2023-06-23-sre","088"),exact:!0},{path:"/cardano-updates/2023-06-28-consensus",component:p("/cardano-updates/2023-06-28-consensus","031"),exact:!0},{path:"/cardano-updates/2023-06-28-performance-and-tracing",component:p("/cardano-updates/2023-06-28-performance-and-tracing","997"),exact:!0},{path:"/cardano-updates/2023-06-29-mithril",component:p("/cardano-updates/2023-06-29-mithril","6e2"),exact:!0},{path:"/cardano-updates/2023-06-30-hydra",component:p("/cardano-updates/2023-06-30-hydra","fd5"),exact:!0},{path:"/cardano-updates/2023-07-04-db-sync",component:p("/cardano-updates/2023-07-04-db-sync","7cb"),exact:!0},{path:"/cardano-updates/2023-07-04-node-cli-api",component:p("/cardano-updates/2023-07-04-node-cli-api","ede"),exact:!0},{path:"/cardano-updates/2023-07-06-developer-experience",component:p("/cardano-updates/2023-07-06-developer-experience","c31"),exact:!0},{path:"/cardano-updates/2023-07-07-crypto",component:p("/cardano-updates/2023-07-07-crypto","240"),exact:!0},{path:"/cardano-updates/2023-07-07-goedel",component:p("/cardano-updates/2023-07-07-goedel","a98"),exact:!0},{path:"/cardano-updates/2023-07-07-hydra",component:p("/cardano-updates/2023-07-07-hydra","5d6"),exact:!0},{path:"/cardano-updates/2023-07-07-sre",component:p("/cardano-updates/2023-07-07-sre","5bc"),exact:!0},{path:"/cardano-updates/2023-07-12-consensus",component:p("/cardano-updates/2023-07-12-consensus","395"),exact:!0},{path:"/cardano-updates/2023-07-12-performance-and-tracing",component:p("/cardano-updates/2023-07-12-performance-and-tracing","b16"),exact:!0},{path:"/cardano-updates/2023-07-13-mithril",component:p("/cardano-updates/2023-07-13-mithril","3dc"),exact:!0},{path:"/cardano-updates/2023-07-14-hydra",component:p("/cardano-updates/2023-07-14-hydra","231"),exact:!0},{path:"/cardano-updates/2023-07-18-node-cli-api",component:p("/cardano-updates/2023-07-18-node-cli-api","156"),exact:!0},{path:"/cardano-updates/2023-07-20-goedel",component:p("/cardano-updates/2023-07-20-goedel","d82"),exact:!0},{path:"/cardano-updates/2023-07-21-hydra",component:p("/cardano-updates/2023-07-21-hydra","39b"),exact:!0},{path:"/cardano-updates/2023-07-21-ledger",component:p("/cardano-updates/2023-07-21-ledger","ff7"),exact:!0},{path:"/cardano-updates/2023-07-21-sre",component:p("/cardano-updates/2023-07-21-sre","ad2"),exact:!0},{path:"/cardano-updates/2023-07-26-consensus",component:p("/cardano-updates/2023-07-26-consensus","c66"),exact:!0},{path:"/cardano-updates/2023-07-27-mithril",component:p("/cardano-updates/2023-07-27-mithril","8ae"),exact:!0},{path:"/cardano-updates/2023-07-28-hydra",component:p("/cardano-updates/2023-07-28-hydra","811"),exact:!0},{path:"/cardano-updates/2023-07-31-network",component:p("/cardano-updates/2023-07-31-network","d4f"),exact:!0},{path:"/cardano-updates/2023-08-01-node-cli-api",component:p("/cardano-updates/2023-08-01-node-cli-api","cb1"),exact:!0},{path:"/cardano-updates/2023-08-04-crypto",component:p("/cardano-updates/2023-08-04-crypto","e3c"),exact:!0},{path:"/cardano-updates/2023-08-04-goedel",component:p("/cardano-updates/2023-08-04-goedel","886"),exact:!0},{path:"/cardano-updates/2023-08-04-hydra",component:p("/cardano-updates/2023-08-04-hydra","15e"),exact:!0},{path:"/cardano-updates/2023-08-04-ledger",component:p("/cardano-updates/2023-08-04-ledger","d11"),exact:!0},{path:"/cardano-updates/2023-08-04-network",component:p("/cardano-updates/2023-08-04-network","883"),exact:!0},{path:"/cardano-updates/2023-08-04-performance-and-tracing",component:p("/cardano-updates/2023-08-04-performance-and-tracing","a82"),exact:!0},{path:"/cardano-updates/2023-08-04-sre",component:p("/cardano-updates/2023-08-04-sre","2d9"),exact:!0},{path:"/cardano-updates/2023-08-09-consensus",component:p("/cardano-updates/2023-08-09-consensus","092"),exact:!0},{path:"/cardano-updates/2023-08-10-mithril",component:p("/cardano-updates/2023-08-10-mithril","c36"),exact:!0},{path:"/cardano-updates/2023-08-11-hydra",component:p("/cardano-updates/2023-08-11-hydra","7c0"),exact:!0},{path:"/cardano-updates/2023-08-11-performance-and-tracing",component:p("/cardano-updates/2023-08-11-performance-and-tracing","0bd"),exact:!0},{path:"/cardano-updates/2023-08-15-node-cli-api",component:p("/cardano-updates/2023-08-15-node-cli-api","27f"),exact:!0},{path:"/cardano-updates/2023-08-17-crypto",component:p("/cardano-updates/2023-08-17-crypto","fd2"),exact:!0},{path:"/cardano-updates/2023-08-17-db-sync",component:p("/cardano-updates/2023-08-17-db-sync","20d"),exact:!0},{path:"/cardano-updates/2023-08-17-secp-issue",component:p("/cardano-updates/2023-08-17-secp-issue","6bb"),exact:!0},{path:"/cardano-updates/2023-08-18-goedel",component:p("/cardano-updates/2023-08-18-goedel","762"),exact:!0},{path:"/cardano-updates/2023-08-18-hydra",component:p("/cardano-updates/2023-08-18-hydra","09d"),exact:!0},{path:"/cardano-updates/2023-08-18-ledger",component:p("/cardano-updates/2023-08-18-ledger","04c"),exact:!0},{path:"/cardano-updates/2023-08-18-network",component:p("/cardano-updates/2023-08-18-network","606"),exact:!0},{path:"/cardano-updates/2023-08-18-sre",component:p("/cardano-updates/2023-08-18-sre","cc5"),exact:!0},{path:"/cardano-updates/2023-08-23-consensus",component:p("/cardano-updates/2023-08-23-consensus","8a6"),exact:!0},{path:"/cardano-updates/2023-08-24-performance-and-tracing",component:p("/cardano-updates/2023-08-24-performance-and-tracing","c0b"),exact:!0},{path:"/cardano-updates/2023-08-25-hydra",component:p("/cardano-updates/2023-08-25-hydra","ee1"),exact:!0},{path:"/cardano-updates/2023-08-28-mithril",component:p("/cardano-updates/2023-08-28-mithril","2ab"),exact:!0},{path:"/cardano-updates/2023-08-29-node-cli-api",component:p("/cardano-updates/2023-08-29-node-cli-api","851"),exact:!0},{path:"/cardano-updates/2023-09-01-goedel",component:p("/cardano-updates/2023-09-01-goedel","9f0"),exact:!0},{path:"/cardano-updates/2023-09-01-hydra",component:p("/cardano-updates/2023-09-01-hydra","980"),exact:!0},{path:"/cardano-updates/2023-09-01-ledger",component:p("/cardano-updates/2023-09-01-ledger","1d6"),exact:!0},{path:"/cardano-updates/2023-09-01-network",component:p("/cardano-updates/2023-09-01-network","567"),exact:!0},{path:"/cardano-updates/2023-09-01-sre",component:p("/cardano-updates/2023-09-01-sre","657"),exact:!0},{path:"/cardano-updates/2023-09-06-consensus",component:p("/cardano-updates/2023-09-06-consensus","292"),exact:!0},{path:"/cardano-updates/2023-09-07-mithril",component:p("/cardano-updates/2023-09-07-mithril","d11"),exact:!0},{path:"/cardano-updates/2023-09-07-performance-and-tracing",component:p("/cardano-updates/2023-09-07-performance-and-tracing","219"),exact:!0},{path:"/cardano-updates/2023-09-08-hydra",component:p("/cardano-updates/2023-09-08-hydra","7ec"),exact:!0},{path:"/cardano-updates/2023-09-12-node-cli-api",component:p("/cardano-updates/2023-09-12-node-cli-api","934"),exact:!0},{path:"/cardano-updates/2023-09-14-db-sync",component:p("/cardano-updates/2023-09-14-db-sync","32d"),exact:!0},{path:"/cardano-updates/2023-09-15-goedel",component:p("/cardano-updates/2023-09-15-goedel","ca8"),exact:!0},{path:"/cardano-updates/2023-09-15-hydra",component:p("/cardano-updates/2023-09-15-hydra","92f"),exact:!0},{path:"/cardano-updates/2023-09-15-ledger",component:p("/cardano-updates/2023-09-15-ledger","890"),exact:!0},{path:"/cardano-updates/2023-09-15-network",component:p("/cardano-updates/2023-09-15-network","6ee"),exact:!0},{path:"/cardano-updates/2023-09-15-sre",component:p("/cardano-updates/2023-09-15-sre","78b"),exact:!0},{path:"/cardano-updates/2023-09-20-consensus",component:p("/cardano-updates/2023-09-20-consensus","d6f"),exact:!0},{path:"/cardano-updates/2023-09-20-mithril",component:p("/cardano-updates/2023-09-20-mithril","91d"),exact:!0},{path:"/cardano-updates/2023-09-22-hydra",component:p("/cardano-updates/2023-09-22-hydra","c6b"),exact:!0},{path:"/cardano-updates/2023-09-22-performance-and-tracing",component:p("/cardano-updates/2023-09-22-performance-and-tracing","e17"),exact:!0},{path:"/cardano-updates/2023-09-26-node-cli-api",component:p("/cardano-updates/2023-09-26-node-cli-api","6d5"),exact:!0},{path:"/cardano-updates/2023-09-27-mithril",component:p("/cardano-updates/2023-09-27-mithril","42f"),exact:!0},{path:"/cardano-updates/2023-09-29-goedel",component:p("/cardano-updates/2023-09-29-goedel","359"),exact:!0},{path:"/cardano-updates/2023-09-29-hydra",component:p("/cardano-updates/2023-09-29-hydra","3cc"),exact:!0},{path:"/cardano-updates/2023-09-29-ledger",component:p("/cardano-updates/2023-09-29-ledger","bcc"),exact:!0},{path:"/cardano-updates/2023-09-29-sre",component:p("/cardano-updates/2023-09-29-sre","9c9"),exact:!0},{path:"/cardano-updates/2023-10-02-network",component:p("/cardano-updates/2023-10-02-network","9f0"),exact:!0},{path:"/cardano-updates/2023-10-04-consensus",component:p("/cardano-updates/2023-10-04-consensus","451"),exact:!0},{path:"/cardano-updates/2023-10-04-mithril",component:p("/cardano-updates/2023-10-04-mithril","e3d"),exact:!0},{path:"/cardano-updates/2023-10-06-hydra",component:p("/cardano-updates/2023-10-06-hydra","6a8"),exact:!0},{path:"/cardano-updates/2023-10-06-performance-and-tracing",component:p("/cardano-updates/2023-10-06-performance-and-tracing","516"),exact:!0},{path:"/cardano-updates/2023-10-10-node-cli-api",component:p("/cardano-updates/2023-10-10-node-cli-api","2c5"),exact:!0},{path:"/cardano-updates/2023-10-11-mithril",component:p("/cardano-updates/2023-10-11-mithril","784"),exact:!0},{path:"/cardano-updates/2023-10-13-hydra",component:p("/cardano-updates/2023-10-13-hydra","226"),exact:!0},{path:"/cardano-updates/2023-10-13-ledger",component:p("/cardano-updates/2023-10-13-ledger","742"),exact:!0},{path:"/cardano-updates/2023-10-13-sre",component:p("/cardano-updates/2023-10-13-sre","1c3"),exact:!0},{path:"/cardano-updates/2023-10-15-network",component:p("/cardano-updates/2023-10-15-network","303"),exact:!0},{path:"/cardano-updates/2023-10-18-consensus",component:p("/cardano-updates/2023-10-18-consensus","c43"),exact:!0},{path:"/cardano-updates/2023-10-18-mithril",component:p("/cardano-updates/2023-10-18-mithril","c02"),exact:!0},{path:"/cardano-updates/2023-10-20-hydra",component:p("/cardano-updates/2023-10-20-hydra","f5e"),exact:!0},{path:"/cardano-updates/2023-10-24-node-cli-api",component:p("/cardano-updates/2023-10-24-node-cli-api","4ea"),exact:!0},{path:"/cardano-updates/2023-10-25-mithril",component:p("/cardano-updates/2023-10-25-mithril","2fc"),exact:!0},{path:"/cardano-updates/2023-10-27-hydra",component:p("/cardano-updates/2023-10-27-hydra","8d7"),exact:!0},{path:"/cardano-updates/2023-10-27-network",component:p("/cardano-updates/2023-10-27-network","e80"),exact:!0},{path:"/cardano-updates/2023-10-27-sre",component:p("/cardano-updates/2023-10-27-sre","06f"),exact:!0},{path:"/cardano-updates/2023-11-01-consensus",component:p("/cardano-updates/2023-11-01-consensus","342"),exact:!0},{path:"/cardano-updates/2023-11-01-mithril",component:p("/cardano-updates/2023-11-01-mithril","865"),exact:!0},{path:"/cardano-updates/2023-11-08-ledger",component:p("/cardano-updates/2023-11-08-ledger","0c9"),exact:!0},{path:"/cardano-updates/2023-11-08-mithril",component:p("/cardano-updates/2023-11-08-mithril","19e"),exact:!0},{path:"/cardano-updates/2023-11-09-db-sync",component:p("/cardano-updates/2023-11-09-db-sync","484"),exact:!0},{path:"/cardano-updates/2023-11-10-hydra",component:p("/cardano-updates/2023-11-10-hydra","181"),exact:!0},{path:"/cardano-updates/2023-11-10-sre",component:p("/cardano-updates/2023-11-10-sre","c9e"),exact:!0},{path:"/cardano-updates/2023-11-14-node-cli-api",component:p("/cardano-updates/2023-11-14-node-cli-api","c82"),exact:!0},{path:"/cardano-updates/2023-11-15-consensus",component:p("/cardano-updates/2023-11-15-consensus","201"),exact:!0},{path:"/cardano-updates/2023-11-15-mithril",component:p("/cardano-updates/2023-11-15-mithril","072"),exact:!0},{path:"/cardano-updates/2023-11-16-network",component:p("/cardano-updates/2023-11-16-network","659"),exact:!0},{path:"/cardano-updates/2023-11-17-hydra",component:p("/cardano-updates/2023-11-17-hydra","609"),exact:!0},{path:"/cardano-updates/2023-11-17-performance-and-tracing",component:p("/cardano-updates/2023-11-17-performance-and-tracing","18e"),exact:!0},{path:"/cardano-updates/2023-11-20-cip1694",component:p("/cardano-updates/2023-11-20-cip1694","61b"),exact:!0},{path:"/cardano-updates/2023-11-22-ledger",component:p("/cardano-updates/2023-11-22-ledger","d58"),exact:!0},{path:"/cardano-updates/2023-11-22-mithril",component:p("/cardano-updates/2023-11-22-mithril","7ef"),exact:!0},{path:"/cardano-updates/2023-11-24-hydra",component:p("/cardano-updates/2023-11-24-hydra","18e"),exact:!0},{path:"/cardano-updates/2023-11-24-sre",component:p("/cardano-updates/2023-11-24-sre","ec2"),exact:!0},{path:"/cardano-updates/2023-11-29-consensus",component:p("/cardano-updates/2023-11-29-consensus","8be"),exact:!0},{path:"/cardano-updates/2023-11-29-mithril",component:p("/cardano-updates/2023-11-29-mithril","a48"),exact:!0},{path:"/cardano-updates/2023-12-01-hydra",component:p("/cardano-updates/2023-12-01-hydra","264"),exact:!0},{path:"/cardano-updates/2023-12-04-performance-and-tracing",component:p("/cardano-updates/2023-12-04-performance-and-tracing","13f"),exact:!0},{path:"/cardano-updates/2023-12-06-ledger",component:p("/cardano-updates/2023-12-06-ledger","b76"),exact:!0},{path:"/cardano-updates/2023-12-06-mithril",component:p("/cardano-updates/2023-12-06-mithril","96a"),exact:!0},{path:"/cardano-updates/archive",component:p("/cardano-updates/archive","f69"),exact:!0},{path:"/cardano-updates/markdown-page",component:p("/cardano-updates/markdown-page","52f"),exact:!0},{path:"/cardano-updates/page/10",component:p("/cardano-updates/page/10","4c1"),exact:!0},{path:"/cardano-updates/page/11",component:p("/cardano-updates/page/11","bea"),exact:!0},{path:"/cardano-updates/page/12",component:p("/cardano-updates/page/12","d5b"),exact:!0},{path:"/cardano-updates/page/13",component:p("/cardano-updates/page/13","29a"),exact:!0},{path:"/cardano-updates/page/14",component:p("/cardano-updates/page/14","63c"),exact:!0},{path:"/cardano-updates/page/15",component:p("/cardano-updates/page/15","877"),exact:!0},{path:"/cardano-updates/page/16",component:p("/cardano-updates/page/16","b38"),exact:!0},{path:"/cardano-updates/page/17",component:p("/cardano-updates/page/17","d0c"),exact:!0},{path:"/cardano-updates/page/18",component:p("/cardano-updates/page/18","735"),exact:!0},{path:"/cardano-updates/page/19",component:p("/cardano-updates/page/19","42a"),exact:!0},{path:"/cardano-updates/page/2",component:p("/cardano-updates/page/2","d2f"),exact:!0},{path:"/cardano-updates/page/20",component:p("/cardano-updates/page/20","0b1"),exact:!0},{path:"/cardano-updates/page/21",component:p("/cardano-updates/page/21","833"),exact:!0},{path:"/cardano-updates/page/22",component:p("/cardano-updates/page/22","66d"),exact:!0},{path:"/cardano-updates/page/23",component:p("/cardano-updates/page/23","5e6"),exact:!0},{path:"/cardano-updates/page/24",component:p("/cardano-updates/page/24","1ad"),exact:!0},{path:"/cardano-updates/page/25",component:p("/cardano-updates/page/25","fdb"),exact:!0},{path:"/cardano-updates/page/26",component:p("/cardano-updates/page/26","bc7"),exact:!0},{path:"/cardano-updates/page/27",component:p("/cardano-updates/page/27","307"),exact:!0},{path:"/cardano-updates/page/28",component:p("/cardano-updates/page/28","0ae"),exact:!0},{path:"/cardano-updates/page/29",component:p("/cardano-updates/page/29","143"),exact:!0},{path:"/cardano-updates/page/3",component:p("/cardano-updates/page/3","a8a"),exact:!0},{path:"/cardano-updates/page/30",component:p("/cardano-updates/page/30","f2b"),exact:!0},{path:"/cardano-updates/page/31",component:p("/cardano-updates/page/31","0cc"),exact:!0},{path:"/cardano-updates/page/32",component:p("/cardano-updates/page/32","383"),exact:!0},{path:"/cardano-updates/page/33",component:p("/cardano-updates/page/33","263"),exact:!0},{path:"/cardano-updates/page/34",component:p("/cardano-updates/page/34","f10"),exact:!0},{path:"/cardano-updates/page/35",component:p("/cardano-updates/page/35","f1b"),exact:!0},{path:"/cardano-updates/page/36",component:p("/cardano-updates/page/36","35d"),exact:!0},{path:"/cardano-updates/page/37",component:p("/cardano-updates/page/37","9e5"),exact:!0},{path:"/cardano-updates/page/38",component:p("/cardano-updates/page/38","525"),exact:!0},{path:"/cardano-updates/page/39",component:p("/cardano-updates/page/39","32f"),exact:!0},{path:"/cardano-updates/page/4",component:p("/cardano-updates/page/4","307"),exact:!0},{path:"/cardano-updates/page/40",component:p("/cardano-updates/page/40","10d"),exact:!0},{path:"/cardano-updates/page/41",component:p("/cardano-updates/page/41","643"),exact:!0},{path:"/cardano-updates/page/42",component:p("/cardano-updates/page/42","bb5"),exact:!0},{path:"/cardano-updates/page/43",component:p("/cardano-updates/page/43","d3b"),exact:!0},{path:"/cardano-updates/page/44",component:p("/cardano-updates/page/44","f06"),exact:!0},{path:"/cardano-updates/page/45",component:p("/cardano-updates/page/45","9bf"),exact:!0},{path:"/cardano-updates/page/46",component:p("/cardano-updates/page/46","9b4"),exact:!0},{path:"/cardano-updates/page/47",component:p("/cardano-updates/page/47","b7b"),exact:!0},{path:"/cardano-updates/page/48",component:p("/cardano-updates/page/48","dc6"),exact:!0},{path:"/cardano-updates/page/49",component:p("/cardano-updates/page/49","08e"),exact:!0},{path:"/cardano-updates/page/5",component:p("/cardano-updates/page/5","0c2"),exact:!0},{path:"/cardano-updates/page/50",component:p("/cardano-updates/page/50","665"),exact:!0},{path:"/cardano-updates/page/51",component:p("/cardano-updates/page/51","d42"),exact:!0},{path:"/cardano-updates/page/52",component:p("/cardano-updates/page/52","ffc"),exact:!0},{path:"/cardano-updates/page/53",component:p("/cardano-updates/page/53","554"),exact:!0},{path:"/cardano-updates/page/54",component:p("/cardano-updates/page/54","984"),exact:!0},{path:"/cardano-updates/page/55",component:p("/cardano-updates/page/55","aa5"),exact:!0},{path:"/cardano-updates/page/56",component:p("/cardano-updates/page/56","f12"),exact:!0},{path:"/cardano-updates/page/57",component:p("/cardano-updates/page/57","4c1"),exact:!0},{path:"/cardano-updates/page/58",component:p("/cardano-updates/page/58","60b"),exact:!0},{path:"/cardano-updates/page/59",component:p("/cardano-updates/page/59","11d"),exact:!0},{path:"/cardano-updates/page/6",component:p("/cardano-updates/page/6","444"),exact:!0},{path:"/cardano-updates/page/60",component:p("/cardano-updates/page/60","468"),exact:!0},{path:"/cardano-updates/page/61",component:p("/cardano-updates/page/61","5e4"),exact:!0},{path:"/cardano-updates/page/7",component:p("/cardano-updates/page/7","c54"),exact:!0},{path:"/cardano-updates/page/8",component:p("/cardano-updates/page/8","3b7"),exact:!0},{path:"/cardano-updates/page/9",component:p("/cardano-updates/page/9","d20"),exact:!0},{path:"/cardano-updates/quarterly",component:p("/cardano-updates/quarterly","968"),exact:!0},{path:"/cardano-updates/quarterly/2022-10-07-node-cli-api",component:p("/cardano-updates/quarterly/2022-10-07-node-cli-api","6ba"),exact:!0},{path:"/cardano-updates/quarterly/2022-11-07-ledger",component:p("/cardano-updates/quarterly/2022-11-07-ledger","bf4"),exact:!0},{path:"/cardano-updates/quarterly/2022-11-09-network",component:p("/cardano-updates/quarterly/2022-11-09-network","8a6"),exact:!0},{path:"/cardano-updates/quarterly/2022-11-15-consensus",component:p("/cardano-updates/quarterly/2022-11-15-consensus","3cf"),exact:!0},{path:"/cardano-updates/quarterly/2023-01-13-network",component:p("/cardano-updates/quarterly/2023-01-13-network","608"),exact:!0},{path:"/cardano-updates/quarterly/2023-01-13-open-source",component:p("/cardano-updates/quarterly/2023-01-13-open-source","ac2"),exact:!0},{path:"/cardano-updates/quarterly/2023-01-18-consensus",component:p("/cardano-updates/quarterly/2023-01-18-consensus","401"),exact:!0},{path:"/cardano-updates/quarterly/2023-04-03-ledger",component:p("/cardano-updates/quarterly/2023-04-03-ledger","719"),exact:!0},{path:"/cardano-updates/quarterly/2023-04-04-network",component:p("/cardano-updates/quarterly/2023-04-04-network","bc4"),exact:!0},{path:"/cardano-updates/quarterly/2023-04-25-consensus",component:p("/cardano-updates/quarterly/2023-04-25-consensus","28b"),exact:!0},{path:"/cardano-updates/quarterly/2023-Q2-consensus",component:p("/cardano-updates/quarterly/2023-Q2-consensus","562"),exact:!0},{path:"/cardano-updates/quarterly/2023-Q2-network",component:p("/cardano-updates/quarterly/2023-Q2-network","6e3"),exact:!0},{path:"/cardano-updates/quarterly/2023-Q2-sre",component:p("/cardano-updates/quarterly/2023-Q2-sre","e4c"),exact:!0},{path:"/cardano-updates/quarterly/2023-Q3-performance-and-tracing",component:p("/cardano-updates/quarterly/2023-Q3-performance-and-tracing","606"),exact:!0},{path:"/cardano-updates/quarterly/2023-Q3-sre",component:p("/cardano-updates/quarterly/2023-Q3-sre","32f"),exact:!0},{path:"/cardano-updates/quarterly/archive",component:p("/cardano-updates/quarterly/archive","c41"),exact:!0},{path:"/cardano-updates/quarterly/page/2",component:p("/cardano-updates/quarterly/page/2","70e"),exact:!0},{path:"/cardano-updates/quarterly/tags",component:p("/cardano-updates/quarterly/tags","d09"),exact:!0},{path:"/cardano-updates/quarterly/tags/cli-api-quarterly",component:p("/cardano-updates/quarterly/tags/cli-api-quarterly","723"),exact:!0},{path:"/cardano-updates/quarterly/tags/consensus",component:p("/cardano-updates/quarterly/tags/consensus","842"),exact:!0},{path:"/cardano-updates/quarterly/tags/ledger",component:p("/cardano-updates/quarterly/tags/ledger","62d"),exact:!0},{path:"/cardano-updates/quarterly/tags/network",component:p("/cardano-updates/quarterly/tags/network","3b9"),exact:!0},{path:"/cardano-updates/quarterly/tags/open-source",component:p("/cardano-updates/quarterly/tags/open-source","03a"),exact:!0},{path:"/cardano-updates/quarterly/tags/performance-tracing",component:p("/cardano-updates/quarterly/tags/performance-tracing","7a7"),exact:!0},{path:"/cardano-updates/quarterly/tags/sre",component:p("/cardano-updates/quarterly/tags/sre","102"),exact:!0},{path:"/cardano-updates/tags",component:p("/cardano-updates/tags","3c0"),exact:!0},{path:"/cardano-updates/tags/cip-1694",component:p("/cardano-updates/tags/cip-1694","a7d"),exact:!0},{path:"/cardano-updates/tags/cli-api",component:p("/cardano-updates/tags/cli-api","cf8"),exact:!0},{path:"/cardano-updates/tags/cli-api/page/2",component:p("/cardano-updates/tags/cli-api/page/2","ab6"),exact:!0},{path:"/cardano-updates/tags/cli-api/page/3",component:p("/cardano-updates/tags/cli-api/page/3","bd2"),exact:!0},{path:"/cardano-updates/tags/cli-api/page/4",component:p("/cardano-updates/tags/cli-api/page/4","8bc"),exact:!0},{path:"/cardano-updates/tags/cli-api/page/5",component:p("/cardano-updates/tags/cli-api/page/5","bfe"),exact:!0},{path:"/cardano-updates/tags/cli-api/page/6",component:p("/cardano-updates/tags/cli-api/page/6","69e"),exact:!0},{path:"/cardano-updates/tags/consensus",component:p("/cardano-updates/tags/consensus","d84"),exact:!0},{path:"/cardano-updates/tags/consensus/page/2",component:p("/cardano-updates/tags/consensus/page/2","56c"),exact:!0},{path:"/cardano-updates/tags/consensus/page/3",component:p("/cardano-updates/tags/consensus/page/3","2c0"),exact:!0},{path:"/cardano-updates/tags/consensus/page/4",component:p("/cardano-updates/tags/consensus/page/4","384"),exact:!0},{path:"/cardano-updates/tags/consensus/page/5",component:p("/cardano-updates/tags/consensus/page/5","af0"),exact:!0},{path:"/cardano-updates/tags/consensus/page/6",component:p("/cardano-updates/tags/consensus/page/6","4a3"),exact:!0},{path:"/cardano-updates/tags/consensus/page/7",component:p("/cardano-updates/tags/consensus/page/7","692"),exact:!0},{path:"/cardano-updates/tags/crypto",component:p("/cardano-updates/tags/crypto","865"),exact:!0},{path:"/cardano-updates/tags/crypto/page/2",component:p("/cardano-updates/tags/crypto/page/2","d35"),exact:!0},{path:"/cardano-updates/tags/crypto/page/3",component:p("/cardano-updates/tags/crypto/page/3","8c2"),exact:!0},{path:"/cardano-updates/tags/crypto/page/4",component:p("/cardano-updates/tags/crypto/page/4","85a"),exact:!0},{path:"/cardano-updates/tags/db-sync",component:p("/cardano-updates/tags/db-sync","5de"),exact:!0},{path:"/cardano-updates/tags/db-sync/page/2",component:p("/cardano-updates/tags/db-sync/page/2","957"),exact:!0},{path:"/cardano-updates/tags/db-sync/page/3",component:p("/cardano-updates/tags/db-sync/page/3","aa5"),exact:!0},{path:"/cardano-updates/tags/devx",component:p("/cardano-updates/tags/devx","b40"),exact:!0},{path:"/cardano-updates/tags/embedding-quality",component:p("/cardano-updates/tags/embedding-quality","49f"),exact:!0},{path:"/cardano-updates/tags/goedel",component:p("/cardano-updates/tags/goedel","6fc"),exact:!0},{path:"/cardano-updates/tags/goedel/page/2",component:p("/cardano-updates/tags/goedel/page/2","2a2"),exact:!0},{path:"/cardano-updates/tags/goedel/page/3",component:p("/cardano-updates/tags/goedel/page/3","6ad"),exact:!0},{path:"/cardano-updates/tags/goedel/page/4",component:p("/cardano-updates/tags/goedel/page/4","5b7"),exact:!0},{path:"/cardano-updates/tags/hydra",component:p("/cardano-updates/tags/hydra","319"),exact:!0},{path:"/cardano-updates/tags/hydra/page/10",component:p("/cardano-updates/tags/hydra/page/10","dbd"),exact:!0},{path:"/cardano-updates/tags/hydra/page/11",component:p("/cardano-updates/tags/hydra/page/11","1ad"),exact:!0},{path:"/cardano-updates/tags/hydra/page/2",component:p("/cardano-updates/tags/hydra/page/2","e33"),exact:!0},{path:"/cardano-updates/tags/hydra/page/3",component:p("/cardano-updates/tags/hydra/page/3","ec8"),exact:!0},{path:"/cardano-updates/tags/hydra/page/4",component:p("/cardano-updates/tags/hydra/page/4","281"),exact:!0},{path:"/cardano-updates/tags/hydra/page/5",component:p("/cardano-updates/tags/hydra/page/5","911"),exact:!0},{path:"/cardano-updates/tags/hydra/page/6",component:p("/cardano-updates/tags/hydra/page/6","319"),exact:!0},{path:"/cardano-updates/tags/hydra/page/7",component:p("/cardano-updates/tags/hydra/page/7","fc5"),exact:!0},{path:"/cardano-updates/tags/hydra/page/8",component:p("/cardano-updates/tags/hydra/page/8","e36"),exact:!0},{path:"/cardano-updates/tags/hydra/page/9",component:p("/cardano-updates/tags/hydra/page/9","344"),exact:!0},{path:"/cardano-updates/tags/ledger",component:p("/cardano-updates/tags/ledger","5cf"),exact:!0},{path:"/cardano-updates/tags/ledger/page/2",component:p("/cardano-updates/tags/ledger/page/2","c91"),exact:!0},{path:"/cardano-updates/tags/ledger/page/3",component:p("/cardano-updates/tags/ledger/page/3","d03"),exact:!0},{path:"/cardano-updates/tags/ledger/page/4",component:p("/cardano-updates/tags/ledger/page/4","754"),exact:!0},{path:"/cardano-updates/tags/ledger/page/5",component:p("/cardano-updates/tags/ledger/page/5","86d"),exact:!0},{path:"/cardano-updates/tags/ledger/page/6",component:p("/cardano-updates/tags/ledger/page/6","9c7"),exact:!0},{path:"/cardano-updates/tags/mithril",component:p("/cardano-updates/tags/mithril","5ea"),exact:!0},{path:"/cardano-updates/tags/mithril/page/2",component:p("/cardano-updates/tags/mithril/page/2","8ae"),exact:!0},{path:"/cardano-updates/tags/mithril/page/3",component:p("/cardano-updates/tags/mithril/page/3","30f"),exact:!0},{path:"/cardano-updates/tags/mithril/page/4",component:p("/cardano-updates/tags/mithril/page/4","c21"),exact:!0},{path:"/cardano-updates/tags/mithril/page/5",component:p("/cardano-updates/tags/mithril/page/5","fc4"),exact:!0},{path:"/cardano-updates/tags/mithril/page/6",component:p("/cardano-updates/tags/mithril/page/6","c91"),exact:!0},{path:"/cardano-updates/tags/mithril/page/7",component:p("/cardano-updates/tags/mithril/page/7","812"),exact:!0},{path:"/cardano-updates/tags/network",component:p("/cardano-updates/tags/network","e9b"),exact:!0},{path:"/cardano-updates/tags/network/page/2",component:p("/cardano-updates/tags/network/page/2","312"),exact:!0},{path:"/cardano-updates/tags/network/page/3",component:p("/cardano-updates/tags/network/page/3","b91"),exact:!0},{path:"/cardano-updates/tags/network/page/4",component:p("/cardano-updates/tags/network/page/4","314"),exact:!0},{path:"/cardano-updates/tags/network/page/5",component:p("/cardano-updates/tags/network/page/5","d89"),exact:!0},{path:"/cardano-updates/tags/open-source",component:p("/cardano-updates/tags/open-source","905"),exact:!0},{path:"/cardano-updates/tags/performance-tracing",component:p("/cardano-updates/tags/performance-tracing","7e4"),exact:!0},{path:"/cardano-updates/tags/performance-tracing/page/2",component:p("/cardano-updates/tags/performance-tracing/page/2","665"),exact:!0},{path:"/cardano-updates/tags/performance-tracing/page/3",component:p("/cardano-updates/tags/performance-tracing/page/3","b14"),exact:!0},{path:"/cardano-updates/tags/performance-tracing/page/4",component:p("/cardano-updates/tags/performance-tracing/page/4","fad"),exact:!0},{path:"/cardano-updates/tags/performance-tracing/page/5",component:p("/cardano-updates/tags/performance-tracing/page/5","f63"),exact:!0},{path:"/cardano-updates/tags/release",component:p("/cardano-updates/tags/release","2e7"),exact:!0},{path:"/cardano-updates/tags/security",component:p("/cardano-updates/tags/security","616"),exact:!0},{path:"/cardano-updates/tags/sre",component:p("/cardano-updates/tags/sre","abe"),exact:!0},{path:"/cardano-updates/tags/sre/page/2",component:p("/cardano-updates/tags/sre/page/2","2a2"),exact:!0},{path:"/cardano-updates/tags/sre/page/3",component:p("/cardano-updates/tags/sre/page/3","7ef"),exact:!0},{path:"/cardano-updates/tags/system-test",component:p("/cardano-updates/tags/system-test","c77"),exact:!0},{path:"/cardano-updates/docs",component:p("/cardano-updates/docs","49f"),routes:[{path:"/cardano-updates/docs/category/tutorial---basics",component:p("/cardano-updates/docs/category/tutorial---basics","14d"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/category/tutorial---extras",component:p("/cardano-updates/docs/category/tutorial---extras","19d"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/intro",component:p("/cardano-updates/docs/intro","433"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-basics/congratulations",component:p("/cardano-updates/docs/tutorial-basics/congratulations","9cd"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-basics/create-a-blog-post",component:p("/cardano-updates/docs/tutorial-basics/create-a-blog-post","ca9"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-basics/create-a-document",component:p("/cardano-updates/docs/tutorial-basics/create-a-document","5bb"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-basics/create-a-page",component:p("/cardano-updates/docs/tutorial-basics/create-a-page","8d5"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-basics/deploy-your-site",component:p("/cardano-updates/docs/tutorial-basics/deploy-your-site","c68"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-basics/markdown-features",component:p("/cardano-updates/docs/tutorial-basics/markdown-features","319"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-extras/manage-docs-versions",component:p("/cardano-updates/docs/tutorial-extras/manage-docs-versions","9eb"),exact:!0,sidebar:"defaultSidebar"},{path:"/cardano-updates/docs/tutorial-extras/translate-your-site",component:p("/cardano-updates/docs/tutorial-extras/translate-your-site","0ea"),exact:!0,sidebar:"defaultSidebar"}]},{path:"/cardano-updates/",component:p("/cardano-updates/","5f5"),exact:!0},{path:"*",component:p("*")}]},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>r,t:()=>o});var a=n(67294);const r=a.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{o(!0)}),[]),a.createElement(r.Provider,{value:n},t)}},49383:(e,t,n)=>{"use strict";var a=n(67294),r=n(73935),o=n(73727),c=n(70405),i=n(10412);const d=[n(32497),n(3310),n(18320),n(52295)];var s=n(723),l=n(16550),u=n(18790);function p(e){let{children:t}=e;return a.createElement(a.Fragment,null,t)}var f=n(87462),b=n(35742),g=n(52263),m=n(44996),h=n(86668),y=n(1944),_=n(94711),v=n(19727),w=n(43320),x=n(90197);function k(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,_.l)();return a.createElement(b.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:r}]=e;return a.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:r})})),a.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),r=function(){const{siteConfig:{url:e}}=(0,g.Z)(),{pathname:t}=(0,l.TH)();return e+(0,m.Z)(t)}(),o=t?`${n}${t}`:r;return a.createElement(b.Z,null,a.createElement("meta",{property:"og:url",content:o}),a.createElement("link",{rel:"canonical",href:o}))}function S(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,h.L)();return a.createElement(a.Fragment,null,a.createElement(b.Z,null,a.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),a.createElement("body",{className:v.h})),n&&a.createElement(y.d,{image:n}),a.createElement(E,null),a.createElement(k,null),a.createElement(x.Z,{tag:w.HX,locale:e}),a.createElement(b.Z,null,t.map(((e,t)=>a.createElement("meta",(0,f.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,u.f)(s.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var A=n(98934),L=n(58940);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];const r=d.map((t=>{const a=t.default?.[e]??t[e];return a?.(...n)}));return()=>r.forEach((e=>e?.()))}const R=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,a.useLayoutEffect)((()=>{r!==n&&(r&&function(e){const{hash:t}=e;if(t){const e=decodeURIComponent(t.substring(1)),n=document.getElementById(e);n?.scrollIntoView()}else window.scrollTo(0,0)}(n),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,u.f)(s.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends a.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=i.Z.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return a.createElement(R,{previousLocation:this.previousLocation,location:t},a.createElement(l.AW,{location:t,render:()=>e}))}}const j=O,M="docusaurus-base-url-issue-banner-container",D="docusaurus-base-url-issue-banner",I="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${D}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${I}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${I}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function q(){const{siteConfig:{baseUrl:e}}=(0,g.Z)();return(0,a.useLayoutEffect)((()=>{window[F]=!1}),[]),a.createElement(a.Fragment,null,!i.Z.canUseDOM&&a.createElement(b.Z,null,a.createElement("script",null,B(e))),a.createElement("div",{id:M}))}function z(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,l.TH)();return t&&n===e?a.createElement(q,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:o}}=(0,g.Z)(),c=(0,m.Z)(e),{htmlLang:i,direction:d}=o[r];return a.createElement(b.Z,null,a.createElement("html",{lang:i,dir:d}),a.createElement("title",null,t),a.createElement("meta",{property:"og:title",content:t}),a.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&a.createElement("link",{rel:"icon",href:c}))}var $=n(44763);function H(){const e=(0,u.H)(s.Z),t=(0,l.TH)();return a.createElement($.Z,null,a.createElement(L.M,null,a.createElement(A.t,null,a.createElement(p,null,a.createElement(U,null),a.createElement(S,null),a.createElement(z,null),a.createElement(j,{location:T(t)},e)))))}var G=n(16887);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const a=document.createElement("link");a.setAttribute("rel","prefetch"),a.setAttribute("href",e),a.onload=()=>t(),a.onerror=()=>n();const r=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;r?.appendChild(a)}))}:function(e){return new Promise(((t,n)=>{const a=new XMLHttpRequest;a.open("GET",e,!0),a.withCredentials=!0,a.onload=()=>{200===a.status?t():n()},a.send(null)}))};var V=n(99670);const W=new Set,Q=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,K={prefetch(e){if(!(e=>!Y()&&!Q.has(e)&&!W.has(e))(e))return!1;W.add(e);const t=(0,u.f)(s.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!Q.has(e))(e)&&(Q.add(e),N(e))},X=Object.freeze(K);if(i.Z.canUseDOM){window.docusaurus=X;const e=r.hydrate;N(window.location.pathname).then((()=>{e(a.createElement(c.B6,null,a.createElement(o.VK,null,a.createElement(H,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>l,M:()=>u});var a=n(67294),r=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/cardano-updates/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/cardano-updates/docs","mainDocId":"intro","docs":[{"id":"intro","path":"/cardano-updates/docs/intro","sidebar":"defaultSidebar"},{"id":"tutorial-basics/congratulations","path":"/cardano-updates/docs/tutorial-basics/congratulations","sidebar":"defaultSidebar"},{"id":"tutorial-basics/create-a-blog-post","path":"/cardano-updates/docs/tutorial-basics/create-a-blog-post","sidebar":"defaultSidebar"},{"id":"tutorial-basics/create-a-document","path":"/cardano-updates/docs/tutorial-basics/create-a-document","sidebar":"defaultSidebar"},{"id":"tutorial-basics/create-a-page","path":"/cardano-updates/docs/tutorial-basics/create-a-page","sidebar":"defaultSidebar"},{"id":"tutorial-basics/deploy-your-site","path":"/cardano-updates/docs/tutorial-basics/deploy-your-site","sidebar":"defaultSidebar"},{"id":"tutorial-basics/markdown-features","path":"/cardano-updates/docs/tutorial-basics/markdown-features","sidebar":"defaultSidebar"},{"id":"tutorial-extras/manage-docs-versions","path":"/cardano-updates/docs/tutorial-extras/manage-docs-versions","sidebar":"defaultSidebar"},{"id":"tutorial-extras/translate-your-site","path":"/cardano-updates/docs/tutorial-extras/translate-your-site","sidebar":"defaultSidebar"},{"id":"/category/tutorial---basics","path":"/cardano-updates/docs/category/tutorial---basics","sidebar":"defaultSidebar"},{"id":"/category/tutorial---extras","path":"/cardano-updates/docs/category/tutorial---extras","sidebar":"defaultSidebar"}],"draftIds":[],"sidebars":{"defaultSidebar":{"link":{"path":"/cardano-updates/docs/intro","label":"intro"}}}}],"breadcrumbs":true}}}'),c=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var i=n(57529);const d=JSON.parse('{"docusaurusVersion":"2.2.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.2.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.2.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.2.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.2.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.2.0"}}}'),s={siteConfig:r.default,siteMetadata:d,globalData:o,i18n:c,codeTranslations:i},l=a.createContext(s);function u(e){let{children:t}=e;return a.createElement(l.Provider,{value:s},t)}},44763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var a=n(67294),r=n(10412),o=n(35742),c=n(93285);function i(e){let{error:t,tryAgain:n}=e;return a.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},a.createElement("h1",null,"This page crashed."),a.createElement("p",null,t.message),a.createElement("button",{type:"button",onClick:n},"Try again"))}function d(e){let{error:t,tryAgain:n}=e;return a.createElement(l,{fallback:()=>a.createElement(i,{error:t,tryAgain:n})},a.createElement(o.Z,null,a.createElement("title",null,"Page Error")),a.createElement(c.Z,null,a.createElement(i,{error:t,tryAgain:n})))}const s=e=>a.createElement(d,e);class l extends a.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){r.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??s)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const a="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,r={canUseDOM:a,canUseEventListeners:a&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:a&&"IntersectionObserver"in window,canUseViewport:a&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294),r=n(70405);function o(e){return a.createElement(r.ql,e)}},39960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(87462),r=n(67294),o=n(73727),c=n(18780),i=n(52263),d=n(13919),s=n(10412);const l=r.createContext({collectLink:()=>{}});var u=n(44996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:b,isActive:g,"data-noBrokenLinkCheck":m,autoAddBaseUrl:h=!0,...y}=e;const{siteConfig:{trailingSlash:_,baseUrl:v}}=(0,i.Z)(),{withBaseUrl:w}=(0,u.C)(),x=(0,r.useContext)(l),k=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>k.current));const E=p||f;const S=(0,d.Z)(E),C=E?.replace("pathname://","");let T=void 0!==C?(A=C,h&&(e=>e.startsWith("/"))(A)?w(A):A):void 0;var A;T&&S&&(T=(0,c.applyTrailingSlash)(T,{trailingSlash:_,baseUrl:v}));const L=(0,r.useRef)(!1),P=n?o.OL:o.rU,R=s.Z.canUseIntersectionObserver,N=(0,r.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,r.useEffect)((()=>(!R&&S&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&N.current&&N.current.disconnect()})),[N,T,R,S]);const j=T?.startsWith("#")??!1,M=!T||!S||j;return M||m||x.collectLink(T),M?r.createElement("a",(0,a.Z)({ref:k,href:T},E&&!S&&{target:"_blank",rel:"noopener noreferrer"},y)):r.createElement(P,(0,a.Z)({},y,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{k.current=e,R&&e&&S&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T},n&&{isActive:g,activeClassName:b}))}const f=r.forwardRef(p)},11875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=()=>null},95999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d,I:()=>i});var a=n(67294);function r(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,a.isValidElement)(e)))?n.map(((e,t)=>(0,a.isValidElement)(e)?a.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function c(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function i(e,t){let{message:n,id:a}=e;return r(c({message:n,id:a}),t)}function d(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=c({message:t,id:n});return a.createElement(a.Fragment,null,r(i,o))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>a});const a="default"},13919:(e,t,n)=>{"use strict";function a(e){return/^(?:\w*:|\/\/)/.test(e)}function r(e){return void 0!==e&&!a(e)}n.d(t,{Z:()=>r,b:()=>a})},44996:(e,t,n)=>{"use strict";n.d(t,{C:()=>o,Z:()=>c});var a=n(52263),r=n(13919);function o(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)();return{withBaseUrl:(n,a)=>function(e,t,n,a){let{forcePrependBaseUrl:o=!1,absolute:c=!1}=void 0===a?{}:a;if(!n||n.startsWith("#")||(0,r.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const i=n.startsWith(t)?n:t+n.replace(/^\//,"");return c?e+i:i}(t,e,n,a)}}function c(e,t){void 0===t&&(t={});const{withBaseUrl:n}=o();return n(e,t)}},52263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294),r=n(58940);function o(){return(0,a.useContext)(r._)}},72389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294),r=n(98934);function o(){return(0,a.useContext)(r._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const a=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function r(e){const t={};return function e(n,r){Object.entries(n).forEach((n=>{let[o,c]=n;const i=r?`${r}.${o}`:o;a(c)?e(c,i):t[i]=c}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>r,z:()=>o});var a=n(67294);const r=a.createContext(null);function o(e){let{children:t,value:n}=e;const o=a.useContext(r),c=(0,a.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const a={...t.data,...n?.data};return{plugin:t.plugin,data:a}}({parent:o,value:n})),[o,n]);return a.createElement(r.Provider,{value:c},t)}},80143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>p,_r:()=>l,Jo:()=>m,zh:()=>u,yW:()=>b,gB:()=>f});var a=n(16550),r=n(52263),o=n(29935);function c(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const i=e=>e.versions.find((e=>e.isLast));function d(e,t){const n=function(e,t){const n=i(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,a.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),r=n?.docs.find((e=>!!(0,a.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:r,alternateDocVersions:r?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((a=>{a.id===t&&(n[e.name]=a)}))})),n}(r.id):{}}}const s={},l=()=>c("docusaurus-plugin-content-docs")??s,u=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const a=c(e),r=a?.[t];if(!r&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return r}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=l(),{pathname:n}=(0,a.TH)();return function(e,t,n){void 0===n&&(n={});const r=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,a.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=r?{pluginId:r[0],pluginData:r[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return u(e).versions}function b(e){const t=u(e);return i(t)}function g(e){const t=u(e),{pathname:n}=(0,a.TH)();return d(t,n)}function m(e){const t=u(e),{pathname:n}=(0,a.TH)();return function(e,t){const n=i(e);return{latestDocSuggestion:d(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var a=n(74865),r=n.n(a);r().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{r().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){r().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var a=n(87410),r=n(36809);!function(e){const{themeConfig:{prism:t}}=r.default,{additionalLanguages:a}=t;globalThis.Prism=e,a.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(a.Z)},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294);const r={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return a.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink},a.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},93285:(e,t,n)=>{"use strict";n.d(t,{Z:()=>dt});var a=n(67294),r=n(86010),o=n(44763),c=n(1944),i=n(87462),d=n(16550),s=n(95999),l=n(85936);const u="docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,a.useRef)(null),{action:t}=(0,d.k6)(),n=(0,a.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(u);t&&p(t)}),[]);return(0,l.S)((n=>{let{location:a}=n;e.current&&!a.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const b=(0,s.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??b,{containerRef:n,onClick:r}=f();return a.createElement("div",{ref:n,role:"region","aria-label":b},a.createElement("a",(0,i.Z)({},e,{href:`#${u}`,onClick:r}),t))}var m=n(35281),h=n(19727);const y={skipToContent:"skipToContent_fXgn"};function _(){return a.createElement(g,{className:y.skipToContent})}var v=n(86668),w=n(59689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:c,...d}=e;return a.createElement("svg",(0,i.Z)({viewBox:"0 0 15 15",width:t,height:n},d),a.createElement("g",{stroke:r,strokeWidth:o},a.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const k={closeButton:"closeButton_CVFx"};function E(e){return a.createElement("button",(0,i.Z)({type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,r.Z)("clean-btn close",k.closeButton,e.className)}),a.createElement(x,{width:14,height:14,strokeWidth:3.1}))}const S={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,v.L)(),{content:n}=t;return a.createElement("div",(0,i.Z)({},e,{className:(0,r.Z)(S.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,v.L)(),{isActive:t,close:n}=(0,w.nT)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:c}=e;return a.createElement("div",{className:T.announcementBar,style:{backgroundColor:r,color:o},role:"banner"},c&&a.createElement("div",{className:T.announcementBarPlaceholder}),a.createElement(C,{className:T.announcementBarContent}),c&&a.createElement(E,{onClick:n,className:T.announcementBarClose}))}var L=n(72961),P=n(12466);var R=n(902),N=n(13102);const O=a.createContext(null);function j(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,N.HY)(),[n,r]=(0,a.useState)(!1),o=null!==t.component,c=(0,R.D9)(o);return(0,a.useEffect)((()=>{o&&!c&&r(!0)}),[o,c]),(0,a.useEffect)((()=>{o?e.shown||r(!0):r(!1)}),[e.shown,o]),(0,a.useMemo)((()=>[n,r]),[n])}();return a.createElement(O.Provider,{value:n},t)}function M(e){if(e.component){const t=e.component;return a.createElement(t,e.props)}}function D(){const e=(0,a.useContext)(O);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,r=(0,a.useCallback)((()=>n(!1)),[n]),o=(0,N.HY)();return(0,a.useMemo)((()=>({shown:t,hide:r,content:M(o)})),[r,o,t])}function I(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:c}=D();return a.createElement("div",{className:"navbar-sidebar"},t,a.createElement("div",{className:(0,r.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":c})},a.createElement("div",{className:"navbar-sidebar__item menu"},n),a.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var F=n(92949),B=n(72389);function q(e){return a.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function z(e){return a.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function $(e){let{className:t,value:n,onChange:o}=e;const c=(0,B.Z)(),i=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===n?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return a.createElement("div",{className:(0,r.Z)(U.toggle,t)},a.createElement("button",{className:(0,r.Z)("clean-btn",U.toggleButton,!c&&U.toggleButtonDisabled),type:"button",onClick:()=>o("dark"===n?"light":"dark"),disabled:!c,title:i,"aria-label":i,"aria-live":"polite"},a.createElement(q,{className:(0,r.Z)(U.toggleIcon,U.lightToggleIcon)}),a.createElement(z,{className:(0,r.Z)(U.toggleIcon,U.darkToggleIcon)})))}const H=a.memo($);function G(e){let{className:t}=e;const n=(0,v.L)().colorMode.disableSwitch,{colorMode:r,setColorMode:o}=(0,F.I)();return n?null:a.createElement(H,{className:t,value:r,onChange:o})}var Z=n(21327);function V(){return a.createElement(Z.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function W(){const e=(0,L.e)();return a.createElement("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},a.createElement(x,{color:"var(--ifm-color-emphasis-600)"}))}function Q(){return a.createElement("div",{className:"navbar-sidebar__brand"},a.createElement(V,null),a.createElement(G,{className:"margin-right--md"}),a.createElement(W,null))}var Y=n(39960),K=n(44996),X=n(13919);function J(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ee=n(39471);function te(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:c,html:d,isDropdownLink:s,prependBaseUrlToHref:l,...u}=e;const p=(0,K.Z)(r),f=(0,K.Z)(t),b=(0,K.Z)(o,{forcePrependBaseUrl:!0}),g=c&&o&&!(0,X.Z)(o),m=d?{dangerouslySetInnerHTML:{__html:d}}:{children:a.createElement(a.Fragment,null,c,g&&a.createElement(ee.Z,s&&{width:12,height:12}))};return o?a.createElement(Y.Z,(0,i.Z)({href:l?b:o},u,m)):a.createElement(Y.Z,(0,i.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?J(n,t.pathname):t.pathname.startsWith(f)},u,m))}function ne(e){let{className:t,isDropdownItem:n=!1,...o}=e;const c=a.createElement(te,(0,i.Z)({className:(0,r.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?a.createElement("li",null,c):c}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return a.createElement("li",{className:"menu__list-item"},a.createElement(te,(0,i.Z)({className:(0,r.Z)("menu__link",t)},o)))}function re(e){let{mobile:t=!1,position:n,...r}=e;const o=t?ae:ne;return a.createElement(o,(0,i.Z)({},r,{activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var oe=n(86043),ce=n(48596),ie=n(52263);function de(e,t){return e.some((e=>function(e,t){return!!(0,ce.Mg)(e.to,t)||!!J(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function se(e){let{items:t,position:n,className:o,onClick:c,...d}=e;const s=(0,a.useRef)(null),[l,u]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[s]),a.createElement("div",{ref:s,className:(0,r.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":l})},a.createElement(te,(0,i.Z)({"aria-haspopup":"true","aria-expanded":l,role:"button",href:d.to?void 0:"#",className:(0,r.Z)("navbar__link",o)},d,{onClick:d.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),u(!l))}}),d.children??d.label),a.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>a.createElement(ke,(0,i.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),u(!1);const t=s.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function le(e){let{items:t,className:n,position:o,onClick:c,...s}=e;const l=function(){const{siteConfig:{baseUrl:e}}=(0,ie.Z)(),{pathname:t}=(0,d.TH)();return t.replace(e,"/")}(),u=de(t,l),{collapsed:p,toggleCollapsed:f,setCollapsed:b}=(0,oe.u)({initialState:()=>!u});return(0,a.useEffect)((()=>{u&&b(!u)}),[l,u,b]),a.createElement("li",{className:(0,r.Z)("menu__list-item",{"menu__list-item--collapsed":p})},a.createElement(te,(0,i.Z)({role:"button",className:(0,r.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},s,{onClick:e=>{e.preventDefault(),f()}}),s.children??s.label),a.createElement(oe.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>a.createElement(ke,(0,i.Z)({mobile:!0,isDropdownItem:!0,onClick:c,activeClassName:"menu__link--active"},e,{key:t}))))))}function ue(e){let{mobile:t=!1,...n}=e;const r=t?le:se;return a.createElement(r,n)}var pe=n(94711);function fe(e){let{width:t=20,height:n=20,...r}=e;return a.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},r),a.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const be="iconLanguage_nlXk";var ge=n(11875);const me={searchBox:"searchBox_ZlJk"};function he(e){let{children:t,className:n}=e;return a.createElement("div",{className:(0,r.Z)(n,me.searchBox)},t)}var ye=n(80143),_e=n(52802);var ve=n(60373);const we=e=>e.docs.find((t=>t.id===e.mainDocId));const xe={default:re,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,...o}=e;const{i18n:{currentLocale:c,locales:l,localeConfigs:u}}=(0,ie.Z)(),p=(0,pe.l)(),{search:f,hash:b}=(0,d.TH)(),g=[...n,...l.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${b}`;return{label:u[e].label,lang:u[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===c?t?"menu__link--active":"dropdown__link--active":""}})),...r],m=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):u[c].label;return a.createElement(ue,(0,i.Z)({},o,{mobile:t,label:a.createElement(a.Fragment,null,a.createElement(fe,{className:be}),m),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:a.createElement(he,{className:n},a.createElement(ge.Z,null))},dropdown:ue,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:c=!1}=e;const i=c?"li":"div";return a.createElement(i,{className:(0,r.Z)({navbar__item:!o&&!c,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:c}=(0,ye.Iw)(r),d=(0,_e.vY)(t,r);return null===d?null:a.createElement(re,(0,i.Z)({exact:!0},o,{isActive:()=>c?.path===d.path||!!c?.sidebar&&c.sidebar===d.sidebar,label:n??d.id,to:d.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:c}=(0,ye.Iw)(r),d=(0,_e.oz)(t,r).link;if(!d)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return a.createElement(re,(0,i.Z)({exact:!0},o,{isActive:()=>c?.sidebar===t,label:n??d.label,to:d.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const c=(0,_e.lO)(r)[0],d=t??c.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(c).path;return a.createElement(re,(0,i.Z)({},o,{label:d,to:s}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:c,...l}=e;const{search:u,hash:p}=(0,d.TH)(),f=(0,ye.Iw)(n),b=(0,ye.gB)(n),{savePreferredVersionName:g}=(0,ve.J)(n),m=[...o,...b.map((e=>{const t=f.alternateDocVersions[e.name]??we(e);return{label:e.label,to:`${t.path}${u}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>g(e.name)}})),...c],h=(0,_e.lO)(n)[0],y=t&&m.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,_=t&&m.length>1?void 0:we(h).path;return m.length<=1?a.createElement(re,(0,i.Z)({},l,{mobile:t,label:y,to:_,isActive:r?()=>!1:void 0})):a.createElement(ue,(0,i.Z)({},l,{mobile:t,label:y,to:_,items:m,isActive:r?()=>!1:void 0}))}};function ke(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=xe[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return a.createElement(o,n)}function Ee(){const e=(0,L.e)(),t=(0,v.L)().navbar.items;return a.createElement("ul",{className:"menu__list"},t.map(((t,n)=>a.createElement(ke,(0,i.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Se(e){return a.createElement("button",(0,i.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),a.createElement(s.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ce(){const e=0===(0,v.L)().navbar.items.length,t=D();return a.createElement(a.Fragment,null,!e&&a.createElement(Se,{onClick:()=>t.hide()}),t.content)}function Te(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,a.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?a.createElement(I,{header:a.createElement(Q,null),primaryMenu:a.createElement(Ee,null),secondaryMenu:a.createElement(Ce,null)}):null}const Ae={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Le(e){return a.createElement("div",(0,i.Z)({role:"presentation"},e,{className:(0,r.Z)("navbar-sidebar__backdrop",e.className)}))}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,v.L)(),c=(0,L.e)(),{navbarRef:i,isNavbarVisible:d}=function(e){const[t,n]=(0,a.useState)(e),r=(0,a.useRef)(!1),o=(0,a.useRef)(0),c=(0,a.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,P.RF)(((t,a)=>{let{scrollY:c}=t;if(!e)return;if(c<o.current)return void n(!0);if(r.current)return void(r.current=!1);const i=a?.scrollY,d=document.documentElement.scrollHeight-o.current,s=window.innerHeight;i&&c>=i?n(!1):c+s<d&&n(!0)})),(0,l.S)((t=>{if(!e)return;const a=t.location.hash;if(a?document.getElementById(a.substring(1)):void 0)return r.current=!0,void n(!1);n(!0)})),{navbarRef:c,isNavbarVisible:t}}(n);return a.createElement("nav",{ref:i,className:(0,r.Z)("navbar","navbar--fixed-top",n&&[Ae.navbarHideable,!d&&Ae.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":c.shown})},t,a.createElement(Le,{onClick:c.toggle}),a.createElement(Te,null))}const Re="right";function Ne(e){let{width:t=30,height:n=30,className:r,...o}=e;return a.createElement("svg",(0,i.Z)({className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),a.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function Oe(){const{toggle:e,shown:t}=(0,L.e)();return a.createElement("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},a.createElement(Ne,null))}const je={colorModeToggle:"colorModeToggle_DEke"};function Me(e){let{items:t}=e;return a.createElement(a.Fragment,null,t.map(((e,t)=>a.createElement(ke,(0,i.Z)({},e,{key:t})))))}function De(e){let{left:t,right:n}=e;return a.createElement("div",{className:"navbar__inner"},a.createElement("div",{className:"navbar__items"},t),a.createElement("div",{className:"navbar__items navbar__items--right"},n))}function Ie(){const e=(0,L.e)(),t=(0,v.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Re)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return a.createElement(De,{left:a.createElement(a.Fragment,null,!e.disabled&&a.createElement(Oe,null),a.createElement(V,null),a.createElement(Me,{items:n})),right:a.createElement(a.Fragment,null,a.createElement(Me,{items:r}),a.createElement(G,{className:je.colorModeToggle}),!o&&a.createElement(he,null,a.createElement(ge.Z,null)))})}function Fe(){return a.createElement(Pe,null,a.createElement(Ie,null))}function Be(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:c,...d}=t,s=(0,K.Z)(n),l=(0,K.Z)(r,{forcePrependBaseUrl:!0});return a.createElement(Y.Z,(0,i.Z)({className:"footer__link-item"},r?{href:c?l:r}:{to:s},d),o,r&&!(0,X.Z)(r)&&a.createElement(ee.Z,null))}function qe(e){let{item:t}=e;return t.html?a.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):a.createElement("li",{key:t.href??t.to,className:"footer__item"},a.createElement(Be,{item:t}))}function ze(e){let{column:t}=e;return a.createElement("div",{className:"col footer__col"},a.createElement("div",{className:"footer__title"},t.title),a.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>a.createElement(qe,{key:t,item:e})))))}function Ue(e){let{columns:t}=e;return a.createElement("div",{className:"row footer__links"},t.map(((e,t)=>a.createElement(ze,{key:t,column:e}))))}function $e(){return a.createElement("span",{className:"footer__link-separator"},"\xb7")}function He(e){let{item:t}=e;return t.html?a.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):a.createElement(Be,{item:t})}function Ge(e){let{links:t}=e;return a.createElement("div",{className:"footer__links text--center"},a.createElement("div",{className:"footer__links"},t.map(((e,n)=>a.createElement(a.Fragment,{key:n},a.createElement(He,{item:e}),t.length!==n+1&&a.createElement($e,null))))))}function Ze(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?a.createElement(Ue,{columns:t}):a.createElement(Ge,{links:t})}var Ve=n(50941);const We={footerLogoLink:"footerLogoLink_BH7S"};function Qe(e){let{logo:t}=e;const{withBaseUrl:n}=(0,K.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return a.createElement(Ve.Z,{className:(0,r.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function Ye(e){let{logo:t}=e;return t.href?a.createElement(Y.Z,{href:t.href,className:We.footerLogoLink,target:t.target},a.createElement(Qe,{logo:t})):a.createElement(Qe,{logo:t})}function Ke(e){let{copyright:t}=e;return a.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Xe(e){let{style:t,links:n,logo:o,copyright:c}=e;return a.createElement("footer",{className:(0,r.Z)("footer",{"footer--dark":"dark"===t})},a.createElement("div",{className:"container container-fluid"},n,(o||c)&&a.createElement("div",{className:"footer__bottom text--center"},o&&a.createElement("div",{className:"margin-bottom--sm"},o),c)))}function Je(){const{footer:e}=(0,v.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return a.createElement(Xe,{style:o,links:n&&n.length>0&&a.createElement(Ze,{links:n}),logo:r&&a.createElement(Ye,{logo:r}),copyright:t&&a.createElement(Ke,{copyright:t})})}const et=a.memo(Je);var tt=n(50012);const nt="docusaurus.tab.",at=a.createContext(void 0);const rt=(0,R.Qc)([F.S,w.pl,function(e){let{children:t}=e;const n=function(){const[e,t]=(0,a.useState)({}),n=(0,a.useCallback)(((e,t)=>{(0,tt.W)(`${nt}${e}`).set(t)}),[]);(0,a.useEffect)((()=>{try{const e={};(0,tt._)().forEach((t=>{if(t.startsWith(nt)){const n=t.substring(nt.length);e[n]=(0,tt.W)(t).get()}})),t(e)}catch(e){console.error(e)}}),[]);const r=(0,a.useCallback)(((e,a)=>{t((t=>({...t,[e]:a}))),n(e,a)}),[n]);return(0,a.useMemo)((()=>({tabGroupChoices:e,setTabGroupChoices:r})),[e,r])}();return a.createElement(at.Provider,{value:n},t)},P.OC,ve.L5,c.VC,function(e){let{children:t}=e;return a.createElement(N.n2,null,a.createElement(L.M,null,a.createElement(j,null,t)))}]);function ot(e){let{children:t}=e;return a.createElement(rt,null,t)}function ct(e){let{error:t,tryAgain:n}=e;return a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),a.createElement("p",null,t.message),a.createElement("div",null,a.createElement("button",{type:"button",onClick:n},a.createElement(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const it={mainWrapper:"mainWrapper_z2l0"};function dt(e){const{children:t,noFooter:n,wrapperClassName:i,title:d,description:s}=e;return(0,h.t)(),a.createElement(ot,null,a.createElement(c.d,{title:d,description:s}),a.createElement(_,null),a.createElement(A,null),a.createElement(Fe,null),a.createElement("div",{id:u,className:(0,r.Z)(m.k.wrapper.main,it.mainWrapper,i)},a.createElement(o.Z,{fallback:e=>a.createElement(ct,e)},t)),!n&&a.createElement(et,null))}},21327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var a=n(87462),r=n(67294),o=n(39960),c=n(44996),i=n(52263),d=n(86668),s=n(50941);function l(e){let{logo:t,alt:n,imageClassName:a}=e;const o={light:(0,c.Z)(t.src),dark:(0,c.Z)(t.srcDark||t.src)},i=r.createElement(s.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return a?r.createElement("div",{className:a},i):i}function u(e){const{siteConfig:{title:t}}=(0,i.Z)(),{navbar:{title:n,logo:s}}=(0,d.L)(),{imageClassName:u,titleClassName:p,...f}=e,b=(0,c.Z)(s?.href||"/"),g=n?"":t,m=s?.alt??g;return r.createElement(o.Z,(0,a.Z)({to:b},f,s?.target&&{target:s.target}),s&&r.createElement(l,{logo:s,alt:m,imageClassName:u}),null!=n&&r.createElement("b",{className:p},n))}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294),r=n(35742);function o(e){let{locale:t,version:n,tag:o}=e;const c=t;return a.createElement(r.Z,null,t&&a.createElement("meta",{name:"docusaurus_locale",content:t}),n&&a.createElement("meta",{name:"docusaurus_version",content:n}),o&&a.createElement("meta",{name:"docusaurus_tag",content:o}),c&&a.createElement("meta",{name:"docsearch:language",content:c}),n&&a.createElement("meta",{name:"docsearch:version",content:n}),o&&a.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},50941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87462),r=n(67294),o=n(86010),c=n(72389),i=n(92949);const d={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function s(e){const t=(0,c.Z)(),{colorMode:n}=(0,i.I)(),{sources:s,className:l,alt:u,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return r.createElement(r.Fragment,null,f.map((e=>r.createElement("img",(0,a.Z)({key:e,src:s[e],alt:u,className:(0,o.Z)(d.themedImage,d[`themedImage--${e}`],l)},p)))))}},86043:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,z:()=>g});var a=n(87462),r=n(67294),o=n(10412);const c="ease-in-out";function i(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const d={display:"none",overflow:"hidden",height:"0px"},s={display:"block",overflow:"visible",height:"auto"};function l(e,t){const n=t?d:s;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function u(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??c}`,height:`${t}px`}}function i(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return l(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=d.height,e.style.overflow=d.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function p(e){if(!o.Z.canUseDOM)return e?d:s}function f(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:c,className:i,disableSSRStyle:d}=e;const s=(0,r.useRef)(null);return u({collapsibleRef:s,collapsed:n,animation:o}),r.createElement(t,{ref:s,style:d?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(l(s.current,n),c?.(n))},className:i},a)}function b(e){let{collapsed:t,...n}=e;const[o,c]=(0,r.useState)(!t),[i,d]=(0,r.useState)(t);return(0,r.useLayoutEffect)((()=>{t||c(!0)}),[t]),(0,r.useLayoutEffect)((()=>{o&&d(t)}),[o,t]),o?r.createElement(f,(0,a.Z)({},n,{collapsed:i})):null}function g(e){let{lazy:t,...n}=e;const a=t?b:f;return r.createElement(a,n)}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>b,pl:()=>f});var a=n(67294),r=n(72389),o=n(50012),c=n(902),i=n(86668);const d=(0,o.W)("docusaurus.announcement.dismiss"),s=(0,o.W)("docusaurus.announcement.id"),l=()=>"true"===d.get(),u=e=>d.set(String(e)),p=a.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,i.L)(),t=(0,r.Z)(),[n,o]=(0,a.useState)((()=>!!t&&l()));(0,a.useEffect)((()=>{o(l())}),[]);const c=(0,a.useCallback)((()=>{u(!0),o(!0)}),[]);return(0,a.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=s.get();"annoucement-bar"===n&&(n="announcement-bar");const a=t!==n;s.set(t),a&&u(!1),!a&&l()||o(!1)}),[e]),(0,a.useMemo)((()=>({isActive:!!e&&!n,close:c})),[e,n,c])}();return a.createElement(p.Provider,{value:n},t)}function b(){const e=(0,a.useContext)(p);if(!e)throw new c.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>m,S:()=>g});var a=n(67294),r=n(10412),o=n(902),c=n(50012),i=n(86668);const d=a.createContext(void 0),s="theme",l=(0,c.W)(s),u={light:"light",dark:"dark"},p=e=>e===u.dark?u.dark:u.light,f=e=>r.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),b=e=>{l.set(p(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,i.L)(),[r,o]=(0,a.useState)(f(e));(0,a.useEffect)((()=>{t&&l.del()}),[t]);const c=(0,a.useCallback)((function(t,a){void 0===a&&(a={});const{persist:r=!0}=a;t?(o(t),r&&b(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?u.dark:u.light:e),l.del())}),[n,e]);(0,a.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(r))}),[r]),(0,a.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==s)return;const t=l.get();null!==t&&c(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,c]);const d=(0,a.useRef)(!1);return(0,a.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>{window.matchMedia("print").matches||d.current?d.current=window.matchMedia("print").matches:c(null)};return e.addListener(a),()=>e.removeListener(a)}),[c,t,n]),(0,a.useMemo)((()=>({colorMode:r,setColorMode:c,get isDarkTheme(){return r===u.dark},setLightTheme(){c(u.light)},setDarkTheme(){c(u.dark)}})),[r,c])}();return a.createElement(d.Provider,{value:n},t)}function m(){const e=(0,a.useContext)(d);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>m});var a=n(67294),r=n(80143),o=n(29935),c=n(86668),i=n(52802),d=n(902),s=n(50012);const l=e=>`docs-preferred-version-${e}`,u={save:(e,t,n)=>{(0,s.W)(l(e),{persistence:t}).set(n)},read:(e,t)=>(0,s.W)(l(e),{persistence:t}).get(),clear:(e,t)=>{(0,s.W)(l(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=a.createContext(null);function b(){const e=(0,r._r)(),t=(0,c.L)().docs.versionPersistence,n=(0,a.useMemo)((()=>Object.keys(e)),[e]),[o,i]=(0,a.useState)((()=>p(n)));(0,a.useEffect)((()=>{i(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:a}=e;function r(e){const t=u.read(e,n);return a[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(u.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,r(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,a.useMemo)((()=>({savePreferredVersion:function(e,n){u.save(e,t,n),i((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=b();return a.createElement(f.Provider,{value:n},t)}function m(e){let{children:t}=e;return i.cE?a.createElement(g,null,t):a.createElement(a.Fragment,null,t)}function h(){const e=(0,a.useContext)(f);if(!e)throw new d.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,r.zh)(e),[n,c]=h(),{preferredVersionName:i}=n[e];return{preferredVersion:t.versions.find((e=>e.name===i))??null,savePreferredVersionName:(0,a.useCallback)((t=>{c.savePreferredVersion(e,t)}),[c,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>d,b:()=>i});var a=n(67294),r=n(902);const o=Symbol("EmptyContext"),c=a.createContext(o);function i(e){let{children:t,name:n,items:r}=e;const o=(0,a.useMemo)((()=>n&&r?{name:n,items:r}:null),[n,r]);return a.createElement(c.Provider,{value:o},t)}function d(){const e=(0,a.useContext)(c);if(e===o)throw new r.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>i,q:()=>c});var a=n(67294),r=n(902);const o=a.createContext(null);function c(e){let{children:t,version:n}=e;return a.createElement(o.Provider,{value:n},t)}function i(){const e=(0,a.useContext)(o);if(null===e)throw new r.i6("DocsVersionProvider");return e}},72961:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var a=n(67294),r=n(13102),o=n(87524),c=n(16550),i=n(902);function d(e){!function(e){const t=(0,c.k6)(),n=(0,i.zX)(e);(0,a.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var s=n(86668);const l=a.createContext(void 0);function u(){const e=function(){const e=(0,r.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[c,i]=(0,a.useState)(!1);d((()=>{if(c)return i(!1),!1}));const l=(0,a.useCallback)((()=>{i((e=>!e))}),[]);return(0,a.useEffect)((()=>{"desktop"===t&&i(!1)}),[t]),(0,a.useMemo)((()=>({disabled:e,shouldRender:n,toggle:l,shown:c})),[e,n,l,c])}function p(e){let{children:t}=e;const n=u();return a.createElement(l.Provider,{value:n},t)}function f(){const e=a.useContext(l);if(void 0===e)throw new i.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>i,Zo:()=>d,n2:()=>c});var a=n(67294),r=n(902);const o=a.createContext(null);function c(e){let{children:t}=e;const n=(0,a.useState)({component:null,props:null});return a.createElement(o.Provider,{value:n},t)}function i(){const e=(0,a.useContext)(o);if(!e)throw new r.i6("NavbarSecondaryMenuContentProvider");return e[0]}function d(e){let{component:t,props:n}=e;const c=(0,a.useContext)(o);if(!c)throw new r.i6("NavbarSecondaryMenuContentProvider");const[,i]=c,d=(0,r.Ql)(n);return(0,a.useEffect)((()=>{i({component:t,props:d})}),[i,t,d]),(0,a.useEffect)((()=>()=>i({component:null,props:null})),[i]),null}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>r,t:()=>o});var a=n(67294);const r="navigation-with-keyboard";function o(){(0,a.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(r),"mousedown"===e.type&&document.body.classList.remove(r)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(r),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var a=n(67294),r=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},c=996;function i(){return r.Z.canUseDOM?window.innerWidth>c?o.desktop:o.mobile:o.ssr}const d=!1;function s(){const[e,t]=(0,a.useState)((()=>d?"ssr":i()));return(0,a.useEffect)((()=>{function e(){t(i())}const n=d?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});const a={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},52802:(e,t,n)=>{"use strict";n.d(t,{MN:()=>S,Wl:()=>b,_F:()=>y,cE:()=>p,jA:()=>g,xz:()=>f,hI:()=>E,lO:()=>w,vY:()=>k,oz:()=>x,s1:()=>v});var a=n(67294),r=n(16550),o=n(18790),c=n(80143),i=n(60373),d=n(74477),s=n(1116);function l(e){return Array.from(new Set(e))}var u=n(48596);const p=!!c._r;function f(e){const t=(0,d.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function b(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=b(t);if(e)return e}}}function g(){const{pathname:e}=(0,r.TH)(),t=(0,s.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=_({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const m=(e,t)=>void 0!==e&&(0,u.Mg)(e,t),h=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||h(e.items,t))}function _(e){let{sidebarItems:t,pathname:n,onlyCategories:a=!1}=e;const r=[];return function e(t){for(const o of t)if("category"===o.type&&((0,u.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,u.Mg)(o.href,n)){return a&&"category"!==o.type||r.unshift(o),!0}return!1}(t),r}function v(){const e=(0,s.V)(),{pathname:t}=(0,r.TH)(),n=(0,c.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?_({sidebarItems:e.items,pathname:t}):null}function w(e){const{activeVersion:t}=(0,c.Iw)(e),{preferredVersion:n}=(0,i.J)(e),r=(0,c.yW)(e);return(0,a.useMemo)((()=>l([t,n,r].filter(Boolean))),[t,n,r])}function x(e,t){const n=w(t);return(0,a.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),a=t.find((t=>t[0]===e));if(!a)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\n Available sidebar ids are:\n - ${Object.keys(t).join("\n- ")}`);return a[1]}),[e,n])}function k(e,t){const n=w(t);return(0,a.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),a=t.find((t=>t.id===e));if(!a){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`DocNavbarItem: couldn't find any doc with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${l(t.map((e=>e.id))).join("\n- ")}`)}return a}),[e,n])}function E(e){let{route:t,versionMetadata:n}=e;const a=(0,r.TH)(),c=t.routes,i=c.find((e=>(0,r.LX)(a.pathname,e)));if(!i)return null;const d=i.sidebar,s=d?n.docsSidebars[d]:void 0;return{docElement:(0,o.H)(c),sidebarName:d,sidebarItems:s}}function S(e){return e.filter((e=>"category"!==e.type||!!b(e)))}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>l,VC:()=>f});var a=n(67294),r=n(86010),o=n(35742),c=n(30226);function i(){const e=a.useContext(c._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var d=n(44996),s=n(52263);function l(e){let{title:t,description:n,keywords:r,image:c,children:i}=e;const l=function(e){const{siteConfig:t}=(0,s.Z)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}(t),{withBaseUrl:u}=(0,d.C)(),p=c?u(c,{absolute:!0}):void 0;return a.createElement(o.Z,null,t&&a.createElement("title",null,l),t&&a.createElement("meta",{property:"og:title",content:l}),n&&a.createElement("meta",{name:"description",content:n}),n&&a.createElement("meta",{property:"og:description",content:n}),r&&a.createElement("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&a.createElement("meta",{property:"og:image",content:p}),p&&a.createElement("meta",{name:"twitter:image",content:p}),i)}const u=a.createContext(void 0);function p(e){let{className:t,children:n}=e;const c=a.useContext(u),i=(0,r.Z)(c,t);return a.createElement(u.Provider,{value:i},a.createElement(o.Z,null,a.createElement("html",{className:i})),n)}function f(e){let{children:t}=e;const n=i(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const c=`plugin-id-${n.plugin.id}`;return a.createElement(p,{className:(0,r.Z)(o,c)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>c,Qc:()=>s,Ql:()=>d,i6:()=>i,zX:()=>o});var a=n(67294);const r=n(10412).Z.canUseDOM?a.useLayoutEffect:a.useEffect;function o(e){const t=(0,a.useRef)(e);return r((()=>{t.current=e}),[e]),(0,a.useCallback)((function(){return t.current(...arguments)}),[])}function c(e){const t=(0,a.useRef)();return r((()=>{t.current=e})),t.current}class i extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function d(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,a.useMemo)((()=>e),t.flat())}function s(e){return t=>{let{children:n}=t;return a.createElement(a.Fragment,null,e.reduceRight(((e,t)=>a.createElement(t,null,e)),n))}}},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>c,Ns:()=>i});var a=n(67294),r=n(723),o=n(52263);function c(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function i(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,a.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function a(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(a)||e(t.filter(r).flatMap((e=>e.routes??[])))}(n)}({routes:r.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>d,RF:()=>u});var a=n(67294),r=n(10412),o=n(72389),c=n(902);const i=a.createContext(void 0);function d(e){let{children:t}=e;const n=function(){const e=(0,a.useRef)(!0);return(0,a.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return a.createElement(i.Provider,{value:n},t)}function s(){const e=(0,a.useContext)(i);if(null==e)throw new c.i6("ScrollControllerProvider");return e}const l=()=>r.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function u(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=s(),r=(0,a.useRef)(l()),o=(0,c.zX)(e);(0,a.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=l();o(e,r.current),r.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=(0,a.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function a(){const r=document.documentElement.scrollTop;(n&&r>e||!n&&r<e)&&(t=requestAnimationFrame(a),window.scrollTo(0,Math.floor(.85*(r-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>a,os:()=>r});n(52263);const a="default";function r(e,t){return`docs-${e}-${t}`}},50012:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,_:()=>d});const a="localStorage";function r(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,o||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),o=!0),null}var t}let o=!1;const c={get:()=>null,set:()=>{},del:()=>{}};function i(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t}}(e);const n=r(t?.persistence);return null===n?c:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{n.setItem(e,t)}catch(a){console.error(`Docusaurus storage error, can't set ${e}=${t}`,a)}},del:()=>{try{n.removeItem(e)}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}}}}function d(e){void 0===e&&(e=a);const t=r(e);if(!t)return[];const n=[];for(let a=0;a<t.length;a+=1){const e=t.key(a);null!==e&&n.push(e)}return n}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var a=n(52263),r=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,a.Z)(),{pathname:c}=(0,r.TH)(),i=o===n?e:e.replace(`/${o}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:a,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===n?`${i}`:`${i}${e}/`}(a)}${d}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>c});var a=n(67294),r=n(16550),o=n(902);function c(e){const t=(0,r.TH)(),n=(0,o.D9)(t),c=(0,o.zX)(e);(0,a.useEffect)((()=>{n&&t!==n&&c({location:t,previousLocation:n})}),[c,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var a=n(52263);function r(){return(0,a.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:a}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[r]=e.split(/[#?]/),o="/"===r||r===a?r:(c=r,n?function(e){return e.endsWith("/")?e:`${e}/`}(c):function(e){return e.endsWith("/")?e.slice(0,-1):e}(c));var c;return e.replace(r,o)}},18780:function(e,t,n){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var r=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return a(r).default}})},86010:(e,t,n)=>{"use strict";function a(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=a(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}n.d(t,{Z:()=>r});const r=function(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=a(e))&&(r&&(r+=" "),r+=t);return r}},99318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>v,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var a=n(87462);function r(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,a=n+1,r=e.length;a<r;n+=1,a+=1)e[n]=e[a];e.pop()}const c=function(e,t){void 0===t&&(t="");var n,a=e&&e.split("/")||[],c=t&&t.split("/")||[],i=e&&r(e),d=t&&r(t),s=i||d;if(e&&r(e)?c=a:a.length&&(c.pop(),c=c.concat(a)),!c.length)return"/";if(c.length){var l=c[c.length-1];n="."===l||".."===l||""===l}else n=!1;for(var u=0,p=c.length;p>=0;p--){var f=c[p];"."===f?o(c,p):".."===f?(o(c,p),u++):u&&(o(c,p),u--)}if(!s)for(;u--;u)c.unshift("..");!s||""===c[0]||c[0]&&r(c[0])||c.unshift("");var b=c.join("/");return n&&"/"!==b.substr(-1)&&(b+="/"),b};var i=n(38776);function d(e){return"/"===e.charAt(0)?e:"/"+e}function s(e){return"/"===e.charAt(0)?e.substr(1):e}function l(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function u(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,a=e.hash,r=t||"/";return n&&"?"!==n&&(r+="?"===n.charAt(0)?n:"?"+n),a&&"#"!==a&&(r+="#"===a.charAt(0)?a:"#"+a),r}function f(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",a="",r=t.indexOf("#");-1!==r&&(a=t.substr(r),t=t.substr(0,r));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===a?"":a}}(e),o.state=t):(void 0===(o=(0,a.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=c(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,a,r){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof a?a(o,r):r(!0):r(!1!==o)}else r(!0)},appendListener:function(e){var n=!0;function a(){n&&e.apply(void 0,arguments)}return t.push(a),function(){n=!1,t=t.filter((function(e){return e!==a}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];t.forEach((function(e){return e.apply(void 0,n)}))}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function m(e,t){t(window.confirm(e))}var h="popstate",y="hashchange";function _(){try{return window.history.state||{}}catch(e){return{}}}function v(e){void 0===e&&(e={}),g||(0,i.Z)(!1);var t,n=window.history,r=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),c=e,s=c.forceRefresh,v=void 0!==s&&s,w=c.getUserConfirmation,x=void 0===w?m:w,k=c.keyLength,E=void 0===k?6:k,S=e.basename?u(d(e.basename)):"";function C(e){var t=e||{},n=t.key,a=t.state,r=window.location,o=r.pathname+r.search+r.hash;return S&&(o=l(o,S)),f(o,a,n)}function T(){return Math.random().toString(36).substr(2,E)}var A=b();function L(e){(0,a.Z)(z,e),z.length=n.length,A.notifyListeners(z.location,z.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(C(e.state))}function R(){O(C(_()))}var N=!1;function O(e){if(N)N=!1,L();else{A.confirmTransitionTo(e,"POP",x,(function(t){t?L({action:"POP",location:e}):function(e){var t=z.location,n=M.indexOf(t.key);-1===n&&(n=0);var a=M.indexOf(e.key);-1===a&&(a=0);var r=n-a;r&&(N=!0,I(r))}(e)}))}}var j=C(_()),M=[j.key];function D(e){return S+p(e)}function I(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(h,P),o&&window.addEventListener(y,R)):0===F&&(window.removeEventListener(h,P),o&&window.removeEventListener(y,R))}var q=!1;var z={length:n.length,action:"POP",location:j,createHref:D,push:function(e,t){var a="PUSH",o=f(e,t,T(),z.location);A.confirmTransitionTo(o,a,x,(function(e){if(e){var t=D(o),c=o.key,i=o.state;if(r)if(n.pushState({key:c,state:i},null,t),v)window.location.href=t;else{var d=M.indexOf(z.location.key),s=M.slice(0,d+1);s.push(o.key),M=s,L({action:a,location:o})}else window.location.href=t}}))},replace:function(e,t){var a="REPLACE",o=f(e,t,T(),z.location);A.confirmTransitionTo(o,a,x,(function(e){if(e){var t=D(o),c=o.key,i=o.state;if(r)if(n.replaceState({key:c,state:i},null,t),v)window.location.replace(t);else{var d=M.indexOf(z.location.key);-1!==d&&(M[d]=o.key),L({action:a,location:o})}else window.location.replace(t)}}))},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return q||(B(1),q=!0),function(){return q&&(q=!1,B(-1)),t()}},listen:function(e){var t=A.appendListener(e);return B(1),function(){B(-1),t()}}};return z}var w="hashchange",x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+s(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:s,decodePath:d},slash:{encodePath:d,decodePath:d}};function k(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function S(e){window.location.replace(k(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),g||(0,i.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),r=n.getUserConfirmation,o=void 0===r?m:r,c=n.hashType,s=void 0===c?"slash":c,h=e.basename?u(d(e.basename)):"",y=x[s],_=y.encodePath,v=y.decodePath;function C(){var e=v(E());return h&&(e=l(e,h)),f(e)}var T=b();function A(e){(0,a.Z)(q,e),q.length=t.length,T.notifyListeners(q.location,q.action)}var L=!1,P=null;function R(){var e,t,n=E(),a=_(n);if(n!==a)S(a);else{var r=C(),c=q.location;if(!L&&(t=r,(e=c).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===p(r))return;P=null,function(e){if(L)L=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=q.location,n=M.lastIndexOf(p(t));-1===n&&(n=0);var a=M.lastIndexOf(p(e));-1===a&&(a=0);var r=n-a;r&&(L=!0,D(r))}(e)}))}}(r)}}var N=E(),O=_(N);N!==O&&S(O);var j=C(),M=[p(j)];function D(e){t.go(e)}var I=0;function F(e){1===(I+=e)&&1===e?window.addEventListener(w,R):0===I&&window.removeEventListener(w,R)}var B=!1;var q={length:t.length,action:"POP",location:j,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=k(window.location.href)),n+"#"+_(h+p(e))},push:function(e,t){var n="PUSH",a=f(e,void 0,void 0,q.location);T.confirmTransitionTo(a,n,o,(function(e){if(e){var t=p(a),r=_(h+t);if(E()!==r){P=t,function(e){window.location.hash=e}(r);var o=M.lastIndexOf(p(q.location)),c=M.slice(0,o+1);c.push(t),M=c,A({action:n,location:a})}else A()}}))},replace:function(e,t){var n="REPLACE",a=f(e,void 0,void 0,q.location);T.confirmTransitionTo(a,n,o,(function(e){if(e){var t=p(a),r=_(h+t);E()!==r&&(P=t,S(r));var o=M.indexOf(p(q.location));-1!==o&&(M[o]=t),A({action:n,location:a})}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=T.appendListener(e);return F(1),function(){F(-1),t()}}};return q}function T(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,r=t.initialEntries,o=void 0===r?["/"]:r,c=t.initialIndex,i=void 0===c?0:c,d=t.keyLength,s=void 0===d?6:d,l=b();function u(e){(0,a.Z)(v,e),v.length=v.entries.length,l.notifyListeners(v.location,v.action)}function g(){return Math.random().toString(36).substr(2,s)}var m=T(i,0,o.length-1),h=o.map((function(e){return f(e,void 0,"string"==typeof e?g():e.key||g())})),y=p;function _(e){var t=T(v.index+e,0,v.entries.length-1),a=v.entries[t];l.confirmTransitionTo(a,"POP",n,(function(e){e?u({action:"POP",location:a,index:t}):u()}))}var v={length:h.length,action:"POP",location:h[m],index:m,entries:h,createHref:y,push:function(e,t){var a="PUSH",r=f(e,t,g(),v.location);l.confirmTransitionTo(r,a,n,(function(e){if(e){var t=v.index+1,n=v.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),u({action:a,location:r,index:t,entries:n})}}))},replace:function(e,t){var a="REPLACE",r=f(e,t,g(),v.location);l.confirmTransitionTo(r,a,n,(function(e){e&&(v.entries[v.index]=r,u({action:a,location:r}))}))},go:_,goBack:function(){_(-1)},goForward:function(){_(1)},canGo:function(e){var t=v.index+e;return t>=0&&t<v.entries.length},block:function(e){return void 0===e&&(e=!1),l.setPrompt(e)},listen:function(e){return l.appendListener(e)}};return v}},8679:(e,t,n)=>{"use strict";var a=n(59864),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},c={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function d(e){return a.isMemo(e)?c:i[e.$$typeof]||r}i[a.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[a.Memo]=c;var s=Object.defineProperty,l=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,b=Object.prototype;e.exports=function e(t,n,a){if("string"!=typeof n){if(b){var r=f(n);r&&r!==b&&e(t,r,a)}var c=l(n);u&&(c=c.concat(u(n)));for(var i=d(t),g=d(n),m=0;m<c.length;++m){var h=c[m];if(!(o[h]||a&&a[h]||g&&g[h]||i&&i[h])){var y=p(n,h);try{s(t,h,y)}catch(_){}}}}return t}},41143:e=>{"use strict";e.exports=function(e,t,n,a,r,o,c,i){if(!e){var d;if(void 0===t)d=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,a,r,o,c,i],l=0;(d=new Error(t.replace(/%s/g,(function(){return s[l++]})))).name="Invariant Violation"}throw d.framesToPop=1,d}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},32497:(e,t,n)=>{"use strict";n.r(t)},52295:(e,t,n)=>{"use strict";n.r(t)},74865:function(e,t,n){var a,r;a=function(){var e,t,n={version:"0.2.0"},a=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function r(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function c(e,t,n){var r;return(r="translate3d"===a.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,r}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(a[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=r(e,a.minimum,1),n.status=1===e?null:e;var o=n.render(!t),s=o.querySelector(a.barSelector),l=a.speed,u=a.easing;return o.offsetWidth,i((function(t){""===a.positionUsing&&(a.positionUsing=n.getPositioningCSS()),d(s,c(e,l,u)),1===e?(d(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){d(o,{transition:"all "+l+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),l)}),l)):setTimeout(t,l)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),a.trickleSpeed)};return a.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*r(Math.random()*t,.1,.95)),t=r(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*a.trickleRate)},e=0,t=0,n.promise=function(a){return a&&"resolved"!==a.state()?(0===t&&n.start(),e++,t++,a.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=a.template;var r,c=t.querySelector(a.barSelector),i=e?"-100":o(n.status||0),s=document.querySelector(a.parent);return d(c,{transition:"all 0 linear",transform:"translate3d("+i+"%,0,0)"}),a.showSpinner||(r=t.querySelector(a.spinnerSelector))&&f(r),s!=document.body&&l(s,"nprogress-custom-parent"),s.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(a.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var i=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),d=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function a(t){var n=document.body.style;if(t in n)return t;for(var a,r=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((a=e[r]+o)in n)return a;return t}function r(e){return e=n(e),t[e]||(t[e]=a(e))}function o(e,t,n){t=r(t),e.style[t]=n}return function(e,t){var n,a,r=arguments;if(2==r.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&o(e,n,a);else o(e,r[1],r[2])}}();function s(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function l(e,t){var n=p(e),a=n+t;s(n,t)||(e.className=a.substring(1))}function u(e,t){var n,a=p(e);s(e,t)&&(n=a.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(r="function"==typeof a?a.call(t,n,t,e):a)||(e.exports=r)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach((function(e){a[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},a)).join("")}catch(r){return!1}}()?Object.assign:function(e,r){for(var o,c,i=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),d=1;d<arguments.length;d++){for(var s in o=Object(arguments[d]))n.call(o,s)&&(i[s]=o[s]);if(t){c=t(o);for(var l=0;l<c.length;l++)a.call(o,c[l])&&(i[c[l]]=o[c[l]])}}return i}},87410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},a={util:{encode:function e(t){return t instanceof r?new r(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var r,o;switch(n=n||{},a.util.type(t)){case"Object":if(o=a.util.objId(t),n[o])return n[o];for(var c in r={},n[o]=r,t)t.hasOwnProperty(c)&&(r[c]=e(t[c],n));return r;case"Array":return o=a.util.objId(t),n[o]?n[o]:(r=[],n[o]=r,t.forEach((function(t,a){r[a]=e(t,n)})),r);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var a="no-"+t;e;){var r=e.classList;if(r.contains(t))return!0;if(r.contains(a))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=a.util.clone(a.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){var o=(r=r||a.languages)[e],c={};for(var i in o)if(o.hasOwnProperty(i)){if(i==t)for(var d in n)n.hasOwnProperty(d)&&(c[d]=n[d]);n.hasOwnProperty(i)||(c[i]=o[i])}var s=r[e];return r[e]=c,a.languages.DFS(a.languages,(function(t,n){n===s&&t!=e&&(this[t]=c)})),c},DFS:function e(t,n,r,o){o=o||{};var c=a.util.objId;for(var i in t)if(t.hasOwnProperty(i)){n.call(t,i,t[i],r||i);var d=t[i],s=a.util.type(d);"Object"!==s||o[c(d)]?"Array"!==s||o[c(d)]||(o[c(d)]=!0,e(d,n,i,o)):(o[c(d)]=!0,e(d,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return a.hooks.run("before-tokenize",o),o.tokens=a.tokenize(o.code,o.grammar),a.hooks.run("after-tokenize",o),r.stringify(a.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var a in n)t[a]=n[a];delete t.rest}var r=new i;return d(r,r.head,e),c(e,r,t,r.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(r)},hooks:{all:{},add:function(e,t){var n=a.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=a.hooks.all[e];if(n&&n.length)for(var r,o=0;r=n[o++];)r(t)}},Token:r};function r(e,t,n,a){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length}function o(e,t,n,a){e.lastIndex=t;var r=e.exec(n);if(r&&a&&r[1]){var o=r[1].length;r.index+=o,r[0]=r[0].slice(o)}return r}function c(e,t,n,i,l,u){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var b=0;b<f.length;++b){if(u&&u.cause==p+","+b)return;var g=f[b],m=g.inside,h=!!g.lookbehind,y=!!g.greedy,_=g.alias;if(y&&!g.pattern.global){var v=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,v+"g")}for(var w=g.pattern||g,x=i.next,k=l;x!==t.tail&&!(u&&k>=u.reach);k+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof r)){var S,C=1;if(y){if(!(S=o(w,k,e,h))||S.index>=e.length)break;var T=S.index,A=S.index+S[0].length,L=k;for(L+=x.value.length;T>=L;)L+=(x=x.next).value.length;if(k=L-=x.value.length,x.value instanceof r)continue;for(var P=x;P!==t.tail&&(L<A||"string"==typeof P.value);P=P.next)C++,L+=P.value.length;C--,E=e.slice(k,L),S.index-=k}else if(!(S=o(w,0,E,h)))continue;T=S.index;var R=S[0],N=E.slice(0,T),O=E.slice(T+R.length),j=k+E.length;u&&j>u.reach&&(u.reach=j);var M=x.prev;if(N&&(M=d(t,M,N),k+=N.length),s(t,M,C),x=d(t,M,new r(p,m?a.tokenize(R,m):R,_,R)),O&&d(t,x,O),C>1){var D={cause:p+","+b,reach:j};c(e,t,n,x.prev,k,D),u&&D.reach>u.reach&&(u.reach=D.reach)}}}}}}function i(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function d(e,t,n){var a=t.next,r={value:n,prev:t,next:a};return t.next=r,a.prev=r,e.length++,r}function s(e,t,n){for(var a=t.next,r=0;r<n&&a!==e.tail;r++)a=a.next;t.next=a,a.prev=t,e.length-=r}return r.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var r="";return t.forEach((function(t){r+=e(t,n)})),r}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},c=t.alias;c&&(Array.isArray(c)?Array.prototype.push.apply(o.classes,c):o.classes.push(c)),a.hooks.run("wrap",o);var i="";for(var d in o.attributes)i+=" "+d+'="'+(o.attributes[d]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+i+">"+o.content+"</"+o.tag+">"},a}(),r=a;a.default=a,r.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:r.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};a["language-"+t]={pattern:/[\s\S]+/,inside:r.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:a},r.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(e,t){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:r.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var r=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=a.variable[1].inside,c=0;c<r.length;c++)o[r[c]]=e.languages.bash[r[c]];e.languages.shell=e.languages.bash}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.c=r.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),r.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),r.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},r.languages.c.string],char:r.languages.c.char,comment:r.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:r.languages.c}}}}),r.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete r.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(r),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(r),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var a={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},r={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:a,number:r,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:a,number:r})}(r),r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(r),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,a="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",r=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function c(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return a})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return a}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return a})).replace(/<<key>>/g,(function(){return"(?:"+r+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:c(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:c(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:c(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:c(o),lookbehind:!0,greedy:!0},number:{pattern:c(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(r),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var a=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,r=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return a})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+r+o+"(?:"+r+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+r+o+")(?:"+r+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(a),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+r+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+r+"$"),inside:{"table-header":{pattern:RegExp(a),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,a=t.length;n<a;n++){var r=t[n];if("code"===r.type){var o=r.content[1],c=r.content[3];if(o&&c&&"code-language"===o.type&&"code-block"===c.type&&"string"==typeof o.content){var i=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),d="language-"+(i=(/[a-z][\w-]*/i.exec(i)||[""])[0].toLowerCase());c.alias?"string"==typeof c.alias?c.alias=[c.alias,d]:c.alias.push(d):c.alias=[d]}}else e(r.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",a=0,r=t.classes.length;a<r;a++){var o=t.classes[a],s=/language-(.+)/.exec(o);if(s){n=s[1];break}}var l,u=e.languages[n];if(u)t.content=e.highlight((l=t.content,l.replace(c,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),d(n);var a=i[t];return a||e}))),u,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var c=RegExp(e.languages.markup.tag.pattern.source,"gi"),i={amp:"&",lt:"<",gt:">",quot:'"'},d=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(r),r.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:r.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},r.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var a=t[n++];if("keyword"===a.type&&"mutation"===a.content){var r=[];if(u(["definition-mutation","punctuation"])&&"("===l(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var c=l(0);"variable"===c.type&&(f(c,"variable-input"),r.push(c.content))}n=o+1}if(u(["punctuation","property-query"])&&"{"===l(0).content&&(n++,f(l(0),"property-mutation"),r.length>0)){var i=p(/^\{$/,/^\}$/);if(-1===i)continue;for(var d=n;d<i;d++){var s=t[d];"variable"===s.type&&r.indexOf(s.content)>=0&&f(s,"variable-input")}}}}function l(e){return t[n+e]}function u(e,t){t=t||0;for(var n=0;n<e.length;n++){var a=l(n+t);if(!a||a.type!==e[n])return!1}return!0}function p(e,a){for(var r=1,o=n;o<t.length;o++){var c=t[o],i=c.content;if("punctuation"===c.type&&"string"==typeof i)if(e.test(i))r++;else if(a.test(i)&&0===--r)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),r.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,a=t.inside.interpolation,r=a.inside["interpolation-punctuation"],o=a.pattern.source;function c(t,a){if(e.languages[t])return{pattern:RegExp("((?:"+a+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function i(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function d(t,n,a){var r={code:t,grammar:n,language:a};return e.hooks.run("before-tokenize",r),r.tokens=e.tokenize(r.code,r.grammar),e.hooks.run("after-tokenize",r),r.tokens}function s(t){var n={};n["interpolation-punctuation"]=r;var o=e.tokenize(t,n);if(3===o.length){var c=[1,1];c.push.apply(c,d(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,c)}return new e.Token("interpolation",o,a.alias,t)}function l(t,n,a){var r=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),c=0,l={},u=d(r.map((function(e){if("string"==typeof e)return e;for(var n,r=e.content;-1!==t.indexOf(n=i(c++,a)););return l[n]=r,n})).join(""),n,a),p=Object.keys(l);return c=0,function e(t){for(var n=0;n<t.length;n++){if(c>=p.length)return;var a=t[n];if("string"==typeof a||"string"==typeof a.content){var r=p[c],o="string"==typeof a?a:a.content,i=o.indexOf(r);if(-1!==i){++c;var d=o.substring(0,i),u=s(l[r]),f=o.substring(i+r.length),b=[];if(d&&b.push(d),b.push(u),f){var g=[f];e(g),b.push.apply(b,g)}"string"==typeof a?(t.splice.apply(t,[n,1].concat(b)),n+=b.length-1):a.content=b}}else{var m=a.content;Array.isArray(m)?e(m):e([m])}}}(u),new e.Token(a,u,"language-"+a,t)}e.languages.javascript["template-string"]=[c("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),c("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),c("svg",/\bsvg/.source),c("markdown",/\b(?:markdown|md)/.source),c("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),c("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var a=0,r=n.length;a<r;a++){var o=n[a];if("string"!=typeof o){var c=o.content;if(Array.isArray(c))if("template-string"===o.type){var i=c[1];if(3===c.length&&"string"!=typeof i&&"embedded-code"===i.type){var d=p(i),s=i.alias,u=Array.isArray(s)?s[0]:s,f=e.languages[u];if(!f)continue;c[1]=l(d,f,u)}}else t(c);else"string"!=typeof c&&t([c])}}}(t.tokens)}))}(r),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(r),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],a=0;a<n.length;a++){var r=n[a],o=e.languages.javascript[r];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[r]={pattern:o});var c=o.inside||{};o.inside=c,c["maybe-class-name"]=/^[A-Z][\s\S]*/}}(r),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,a=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,r=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return a})).replace(/<SPREAD>/g,(function(){return r})),RegExp(e,t)}r=o(r).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var c=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(c).join(""):""},i=function(t){for(var n=[],a=0;a<t.length;a++){var r=t[a],o=!1;if("string"!=typeof r&&("tag"===r.type&&r.content[0]&&"tag"===r.content[0].type?"</"===r.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===c(r.content[0].content[1])&&n.pop():"/>"===r.content[r.content.length-1].content||n.push({tagName:c(r.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===r.type&&"{"===r.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===r.type&&"}"===r.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof r)&&n.length>0&&0===n[n.length-1].openedBraces){var d=c(r);a<t.length-1&&("string"==typeof t[a+1]||"plain-text"===t[a+1].type)&&(d+=c(t[a+1]),t.splice(a+1,1)),a>0&&("string"==typeof t[a-1]||"plain-text"===t[a-1].type)&&(d=c(t[a-1])+d,t.splice(a-1,1),a--),t[a]=new e.Token("plain-text",d,null,d)}r.content&&"string"!=typeof r.content&&i(r.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(r),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var a=t[n],r=[];/^\w+$/.test(n)||r.push(/\w+/.exec(n)[0]),"diff"===n&&r.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+a+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:r,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(r),r.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},r.languages.go=r.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),r.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete r.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,a,r,o){if(n.language===a){var c=n.tokenStack=[];n.code=n.code.replace(r,(function(e){if("function"==typeof o&&!o(e))return e;for(var r,i=c.length;-1!==n.code.indexOf(r=t(a,i));)++i;return c[i]=e,r})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,a){if(n.language===a&&n.tokenStack){n.grammar=e.languages[a];var r=0,o=Object.keys(n.tokenStack);!function c(i){for(var d=0;d<i.length&&!(r>=o.length);d++){var s=i[d];if("string"==typeof s||s.content&&"string"==typeof s.content){var l=o[r],u=n.tokenStack[l],p="string"==typeof s?s:s.content,f=t(a,l),b=p.indexOf(f);if(b>-1){++r;var g=p.substring(0,b),m=new e.Token(a,e.tokenize(u,n.grammar),"language-"+a,u),h=p.substring(b+f.length),y=[];g&&y.push.apply(y,c([g])),y.push(m),h&&y.push.apply(y,c([h])),"string"==typeof s?i.splice.apply(i,[d,1].concat(y)):s.content=y}}else s.content&&c(s.content)}return i}(n.tokens)}}}})}(r),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(r),r.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},r.languages.webmanifest=r.languages.json,r.languages.less=r.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),r.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),r.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},r.languages.objectivec=r.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete r.languages.objectivec["class-name"],r.languages.objc=r.languages.objectivec,r.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},r.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},r.languages.python["string-interpolation"].inside.interpolation.inside.rest=r.languages.python,r.languages.py=r.languages.python,r.languages.reason=r.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),r.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete r.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(r),r.languages.scss=r.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),r.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),r.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),r.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),r.languages.scss.atrule.inside.rest=r.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},a={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};a.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:a}},a.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:a}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:a}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:a}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:a}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:a.interpolation}},rest:a}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:a.interpolation,comment:a.comment,punctuation:/[{},]/}},func:a.func,string:a.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:a.interpolation,punctuation:/[{}()\[\];:.]/}}(r),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(r),r.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=r},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const a=n(29901),r=n(39642),o=new Set;function c(e){void 0===e?e=Object.keys(a.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];r(a,e,t).load((e=>{if(!(e in a.languages))return void(c.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}c.silent=!1,e.exports=c},6726:(e,t,n)=>{var a={"./":2885};function r(e){var t=o(e);return n(t)}function o(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=o,e.exports=r,r.id=6726},16500:(e,t,n)=>{var a={"./":2885};function r(e){var t=o(e);return n(t)}function o(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=o,e.exports=r,r.id=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,a=e.length;n<a;n++)t[e[n]]=!0;return t}function a(e){var n={},a=[];function r(a,o){if(!(a in n)){o.push(a);var c=o.indexOf(a);if(c<o.length-1)throw new Error("Circular dependency: "+o.slice(c).join(" -> "));var i={},d=e[a];if(d){function s(t){if(!(t in e))throw new Error(a+" depends on an unknown component "+t);if(!(t in i))for(var c in r(t,o),i[t]=!0,n[t])i[c]=!0}t(d.require,s),t(d.optional,s),t(d.modify,s)}n[a]=i,o.pop()}}return function(e){var t=n[e];return t||(r(e,a),t=n[e]),t}}function r(e){for(var t in e)return!0;return!1}return function(o,c,i){var d=function(e){var t={};for(var n in e){var a=e[n];for(var r in a)if("meta"!=r){var o=a[r];t[r]="string"==typeof o?{title:o}:o}}return t}(o),s=function(e){var n;return function(a){if(a in e)return a;if(!n)for(var r in n={},e){var o=e[r];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+r+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+r+" because it is a component.");n[t]=r}))}return n[a]||a}}(d);c=c.map(s),i=(i||[]).map(s);var l=n(c),u=n(i);c.forEach((function e(n){var a=d[n];t(a&&a.require,(function(t){t in u||(l[t]=!0,e(t))}))}));for(var p,f=a(d),b=l;r(b);){for(var g in p={},b){var m=d[g];t(m&&m.modify,(function(e){e in u&&(p[e]=!0)}))}for(var h in u)if(!(h in l))for(var y in f(h))if(y in l){p[h]=!0;break}for(var _ in b=p)l[_]=!0}var v={getIds:function(){var e=[];return v.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,a,r){var o=r?r.series:void 0,c=r?r.parallel:e,i={},d={};function s(e){if(e in i)return i[e];d[e]=!0;var r,l=[];for(var u in t(e))u in n&&l.push(u);if(0===l.length)r=a(e);else{var p=c(l.map((function(e){var t=s(e);return delete d[e],t})));o?r=o(p,(function(){return a(e)})):a(e)}return i[e]=r}for(var l in n)s(l);var u=[];for(var p in d)u.push(i[p]);return c(u)}(f,l,t,n)}};return v}}();e.exports=t},92703:(e,t,n)=>{"use strict";var a=n(50414);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,c){if(c!==a){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var a=n(67294),r=n(27418),o=n(63840);function c(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!a)throw Error(c(227));var i=new Set,d={};function s(e,t){l(e,t),l(e+"Capture",t)}function l(e,t){for(d[e]=t,e=0;e<t.length;e++)i.add(t[e])}var u=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f=Object.prototype.hasOwnProperty,b={},g={};function m(e,t,n,a,r,o,c){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=a,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=c}var h={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){h[e]=new m(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];h[t]=new m(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){h[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){h[e]=new m(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){h[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){h[e]=new m(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){h[e]=new m(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){h[e]=new m(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){h[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function _(e){return e[1].toUpperCase()}function v(e,t,n,a){var r=h.hasOwnProperty(t)?h[t]:null;(null!==r?0===r.type:!a&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,a){if(null==t||function(e,t,n,a){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!a&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,a))return!0;if(a)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,r,a)&&(n=null),a||null===r?function(e){return!!f.call(g,e)||!f.call(b,e)&&(p.test(e)?g[e]=!0:(b[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=null===n?3!==r.type&&"":n:(t=r.attributeName,a=r.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(r=r.type)||4===r&&!0===n?"":""+n,a?e.setAttributeNS(a,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,_);h[t]=new m(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,_);h[t]=new m(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,_);h[t]=new m(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){h[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),h.xlinkHref=new m("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){h[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,x=60103,k=60106,E=60107,S=60108,C=60114,T=60109,A=60110,L=60112,P=60113,R=60120,N=60115,O=60116,j=60121,M=60128,D=60129,I=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;x=B("react.element"),k=B("react.portal"),E=B("react.fragment"),S=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),A=B("react.context"),L=B("react.forward_ref"),P=B("react.suspense"),R=B("react.suspense_list"),N=B("react.memo"),O=B("react.lazy"),j=B("react.block"),B("react.scope"),M=B("react.opaque.id"),D=B("react.debug_trace_mode"),I=B("react.offscreen"),F=B("react.legacy_hidden")}var q,z="function"==typeof Symbol&&Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=z&&e[z]||e["@@iterator"])?e:null}function $(e){if(void 0===q)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);q=t&&t[1]||""}return"\n"+q+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(d){var a=d}Reflect.construct(e,[],t)}else{try{t.call()}catch(d){a=d}e.call(t.prototype)}else{try{throw Error()}catch(d){a=d}e()}}catch(d){if(d&&a&&"string"==typeof d.stack){for(var r=d.stack.split("\n"),o=a.stack.split("\n"),c=r.length-1,i=o.length-1;1<=c&&0<=i&&r[c]!==o[i];)i--;for(;1<=c&&0<=i;c--,i--)if(r[c]!==o[i]){if(1!==c||1!==i)do{if(c--,0>--i||r[c]!==o[i])return"\n"+r[c].replace(" at new "," at ")}while(1<=c&&0<=i);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?$(e):""}function Z(e){switch(e.tag){case 5:return $(e.type);case 16:return $("Lazy");case 13:return $("Suspense");case 19:return $("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case E:return"Fragment";case k:return"Portal";case C:return"Profiler";case S:return"StrictMode";case P:return"Suspense";case R:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case N:return V(e.type);case j:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Q(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Y(e){e._valueTracker||(e._valueTracker=function(e){var t=Q(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var r=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(e){a=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return a},setValue:function(e){a=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function K(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=Q(e)?e.checked?"true":"false":e.value),(e=a)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,a=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:a,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),a=t.type;if(null!=n)"number"===a?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===a||"reset"===a)return void e.removeAttribute("value");t.hasOwnProperty("value")?re(e,t.type,n):t.hasOwnProperty("defaultValue")&&re(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function ae(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var a=t.type;if(!("submit"!==a&&"reset"!==a||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function re(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=r({children:void 0},t),(t=function(e){var t="";return a.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ce(e,t,n,a){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&a&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,r=0;r<e.length;r++){if(e[r].value===n)return e[r].selected=!0,void(a&&(e[r].defaultSelected=!0));null!==t||e[r].disabled||(t=e[r])}null!==t&&(t.selected=!0)}}function ie(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(c(91));return r({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function de(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(c(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(c(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function se(e,t){var n=W(t.value),a=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=a&&(e.defaultValue=""+a)}function le(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var ue={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var be,ge,me=(ge=function(e,t){if(e.namespaceURI!==ue.svg||"innerHTML"in e)e.innerHTML=t;else{for((be=be||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=be.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,a){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function he(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ye={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},_e=["Webkit","ms","Moz","O"];function ve(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ye.hasOwnProperty(e)&&ye[e]?(""+t).trim():t+"px"}function we(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var a=0===n.indexOf("--"),r=ve(n,t[n],a);"float"===n&&(n="cssFloat"),a?e.setProperty(n,r):e[n]=r}}Object.keys(ye).forEach((function(e){_e.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ye[t]=ye[e]}))}));var xe=r({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ke(e,t){if(t){if(xe[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(c(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(c(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(c(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(c(62))}}function Ee(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Se(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Le(e){if(e=nr(e)){if("function"!=typeof Ce)throw Error(c(280));var t=e.stateNode;t&&(t=rr(t),Ce(e.stateNode,e.type,t))}}function Pe(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Re(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Ne(e,t){return e(t)}function Oe(e,t,n,a,r){return e(t,n,a,r)}function je(){}var Me=Ne,De=!1,Ie=!1;function Fe(){null===Te&&null===Ae||(je(),Re())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var a=rr(n);if(null===a)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(a=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!a;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(c(231,t,typeof n));return n}var qe=!1;if(u)try{var ze={};Object.defineProperty(ze,"passive",{get:function(){qe=!0}}),window.addEventListener("test",ze,ze),window.removeEventListener("test",ze,ze)}catch(ge){qe=!1}function Ue(e,t,n,a,r,o,c,i,d){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(l){this.onError(l)}}var $e=!1,He=null,Ge=!1,Ze=null,Ve={onError:function(e){$e=!0,He=e}};function We(e,t,n,a,r,o,c,i,d){$e=!1,He=null,Ue.apply(Ve,arguments)}function Qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ke(e){if(Qe(e)!==e)throw Error(c(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Qe(e)))throw Error(c(188));return t!==e?null:e}for(var n=e,a=t;;){var r=n.return;if(null===r)break;var o=r.alternate;if(null===o){if(null!==(a=r.return)){n=a;continue}break}if(r.child===o.child){for(o=r.child;o;){if(o===n)return Ke(r),e;if(o===a)return Ke(r),t;o=o.sibling}throw Error(c(188))}if(n.return!==a.return)n=r,a=o;else{for(var i=!1,d=r.child;d;){if(d===n){i=!0,n=r,a=o;break}if(d===a){i=!0,a=r,n=o;break}d=d.sibling}if(!i){for(d=o.child;d;){if(d===n){i=!0,n=o,a=r;break}if(d===a){i=!0,a=o,n=r;break}d=d.sibling}if(!i)throw Error(c(189))}}if(n.alternate!==a)throw Error(c(190))}if(3!==n.tag)throw Error(c(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,at,rt=!1,ot=[],ct=null,it=null,dt=null,st=new Map,lt=new Map,ut=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function ft(e,t,n,a,r){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:r,targetContainers:[a]}}function bt(e,t){switch(e){case"focusin":case"focusout":ct=null;break;case"dragenter":case"dragleave":it=null;break;case"mouseover":case"mouseout":dt=null;break;case"pointerover":case"pointerout":st.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":lt.delete(t.pointerId)}}function gt(e,t,n,a,r,o){return null===e||e.nativeEvent!==o?(e=ft(t,n,a,r,o),null!==t&&(null!==(t=nr(t))&&tt(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,null!==r&&-1===t.indexOf(r)&&t.push(r),e)}function mt(e){var t=tr(e.target);if(null!==t){var n=Qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void at(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function ht(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=nr(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){ht(e)&&n.delete(t)}function _t(){for(rt=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=nr(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==ct&&ht(ct)&&(ct=null),null!==it&&ht(it)&&(it=null),null!==dt&&ht(dt)&&(dt=null),st.forEach(yt),lt.forEach(yt)}function vt(e,t){e.blockedOn===t&&(e.blockedOn=null,rt||(rt=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,_t)))}function wt(e){function t(t){return vt(t,e)}if(0<ot.length){vt(ot[0],e);for(var n=1;n<ot.length;n++){var a=ot[n];a.blockedOn===e&&(a.blockedOn=null)}}for(null!==ct&&vt(ct,e),null!==it&&vt(it,e),null!==dt&&vt(dt,e),st.forEach(t),lt.forEach(t),n=0;n<ut.length;n++)(a=ut[n]).blockedOn===e&&(a.blockedOn=null);for(;0<ut.length&&null===(n=ut[0]).blockedOn;)mt(n),null===n.blockedOn&&ut.shift()}function xt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var kt={animationend:xt("Animation","AnimationEnd"),animationiteration:xt("Animation","AnimationIteration"),animationstart:xt("Animation","AnimationStart"),transitionend:xt("Transition","TransitionEnd")},Et={},St={};function Ct(e){if(Et[e])return Et[e];if(!kt[e])return e;var t,n=kt[e];for(t in n)if(n.hasOwnProperty(t)&&t in St)return Et[e]=n[t];return e}u&&(St=document.createElement("div").style,"AnimationEvent"in window||(delete kt.animationend.animation,delete kt.animationiteration.animation,delete kt.animationstart.animation),"TransitionEvent"in window||delete kt.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Lt=Ct("animationstart"),Pt=Ct("transitionend"),Rt=new Map,Nt=new Map,Ot=["abort","abort",Tt,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Pt,"transitionEnd","waiting","waiting"];function jt(e,t){for(var n=0;n<e.length;n+=2){var a=e[n],r=e[n+1];r="on"+(r[0].toUpperCase()+r.slice(1)),Nt.set(a,t),Rt.set(a,r),s(r,[a])}}(0,o.unstable_now)();var Mt=8;function Dt(e){if(0!=(1&e))return Mt=15,1;if(0!=(2&e))return Mt=14,2;if(0!=(4&e))return Mt=13,4;var t=24&e;return 0!==t?(Mt=12,t):0!=(32&e)?(Mt=11,32):0!==(t=192&e)?(Mt=10,t):0!=(256&e)?(Mt=9,256):0!==(t=3584&e)?(Mt=8,t):0!=(4096&e)?(Mt=7,4096):0!==(t=4186112&e)?(Mt=6,t):0!==(t=62914560&e)?(Mt=5,t):67108864&e?(Mt=4,67108864):0!=(134217728&e)?(Mt=3,134217728):0!==(t=805306368&e)?(Mt=2,t):0!=(1073741824&e)?(Mt=1,1073741824):(Mt=8,e)}function It(e,t){var n=e.pendingLanes;if(0===n)return Mt=0;var a=0,r=0,o=e.expiredLanes,c=e.suspendedLanes,i=e.pingedLanes;if(0!==o)a=o,r=Mt=15;else if(0!==(o=134217727&n)){var d=o&~c;0!==d?(a=Dt(d),r=Mt):0!==(i&=o)&&(a=Dt(i),r=Mt)}else 0!==(o=n&~c)?(a=Dt(o),r=Mt):0!==i&&(a=Dt(i),r=Mt);if(0===a)return 0;if(a=n&((0>(a=31-$t(a))?0:1<<a)<<1)-1,0!==t&&t!==a&&0==(t&c)){if(Dt(t),r<=Mt)return t;Mt=r}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=a;0<t;)r=1<<(n=31-$t(t)),a|=e[n],t&=~r;return a}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=qt(24&~t))?Bt(10,t):e;case 10:return 0===(e=qt(192&~t))?Bt(8,t):e;case 8:return 0===(e=qt(3584&~t))&&(0===(e=qt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=qt(805306368&~t))&&(t=268435456),t}throw Error(c(358,e))}function qt(e){return e&-e}function zt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ut(e,t,n){e.pendingLanes|=t;var a=t-1;e.suspendedLanes&=a,e.pingedLanes&=a,(e=e.eventTimes)[t=31-$t(t)]=n}var $t=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Qt(e,t,n,a){De||je();var r=Kt,o=De;De=!0;try{Oe(r,e,t,n,a)}finally{(De=o)||Fe()}}function Yt(e,t,n,a){Vt(Zt,Kt.bind(null,e,t,n,a))}function Kt(e,t,n,a){var r;if(Wt)if((r=0==(4&t))&&0<ot.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,a),ot.push(e);else{var o=Xt(e,t,n,a);if(null===o)r&&bt(e,a);else{if(r){if(-1<pt.indexOf(e))return e=ft(o,e,t,n,a),void ot.push(e);if(function(e,t,n,a,r){switch(t){case"focusin":return ct=gt(ct,e,t,n,a,r),!0;case"dragenter":return it=gt(it,e,t,n,a,r),!0;case"mouseover":return dt=gt(dt,e,t,n,a,r),!0;case"pointerover":var o=r.pointerId;return st.set(o,gt(st.get(o)||null,e,t,n,a,r)),!0;case"gotpointercapture":return o=r.pointerId,lt.set(o,gt(lt.get(o)||null,e,t,n,a,r)),!0}return!1}(o,e,t,n,a))return;bt(e,a)}ja(e,t,a,null,n)}}}function Xt(e,t,n,a){var r=Se(a);if(null!==(r=tr(r))){var o=Qe(r);if(null===o)r=null;else{var c=o.tag;if(13===c){if(null!==(r=Ye(o)))return r;r=null}else if(3===c){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;r=null}else o!==r&&(r=null)}}return ja(e,t,a,r,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,a=n.length,r="value"in Jt?Jt.value:Jt.textContent,o=r.length;for(e=0;e<a&&n[e]===r[e];e++);var c=a-e;for(t=1;t<=c&&n[a-t]===r[o-t];t++);return tn=r.slice(e,1<t?1-t:void 0)}function an(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function rn(){return!0}function on(){return!1}function cn(e){function t(t,n,a,r,o){for(var c in this._reactName=t,this._targetInst=a,this.type=n,this.nativeEvent=r,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(c)&&(t=e[c],this[c]=t?t(r):r[c]);return this.isDefaultPrevented=(null!=r.defaultPrevented?r.defaultPrevented:!1===r.returnValue)?rn:on,this.isPropagationStopped=on,this}return r(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=rn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=rn)},persist:function(){},isPersistent:rn}),t}var dn,sn,ln,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=cn(un),fn=r({},un,{view:0,detail:0}),bn=cn(fn),gn=r({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ln&&(ln&&"mousemove"===e.type?(dn=e.screenX-ln.screenX,sn=e.screenY-ln.screenY):sn=dn=0,ln=e),dn)},movementY:function(e){return"movementY"in e?e.movementY:sn}}),mn=cn(gn),hn=cn(r({},gn,{dataTransfer:0})),yn=cn(r({},fn,{relatedTarget:0})),_n=cn(r({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),vn=r({},un,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),wn=cn(vn),xn=cn(r({},un,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Tn(){return Cn}var An=r({},fn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=an(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?an(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?an(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=cn(An),Pn=cn(r({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Rn=cn(r({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),Nn=cn(r({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=r({},gn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),jn=cn(On),Mn=[9,13,27,32],Dn=u&&"CompositionEvent"in window,In=null;u&&"documentMode"in document&&(In=document.documentMode);var Fn=u&&"TextEvent"in window&&!In,Bn=u&&(!Dn||In&&8<In&&11>=In),qn=String.fromCharCode(32),zn=!1;function Un(e,t){switch(e){case"keyup":return-1!==Mn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,a){Pe(a),0<(t=Da(t,"onChange")).length&&(n=new pn("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Wn=null,Qn=null;function Yn(e){Aa(e,0)}function Kn(e){if(K(ar(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(u){var ea;if(u){var ta="oninput"in document;if(!ta){var na=document.createElement("div");na.setAttribute("oninput","return;"),ta="function"==typeof na.oninput}ea=ta}else ea=!1;Jn=ea&&(!document.documentMode||9<document.documentMode)}function aa(){Wn&&(Wn.detachEvent("onpropertychange",ra),Qn=Wn=null)}function ra(e){if("value"===e.propertyName&&Kn(Qn)){var t=[];if(Vn(t,Qn,e,Se(e)),e=Yn,De)e(t);else{De=!0;try{Ne(e,t)}finally{De=!1,Fe()}}}}function oa(e,t,n){"focusin"===e?(aa(),Qn=n,(Wn=t).attachEvent("onpropertychange",ra)):"focusout"===e&&aa()}function ca(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Qn)}function ia(e,t){if("click"===e)return Kn(t)}function da(e,t){if("input"===e||"change"===e)return Kn(t)}var sa="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},la=Object.prototype.hasOwnProperty;function ua(e,t){if(sa(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++)if(!la.call(t,n[a])||!sa(e[n[a]],t[n[a]]))return!1;return!0}function pa(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fa(e,t){var n,a=pa(e);for(e=0;a;){if(3===a.nodeType){if(n=e+a.textContent.length,e<=t&&n>=t)return{node:a,offset:t-e};e=n}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=pa(a)}}function ba(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?ba(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function ga(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(a){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function ma(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var ha=u&&"documentMode"in document&&11>=document.documentMode,ya=null,_a=null,va=null,wa=!1;function xa(e,t,n){var a=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;wa||null==ya||ya!==X(a)||("selectionStart"in(a=ya)&&ma(a)?a={start:a.selectionStart,end:a.selectionEnd}:a={anchorNode:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset},va&&ua(va,a)||(va=a,0<(a=Da(_a,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=ya)))}jt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),jt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),jt(Ot,2);for(var ka="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Ea=0;Ea<ka.length;Ea++)Nt.set(ka[Ea],0);l("onMouseEnter",["mouseout","mouseover"]),l("onMouseLeave",["mouseout","mouseover"]),l("onPointerEnter",["pointerout","pointerover"]),l("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Sa="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ca=new Set("cancel close invalid load scroll toggle".split(" ").concat(Sa));function Ta(e,t,n){var a=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,a,r,o,i,d,s){if(We.apply(this,arguments),$e){if(!$e)throw Error(c(198));var l=He;$e=!1,He=null,Ge||(Ge=!0,Ze=l)}}(a,t,void 0,e),e.currentTarget=null}function Aa(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var a=e[n],r=a.event;a=a.listeners;e:{var o=void 0;if(t)for(var c=a.length-1;0<=c;c--){var i=a[c],d=i.instance,s=i.currentTarget;if(i=i.listener,d!==o&&r.isPropagationStopped())break e;Ta(r,i,s),o=d}else for(c=0;c<a.length;c++){if(d=(i=a[c]).instance,s=i.currentTarget,i=i.listener,d!==o&&r.isPropagationStopped())break e;Ta(r,i,s),o=d}}}if(Ge)throw e=Ze,Ge=!1,Ze=null,e}function La(e,t){var n=or(t),a=e+"__bubble";n.has(a)||(Oa(t,e,2,!1),n.add(a))}var Pa="_reactListening"+Math.random().toString(36).slice(2);function Ra(e){e[Pa]||(e[Pa]=!0,i.forEach((function(t){Ca.has(t)||Na(t,!1,e,null),Na(t,!0,e,null)})))}function Na(e,t,n,a){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==a&&!t&&Ca.has(e)){if("scroll"!==e)return;r|=2,o=a}var c=or(o),i=e+"__"+(t?"capture":"bubble");c.has(i)||(t&&(r|=4),Oa(o,e,r,t),c.add(i))}function Oa(e,t,n,a){var r=Nt.get(t);switch(void 0===r?2:r){case 0:r=Qt;break;case 1:r=Yt;break;default:r=Kt}n=r.bind(null,t,n,e),r=void 0,!qe||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(r=!0),a?void 0!==r?e.addEventListener(t,n,{capture:!0,passive:r}):e.addEventListener(t,n,!0):void 0!==r?e.addEventListener(t,n,{passive:r}):e.addEventListener(t,n,!1)}function ja(e,t,n,a,r){var o=a;if(0==(1&t)&&0==(2&t)&&null!==a)e:for(;;){if(null===a)return;var c=a.tag;if(3===c||4===c){var i=a.stateNode.containerInfo;if(i===r||8===i.nodeType&&i.parentNode===r)break;if(4===c)for(c=a.return;null!==c;){var d=c.tag;if((3===d||4===d)&&((d=c.stateNode.containerInfo)===r||8===d.nodeType&&d.parentNode===r))return;c=c.return}for(;null!==i;){if(null===(c=tr(i)))return;if(5===(d=c.tag)||6===d){a=o=c;continue e}i=i.parentNode}}a=a.return}!function(e,t,n){if(Ie)return e(t,n);Ie=!0;try{return Me(e,t,n)}finally{Ie=!1,Fe()}}((function(){var a=o,r=Se(n),c=[];e:{var i=Rt.get(e);if(void 0!==i){var d=pn,s=e;switch(e){case"keypress":if(0===an(n))break e;case"keydown":case"keyup":d=Ln;break;case"focusin":s="focus",d=yn;break;case"focusout":s="blur",d=yn;break;case"beforeblur":case"afterblur":d=yn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":d=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":d=hn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":d=Rn;break;case Tt:case At:case Lt:d=_n;break;case Pt:d=Nn;break;case"scroll":d=bn;break;case"wheel":d=jn;break;case"copy":case"cut":case"paste":d=wn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":d=Pn}var l=0!=(4&t),u=!l&&"scroll"===e,p=l?null!==i?i+"Capture":null:i;l=[];for(var f,b=a;null!==b;){var g=(f=b).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Be(b,p))&&l.push(Ma(b,g,f)))),u)break;b=b.return}0<l.length&&(i=new d(i,s,null,n,r),c.push({event:i,listeners:l}))}}if(0==(7&t)){if(d="mouseout"===e||"pointerout"===e,(!(i="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(s=n.relatedTarget||n.fromElement)||!tr(s)&&!s[Ja])&&(d||i)&&(i=r.window===r?r:(i=r.ownerDocument)?i.defaultView||i.parentWindow:window,d?(d=a,null!==(s=(s=n.relatedTarget||n.toElement)?tr(s):null)&&(s!==(u=Qe(s))||5!==s.tag&&6!==s.tag)&&(s=null)):(d=null,s=a),d!==s)){if(l=mn,g="onMouseLeave",p="onMouseEnter",b="mouse","pointerout"!==e&&"pointerover"!==e||(l=Pn,g="onPointerLeave",p="onPointerEnter",b="pointer"),u=null==d?i:ar(d),f=null==s?i:ar(s),(i=new l(g,b+"leave",d,n,r)).target=u,i.relatedTarget=f,g=null,tr(r)===a&&((l=new l(p,b+"enter",s,n,r)).target=f,l.relatedTarget=u,g=l),u=g,d&&s)e:{for(p=s,b=0,f=l=d;f;f=Ia(f))b++;for(f=0,g=p;g;g=Ia(g))f++;for(;0<b-f;)l=Ia(l),b--;for(;0<f-b;)p=Ia(p),f--;for(;b--;){if(l===p||null!==p&&l===p.alternate)break e;l=Ia(l),p=Ia(p)}l=null}else l=null;null!==d&&Fa(c,i,d,l,!1),null!==s&&null!==u&&Fa(c,u,s,l,!0)}if("select"===(d=(i=a?ar(a):window).nodeName&&i.nodeName.toLowerCase())||"input"===d&&"file"===i.type)var m=Xn;else if(Zn(i))if(Jn)m=da;else{m=ca;var h=oa}else(d=i.nodeName)&&"input"===d.toLowerCase()&&("checkbox"===i.type||"radio"===i.type)&&(m=ia);switch(m&&(m=m(e,a))?Vn(c,m,n,r):(h&&h(e,i,a),"focusout"===e&&(h=i._wrapperState)&&h.controlled&&"number"===i.type&&re(i,"number",i.value)),h=a?ar(a):window,e){case"focusin":(Zn(h)||"true"===h.contentEditable)&&(ya=h,_a=a,va=null);break;case"focusout":va=_a=ya=null;break;case"mousedown":wa=!0;break;case"contextmenu":case"mouseup":case"dragend":wa=!1,xa(c,n,r);break;case"selectionchange":if(ha)break;case"keydown":case"keyup":xa(c,n,r)}var y;if(Dn)e:{switch(e){case"compositionstart":var _="onCompositionStart";break e;case"compositionend":_="onCompositionEnd";break e;case"compositionupdate":_="onCompositionUpdate";break e}_=void 0}else Hn?Un(e,n)&&(_="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(_="onCompositionStart");_&&(Bn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==_?"onCompositionEnd"===_&&Hn&&(y=nn()):(en="value"in(Jt=r)?Jt.value:Jt.textContent,Hn=!0)),0<(h=Da(a,_)).length&&(_=new xn(_,e,null,n,r),c.push({event:_,listeners:h}),y?_.data=y:null!==(y=$n(n))&&(_.data=y))),(y=Fn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,qn);case"textInput":return(e=t.data)===qn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Dn&&Un(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(a=Da(a,"onBeforeInput")).length&&(r=new xn("onBeforeInput","beforeinput",null,n,r),c.push({event:r,listeners:a}),r.data=y))}Aa(c,t)}))}function Ma(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Da(e,t){for(var n=t+"Capture",a=[];null!==e;){var r=e,o=r.stateNode;5===r.tag&&null!==o&&(r=o,null!=(o=Be(e,n))&&a.unshift(Ma(e,o,r)),null!=(o=Be(e,t))&&a.push(Ma(e,o,r))),e=e.return}return a}function Ia(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fa(e,t,n,a,r){for(var o=t._reactName,c=[];null!==n&&n!==a;){var i=n,d=i.alternate,s=i.stateNode;if(null!==d&&d===a)break;5===i.tag&&null!==s&&(i=s,r?null!=(d=Be(n,o))&&c.unshift(Ma(n,d,i)):r||null!=(d=Be(n,o))&&c.push(Ma(n,d,i))),n=n.return}0!==c.length&&e.push({event:t,listeners:c})}function Ba(){}var qa=null,za=null;function Ua(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function $a(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Ha="function"==typeof setTimeout?setTimeout:void 0,Ga="function"==typeof clearTimeout?clearTimeout:void 0;function Za(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Va(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wa(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Qa=0;var Ya=Math.random().toString(36).slice(2),Ka="__reactFiber$"+Ya,Xa="__reactProps$"+Ya,Ja="__reactContainer$"+Ya,er="__reactEvents$"+Ya;function tr(e){var t=e[Ka];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Ja]||n[Ka]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wa(e);null!==e;){if(n=e[Ka])return n;e=Wa(e)}return t}n=(e=n).parentNode}return null}function nr(e){return!(e=e[Ka]||e[Ja])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ar(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(c(33))}function rr(e){return e[Xa]||null}function or(e){var t=e[er];return void 0===t&&(t=e[er]=new Set),t}var cr=[],ir=-1;function dr(e){return{current:e}}function sr(e){0>ir||(e.current=cr[ir],cr[ir]=null,ir--)}function lr(e,t){ir++,cr[ir]=e.current,e.current=t}var ur={},pr=dr(ur),fr=dr(!1),br=ur;function gr(e,t){var n=e.type.contextTypes;if(!n)return ur;var a=e.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===t)return a.__reactInternalMemoizedMaskedChildContext;var r,o={};for(r in n)o[r]=t[r];return a&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function mr(e){return null!=(e=e.childContextTypes)}function hr(){sr(fr),sr(pr)}function yr(e,t,n){if(pr.current!==ur)throw Error(c(168));lr(pr,t),lr(fr,n)}function _r(e,t,n){var a=e.stateNode;if(e=t.childContextTypes,"function"!=typeof a.getChildContext)return n;for(var o in a=a.getChildContext())if(!(o in e))throw Error(c(108,V(t)||"Unknown",o));return r({},n,a)}function vr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ur,br=pr.current,lr(pr,e),lr(fr,fr.current),!0}function wr(e,t,n){var a=e.stateNode;if(!a)throw Error(c(169));n?(e=_r(e,t,br),a.__reactInternalMemoizedMergedChildContext=e,sr(fr),sr(pr),lr(pr,e)):sr(fr),lr(fr,n)}var xr=null,kr=null,Er=o.unstable_runWithPriority,Sr=o.unstable_scheduleCallback,Cr=o.unstable_cancelCallback,Tr=o.unstable_shouldYield,Ar=o.unstable_requestPaint,Lr=o.unstable_now,Pr=o.unstable_getCurrentPriorityLevel,Rr=o.unstable_ImmediatePriority,Nr=o.unstable_UserBlockingPriority,Or=o.unstable_NormalPriority,jr=o.unstable_LowPriority,Mr=o.unstable_IdlePriority,Dr={},Ir=void 0!==Ar?Ar:function(){},Fr=null,Br=null,qr=!1,zr=Lr(),Ur=1e4>zr?Lr:function(){return Lr()-zr};function $r(){switch(Pr()){case Rr:return 99;case Nr:return 98;case Or:return 97;case jr:return 96;case Mr:return 95;default:throw Error(c(332))}}function Hr(e){switch(e){case 99:return Rr;case 98:return Nr;case 97:return Or;case 96:return jr;case 95:return Mr;default:throw Error(c(332))}}function Gr(e,t){return e=Hr(e),Er(e,t)}function Zr(e,t,n){return e=Hr(e),Sr(e,t,n)}function Vr(){if(null!==Br){var e=Br;Br=null,Cr(e)}Wr()}function Wr(){if(!qr&&null!==Fr){qr=!0;var e=0;try{var t=Fr;Gr(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fr=null}catch(n){throw null!==Fr&&(Fr=Fr.slice(e+1)),Sr(Rr,Vr),n}finally{qr=!1}}}var Qr=w.ReactCurrentBatchConfig;function Yr(e,t){if(e&&e.defaultProps){for(var n in t=r({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Kr=dr(null),Xr=null,Jr=null,eo=null;function to(){eo=Jr=Xr=null}function no(e){var t=Kr.current;sr(Kr),e.type._context._currentValue=t}function ao(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ro(e,t){Xr=e,eo=Jr=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Dc=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Jr){if(null===Xr)throw Error(c(308));Jr=t,Xr.dependencies={lanes:0,firstContext:t,responders:null}}else Jr=Jr.next=t;return e._currentValue}var co=!1;function io(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function lo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function uo(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function po(e,t){var n=e.updateQueue,a=e.alternate;if(null!==a&&n===(a=a.updateQueue)){var r=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var c={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?r=o=c:o=o.next=c,n=n.next}while(null!==n);null===o?r=o=t:o=o.next=t}else r=o=t;return n={baseState:a.baseState,firstBaseUpdate:r,lastBaseUpdate:o,shared:a.shared,effects:a.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function fo(e,t,n,a){var o=e.updateQueue;co=!1;var c=o.firstBaseUpdate,i=o.lastBaseUpdate,d=o.shared.pending;if(null!==d){o.shared.pending=null;var s=d,l=s.next;s.next=null,null===i?c=l:i.next=l,i=s;var u=e.alternate;if(null!==u){var p=(u=u.updateQueue).lastBaseUpdate;p!==i&&(null===p?u.firstBaseUpdate=l:p.next=l,u.lastBaseUpdate=s)}}if(null!==c){for(p=o.baseState,i=0,u=l=s=null;;){d=c.lane;var f=c.eventTime;if((a&d)===d){null!==u&&(u=u.next={eventTime:f,lane:0,tag:c.tag,payload:c.payload,callback:c.callback,next:null});e:{var b=e,g=c;switch(d=t,f=n,g.tag){case 1:if("function"==typeof(b=g.payload)){p=b.call(f,p,d);break e}p=b;break e;case 3:b.flags=-4097&b.flags|64;case 0:if(null==(d="function"==typeof(b=g.payload)?b.call(f,p,d):b))break e;p=r({},p,d);break e;case 2:co=!0}}null!==c.callback&&(e.flags|=32,null===(d=o.effects)?o.effects=[c]:d.push(c))}else f={eventTime:f,lane:d,tag:c.tag,payload:c.payload,callback:c.callback,next:null},null===u?(l=u=f,s=p):u=u.next=f,i|=d;if(null===(c=c.next)){if(null===(d=o.shared.pending))break;c=d.next,d.next=null,o.lastBaseUpdate=d,o.shared.pending=null}}null===u&&(s=p),o.baseState=s,o.firstBaseUpdate=l,o.lastBaseUpdate=u,zi|=i,e.lanes=i,e.memoizedState=p}}function bo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var a=e[t],r=a.callback;if(null!==r){if(a.callback=null,a=n,"function"!=typeof r)throw Error(c(191,r));r.call(a)}}}var go=(new a.Component).refs;function mo(e,t,n,a){n=null==(n=n(a,t=e.memoizedState))?t:r({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ho={isMounted:function(e){return!!(e=e._reactInternals)&&Qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var a=pd(),r=fd(e),o=lo(a,r);o.payload=t,null!=n&&(o.callback=n),uo(e,o),bd(e,r,a)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=pd(),r=fd(e),o=lo(a,r);o.tag=1,o.payload=t,null!=n&&(o.callback=n),uo(e,o),bd(e,r,a)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=pd(),a=fd(e),r=lo(n,a);r.tag=2,null!=t&&(r.callback=t),uo(e,r),bd(e,a,n)}};function yo(e,t,n,a,r,o,c){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(a,o,c):!t.prototype||!t.prototype.isPureReactComponent||(!ua(n,a)||!ua(r,o))}function _o(e,t,n){var a=!1,r=ur,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(r=mr(t)?br:pr.current,o=(a=null!=(a=t.contextTypes))?gr(e,r):ur),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ho,e.stateNode=t,t._reactInternals=e,a&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=o),t}function vo(e,t,n,a){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,a),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&ho.enqueueReplaceState(t,t.state,null)}function wo(e,t,n,a){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs=go,io(e);var o=t.contextType;"object"==typeof o&&null!==o?r.context=oo(o):(o=mr(t)?br:pr.current,r.context=gr(e,o)),fo(e,n,r,a),r.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(mo(e,t,o,n),r.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof r.getSnapshotBeforeUpdate||"function"!=typeof r.UNSAFE_componentWillMount&&"function"!=typeof r.componentWillMount||(t=r.state,"function"==typeof r.componentWillMount&&r.componentWillMount(),"function"==typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount(),t!==r.state&&ho.enqueueReplaceState(r,r.state,null),fo(e,n,r,a),r.state=e.memoizedState),"function"==typeof r.componentDidMount&&(e.flags|=4)}var xo=Array.isArray;function ko(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(c(309));var a=n.stateNode}if(!a)throw Error(c(147,e));var r=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===r?t.ref:(t=function(e){var t=a.refs;t===go&&(t=a.refs={}),null===e?delete t[r]:t[r]=e},t._stringRef=r,t)}if("string"!=typeof e)throw Error(c(284));if(!n._owner)throw Error(c(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(c(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function So(e){function t(t,n){if(e){var a=t.lastEffect;null!==a?(a.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,a){if(!e)return null;for(;null!==a;)t(n,a),a=a.sibling;return null}function a(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function r(e,t){return(e=Zd(e,t)).index=0,e.sibling=null,e}function o(t,n,a){return t.index=a,e?null!==(a=t.alternate)?(a=a.index)<n?(t.flags=2,n):a:(t.flags=2,n):n}function i(t){return e&&null===t.alternate&&(t.flags=2),t}function d(e,t,n,a){return null===t||6!==t.tag?((t=Yd(n,e.mode,a)).return=e,t):((t=r(t,n)).return=e,t)}function s(e,t,n,a){return null!==t&&t.elementType===n.type?((a=r(t,n.props)).ref=ko(e,t,n),a.return=e,a):((a=Vd(n.type,n.key,n.props,null,e.mode,a)).ref=ko(e,t,n),a.return=e,a)}function l(e,t,n,a){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Kd(n,e.mode,a)).return=e,t):((t=r(t,n.children||[])).return=e,t)}function u(e,t,n,a,o){return null===t||7!==t.tag?((t=Wd(n,e.mode,a,o)).return=e,t):((t=r(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Yd(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case x:return(n=Vd(t.type,t.key,t.props,null,e.mode,n)).ref=ko(e,null,t),n.return=e,n;case k:return(t=Kd(t,e.mode,n)).return=e,t}if(xo(t)||U(t))return(t=Wd(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function f(e,t,n,a){var r=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==r?null:d(e,t,""+n,a);if("object"==typeof n&&null!==n){switch(n.$$typeof){case x:return n.key===r?n.type===E?u(e,t,n.props.children,a,r):s(e,t,n,a):null;case k:return n.key===r?l(e,t,n,a):null}if(xo(n)||U(n))return null!==r?null:u(e,t,n,a,null);Eo(e,n)}return null}function b(e,t,n,a,r){if("string"==typeof a||"number"==typeof a)return d(t,e=e.get(n)||null,""+a,r);if("object"==typeof a&&null!==a){switch(a.$$typeof){case x:return e=e.get(null===a.key?n:a.key)||null,a.type===E?u(t,e,a.props.children,r,a.key):s(t,e,a,r);case k:return l(t,e=e.get(null===a.key?n:a.key)||null,a,r)}if(xo(a)||U(a))return u(t,e=e.get(n)||null,a,r,null);Eo(t,a)}return null}function g(r,c,i,d){for(var s=null,l=null,u=c,g=c=0,m=null;null!==u&&g<i.length;g++){u.index>g?(m=u,u=null):m=u.sibling;var h=f(r,u,i[g],d);if(null===h){null===u&&(u=m);break}e&&u&&null===h.alternate&&t(r,u),c=o(h,c,g),null===l?s=h:l.sibling=h,l=h,u=m}if(g===i.length)return n(r,u),s;if(null===u){for(;g<i.length;g++)null!==(u=p(r,i[g],d))&&(c=o(u,c,g),null===l?s=u:l.sibling=u,l=u);return s}for(u=a(r,u);g<i.length;g++)null!==(m=b(u,r,g,i[g],d))&&(e&&null!==m.alternate&&u.delete(null===m.key?g:m.key),c=o(m,c,g),null===l?s=m:l.sibling=m,l=m);return e&&u.forEach((function(e){return t(r,e)})),s}function m(r,i,d,s){var l=U(d);if("function"!=typeof l)throw Error(c(150));if(null==(d=l.call(d)))throw Error(c(151));for(var u=l=null,g=i,m=i=0,h=null,y=d.next();null!==g&&!y.done;m++,y=d.next()){g.index>m?(h=g,g=null):h=g.sibling;var _=f(r,g,y.value,s);if(null===_){null===g&&(g=h);break}e&&g&&null===_.alternate&&t(r,g),i=o(_,i,m),null===u?l=_:u.sibling=_,u=_,g=h}if(y.done)return n(r,g),l;if(null===g){for(;!y.done;m++,y=d.next())null!==(y=p(r,y.value,s))&&(i=o(y,i,m),null===u?l=y:u.sibling=y,u=y);return l}for(g=a(r,g);!y.done;m++,y=d.next())null!==(y=b(g,r,m,y.value,s))&&(e&&null!==y.alternate&&g.delete(null===y.key?m:y.key),i=o(y,i,m),null===u?l=y:u.sibling=y,u=y);return e&&g.forEach((function(e){return t(r,e)})),l}return function(e,a,o,d){var s="object"==typeof o&&null!==o&&o.type===E&&null===o.key;s&&(o=o.props.children);var l="object"==typeof o&&null!==o;if(l)switch(o.$$typeof){case x:e:{for(l=o.key,s=a;null!==s;){if(s.key===l){if(7===s.tag){if(o.type===E){n(e,s.sibling),(a=r(s,o.props.children)).return=e,e=a;break e}}else if(s.elementType===o.type){n(e,s.sibling),(a=r(s,o.props)).ref=ko(e,s,o),a.return=e,e=a;break e}n(e,s);break}t(e,s),s=s.sibling}o.type===E?((a=Wd(o.props.children,e.mode,d,o.key)).return=e,e=a):((d=Vd(o.type,o.key,o.props,null,e.mode,d)).ref=ko(e,a,o),d.return=e,e=d)}return i(e);case k:e:{for(s=o.key;null!==a;){if(a.key===s){if(4===a.tag&&a.stateNode.containerInfo===o.containerInfo&&a.stateNode.implementation===o.implementation){n(e,a.sibling),(a=r(a,o.children||[])).return=e,e=a;break e}n(e,a);break}t(e,a),a=a.sibling}(a=Kd(o,e.mode,d)).return=e,e=a}return i(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==a&&6===a.tag?(n(e,a.sibling),(a=r(a,o)).return=e,e=a):(n(e,a),(a=Yd(o,e.mode,d)).return=e,e=a),i(e);if(xo(o))return g(e,a,o,d);if(U(o))return m(e,a,o,d);if(l&&Eo(e,o),void 0===o&&!s)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,V(e.type)||"Component"))}return n(e,a)}}var Co=So(!0),To=So(!1),Ao={},Lo=dr(Ao),Po=dr(Ao),Ro=dr(Ao);function No(e){if(e===Ao)throw Error(c(174));return e}function Oo(e,t){switch(lr(Ro,t),lr(Po,e),lr(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}sr(Lo),lr(Lo,t)}function jo(){sr(Lo),sr(Po),sr(Ro)}function Mo(e){No(Ro.current);var t=No(Lo.current),n=fe(t,e.type);t!==n&&(lr(Po,e),lr(Lo,n))}function Do(e){Po.current===e&&(sr(Lo),sr(Po))}var Io=dr(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,qo=null,zo=!1;function Uo(e,t){var n=Hd(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function $o(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if(zo){var t=qo;if(t){var n=t;if(!$o(e,t)){if(!(t=Va(n.nextSibling))||!$o(e,t))return e.flags=-1025&e.flags|2,zo=!1,void(Bo=e);Uo(Bo,n)}Bo=e,qo=Va(t.firstChild)}else e.flags=-1025&e.flags|2,zo=!1,Bo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Zo(e){if(e!==Bo)return!1;if(!zo)return Go(e),zo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!$a(t,e.memoizedProps))for(t=qo;t;)Uo(e,t),t=Va(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(c(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){qo=Va(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}qo=null}}else qo=Bo?Va(e.stateNode.nextSibling):null;return!0}function Vo(){qo=Bo=null,zo=!1}var Wo=[];function Qo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Yo=w.ReactCurrentDispatcher,Ko=w.ReactCurrentBatchConfig,Xo=0,Jo=null,ec=null,tc=null,nc=!1,ac=!1;function rc(){throw Error(c(321))}function oc(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!sa(e[n],t[n]))return!1;return!0}function cc(e,t,n,a,r,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Yo.current=null===e||null===e.memoizedState?Nc:Oc,e=n(a,r),ac){o=0;do{if(ac=!1,!(25>o))throw Error(c(301));o+=1,tc=ec=null,t.updateQueue=null,Yo.current=jc,e=n(a,r)}while(ac)}if(Yo.current=Rc,t=null!==ec&&null!==ec.next,Xo=0,tc=ec=Jo=null,nc=!1,t)throw Error(c(300));return e}function ic(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===tc?Jo.memoizedState=tc=e:tc=tc.next=e,tc}function dc(){if(null===ec){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ec.next;var t=null===tc?Jo.memoizedState:tc.next;if(null!==t)tc=t,ec=e;else{if(null===e)throw Error(c(310));e={memoizedState:(ec=e).memoizedState,baseState:ec.baseState,baseQueue:ec.baseQueue,queue:ec.queue,next:null},null===tc?Jo.memoizedState=tc=e:tc=tc.next=e}return tc}function sc(e,t){return"function"==typeof t?t(e):t}function lc(e){var t=dc(),n=t.queue;if(null===n)throw Error(c(311));n.lastRenderedReducer=e;var a=ec,r=a.baseQueue,o=n.pending;if(null!==o){if(null!==r){var i=r.next;r.next=o.next,o.next=i}a.baseQueue=r=o,n.pending=null}if(null!==r){r=r.next,a=a.baseState;var d=i=o=null,s=r;do{var l=s.lane;if((Xo&l)===l)null!==d&&(d=d.next={lane:0,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null}),a=s.eagerReducer===e?s.eagerState:e(a,s.action);else{var u={lane:l,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null};null===d?(i=d=u,o=a):d=d.next=u,Jo.lanes|=l,zi|=l}s=s.next}while(null!==s&&s!==r);null===d?o=a:d.next=i,sa(a,t.memoizedState)||(Dc=!0),t.memoizedState=a,t.baseState=o,t.baseQueue=d,n.lastRenderedState=a}return[t.memoizedState,n.dispatch]}function uc(e){var t=dc(),n=t.queue;if(null===n)throw Error(c(311));n.lastRenderedReducer=e;var a=n.dispatch,r=n.pending,o=t.memoizedState;if(null!==r){n.pending=null;var i=r=r.next;do{o=e(o,i.action),i=i.next}while(i!==r);sa(o,t.memoizedState)||(Dc=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,a]}function pc(e,t,n){var a=t._getVersion;a=a(t._source);var r=t._workInProgressVersionPrimary;if(null!==r?e=r===a:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=a,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(c(350))}function fc(e,t,n,a){var r=Oi;if(null===r)throw Error(c(349));var o=t._getVersion,i=o(t._source),d=Yo.current,s=d.useState((function(){return pc(r,t,n)})),l=s[1],u=s[0];s=tc;var p=e.memoizedState,f=p.refs,b=f.getSnapshot,g=p.source;p=p.subscribe;var m=Jo;return e.memoizedState={refs:f,source:t,subscribe:a},d.useEffect((function(){f.getSnapshot=n,f.setSnapshot=l;var e=o(t._source);if(!sa(i,e)){e=n(t._source),sa(u,e)||(l(e),e=fd(m),r.mutableReadLanes|=e&r.pendingLanes),e=r.mutableReadLanes,r.entangledLanes|=e;for(var a=r.entanglements,c=e;0<c;){var d=31-$t(c),s=1<<d;a[d]|=e,c&=~s}}}),[n,t,a]),d.useEffect((function(){return a(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var a=fd(m);r.mutableReadLanes|=a&r.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,a]),sa(b,n)&&sa(g,t)&&sa(p,a)||((e={pending:null,dispatch:null,lastRenderedReducer:sc,lastRenderedState:u}).dispatch=l=Pc.bind(null,Jo,e),s.queue=e,s.baseQueue=null,u=pc(r,t,n),s.memoizedState=s.baseState=u),u}function bc(e,t,n){return fc(dc(),e,t,n)}function gc(e){var t=ic();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:sc,lastRenderedState:e}).dispatch=Pc.bind(null,Jo,e),[t.memoizedState,e]}function mc(e,t,n,a){return e={tag:e,create:t,destroy:n,deps:a,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function hc(e){return e={current:e},ic().memoizedState=e}function yc(){return dc().memoizedState}function _c(e,t,n,a){var r=ic();Jo.flags|=e,r.memoizedState=mc(1|t,n,void 0,void 0===a?null:a)}function vc(e,t,n,a){var r=dc();a=void 0===a?null:a;var o=void 0;if(null!==ec){var c=ec.memoizedState;if(o=c.destroy,null!==a&&oc(a,c.deps))return void mc(t,n,o,a)}Jo.flags|=e,r.memoizedState=mc(1|t,n,o,a)}function wc(e,t){return _c(516,4,e,t)}function xc(e,t){return vc(516,4,e,t)}function kc(e,t){return vc(4,2,e,t)}function Ec(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Sc(e,t,n){return n=null!=n?n.concat([e]):null,vc(4,2,Ec.bind(null,t,e),n)}function Cc(){}function Tc(e,t){var n=dc();t=void 0===t?null:t;var a=n.memoizedState;return null!==a&&null!==t&&oc(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function Ac(e,t){var n=dc();t=void 0===t?null:t;var a=n.memoizedState;return null!==a&&null!==t&&oc(t,a[1])?a[0]:(e=e(),n.memoizedState=[e,t],e)}function Lc(e,t){var n=$r();Gr(98>n?98:n,(function(){e(!0)})),Gr(97<n?97:n,(function(){var n=Ko.transition;Ko.transition=1;try{e(!1),t()}finally{Ko.transition=n}}))}function Pc(e,t,n){var a=pd(),r=fd(e),o={lane:r,action:n,eagerReducer:null,eagerState:null,next:null},c=t.pending;if(null===c?o.next=o:(o.next=c.next,c.next=o),t.pending=o,c=e.alternate,e===Jo||null!==c&&c===Jo)ac=nc=!0;else{if(0===e.lanes&&(null===c||0===c.lanes)&&null!==(c=t.lastRenderedReducer))try{var i=t.lastRenderedState,d=c(i,n);if(o.eagerReducer=c,o.eagerState=d,sa(d,i))return}catch(s){}bd(e,r,a)}}var Rc={readContext:oo,useCallback:rc,useContext:rc,useEffect:rc,useImperativeHandle:rc,useLayoutEffect:rc,useMemo:rc,useReducer:rc,useRef:rc,useState:rc,useDebugValue:rc,useDeferredValue:rc,useTransition:rc,useMutableSource:rc,useOpaqueIdentifier:rc,unstable_isNewReconciler:!1},Nc={readContext:oo,useCallback:function(e,t){return ic().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:wc,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,_c(4,2,Ec.bind(null,t,e),n)},useLayoutEffect:function(e,t){return _c(4,2,e,t)},useMemo:function(e,t){var n=ic();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var a=ic();return t=void 0!==n?n(t):t,a.memoizedState=a.baseState=t,e=(e=a.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Pc.bind(null,Jo,e),[a.memoizedState,e]},useRef:hc,useState:gc,useDebugValue:Cc,useDeferredValue:function(e){var t=gc(e),n=t[0],a=t[1];return wc((function(){var t=Ko.transition;Ko.transition=1;try{a(e)}finally{Ko.transition=t}}),[e]),n},useTransition:function(){var e=gc(!1),t=e[0];return hc(e=Lc.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var a=ic();return a.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fc(a,e,t,n)},useOpaqueIdentifier:function(){if(zo){var e=!1,t=function(e){return{$$typeof:M,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Qa++).toString(36))),Error(c(355))})),n=gc(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,mc(5,(function(){n("r:"+(Qa++).toString(36))}),void 0,null)),t}return gc(t="r:"+(Qa++).toString(36)),t},unstable_isNewReconciler:!1},Oc={readContext:oo,useCallback:Tc,useContext:oo,useEffect:xc,useImperativeHandle:Sc,useLayoutEffect:kc,useMemo:Ac,useReducer:lc,useRef:yc,useState:function(){return lc(sc)},useDebugValue:Cc,useDeferredValue:function(e){var t=lc(sc),n=t[0],a=t[1];return xc((function(){var t=Ko.transition;Ko.transition=1;try{a(e)}finally{Ko.transition=t}}),[e]),n},useTransition:function(){var e=lc(sc)[0];return[yc().current,e]},useMutableSource:bc,useOpaqueIdentifier:function(){return lc(sc)[0]},unstable_isNewReconciler:!1},jc={readContext:oo,useCallback:Tc,useContext:oo,useEffect:xc,useImperativeHandle:Sc,useLayoutEffect:kc,useMemo:Ac,useReducer:uc,useRef:yc,useState:function(){return uc(sc)},useDebugValue:Cc,useDeferredValue:function(e){var t=uc(sc),n=t[0],a=t[1];return xc((function(){var t=Ko.transition;Ko.transition=1;try{a(e)}finally{Ko.transition=t}}),[e]),n},useTransition:function(){var e=uc(sc)[0];return[yc().current,e]},useMutableSource:bc,useOpaqueIdentifier:function(){return uc(sc)[0]},unstable_isNewReconciler:!1},Mc=w.ReactCurrentOwner,Dc=!1;function Ic(e,t,n,a){t.child=null===e?To(t,null,n,a):Co(t,e.child,n,a)}function Fc(e,t,n,a,r){n=n.render;var o=t.ref;return ro(t,r),a=cc(e,t,n,a,o,r),null===e||Dc?(t.flags|=1,Ic(e,t,a,r),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~r,oi(e,t,r))}function Bc(e,t,n,a,r,o){if(null===e){var c=n.type;return"function"!=typeof c||Gd(c)||void 0!==c.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vd(n.type,null,a,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=c,qc(e,t,c,a,r,o))}return c=e.child,0==(r&o)&&(r=c.memoizedProps,(n=null!==(n=n.compare)?n:ua)(r,a)&&e.ref===t.ref)?oi(e,t,o):(t.flags|=1,(e=Zd(c,a)).ref=t.ref,e.return=t,t.child=e)}function qc(e,t,n,a,r,o){if(null!==e&&ua(e.memoizedProps,a)&&e.ref===t.ref){if(Dc=!1,0==(o&r))return t.lanes=e.lanes,oi(e,t,o);0!=(16384&e.flags)&&(Dc=!0)}return $c(e,t,n,a,o)}function zc(e,t,n){var a=t.pendingProps,r=a.children,o=null!==e?e.memoizedState:null;if("hidden"===a.mode||"unstable-defer-without-hiding"===a.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},xd(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},xd(t,e),null;t.memoizedState={baseLanes:0},xd(t,null!==o?o.baseLanes:n)}else null!==o?(a=o.baseLanes|n,t.memoizedState=null):a=n,xd(t,a);return Ic(e,t,r,n),t.child}function Uc(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function $c(e,t,n,a,r){var o=mr(n)?br:pr.current;return o=gr(t,o),ro(t,r),n=cc(e,t,n,a,o,r),null===e||Dc?(t.flags|=1,Ic(e,t,n,r),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~r,oi(e,t,r))}function Hc(e,t,n,a,r){if(mr(n)){var o=!0;vr(t)}else o=!1;if(ro(t,r),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),_o(t,n,a),wo(t,n,a,r),a=!0;else if(null===e){var c=t.stateNode,i=t.memoizedProps;c.props=i;var d=c.context,s=n.contextType;"object"==typeof s&&null!==s?s=oo(s):s=gr(t,s=mr(n)?br:pr.current);var l=n.getDerivedStateFromProps,u="function"==typeof l||"function"==typeof c.getSnapshotBeforeUpdate;u||"function"!=typeof c.UNSAFE_componentWillReceiveProps&&"function"!=typeof c.componentWillReceiveProps||(i!==a||d!==s)&&vo(t,c,a,s),co=!1;var p=t.memoizedState;c.state=p,fo(t,a,c,r),d=t.memoizedState,i!==a||p!==d||fr.current||co?("function"==typeof l&&(mo(t,n,l,a),d=t.memoizedState),(i=co||yo(t,n,i,a,p,d,s))?(u||"function"!=typeof c.UNSAFE_componentWillMount&&"function"!=typeof c.componentWillMount||("function"==typeof c.componentWillMount&&c.componentWillMount(),"function"==typeof c.UNSAFE_componentWillMount&&c.UNSAFE_componentWillMount()),"function"==typeof c.componentDidMount&&(t.flags|=4)):("function"==typeof c.componentDidMount&&(t.flags|=4),t.memoizedProps=a,t.memoizedState=d),c.props=a,c.state=d,c.context=s,a=i):("function"==typeof c.componentDidMount&&(t.flags|=4),a=!1)}else{c=t.stateNode,so(e,t),i=t.memoizedProps,s=t.type===t.elementType?i:Yr(t.type,i),c.props=s,u=t.pendingProps,p=c.context,"object"==typeof(d=n.contextType)&&null!==d?d=oo(d):d=gr(t,d=mr(n)?br:pr.current);var f=n.getDerivedStateFromProps;(l="function"==typeof f||"function"==typeof c.getSnapshotBeforeUpdate)||"function"!=typeof c.UNSAFE_componentWillReceiveProps&&"function"!=typeof c.componentWillReceiveProps||(i!==u||p!==d)&&vo(t,c,a,d),co=!1,p=t.memoizedState,c.state=p,fo(t,a,c,r);var b=t.memoizedState;i!==u||p!==b||fr.current||co?("function"==typeof f&&(mo(t,n,f,a),b=t.memoizedState),(s=co||yo(t,n,s,a,p,b,d))?(l||"function"!=typeof c.UNSAFE_componentWillUpdate&&"function"!=typeof c.componentWillUpdate||("function"==typeof c.componentWillUpdate&&c.componentWillUpdate(a,b,d),"function"==typeof c.UNSAFE_componentWillUpdate&&c.UNSAFE_componentWillUpdate(a,b,d)),"function"==typeof c.componentDidUpdate&&(t.flags|=4),"function"==typeof c.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof c.componentDidUpdate||i===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof c.getSnapshotBeforeUpdate||i===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=a,t.memoizedState=b),c.props=a,c.state=b,c.context=d,a=s):("function"!=typeof c.componentDidUpdate||i===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof c.getSnapshotBeforeUpdate||i===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),a=!1)}return Gc(e,t,n,a,o,r)}function Gc(e,t,n,a,r,o){Uc(e,t);var c=0!=(64&t.flags);if(!a&&!c)return r&&wr(t,n,!1),oi(e,t,o);a=t.stateNode,Mc.current=t;var i=c&&"function"!=typeof n.getDerivedStateFromError?null:a.render();return t.flags|=1,null!==e&&c?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,i,o)):Ic(e,t,i,o),t.memoizedState=a.state,r&&wr(t,n,!0),t.child}function Zc(e){var t=e.stateNode;t.pendingContext?yr(0,t.pendingContext,t.pendingContext!==t.context):t.context&&yr(0,t.context,!1),Oo(e,t.containerInfo)}var Vc,Wc,Qc,Yc,Kc={dehydrated:null,retryLane:0};function Xc(e,t,n){var a,r=t.pendingProps,o=Io.current,c=!1;return(a=0!=(64&t.flags))||(a=(null===e||null!==e.memoizedState)&&0!=(2&o)),a?(c=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===r.fallback||!0===r.unstable_avoidThisFallback||(o|=1),lr(Io,1&o),null===e?(void 0!==r.fallback&&Ho(t),e=r.children,o=r.fallback,c?(e=Jc(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Kc,e):"number"==typeof r.unstable_expectedLoadTime?(e=Jc(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Kc,t.lanes=33554432,e):((n=Qd({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,c?(r=ti(e,t,r.children,r.fallback,n),c=t.child,o=e.child.memoizedState,c.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},c.childLanes=e.childLanes&~n,t.memoizedState=Kc,r):(n=ei(e,t,r.children,n),t.memoizedState=null,n))}function Jc(e,t,n,a){var r=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&r)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Qd(t,r,0,null),n=Wd(n,r,a,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function ei(e,t,n,a){var r=e.child;return e=r.sibling,n=Zd(r,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=a),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function ti(e,t,n,a,r){var o=t.mode,c=e.child;e=c.sibling;var i={mode:"hidden",children:n};return 0==(2&o)&&t.child!==c?((n=t.child).childLanes=0,n.pendingProps=i,null!==(c=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=c,c.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zd(c,i),null!==e?a=Zd(e,a):(a=Wd(a,o,r,null)).flags|=2,a.return=t,n.return=t,n.sibling=a,t.child=n,a}function ni(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ao(e.return,t)}function ai(e,t,n,a,r,o){var c=e.memoizedState;null===c?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:r,lastEffect:o}:(c.isBackwards=t,c.rendering=null,c.renderingStartTime=0,c.last=a,c.tail=n,c.tailMode=r,c.lastEffect=o)}function ri(e,t,n){var a=t.pendingProps,r=a.revealOrder,o=a.tail;if(Ic(e,t,a.children,n),0!=(2&(a=Io.current)))a=1&a|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ni(e,n);else if(19===e.tag)ni(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}if(lr(Io,a),0==(2&t.mode))t.memoizedState=null;else switch(r){case"forwards":for(n=t.child,r=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(r=n),n=n.sibling;null===(n=r)?(r=t.child,t.child=null):(r=n.sibling,n.sibling=null),ai(t,!1,r,n,o,t.lastEffect);break;case"backwards":for(n=null,r=t.child,t.child=null;null!==r;){if(null!==(e=r.alternate)&&null===Fo(e)){t.child=r;break}e=r.sibling,r.sibling=n,n=r,r=e}ai(t,!0,n,null,o,t.lastEffect);break;case"together":ai(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function oi(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),zi|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(c(153));if(null!==t.child){for(n=Zd(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zd(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function ci(e,t){if(!zo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;null!==n;)null!==n.alternate&&(a=n),n=n.sibling;null===a?t||null===e.tail?e.tail=null:e.tail.sibling=null:a.sibling=null}}function ii(e,t,n){var a=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return mr(t.type)&&hr(),null;case 3:return jo(),sr(fr),sr(pr),Qo(),(a=t.stateNode).pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:a.hydrate||(t.flags|=256)),Wc(t),null;case 5:Do(t);var o=No(Ro.current);if(n=t.type,null!==e&&null!=t.stateNode)Qc(e,t,n,a,o),e.ref!==t.ref&&(t.flags|=128);else{if(!a){if(null===t.stateNode)throw Error(c(166));return null}if(e=No(Lo.current),Zo(t)){a=t.stateNode,n=t.type;var i=t.memoizedProps;switch(a[Ka]=t,a[Xa]=i,n){case"dialog":La("cancel",a),La("close",a);break;case"iframe":case"object":case"embed":La("load",a);break;case"video":case"audio":for(e=0;e<Sa.length;e++)La(Sa[e],a);break;case"source":La("error",a);break;case"img":case"image":case"link":La("error",a),La("load",a);break;case"details":La("toggle",a);break;case"input":ee(a,i),La("invalid",a);break;case"select":a._wrapperState={wasMultiple:!!i.multiple},La("invalid",a);break;case"textarea":de(a,i),La("invalid",a)}for(var s in ke(n,i),e=null,i)i.hasOwnProperty(s)&&(o=i[s],"children"===s?"string"==typeof o?a.textContent!==o&&(e=["children",o]):"number"==typeof o&&a.textContent!==""+o&&(e=["children",""+o]):d.hasOwnProperty(s)&&null!=o&&"onScroll"===s&&La("scroll",a));switch(n){case"input":Y(a),ae(a,i,!0);break;case"textarea":Y(a),le(a);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(a.onclick=Ba)}a=e,t.updateQueue=a,null!==a&&(t.flags|=4)}else{switch(s=9===o.nodeType?o:o.ownerDocument,e===ue.html&&(e=pe(n)),e===ue.html?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof a.is?e=s.createElement(n,{is:a.is}):(e=s.createElement(n),"select"===n&&(s=e,a.multiple?s.multiple=!0:a.size&&(s.size=a.size))):e=s.createElementNS(e,n),e[Ka]=t,e[Xa]=a,Vc(e,t,!1,!1),t.stateNode=e,s=Ee(n,a),n){case"dialog":La("cancel",e),La("close",e),o=a;break;case"iframe":case"object":case"embed":La("load",e),o=a;break;case"video":case"audio":for(o=0;o<Sa.length;o++)La(Sa[o],e);o=a;break;case"source":La("error",e),o=a;break;case"img":case"image":case"link":La("error",e),La("load",e),o=a;break;case"details":La("toggle",e),o=a;break;case"input":ee(e,a),o=J(e,a),La("invalid",e);break;case"option":o=oe(e,a);break;case"select":e._wrapperState={wasMultiple:!!a.multiple},o=r({},a,{value:void 0}),La("invalid",e);break;case"textarea":de(e,a),o=ie(e,a),La("invalid",e);break;default:o=a}ke(n,o);var l=o;for(i in l)if(l.hasOwnProperty(i)){var u=l[i];"style"===i?we(e,u):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&me(e,u):"children"===i?"string"==typeof u?("textarea"!==n||""!==u)&&he(e,u):"number"==typeof u&&he(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(d.hasOwnProperty(i)?null!=u&&"onScroll"===i&&La("scroll",e):null!=u&&v(e,i,u,s))}switch(n){case"input":Y(e),ae(e,a,!1);break;case"textarea":Y(e),le(e);break;case"option":null!=a.value&&e.setAttribute("value",""+W(a.value));break;case"select":e.multiple=!!a.multiple,null!=(i=a.value)?ce(e,!!a.multiple,i,!1):null!=a.defaultValue&&ce(e,!!a.multiple,a.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Ba)}Ua(n,a)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Yc(e,t,e.memoizedProps,a);else{if("string"!=typeof a&&null===t.stateNode)throw Error(c(166));n=No(Ro.current),No(Lo.current),Zo(t)?(a=t.stateNode,n=t.memoizedProps,a[Ka]=t,a.nodeValue!==n&&(t.flags|=4)):((a=(9===n.nodeType?n:n.ownerDocument).createTextNode(a))[Ka]=t,t.stateNode=a)}return null;case 13:return sr(Io),a=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(a=null!==a,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,a&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Io.current)?0===Fi&&(Fi=3):(0!==Fi&&3!==Fi||(Fi=4),null===Oi||0==(134217727&zi)&&0==(134217727&Ui)||yd(Oi,Mi))),(a||n)&&(t.flags|=4),null);case 4:return jo(),Wc(t),null===e&&Ra(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(sr(Io),null===(a=t.memoizedState))return null;if(i=0!=(64&t.flags),null===(s=a.rendering))if(i)ci(a,!1);else{if(0!==Fi||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(s=Fo(e))){for(t.flags|=64,ci(a,!1),null!==(i=s.updateQueue)&&(t.updateQueue=i,t.flags|=4),null===a.lastEffect&&(t.firstEffect=null),t.lastEffect=a.lastEffect,a=n,n=t.child;null!==n;)e=a,(i=n).flags&=2,i.nextEffect=null,i.firstEffect=null,i.lastEffect=null,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return lr(Io,1&Io.current|2),t.child}e=e.sibling}null!==a.tail&&Ur()>Zi&&(t.flags|=64,i=!0,ci(a,!1),t.lanes=33554432)}else{if(!i)if(null!==(e=Fo(s))){if(t.flags|=64,i=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),ci(a,!0),null===a.tail&&"hidden"===a.tailMode&&!s.alternate&&!zo)return null!==(t=t.lastEffect=a.lastEffect)&&(t.nextEffect=null),null}else 2*Ur()-a.renderingStartTime>Zi&&1073741824!==n&&(t.flags|=64,i=!0,ci(a,!1),t.lanes=33554432);a.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=a.last)?n.sibling=s:t.child=s,a.last=s)}return null!==a.tail?(n=a.tail,a.rendering=n,a.tail=n.sibling,a.lastEffect=t.lastEffect,a.renderingStartTime=Ur(),n.sibling=null,t=Io.current,lr(Io,i?1&t|2:1&t),n):null;case 23:case 24:return kd(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==a.mode&&(t.flags|=4),null}throw Error(c(156,t.tag))}function di(e){switch(e.tag){case 1:mr(e.type)&&hr();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(jo(),sr(fr),sr(pr),Qo(),0!=(64&(t=e.flags)))throw Error(c(285));return e.flags=-4097&t|64,e;case 5:return Do(e),null;case 13:return sr(Io),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return sr(Io),null;case 4:return jo(),null;case 10:return no(e),null;case 23:case 24:return kd(),null;default:return null}}function si(e,t){try{var n="",a=t;do{n+=Z(a),a=a.return}while(a);var r=n}catch(o){r="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:r}}function li(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vc=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wc=function(){},Qc=function(e,t,n,a){var o=e.memoizedProps;if(o!==a){e=t.stateNode,No(Lo.current);var c,i=null;switch(n){case"input":o=J(e,o),a=J(e,a),i=[];break;case"option":o=oe(e,o),a=oe(e,a),i=[];break;case"select":o=r({},o,{value:void 0}),a=r({},a,{value:void 0}),i=[];break;case"textarea":o=ie(e,o),a=ie(e,a),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof a.onClick&&(e.onclick=Ba)}for(u in ke(n,a),n=null,o)if(!a.hasOwnProperty(u)&&o.hasOwnProperty(u)&&null!=o[u])if("style"===u){var s=o[u];for(c in s)s.hasOwnProperty(c)&&(n||(n={}),n[c]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(d.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in a){var l=a[u];if(s=null!=o?o[u]:void 0,a.hasOwnProperty(u)&&l!==s&&(null!=l||null!=s))if("style"===u)if(s){for(c in s)!s.hasOwnProperty(c)||l&&l.hasOwnProperty(c)||(n||(n={}),n[c]="");for(c in l)l.hasOwnProperty(c)&&s[c]!==l[c]&&(n||(n={}),n[c]=l[c])}else n||(i||(i=[]),i.push(u,n)),n=l;else"dangerouslySetInnerHTML"===u?(l=l?l.__html:void 0,s=s?s.__html:void 0,null!=l&&s!==l&&(i=i||[]).push(u,l)):"children"===u?"string"!=typeof l&&"number"!=typeof l||(i=i||[]).push(u,""+l):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(d.hasOwnProperty(u)?(null!=l&&"onScroll"===u&&La("scroll",e),i||s===l||(i=[])):"object"==typeof l&&null!==l&&l.$$typeof===M?l.toString():(i=i||[]).push(u,l))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},Yc=function(e,t,n,a){n!==a&&(t.flags|=4)};var ui="function"==typeof WeakMap?WeakMap:Map;function pi(e,t,n){(n=lo(-1,n)).tag=3,n.payload={element:null};var a=t.value;return n.callback=function(){Yi||(Yi=!0,Ki=a),li(0,t)},n}function fi(e,t,n){(n=lo(-1,n)).tag=3;var a=e.type.getDerivedStateFromError;if("function"==typeof a){var r=t.value;n.payload=function(){return li(0,t),a(r)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof a&&(null===Xi?Xi=new Set([this]):Xi.add(this),li(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var bi="function"==typeof WeakSet?WeakSet:Set;function gi(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){qd(e,n)}else t.current=null}function mi(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,a=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Yr(t.type,n),a),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Za(t.stateNode.containerInfo))}throw Error(c(163))}function hi(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var a=e.create;e.destroy=a()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var r=e;a=r.next,0!=(4&(r=r.tag))&&0!=(1&r)&&(Id(n,e),Dd(n,e)),e=a}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(a=n.elementType===n.type?t.memoizedProps:Yr(n.type,t.memoizedProps),e.componentDidUpdate(a,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&bo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}bo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Ua(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&wt(n)))))}throw Error(c(163))}function yi(e,t){for(var n=e;;){if(5===n.tag){var a=n.stateNode;if(t)"function"==typeof(a=a.style).setProperty?a.setProperty("display","none","important"):a.display="none";else{a=n.stateNode;var r=n.memoizedProps.style;r=null!=r&&r.hasOwnProperty("display")?r.display:null,a.style.display=ve("display",r)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function _i(e,t){if(kr&&"function"==typeof kr.onCommitFiberUnmount)try{kr.onCommitFiberUnmount(xr,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var a=n,r=a.destroy;if(a=a.tag,void 0!==r)if(0!=(4&a))Id(t,n);else{a=t;try{r()}catch(o){qd(a,o)}}n=n.next}while(n!==e)}break;case 1:if(gi(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){qd(t,o)}break;case 5:gi(t);break;case 4:Si(e,t)}}function vi(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function wi(e){return 5===e.tag||3===e.tag||4===e.tag}function xi(e){e:{for(var t=e.return;null!==t;){if(wi(t))break e;t=t.return}throw Error(c(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var a=!1;break;case 3:case 4:t=t.containerInfo,a=!0;break;default:throw Error(c(161))}16&n.flags&&(he(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||wi(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}a?ki(e,n,t):Ei(e,n,t)}function ki(e,t,n){var a=e.tag,r=5===a||6===a;if(r)e=r?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Ba));else if(4!==a&&null!==(e=e.child))for(ki(e,t,n),e=e.sibling;null!==e;)ki(e,t,n),e=e.sibling}function Ei(e,t,n){var a=e.tag,r=5===a||6===a;if(r)e=r?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==a&&null!==(e=e.child))for(Ei(e,t,n),e=e.sibling;null!==e;)Ei(e,t,n),e=e.sibling}function Si(e,t){for(var n,a,r=t,o=!1;;){if(!o){o=r.return;e:for(;;){if(null===o)throw Error(c(160));switch(n=o.stateNode,o.tag){case 5:a=!1;break e;case 3:case 4:n=n.containerInfo,a=!0;break e}o=o.return}o=!0}if(5===r.tag||6===r.tag){e:for(var i=e,d=r,s=d;;)if(_i(i,s),null!==s.child&&4!==s.tag)s.child.return=s,s=s.child;else{if(s===d)break e;for(;null===s.sibling;){if(null===s.return||s.return===d)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}a?(i=n,d=r.stateNode,8===i.nodeType?i.parentNode.removeChild(d):i.removeChild(d)):n.removeChild(r.stateNode)}else if(4===r.tag){if(null!==r.child){n=r.stateNode.containerInfo,a=!0,r.child.return=r,r=r.child;continue}}else if(_i(e,r),null!==r.child){r.child.return=r,r=r.child;continue}if(r===t)break;for(;null===r.sibling;){if(null===r.return||r.return===t)return;4===(r=r.return).tag&&(o=!1)}r.sibling.return=r.return,r=r.sibling}}function Ci(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var a=n=n.next;do{3==(3&a.tag)&&(e=a.destroy,a.destroy=void 0,void 0!==e&&e()),a=a.next}while(a!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){a=t.memoizedProps;var r=null!==e?e.memoizedProps:a;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xa]=a,"input"===e&&"radio"===a.type&&null!=a.name&&te(n,a),Ee(e,r),t=Ee(e,a),r=0;r<o.length;r+=2){var i=o[r],d=o[r+1];"style"===i?we(n,d):"dangerouslySetInnerHTML"===i?me(n,d):"children"===i?he(n,d):v(n,i,d,t)}switch(e){case"input":ne(n,a);break;case"textarea":se(n,a);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!a.multiple,null!=(o=a.value)?ce(n,!!a.multiple,o,!1):e!==!!a.multiple&&(null!=a.defaultValue?ce(n,!!a.multiple,a.defaultValue,!0):ce(n,!!a.multiple,a.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(c(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,wt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gi=Ur(),yi(t.child,!0)),void Ti(t);case 19:return void Ti(t);case 23:case 24:return void yi(t,null!==t.memoizedState)}throw Error(c(163))}function Ti(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new bi),t.forEach((function(t){var a=Ud.bind(null,e,t);n.has(t)||(n.add(t),t.then(a,a))}))}}function Ai(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Li=Math.ceil,Pi=w.ReactCurrentDispatcher,Ri=w.ReactCurrentOwner,Ni=0,Oi=null,ji=null,Mi=0,Di=0,Ii=dr(0),Fi=0,Bi=null,qi=0,zi=0,Ui=0,$i=0,Hi=null,Gi=0,Zi=1/0;function Vi(){Zi=Ur()+500}var Wi,Qi=null,Yi=!1,Ki=null,Xi=null,Ji=!1,ed=null,td=90,nd=[],ad=[],rd=null,od=0,cd=null,id=-1,dd=0,sd=0,ld=null,ud=!1;function pd(){return 0!=(48&Ni)?Ur():-1!==id?id:id=Ur()}function fd(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===$r()?1:2;if(0===dd&&(dd=qi),0!==Qr.transition){0!==sd&&(sd=null!==Hi?Hi.pendingLanes:0),e=dd;var t=4186112&~sd;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=$r(),0!=(4&Ni)&&98===e?e=Bt(12,dd):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),dd),e}function bd(e,t,n){if(50<od)throw od=0,cd=null,Error(c(185));if(null===(e=gd(e,t)))return null;Ut(e,t,n),e===Oi&&(Ui|=t,4===Fi&&yd(e,Mi));var a=$r();1===t?0!=(8&Ni)&&0==(48&Ni)?_d(e):(md(e,n),0===Ni&&(Vi(),Vr())):(0==(4&Ni)||98!==a&&99!==a||(null===rd?rd=new Set([e]):rd.add(e)),md(e,n)),Hi=e}function gd(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function md(e,t){for(var n=e.callbackNode,a=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,i=e.pendingLanes;0<i;){var d=31-$t(i),s=1<<d,l=o[d];if(-1===l){if(0==(s&a)||0!=(s&r)){l=t,Dt(s);var u=Mt;o[d]=10<=u?l+250:6<=u?l+5e3:-1}}else l<=t&&(e.expiredLanes|=s);i&=~s}if(a=It(e,e===Oi?Mi:0),t=Mt,0===a)null!==n&&(n!==Dr&&Cr(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Dr&&Cr(n)}15===t?(n=_d.bind(null,e),null===Fr?(Fr=[n],Br=Sr(Rr,Wr)):Fr.push(n),n=Dr):14===t?n=Zr(99,_d.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,e))}}(t),n=Zr(n,hd.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function hd(e){if(id=-1,sd=dd=0,0!=(48&Ni))throw Error(c(327));var t=e.callbackNode;if(Md()&&e.callbackNode!==t)return null;var n=It(e,e===Oi?Mi:0);if(0===n)return null;var a=n,r=Ni;Ni|=16;var o=Cd();for(Oi===e&&Mi===a||(Vi(),Ed(e,a));;)try{Ld();break}catch(d){Sd(e,d)}if(to(),Pi.current=o,Ni=r,null!==ji?a=0:(Oi=null,Mi=0,a=Fi),0!=(qi&Ui))Ed(e,0);else if(0!==a){if(2===a&&(Ni|=64,e.hydrate&&(e.hydrate=!1,Za(e.containerInfo)),0!==(n=Ft(e))&&(a=Td(e,n))),1===a)throw t=Bi,Ed(e,0),yd(e,n),md(e,Ur()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,a){case 0:case 1:throw Error(c(345));case 2:case 5:Nd(e);break;case 3:if(yd(e,n),(62914560&n)===n&&10<(a=Gi+500-Ur())){if(0!==It(e,0))break;if(((r=e.suspendedLanes)&n)!==n){pd(),e.pingedLanes|=e.suspendedLanes&r;break}e.timeoutHandle=Ha(Nd.bind(null,e),a);break}Nd(e);break;case 4:if(yd(e,n),(4186112&n)===n)break;for(a=e.eventTimes,r=-1;0<n;){var i=31-$t(n);o=1<<i,(i=a[i])>r&&(r=i),n&=~o}if(n=r,10<(n=(120>(n=Ur()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Li(n/1960))-n)){e.timeoutHandle=Ha(Nd.bind(null,e),n);break}Nd(e);break;default:throw Error(c(329))}}return md(e,Ur()),e.callbackNode===t?hd.bind(null,e):null}function yd(e,t){for(t&=~$i,t&=~Ui,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-$t(t),a=1<<n;e[n]=-1,t&=~a}}function _d(e){if(0!=(48&Ni))throw Error(c(327));if(Md(),e===Oi&&0!=(e.expiredLanes&Mi)){var t=Mi,n=Td(e,t);0!=(qi&Ui)&&(n=Td(e,t=It(e,t)))}else n=Td(e,t=It(e,0));if(0!==e.tag&&2===n&&(Ni|=64,e.hydrate&&(e.hydrate=!1,Za(e.containerInfo)),0!==(t=Ft(e))&&(n=Td(e,t))),1===n)throw n=Bi,Ed(e,0),yd(e,t),md(e,Ur()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Nd(e),md(e,Ur()),null}function vd(e,t){var n=Ni;Ni|=1;try{return e(t)}finally{0===(Ni=n)&&(Vi(),Vr())}}function wd(e,t){var n=Ni;Ni&=-2,Ni|=8;try{return e(t)}finally{0===(Ni=n)&&(Vi(),Vr())}}function xd(e,t){lr(Ii,Di),Di|=t,qi|=t}function kd(){Di=Ii.current,sr(Ii)}function Ed(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Ga(n)),null!==ji)for(n=ji.return;null!==n;){var a=n;switch(a.tag){case 1:null!=(a=a.type.childContextTypes)&&hr();break;case 3:jo(),sr(fr),sr(pr),Qo();break;case 5:Do(a);break;case 4:jo();break;case 13:case 19:sr(Io);break;case 10:no(a);break;case 23:case 24:kd()}n=n.return}Oi=e,ji=Zd(e.current,null),Mi=Di=qi=t,Fi=0,Bi=null,$i=Ui=zi=0}function Sd(e,t){for(;;){var n=ji;try{if(to(),Yo.current=Rc,nc){for(var a=Jo.memoizedState;null!==a;){var r=a.queue;null!==r&&(r.pending=null),a=a.next}nc=!1}if(Xo=0,tc=ec=Jo=null,ac=!1,Ri.current=null,null===n||null===n.return){Fi=1,Bi=t,ji=null;break}e:{var o=e,c=n.return,i=n,d=t;if(t=Mi,i.flags|=2048,i.firstEffect=i.lastEffect=null,null!==d&&"object"==typeof d&&"function"==typeof d.then){var s=d;if(0==(2&i.mode)){var l=i.alternate;l?(i.updateQueue=l.updateQueue,i.memoizedState=l.memoizedState,i.lanes=l.lanes):(i.updateQueue=null,i.memoizedState=null)}var u=0!=(1&Io.current),p=c;do{var f;if(f=13===p.tag){var b=p.memoizedState;if(null!==b)f=null!==b.dehydrated;else{var g=p.memoizedProps;f=void 0!==g.fallback&&(!0!==g.unstable_avoidThisFallback||!u)}}if(f){var m=p.updateQueue;if(null===m){var h=new Set;h.add(s),p.updateQueue=h}else m.add(s);if(0==(2&p.mode)){if(p.flags|=64,i.flags|=16384,i.flags&=-2981,1===i.tag)if(null===i.alternate)i.tag=17;else{var y=lo(-1,1);y.tag=2,uo(i,y)}i.lanes|=1;break e}d=void 0,i=t;var _=o.pingCache;if(null===_?(_=o.pingCache=new ui,d=new Set,_.set(s,d)):void 0===(d=_.get(s))&&(d=new Set,_.set(s,d)),!d.has(i)){d.add(i);var v=zd.bind(null,o,s,i);s.then(v,v)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);d=Error((V(i.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fi&&(Fi=2),d=si(d,i),p=c;do{switch(p.tag){case 3:o=d,p.flags|=4096,t&=-t,p.lanes|=t,po(p,pi(0,o,t));break e;case 1:o=d;var w=p.type,x=p.stateNode;if(0==(64&p.flags)&&("function"==typeof w.getDerivedStateFromError||null!==x&&"function"==typeof x.componentDidCatch&&(null===Xi||!Xi.has(x)))){p.flags|=4096,t&=-t,p.lanes|=t,po(p,fi(p,o,t));break e}}p=p.return}while(null!==p)}Rd(n)}catch(k){t=k,ji===n&&null!==n&&(ji=n=n.return);continue}break}}function Cd(){var e=Pi.current;return Pi.current=Rc,null===e?Rc:e}function Td(e,t){var n=Ni;Ni|=16;var a=Cd();for(Oi===e&&Mi===t||Ed(e,t);;)try{Ad();break}catch(r){Sd(e,r)}if(to(),Ni=n,Pi.current=a,null!==ji)throw Error(c(261));return Oi=null,Mi=0,Fi}function Ad(){for(;null!==ji;)Pd(ji)}function Ld(){for(;null!==ji&&!Tr();)Pd(ji)}function Pd(e){var t=Wi(e.alternate,e,Di);e.memoizedProps=e.pendingProps,null===t?Rd(e):ji=t,Ri.current=null}function Rd(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ii(n,t,Di)))return void(ji=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Di)||0==(4&n.mode)){for(var a=0,r=n.child;null!==r;)a|=r.lanes|r.childLanes,r=r.sibling;n.childLanes=a}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=di(t)))return n.flags&=2047,void(ji=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(ji=t);ji=t=e}while(null!==t);0===Fi&&(Fi=5)}function Nd(e){var t=$r();return Gr(99,Od.bind(null,e,t)),null}function Od(e,t){do{Md()}while(null!==ed);if(0!=(48&Ni))throw Error(c(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(c(177));e.callbackNode=null;var a=n.lanes|n.childLanes,r=a,o=e.pendingLanes&~r;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=r,e.mutableReadLanes&=r,e.entangledLanes&=r,r=e.entanglements;for(var i=e.eventTimes,d=e.expirationTimes;0<o;){var s=31-$t(o),l=1<<s;r[s]=0,i[s]=-1,d[s]=-1,o&=~l}if(null!==rd&&0==(24&a)&&rd.has(e)&&rd.delete(e),e===Oi&&(ji=Oi=null,Mi=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,a=n.firstEffect):a=n:a=n.firstEffect,null!==a){if(r=Ni,Ni|=32,Ri.current=null,qa=Wt,ma(i=ga())){if("selectionStart"in i)d={start:i.selectionStart,end:i.selectionEnd};else e:if(d=(d=i.ownerDocument)&&d.defaultView||window,(l=d.getSelection&&d.getSelection())&&0!==l.rangeCount){d=l.anchorNode,o=l.anchorOffset,s=l.focusNode,l=l.focusOffset;try{d.nodeType,s.nodeType}catch(C){d=null;break e}var u=0,p=-1,f=-1,b=0,g=0,m=i,h=null;t:for(;;){for(var y;m!==d||0!==o&&3!==m.nodeType||(p=u+o),m!==s||0!==l&&3!==m.nodeType||(f=u+l),3===m.nodeType&&(u+=m.nodeValue.length),null!==(y=m.firstChild);)h=m,m=y;for(;;){if(m===i)break t;if(h===d&&++b===o&&(p=u),h===s&&++g===l&&(f=u),null!==(y=m.nextSibling))break;h=(m=h).parentNode}m=y}d=-1===p||-1===f?null:{start:p,end:f}}else d=null;d=d||{start:0,end:0}}else d=null;za={focusedElem:i,selectionRange:d},Wt=!1,ld=null,ud=!1,Qi=a;do{try{jd()}catch(C){if(null===Qi)throw Error(c(330));qd(Qi,C),Qi=Qi.nextEffect}}while(null!==Qi);ld=null,Qi=a;do{try{for(i=e;null!==Qi;){var _=Qi.flags;if(16&_&&he(Qi.stateNode,""),128&_){var v=Qi.alternate;if(null!==v){var w=v.ref;null!==w&&("function"==typeof w?w(null):w.current=null)}}switch(1038&_){case 2:xi(Qi),Qi.flags&=-3;break;case 6:xi(Qi),Qi.flags&=-3,Ci(Qi.alternate,Qi);break;case 1024:Qi.flags&=-1025;break;case 1028:Qi.flags&=-1025,Ci(Qi.alternate,Qi);break;case 4:Ci(Qi.alternate,Qi);break;case 8:Si(i,d=Qi);var x=d.alternate;vi(d),null!==x&&vi(x)}Qi=Qi.nextEffect}}catch(C){if(null===Qi)throw Error(c(330));qd(Qi,C),Qi=Qi.nextEffect}}while(null!==Qi);if(w=za,v=ga(),_=w.focusedElem,i=w.selectionRange,v!==_&&_&&_.ownerDocument&&ba(_.ownerDocument.documentElement,_)){null!==i&&ma(_)&&(v=i.start,void 0===(w=i.end)&&(w=v),"selectionStart"in _?(_.selectionStart=v,_.selectionEnd=Math.min(w,_.value.length)):(w=(v=_.ownerDocument||document)&&v.defaultView||window).getSelection&&(w=w.getSelection(),d=_.textContent.length,x=Math.min(i.start,d),i=void 0===i.end?x:Math.min(i.end,d),!w.extend&&x>i&&(d=i,i=x,x=d),d=fa(_,x),o=fa(_,i),d&&o&&(1!==w.rangeCount||w.anchorNode!==d.node||w.anchorOffset!==d.offset||w.focusNode!==o.node||w.focusOffset!==o.offset)&&((v=v.createRange()).setStart(d.node,d.offset),w.removeAllRanges(),x>i?(w.addRange(v),w.extend(o.node,o.offset)):(v.setEnd(o.node,o.offset),w.addRange(v))))),v=[];for(w=_;w=w.parentNode;)1===w.nodeType&&v.push({element:w,left:w.scrollLeft,top:w.scrollTop});for("function"==typeof _.focus&&_.focus(),_=0;_<v.length;_++)(w=v[_]).element.scrollLeft=w.left,w.element.scrollTop=w.top}Wt=!!qa,za=qa=null,e.current=n,Qi=a;do{try{for(_=e;null!==Qi;){var k=Qi.flags;if(36&k&&hi(_,Qi.alternate,Qi),128&k){v=void 0;var E=Qi.ref;if(null!==E){var S=Qi.stateNode;Qi.tag,v=S,"function"==typeof E?E(v):E.current=v}}Qi=Qi.nextEffect}}catch(C){if(null===Qi)throw Error(c(330));qd(Qi,C),Qi=Qi.nextEffect}}while(null!==Qi);Qi=null,Ir(),Ni=r}else e.current=n;if(Ji)Ji=!1,ed=e,td=t;else for(Qi=a;null!==Qi;)t=Qi.nextEffect,Qi.nextEffect=null,8&Qi.flags&&((k=Qi).sibling=null,k.stateNode=null),Qi=t;if(0===(a=e.pendingLanes)&&(Xi=null),1===a?e===cd?od++:(od=0,cd=e):od=0,n=n.stateNode,kr&&"function"==typeof kr.onCommitFiberRoot)try{kr.onCommitFiberRoot(xr,n,void 0,64==(64&n.current.flags))}catch(C){}if(md(e,Ur()),Yi)throw Yi=!1,e=Ki,Ki=null,e;return 0!=(8&Ni)||Vr(),null}function jd(){for(;null!==Qi;){var e=Qi.alternate;ud||null===ld||(0!=(8&Qi.flags)?Je(Qi,ld)&&(ud=!0):13===Qi.tag&&Ai(e,Qi)&&Je(Qi,ld)&&(ud=!0));var t=Qi.flags;0!=(256&t)&&mi(e,Qi),0==(512&t)||Ji||(Ji=!0,Zr(97,(function(){return Md(),null}))),Qi=Qi.nextEffect}}function Md(){if(90!==td){var e=97<td?97:td;return td=90,Gr(e,Fd)}return!1}function Dd(e,t){nd.push(t,e),Ji||(Ji=!0,Zr(97,(function(){return Md(),null})))}function Id(e,t){ad.push(t,e),Ji||(Ji=!0,Zr(97,(function(){return Md(),null})))}function Fd(){if(null===ed)return!1;var e=ed;if(ed=null,0!=(48&Ni))throw Error(c(331));var t=Ni;Ni|=32;var n=ad;ad=[];for(var a=0;a<n.length;a+=2){var r=n[a],o=n[a+1],i=r.destroy;if(r.destroy=void 0,"function"==typeof i)try{i()}catch(s){if(null===o)throw Error(c(330));qd(o,s)}}for(n=nd,nd=[],a=0;a<n.length;a+=2){r=n[a],o=n[a+1];try{var d=r.create;r.destroy=d()}catch(s){if(null===o)throw Error(c(330));qd(o,s)}}for(d=e.current.firstEffect;null!==d;)e=d.nextEffect,d.nextEffect=null,8&d.flags&&(d.sibling=null,d.stateNode=null),d=e;return Ni=t,Vr(),!0}function Bd(e,t,n){uo(e,t=pi(0,t=si(n,t),1)),t=pd(),null!==(e=gd(e,1))&&(Ut(e,1,t),md(e,t))}function qd(e,t){if(3===e.tag)Bd(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bd(n,e,t);break}if(1===n.tag){var a=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof a.componentDidCatch&&(null===Xi||!Xi.has(a))){var r=fi(n,e=si(t,e),1);if(uo(n,r),r=pd(),null!==(n=gd(n,1)))Ut(n,1,r),md(n,r);else if("function"==typeof a.componentDidCatch&&(null===Xi||!Xi.has(a)))try{a.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function zd(e,t,n){var a=e.pingCache;null!==a&&a.delete(t),t=pd(),e.pingedLanes|=e.suspendedLanes&n,Oi===e&&(Mi&n)===n&&(4===Fi||3===Fi&&(62914560&Mi)===Mi&&500>Ur()-Gi?Ed(e,0):$i|=n),md(e,t)}function Ud(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===$r()?1:2:(0===dd&&(dd=qi),0===(t=qt(62914560&~dd))&&(t=4194304))),n=pd(),null!==(e=gd(e,t))&&(Ut(e,t,n),md(e,n))}function $d(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hd(e,t,n,a){return new $d(e,t,n,a)}function Gd(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zd(e,t){var n=e.alternate;return null===n?((n=Hd(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vd(e,t,n,a,r,o){var i=2;if(a=e,"function"==typeof e)Gd(e)&&(i=1);else if("string"==typeof e)i=5;else e:switch(e){case E:return Wd(n.children,r,o,t);case D:i=8,r|=16;break;case S:i=8,r|=1;break;case C:return(e=Hd(12,n,t,8|r)).elementType=C,e.type=C,e.lanes=o,e;case P:return(e=Hd(13,n,t,r)).type=P,e.elementType=P,e.lanes=o,e;case R:return(e=Hd(19,n,t,r)).elementType=R,e.lanes=o,e;case I:return Qd(n,r,o,t);case F:return(e=Hd(24,n,t,r)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:i=10;break e;case A:i=9;break e;case L:i=11;break e;case N:i=14;break e;case O:i=16,a=null;break e;case j:i=22;break e}throw Error(c(130,null==e?e:typeof e,""))}return(t=Hd(i,n,t,r)).elementType=e,t.type=a,t.lanes=o,t}function Wd(e,t,n,a){return(e=Hd(7,e,a,t)).lanes=n,e}function Qd(e,t,n,a){return(e=Hd(23,e,a,t)).elementType=I,e.lanes=n,e}function Yd(e,t,n){return(e=Hd(6,e,null,t)).lanes=n,e}function Kd(e,t,n){return(t=Hd(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xd(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=zt(0),this.expirationTimes=zt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zt(0),this.mutableSourceEagerHydrationData=null}function Jd(e,t,n,a){var r=t.current,o=pd(),i=fd(r);e:if(n){t:{if(Qe(n=n._reactInternals)!==n||1!==n.tag)throw Error(c(170));var d=n;do{switch(d.tag){case 3:d=d.stateNode.context;break t;case 1:if(mr(d.type)){d=d.stateNode.__reactInternalMemoizedMergedChildContext;break t}}d=d.return}while(null!==d);throw Error(c(171))}if(1===n.tag){var s=n.type;if(mr(s)){n=_r(n,s,d);break e}}n=d}else n=ur;return null===t.context?t.context=n:t.pendingContext=n,(t=lo(o,i)).payload={element:e},null!==(a=void 0===a?null:a)&&(t.callback=a),uo(r,t),bd(r,i,o),i}function es(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function ts(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function ns(e,t){ts(e,t),(e=e.alternate)&&ts(e,t)}function as(e,t,n){var a=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xd(e,t,null!=n&&!0===n.hydrate),t=Hd(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,io(t),e[Ja]=n.current,Ra(8===e.nodeType?e.parentNode:e),a)for(e=0;e<a.length;e++){var r=(t=a[e])._getVersion;r=r(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,r]:n.mutableSourceEagerHydrationData.push(t,r)}this._internalRoot=n}function rs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function os(e,t,n,a,r){var o=n._reactRootContainer;if(o){var c=o._internalRoot;if("function"==typeof r){var i=r;r=function(){var e=es(c);i.call(e)}}Jd(t,c,e,r)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new as(e,0,t?{hydrate:!0}:void 0)}(n,a),c=o._internalRoot,"function"==typeof r){var d=r;r=function(){var e=es(c);d.call(e)}}wd((function(){Jd(t,c,e,r)}))}return es(c)}function cs(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rs(t))throw Error(c(200));return function(e,t,n){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:k,key:null==a?null:""+a,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wi=function(e,t,n){var a=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fr.current)Dc=!0;else{if(0==(n&a)){switch(Dc=!1,t.tag){case 3:Zc(t),Vo();break;case 5:Mo(t);break;case 1:mr(t.type)&&vr(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:a=t.memoizedProps.value;var r=t.type._context;lr(Kr,r._currentValue),r._currentValue=a;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xc(e,t,n):(lr(Io,1&Io.current),null!==(t=oi(e,t,n))?t.sibling:null);lr(Io,1&Io.current);break;case 19:if(a=0!=(n&t.childLanes),0!=(64&e.flags)){if(a)return ri(e,t,n);t.flags|=64}if(null!==(r=t.memoizedState)&&(r.rendering=null,r.tail=null,r.lastEffect=null),lr(Io,Io.current),a)break;return null;case 23:case 24:return t.lanes=0,zc(e,t,n)}return oi(e,t,n)}Dc=0!=(16384&e.flags)}else Dc=!1;switch(t.lanes=0,t.tag){case 2:if(a=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,r=gr(t,pr.current),ro(t,n),r=cc(null,t,a,e,r,n),t.flags|=1,"object"==typeof r&&null!==r&&"function"==typeof r.render&&void 0===r.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,mr(a)){var o=!0;vr(t)}else o=!1;t.memoizedState=null!==r.state&&void 0!==r.state?r.state:null,io(t);var i=a.getDerivedStateFromProps;"function"==typeof i&&mo(t,a,i,e),r.updater=ho,t.stateNode=r,r._reactInternals=t,wo(t,a,e,n),t=Gc(null,t,a,!0,o,n)}else t.tag=0,Ic(null,t,r,n),t=t.child;return t;case 16:r=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return Gd(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===N)return 14}return 2}(r),e=Yr(r,e),o){case 0:t=$c(null,t,r,e,n);break e;case 1:t=Hc(null,t,r,e,n);break e;case 11:t=Fc(null,t,r,e,n);break e;case 14:t=Bc(null,t,r,Yr(r.type,e),a,n);break e}throw Error(c(306,r,""))}return t;case 0:return a=t.type,r=t.pendingProps,$c(e,t,a,r=t.elementType===a?r:Yr(a,r),n);case 1:return a=t.type,r=t.pendingProps,Hc(e,t,a,r=t.elementType===a?r:Yr(a,r),n);case 3:if(Zc(t),a=t.updateQueue,null===e||null===a)throw Error(c(282));if(a=t.pendingProps,r=null!==(r=t.memoizedState)?r.element:null,so(e,t),fo(t,a,null,n),(a=t.memoizedState.element)===r)Vo(),t=oi(e,t,n);else{if((o=(r=t.stateNode).hydrate)&&(qo=Va(t.stateNode.containerInfo.firstChild),Bo=t,o=zo=!0),o){if(null!=(e=r.mutableSourceEagerHydrationData))for(r=0;r<e.length;r+=2)(o=e[r])._workInProgressVersionPrimary=e[r+1],Wo.push(o);for(n=To(t,null,a,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Ic(e,t,a,n),Vo();t=t.child}return t;case 5:return Mo(t),null===e&&Ho(t),a=t.type,r=t.pendingProps,o=null!==e?e.memoizedProps:null,i=r.children,$a(a,r)?i=null:null!==o&&$a(a,o)&&(t.flags|=16),Uc(e,t),Ic(e,t,i,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xc(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),a=t.pendingProps,null===e?t.child=Co(t,null,a,n):Ic(e,t,a,n),t.child;case 11:return a=t.type,r=t.pendingProps,Fc(e,t,a,r=t.elementType===a?r:Yr(a,r),n);case 7:return Ic(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ic(e,t,t.pendingProps.children,n),t.child;case 10:e:{a=t.type._context,r=t.pendingProps,i=t.memoizedProps,o=r.value;var d=t.type._context;if(lr(Kr,d._currentValue),d._currentValue=o,null!==i)if(d=i.value,0===(o=sa(d,o)?0:0|("function"==typeof a._calculateChangedBits?a._calculateChangedBits(d,o):1073741823))){if(i.children===r.children&&!fr.current){t=oi(e,t,n);break e}}else for(null!==(d=t.child)&&(d.return=t);null!==d;){var s=d.dependencies;if(null!==s){i=d.child;for(var l=s.firstContext;null!==l;){if(l.context===a&&0!=(l.observedBits&o)){1===d.tag&&((l=lo(-1,n&-n)).tag=2,uo(d,l)),d.lanes|=n,null!==(l=d.alternate)&&(l.lanes|=n),ao(d.return,n),s.lanes|=n;break}l=l.next}}else i=10===d.tag&&d.type===t.type?null:d.child;if(null!==i)i.return=d;else for(i=d;null!==i;){if(i===t){i=null;break}if(null!==(d=i.sibling)){d.return=i.return,i=d;break}i=i.return}d=i}Ic(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,a=(o=t.pendingProps).children,ro(t,n),a=a(r=oo(r,o.unstable_observedBits)),t.flags|=1,Ic(e,t,a,n),t.child;case 14:return o=Yr(r=t.type,t.pendingProps),Bc(e,t,r,o=Yr(r.type,o),a,n);case 15:return qc(e,t,t.type,t.pendingProps,a,n);case 17:return a=t.type,r=t.pendingProps,r=t.elementType===a?r:Yr(a,r),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,mr(a)?(e=!0,vr(t)):e=!1,ro(t,n),_o(t,a,r),wo(t,a,r,n),Gc(null,t,a,!0,e,n);case 19:return ri(e,t,n);case 23:case 24:return zc(e,t,n)}throw Error(c(156,t.tag))},as.prototype.render=function(e){Jd(e,this._internalRoot,null,null)},as.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Jd(null,e,null,(function(){t[Ja]=null}))},et=function(e){13===e.tag&&(bd(e,4,pd()),ns(e,4))},tt=function(e){13===e.tag&&(bd(e,67108864,pd()),ns(e,67108864))},nt=function(e){if(13===e.tag){var t=pd(),n=fd(e);bd(e,n,t),ns(e,n)}},at=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var r=rr(a);if(!r)throw Error(c(90));K(a),ne(a,r)}}}break;case"textarea":se(e,n);break;case"select":null!=(t=n.value)&&ce(e,!!n.multiple,t,!1)}},Ne=vd,Oe=function(e,t,n,a,r){var o=Ni;Ni|=4;try{return Gr(98,e.bind(null,t,n,a,r))}finally{0===(Ni=o)&&(Vi(),Vr())}},je=function(){0==(49&Ni)&&(function(){if(null!==rd){var e=rd;rd=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,md(e,Ur())}))}Vr()}(),Md())},Me=function(e,t){var n=Ni;Ni|=2;try{return e(t)}finally{0===(Ni=n)&&(Vi(),Vr())}};var is={Events:[nr,ar,rr,Pe,Re,Md,{current:!1}]},ds={findFiberByHostInstance:tr,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},ss={bundleType:ds.bundleType,version:ds.version,rendererPackageName:ds.rendererPackageName,rendererConfig:ds.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:ds.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ls=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ls.isDisabled&&ls.supportsFiber)try{xr=ls.inject(ss),kr=ls}catch(ge){}}t.hydrate=function(e,t,n){if(!rs(t))throw Error(c(200));return os(null,e,t,!0,n)}},73935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(64448)},69590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,a="function"==typeof Set,r="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,c){if(e===c)return!0;if(e&&c&&"object"==typeof e&&"object"==typeof c){if(e.constructor!==c.constructor)return!1;var i,d,s,l;if(Array.isArray(e)){if((i=e.length)!=c.length)return!1;for(d=i;0!=d--;)if(!o(e[d],c[d]))return!1;return!0}if(n&&e instanceof Map&&c instanceof Map){if(e.size!==c.size)return!1;for(l=e.entries();!(d=l.next()).done;)if(!c.has(d.value[0]))return!1;for(l=e.entries();!(d=l.next()).done;)if(!o(d.value[1],c.get(d.value[0])))return!1;return!0}if(a&&e instanceof Set&&c instanceof Set){if(e.size!==c.size)return!1;for(l=e.entries();!(d=l.next()).done;)if(!c.has(d.value[0]))return!1;return!0}if(r&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(c)){if((i=e.length)!=c.length)return!1;for(d=i;0!=d--;)if(e[d]!==c[d])return!1;return!0}if(e.constructor===RegExp)return e.source===c.source&&e.flags===c.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof c.valueOf)return e.valueOf()===c.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof c.toString)return e.toString()===c.toString();if((i=(s=Object.keys(e)).length)!==Object.keys(c).length)return!1;for(d=i;0!=d--;)if(!Object.prototype.hasOwnProperty.call(c,s[d]))return!1;if(t&&e instanceof Element)return!1;for(d=i;0!=d--;)if(("_owner"!==s[d]&&"__v"!==s[d]&&"__o"!==s[d]||!e.$$typeof)&&!o(e[s[d]],c[s[d]]))return!1;return!0}return e!=e&&c!=c}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},70405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var a=n(67294),r=n(45697),o=n.n(r),c=n(69590),i=n.n(c),d=n(41143),s=n.n(d),l=n(96774),u=n.n(l);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,b(e,t)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function g(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)t.indexOf(n=o[a])>=0||(r[n]=e[n]);return r}var m={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},h={rel:["amphtml","canonical","alternate"]},y={type:["application/ld+json"]},_={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},v=Object.keys(m).map((function(e){return m[e]})),w={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(w).reduce((function(e,t){return e[w[t]]=t,e}),{}),k=function(e,t){for(var n=e.length-1;n>=0;n-=1){var a=e[n];if(Object.prototype.hasOwnProperty.call(a,t))return a[t]}return null},E=function(e){var t=k(e,m.TITLE),n=k(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var a=k(e,"defaultTitle");return t||a||void 0},S=function(e){return k(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[m.BASE]})).map((function(e){return e[m.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var a=Object.keys(n),r=0;r<a.length;r+=1){var o=a[r].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var a={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var r={};n.filter((function(e){for(var n,o=Object.keys(e),c=0;c<o.length;c+=1){var i=o[c],d=i.toLowerCase();-1===t.indexOf(d)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===d&&"stylesheet"===e[d].toLowerCase()||(n=d),-1===t.indexOf(i)||"innerHTML"!==i&&"cssText"!==i&&"itemprop"!==i||(n=i)}if(!n||!e[n])return!1;var s=e[n].toLowerCase();return a[n]||(a[n]={}),r[n]||(r[n]={}),!a[n][s]&&(r[n][s]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(r),c=0;c<o.length;c+=1){var i=o[c],d=p({},a[i],r[i]);a[i]=d}return e}),[]).reverse()},L=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},R=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),a=0;a<n.length;a+=1)if(t[n[a]]&&t[n[a]].includes(e[n[a]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},N=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},O=[m.NOSCRIPT,m.SCRIPT,m.STYLE],j=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},M=function(e){return Object.keys(e).reduce((function(t,n){var a=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+a:a}),"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[w[n]||n]=e[n],t}),t)},I=function(e,t){return t.map((function(t,n){var r,o=((r={key:n})["data-rh"]=!0,r);return Object.keys(t).forEach((function(e){var n=w[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),a.createElement(e,o)}))},F=function(e,t,n){switch(e){case m.TITLE:return{toComponent:function(){return n=t.titleAttributes,(r={key:e=t.title})["data-rh"]=!0,o=D(n,r),[a.createElement(m.TITLE,o,e)];var e,n,r,o},toString:function(){return function(e,t,n,a){var r=M(n),o=P(t);return r?"<"+e+' data-rh="true" '+r+">"+j(o,a)+"</"+e+">":"<"+e+' data-rh="true">'+j(o,a)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return M(t)}};default:return{toComponent:function(){return I(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,a){var r=Object.keys(a).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var r=void 0===a[t]?t:t+'="'+j(a[t],n)+'"';return e?e+" "+r:r}),""),o=a.innerHTML||a.cssText||"",c=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+r+(c?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,a=e.encode,r=e.htmlAttributes,o=e.noscriptTags,c=e.styleTags,i=e.title,d=void 0===i?"":i,s=e.titleAttributes,l=e.linkTags,u=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var b=function(e){var t=e.linkTags,n=e.scriptTags,a=e.encode,r=R(e.metaTags,_),o=R(t,h),c=R(n,y);return{priorityMethods:{toComponent:function(){return[].concat(I(m.META,r.priority),I(m.LINK,o.priority),I(m.SCRIPT,c.priority))},toString:function(){return F(m.META,r.priority,a)+" "+F(m.LINK,o.priority,a)+" "+F(m.SCRIPT,c.priority,a)}},metaTags:r.default,linkTags:o.default,scriptTags:c.default}}(e);f=b.priorityMethods,l=b.linkTags,u=b.metaTags,p=b.scriptTags}return{priority:f,base:F(m.BASE,t,a),bodyAttributes:F("bodyAttributes",n,a),htmlAttributes:F("htmlAttributes",r,a),link:F(m.LINK,l,a),meta:F(m.META,u,a),noscript:F(m.NOSCRIPT,o,a),script:F(m.SCRIPT,p,a),style:F(m.STYLE,c,a),title:F(m.TITLE,{title:d,titleAttributes:s},a)}},q=[],z=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?q:n.instances},add:function(e){(n.canUseDOM?q:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?q:n.instances).indexOf(e);(n.canUseDOM?q:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=a.createContext({}),$=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var a;return(a=e.call(this,n)||this).helmetData=new z(a.props.context,t.canUseDOM),a}return f(t,e),t.prototype.render=function(){return a.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(a.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,a=document.head||document.querySelector(m.HEAD),r=a.querySelectorAll(e+"[data-rh]"),o=[].slice.call(r),c=[];return t&&t.length&&t.forEach((function(t){var a=document.createElement(e);for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&("innerHTML"===r?a.innerHTML=t.innerHTML:"cssText"===r?a.styleSheet?a.styleSheet.cssText=t.cssText:a.appendChild(document.createTextNode(t.cssText)):a.setAttribute(r,void 0===t[r]?"":t[r]));a.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,a.isEqualNode(e)}))?o.splice(n,1):c.push(a)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),c.forEach((function(e){return a.appendChild(e)})),{oldTags:o,newTags:c}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var a=n.getAttribute("data-rh"),r=a?a.split(","):[],o=[].concat(r),c=Object.keys(t),i=0;i<c.length;i+=1){var d=c[i],s=t[d]||"";n.getAttribute(d)!==s&&n.setAttribute(d,s),-1===r.indexOf(d)&&r.push(d);var l=o.indexOf(d);-1!==l&&o.splice(l,1)}for(var u=o.length-1;u>=0;u-=1)n.removeAttribute(o[u]);r.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==c.join(",")&&n.setAttribute("data-rh",c.join(","))}},W=function(e,t){var n=e.baseTag,a=e.htmlAttributes,r=e.linkTags,o=e.metaTags,c=e.noscriptTags,i=e.onChangeClientState,d=e.scriptTags,s=e.styleTags,l=e.title,u=e.titleAttributes;V(m.BODY,e.bodyAttributes),V(m.HTML,a),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),V(m.TITLE,t)}(l,u);var p={baseTag:Z(m.BASE,n),linkTags:Z(m.LINK,r),metaTags:Z(m.META,o),noscriptTags:Z(m.NOSCRIPT,c),scriptTags:Z(m.SCRIPT,d),styleTags:Z(m.STYLE,s)},f={},b={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,a=t.oldTags;n.length&&(f[e]=n),a.length&&(b[e]=p[e].oldTags)})),t&&t(),i(e,f,b)},Q=null,Y=function(e){function t(){for(var t,n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(t=e.call.apply(e,[this].concat(a))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!u()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,a=n.setHelmet,r=null,o=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:k(e,"defer"),encode:k(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:A(m.LINK,["rel","href"],e),metaTags:A(m.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(m.NOSCRIPT,["innerHTML"],e),onChangeClientState:S(e),scriptTags:A(m.SCRIPT,["src","innerHTML"],e),styleTags:A(m.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){W(t,(function(){Q=null}))})):(W(t),Q=null)):B&&(r=B(o)),a(r)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(a.Component);Y.propTypes={context:$.isRequired},Y.displayName="HelmetDispatcher";var K=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!i()(N(this.props,"helmetData"),N(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case m.SCRIPT:case m.NOSCRIPT:return{innerHTML:t};case m.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,a=e.arrayTypeChildren;return p({},a,((t={})[n.type]=[].concat(a[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,a=e.child,r=e.newProps,o=e.newChildProps,c=e.nestedChildren;switch(a.type){case m.TITLE:return p({},r,((t={})[a.type]=c,t.titleAttributes=p({},o),t));case m.BODY:return p({},r,{bodyAttributes:p({},o)});case m.HTML:return p({},r,{htmlAttributes:p({},o)});default:return p({},r,((n={})[a.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var a;n=p({},n,((a={})[t]=e[t],a))})),n},n.warnOnInvalidChildren=function(e,t){return s()(v.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+v.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),s()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,r={};return a.Children.forEach(e,(function(e){if(e&&e.props){var a=e.props,o=a.children,c=g(a,K),i=Object.keys(c).reduce((function(e,t){return e[x[t]||t]=c[t],e}),{}),d=e.type;switch("symbol"==typeof d?d=d.toString():n.warnOnInvalidChildren(e,o),d){case m.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case m.LINK:case m.META:case m.NOSCRIPT:case m.SCRIPT:case m.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:i,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:i,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(r,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),r=p({},n),o=n.helmetData;return t&&(r=this.mapChildrenToProps(t,r)),!o||o instanceof z||(o=new z(o.context,o.instances)),o?a.createElement(Y,p({},r,{context:o.value,helmetData:void 0})):a.createElement(U.Consumer,null,(function(e){return a.createElement(Y,p({},r,{context:e}))}))},t}(a.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},69921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,a=n?Symbol.for("react.element"):60103,r=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,c=n?Symbol.for("react.strict_mode"):60108,i=n?Symbol.for("react.profiler"):60114,d=n?Symbol.for("react.provider"):60109,s=n?Symbol.for("react.context"):60110,l=n?Symbol.for("react.async_mode"):60111,u=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,b=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116,h=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,_=n?Symbol.for("react.responder"):60118,v=n?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case a:switch(e=e.type){case l:case u:case o:case i:case c:case f:return e;default:switch(e=e&&e.$$typeof){case s:case p:case m:case g:case d:return e;default:return t}}case r:return t}}}function x(e){return w(e)===u}t.AsyncMode=l,t.ConcurrentMode=u,t.ContextConsumer=s,t.ContextProvider=d,t.Element=a,t.ForwardRef=p,t.Fragment=o,t.Lazy=m,t.Memo=g,t.Portal=r,t.Profiler=i,t.StrictMode=c,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||w(e)===l},t.isConcurrentMode=x,t.isContextConsumer=function(e){return w(e)===s},t.isContextProvider=function(e){return w(e)===d},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===a},t.isForwardRef=function(e){return w(e)===p},t.isFragment=function(e){return w(e)===o},t.isLazy=function(e){return w(e)===m},t.isMemo=function(e){return w(e)===g},t.isPortal=function(e){return w(e)===r},t.isProfiler=function(e){return w(e)===i},t.isStrictMode=function(e){return w(e)===c},t.isSuspense=function(e){return w(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===u||e===i||e===c||e===f||e===b||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===g||e.$$typeof===d||e.$$typeof===s||e.$$typeof===p||e.$$typeof===y||e.$$typeof===_||e.$$typeof===v||e.$$typeof===h)},t.typeOf=w},59864:(e,t,n)=>{"use strict";e.exports=n(69921)},68356:(e,t,n)=>{"use strict";function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(){return c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},c.apply(this,arguments)}var i=n(67294),d=n(45697),s=[],l=[];function u(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(a){var r=u(e[a]);r.loading?t.loading=!0:(t.loaded[a]=r.loaded,t.error=r.error),n.push(r.promise),r.promise.then((function(e){t.loaded[a]=e})).catch((function(e){t.error=e}))}))}catch(a){t.error=a}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return i.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function b(e,t){var u,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var b=c({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function m(){return g||(g=e(b.loader)),g.promise}return s.push(m),"function"==typeof b.webpack&&l.push((function(){if((0,b.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return m()})),p=u=function(t){function n(n){var a;return o(r(r(a=t.call(this,n)||this)),"retry",(function(){a.setState({error:null,loading:!0,timedOut:!1}),g=e(b.loader),a._loadModule()})),m(),a.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},a}a(n,t),n.preload=function(){return m()};var c=n.prototype;return c.UNSAFE_componentWillMount=function(){this._loadModule()},c.componentDidMount=function(){this._mounted=!0},c._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(b.modules)&&b.modules.forEach((function(t){e.context.loadable.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof b.delay&&(0===b.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),b.delay)),"number"==typeof b.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),b.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},c.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},c._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},c.render=function(){return this.state.loading||this.state.error?i.createElement(b.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?b.render(this.state.loaded,this.props):null},n}(i.Component),o(u,"contextTypes",{loadable:d.shape({report:d.func.isRequired})}),p}function g(e){return b(u,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return b(p,e)};var m=function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return i.Children.only(this.props.children)},t}(i.Component);function h(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return h(e)}))}o(m,"propTypes",{report:d.func.isRequired}),o(m,"childContextTypes",{loadable:d.shape({report:d.func.isRequired}).isRequired}),g.Capture=m,g.preloadAll=function(){return new Promise((function(e,t){h(s).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){h(l).then(e,e)}))},e.exports=g},18790:(e,t,n)=>{"use strict";n.d(t,{H:()=>i,f:()=>c});var a=n(16550),r=n(87462),o=n(67294);function c(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var r=e.path?(0,a.LX)(t,e):n.length?n[n.length-1].match:a.F0.computeRootMatch(t);return r&&(n.push({route:e,match:r}),e.routes&&c(e.routes,t,n)),r})),n}function i(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(a.rs,n,e.map((function(e,n){return o.createElement(a.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,r.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,r.Z)({},n,t,{route:e}))}})}))):null}},73727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>_,VK:()=>l,rU:()=>m});var a=n(16550),r=n(75068),o=n(67294),c=n(99318),i=n(87462),d=n(63366),s=n(38776),l=function(e){function t(){for(var t,n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(t=e.call.apply(e,[this].concat(a))||this).history=(0,c.lX)(t.props),t}return(0,r.Z)(t,e),t.prototype.render=function(){return o.createElement(a.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var u=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,c.ob)(e,null,null,t):e},f=function(e){return e},b=o.forwardRef;void 0===b&&(b=f);var g=b((function(e,t){var n=e.innerRef,a=e.navigate,r=e.onClick,c=(0,d.Z)(e,["innerRef","navigate","onClick"]),s=c.target,l=(0,i.Z)({},c,{onClick:function(e){try{r&&r(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||s&&"_self"!==s||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),a())}});return l.ref=f!==b&&t||n,o.createElement("a",l)}));var m=b((function(e,t){var n=e.component,r=void 0===n?g:n,l=e.replace,m=e.to,h=e.innerRef,y=(0,d.Z)(e,["component","replace","to","innerRef"]);return o.createElement(a.s6.Consumer,null,(function(e){e||(0,s.Z)(!1);var n=e.history,a=p(u(m,e.location),e.location),d=a?n.createHref(a):"",g=(0,i.Z)({},y,{href:d,navigate:function(){var t=u(m,e.location),a=(0,c.Ep)(e.location)===(0,c.Ep)(p(t));(l||a?n.replace:n.push)(t)}});return f!==b?g.ref=t||h:g.innerRef=h,o.createElement(r,g)}))})),h=function(e){return e},y=o.forwardRef;void 0===y&&(y=h);var _=y((function(e,t){var n=e["aria-current"],r=void 0===n?"page":n,c=e.activeClassName,l=void 0===c?"active":c,f=e.activeStyle,b=e.className,g=e.exact,_=e.isActive,v=e.location,w=e.sensitive,x=e.strict,k=e.style,E=e.to,S=e.innerRef,C=(0,d.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(a.s6.Consumer,null,(function(e){e||(0,s.Z)(!1);var n=v||e.location,c=p(u(E,n),n),d=c.pathname,T=d&&d.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,a.LX)(n.pathname,{path:T,exact:g,sensitive:w,strict:x}):null,L=!!(_?_(A,n):A),P="function"==typeof b?b(L):b,R="function"==typeof k?k(L):k;L&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(P,l),R=(0,i.Z)({},R,f));var N=(0,i.Z)({"aria-current":L&&r||null,className:P,style:R,to:c},C);return h!==y?N.ref=t||S:N.innerRef=S,o.createElement(m,N)}))}))},16550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>E,F0:()=>_,LX:()=>k,TH:()=>O,k6:()=>N,rs:()=>P,s6:()=>y});var a=n(75068),r=n(67294),o=n(45697),c=n.n(o),i=n(99318),d=n(38776),s=n(87462),l=n(39658),u=n.n(l),p=(n(59864),n(63366)),f=(n(8679),1073741823),b="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=r.createContext||function(e,t){var n,o,i="__create-react-context-"+function(){var e="__global_unique_id__";return b[e]=(b[e]||0)+1}()+"__",d=function(e){function n(){for(var t,n,a,r=arguments.length,o=new Array(r),c=0;c<r;c++)o[c]=arguments[c];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,a=[],{on:function(e){a.push(e)},off:function(e){a=a.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,a.forEach((function(e){return e(n,t)}))}}),t}(0,a.Z)(n,e);var r=n.prototype;return r.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,a=this.props.value,r=e.value;((o=a)===(c=r)?0!==o||1/o==1/c:o!=o&&c!=c)?n=0:(n="function"==typeof t?t(a,r):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,c},r.render=function(){return this.props.children},n}(r.Component);d.childContextTypes=((n={})[i]=c().object.isRequired,n);var s=function(t){function n(){for(var e,n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=t.call.apply(t,[this].concat(a))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,a.Z)(n,t);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},r.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},r.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},r.getValue=function(){return this.context[i]?this.context[i].get():e},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(r.Component);return s.contextTypes=((o={})[i]=c().object,o),{Provider:d,Consumer:s}},m=function(e){var t=g();return t.displayName=e,t},h=m("Router-History"),y=m("Router"),_=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,a.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return r.createElement(y.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},r.createElement(h.Provider,{children:this.props.children||null,value:this.props.history}))},t}(r.Component);r.Component;r.Component;var v={},w=1e4,x=0;function k(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,a=n.path,r=n.exact,o=void 0!==r&&r,c=n.strict,i=void 0!==c&&c,d=n.sensitive,s=void 0!==d&&d;return[].concat(a).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var a=function(e,t){var n=""+t.end+t.strict+t.sensitive,a=v[n]||(v[n]={});if(a[e])return a[e];var r=[],o={regexp:u()(e,r,t),keys:r};return x<w&&(a[e]=o,x++),o}(n,{end:o,strict:i,sensitive:s}),r=a.regexp,c=a.keys,d=r.exec(e);if(!d)return null;var l=d[0],p=d.slice(1),f=e===l;return o&&!f?null:{path:n,url:"/"===n&&""===l?"/":l,isExact:f,params:c.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,a.Z)(t,e),t.prototype.render=function(){var e=this;return r.createElement(y.Consumer,null,(function(t){t||(0,d.Z)(!1);var n=e.props.location||t.location,a=e.props.computedMatch?e.props.computedMatch:e.props.path?k(n.pathname,e.props):t.match,o=(0,s.Z)({},t,{location:n,match:a}),c=e.props,i=c.children,l=c.component,u=c.render;return Array.isArray(i)&&function(e){return 0===r.Children.count(e)}(i)&&(i=null),r.createElement(y.Provider,{value:o},o.match?i?"function"==typeof i?i(o):i:l?r.createElement(l,o):u?u(o):null:"function"==typeof i?i(o):null)}))},t}(r.Component);function S(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=S(e);return 0!==t.pathname.indexOf(n)?t:(0,s.Z)({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:(0,i.Ep)(e)}function A(e){return function(){(0,d.Z)(!1)}}function L(){}r.Component;var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,a.Z)(t,e),t.prototype.render=function(){var e=this;return r.createElement(y.Consumer,null,(function(t){t||(0,d.Z)(!1);var n,a,o=e.props.location||t.location;return r.Children.forEach(e.props.children,(function(e){if(null==a&&r.isValidElement(e)){n=e;var c=e.props.path||e.props.from;a=c?k(o.pathname,(0,s.Z)({},e.props,{path:c})):t.match}})),a?r.cloneElement(n,{location:o,computedMatch:a}):null}))},t}(r.Component);var R=r.useContext;function N(){return R(h)}function O(){return R(y).location}},39658:(e,t,n)=>{var a=n(5826);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return i(o(e,t),t)},e.exports.tokensToFunction=i,e.exports.tokensToRegExp=p;var r=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,a=[],o=0,c=0,i="",l=t&&t.delimiter||"/";null!=(n=r.exec(e));){var u=n[0],p=n[1],f=n.index;if(i+=e.slice(c,f),c=f+u.length,p)i+=p[1];else{var b=e[c],g=n[2],m=n[3],h=n[4],y=n[5],_=n[6],v=n[7];i&&(a.push(i),i="");var w=null!=g&&null!=b&&b!==g,x="+"===_||"*"===_,k="?"===_||"*"===_,E=n[2]||l,S=h||y;a.push({name:m||o++,prefix:g||"",delimiter:E,optional:k,repeat:x,partial:w,asterisk:!!v,pattern:S?s(S):v?".*":"[^"+d(E)+"]+?"})}}return c<e.length&&(i+=e.substr(c)),i&&a.push(i),a}function c(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function i(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++)"object"==typeof e[r]&&(n[r]=new RegExp("^(?:"+e[r].pattern+")$",u(t)));return function(t,r){for(var o="",i=t||{},d=(r||{}).pretty?c:encodeURIComponent,s=0;s<e.length;s++){var l=e[s];if("string"!=typeof l){var u,p=i[l.name];if(null==p){if(l.optional){l.partial&&(o+=l.prefix);continue}throw new TypeError('Expected "'+l.name+'" to be defined')}if(a(p)){if(!l.repeat)throw new TypeError('Expected "'+l.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(l.optional)continue;throw new TypeError('Expected "'+l.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(u=d(p[f]),!n[s].test(u))throw new TypeError('Expected all "'+l.name+'" to match "'+l.pattern+'", but received `'+JSON.stringify(u)+"`");o+=(0===f?l.prefix:l.delimiter)+u}}else{if(u=l.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):d(p),!n[s].test(u))throw new TypeError('Expected "'+l.name+'" to match "'+l.pattern+'", but received "'+u+'"');o+=l.prefix+u}}else o+=l}return o}}function d(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function s(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function l(e,t){return e.keys=t,e}function u(e){return e&&e.sensitive?"":"i"}function p(e,t,n){a(t)||(n=t||n,t=[]);for(var r=(n=n||{}).strict,o=!1!==n.end,c="",i=0;i<e.length;i++){var s=e[i];if("string"==typeof s)c+=d(s);else{var p=d(s.prefix),f="(?:"+s.pattern+")";t.push(s),s.repeat&&(f+="(?:"+p+f+")*"),c+=f=s.optional?s.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var b=d(n.delimiter||"/"),g=c.slice(-b.length)===b;return r||(c=(g?c.slice(0,-b.length):c)+"(?:"+b+"(?=$))?"),c+=o?"$":r&&g?"":"(?="+b+"|$)",l(new RegExp("^"+c,u(n)),t)}function f(e,t,n){return a(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var a=0;a<n.length;a++)t.push({name:a,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return l(e,t)}(e,t):a(e)?function(e,t,n){for(var a=[],r=0;r<e.length;r++)a.push(f(e[r],t,n).source);return l(new RegExp("(?:"+a.join("|")+")",u(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},72408:(e,t,n)=>{"use strict";var a=n(27418),r=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var c=60109,i=60110,d=60112;t.Suspense=60113;var s=60115,l=60116;if("function"==typeof Symbol&&Symbol.for){var u=Symbol.for;r=u("react.element"),o=u("react.portal"),t.Fragment=u("react.fragment"),t.StrictMode=u("react.strict_mode"),t.Profiler=u("react.profiler"),c=u("react.provider"),i=u("react.context"),d=u("react.forward_ref"),t.Suspense=u("react.suspense"),s=u("react.memo"),l=u("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g={};function m(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||b}function h(){}function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||b}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},h.prototype=m.prototype;var _=y.prototype=new h;_.constructor=y,a(_,m.prototype),_.isPureReactComponent=!0;var v={current:null},w=Object.prototype.hasOwnProperty,x={key:!0,ref:!0,__self:!0,__source:!0};function k(e,t,n){var a,o={},c=null,i=null;if(null!=t)for(a in void 0!==t.ref&&(i=t.ref),void 0!==t.key&&(c=""+t.key),t)w.call(t,a)&&!x.hasOwnProperty(a)&&(o[a]=t[a]);var d=arguments.length-2;if(1===d)o.children=n;else if(1<d){for(var s=Array(d),l=0;l<d;l++)s[l]=arguments[l+2];o.children=s}if(e&&e.defaultProps)for(a in d=e.defaultProps)void 0===o[a]&&(o[a]=d[a]);return{$$typeof:r,type:e,key:c,ref:i,props:o,_owner:v.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===r}var S=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,a,c){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var d=!1;if(null===e)d=!0;else switch(i){case"string":case"number":d=!0;break;case"object":switch(e.$$typeof){case r:case o:d=!0}}if(d)return c=c(d=e),e=""===a?"."+C(d,0):a,Array.isArray(c)?(n="",null!=e&&(n=e.replace(S,"$&/")+"/"),T(c,t,n,"",(function(e){return e}))):null!=c&&(E(c)&&(c=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(c,n+(!c.key||d&&d.key===c.key?"":(""+c.key).replace(S,"$&/")+"/")+e)),t.push(c)),1;if(d=0,a=""===a?".":a+":",Array.isArray(e))for(var s=0;s<e.length;s++){var l=a+C(i=e[s],s);d+=T(i,t,n,l,c)}else if(l=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof l)for(e=l.call(e),s=0;!(i=e.next()).done;)d+=T(i=i.value,t,n,l=a+C(i,s++),c);else if("object"===i)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return d}function A(e,t,n){if(null==e)return e;var a=[],r=0;return T(e,a,"","",(function(e){return t.call(n,e,r++)})),a}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var P={current:null};function R(){var e=P.current;if(null===e)throw Error(f(321));return e}var N={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:v,IsSomeRendererActing:{current:!1},assign:a};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(f(143));return e}},t.Component=m,t.PureComponent=y,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=N,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var o=a({},e.props),c=e.key,i=e.ref,d=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,d=v.current),void 0!==t.key&&(c=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(l in t)w.call(t,l)&&!x.hasOwnProperty(l)&&(o[l]=void 0===t[l]&&void 0!==s?s[l]:t[l])}var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){s=Array(l);for(var u=0;u<l;u++)s[u]=arguments[u+2];o.children=s}return{$$typeof:r,type:e.type,key:c,ref:i,props:o,_owner:d}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:i,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},t.createElement=k,t.createFactory=function(e){var t=k.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:d,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:l,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:s,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return R().useCallback(e,t)},t.useContext=function(e,t){return R().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return R().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return R().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return R().useLayoutEffect(e,t)},t.useMemo=function(e,t){return R().useMemo(e,t)},t.useReducer=function(e,t,n){return R().useReducer(e,t,n)},t.useRef=function(e){return R().useRef(e)},t.useState=function(e){return R().useState(e)},t.version="17.0.2"},67294:(e,t,n)=>{"use strict";e.exports=n(72408)},60053:(e,t)=>{"use strict";var n,a,r,o;if("object"==typeof performance&&"function"==typeof performance.now){var c=performance;t.unstable_now=function(){return c.now()}}else{var i=Date,d=i.now();t.unstable_now=function(){return i.now()-d}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var s=null,l=null,u=function(){if(null!==s)try{var e=t.unstable_now();s(!0,e),s=null}catch(n){throw setTimeout(u,0),n}};n=function(e){null!==s?setTimeout(n,0,e):(s=e,setTimeout(u,0))},a=function(e,t){l=setTimeout(e,t)},r=function(){clearTimeout(l)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var b=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var g=!1,m=null,h=-1,y=5,_=0;t.unstable_shouldYield=function(){return t.unstable_now()>=_},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):y=0<e?Math.floor(1e3/e):5};var v=new MessageChannel,w=v.port2;v.port1.onmessage=function(){if(null!==m){var e=t.unstable_now();_=e+y;try{m(!0,e)?w.postMessage(null):(g=!1,m=null)}catch(n){throw w.postMessage(null),n}}else g=!1},n=function(e){m=e,g||(g=!0,w.postMessage(null))},a=function(e,n){h=p((function(){e(t.unstable_now())}),n)},r=function(){f(h),h=-1}}function x(e,t){var n=e.length;e.push(t);e:for(;;){var a=n-1>>>1,r=e[a];if(!(void 0!==r&&0<S(r,t)))break e;e[a]=t,e[n]=r,n=a}}function k(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,r=e.length;a<r;){var o=2*(a+1)-1,c=e[o],i=o+1,d=e[i];if(void 0!==c&&0>S(c,n))void 0!==d&&0>S(d,c)?(e[a]=d,e[i]=n,a=i):(e[a]=c,e[o]=n,a=o);else{if(!(void 0!==d&&0>S(d,n)))break e;e[a]=d,e[i]=n,a=i}}}return t}return null}function S(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,L=null,P=3,R=!1,N=!1,O=!1;function j(e){for(var t=k(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,x(C,t)}t=k(T)}}function M(e){if(O=!1,j(e),!N)if(null!==k(C))N=!0,n(D);else{var t=k(T);null!==t&&a(M,t.startTime-e)}}function D(e,n){N=!1,O&&(O=!1,r()),R=!0;var o=P;try{for(j(n),L=k(C);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var c=L.callback;if("function"==typeof c){L.callback=null,P=L.priorityLevel;var i=c(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof i?L.callback=i:L===k(C)&&E(C),j(n)}else E(C);L=k(C)}if(null!==L)var d=!0;else{var s=k(T);null!==s&&a(M,s.startTime-n),d=!1}return d}finally{L=null,P=o,R=!1}}var I=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){N||R||(N=!0,n(D))},t.unstable_getCurrentPriorityLevel=function(){return P},t.unstable_getFirstCallbackNode=function(){return k(C)},t.unstable_next=function(e){switch(P){case 1:case 2:case 3:var t=3;break;default:t=P}var n=P;P=t;try{return e()}finally{P=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=I,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=P;P=e;try{return t()}finally{P=n}},t.unstable_scheduleCallback=function(e,o,c){var i=t.unstable_now();switch("object"==typeof c&&null!==c?c="number"==typeof(c=c.delay)&&0<c?i+c:i:c=i,e){case 1:var d=-1;break;case 2:d=250;break;case 5:d=1073741823;break;case 4:d=1e4;break;default:d=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:c,expirationTime:d=c+d,sortIndex:-1},c>i?(e.sortIndex=c,x(T,e),null===k(C)&&e===k(T)&&(O?r():O=!0,a(M,c-i))):(e.sortIndex=d,x(C,e),N||R||(N=!0,n(D))),e},t.unstable_wrapCallback=function(e){var t=P;return function(){var n=P;P=t;try{return e.apply(this,arguments)}finally{P=n}}}},63840:(e,t,n)=>{"use strict";e.exports=n(60053)},96774:e=>{e.exports=function(e,t,n,a){var r=n?n.call(a,e,t):void 0;if(void 0!==r)return!!r;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),c=Object.keys(t);if(o.length!==c.length)return!1;for(var i=Object.prototype.hasOwnProperty.bind(t),d=0;d<o.length;d++){var s=o[d];if(!i(s))return!1;var l=e[s],u=t[s];if(!1===(r=n?n.call(a,l,u,s):void 0)||void 0===r&&l!==u)return!1}return!0}},36809:(e,t,n)=>{"use strict";n.d(t,{default:()=>a});const a={title:"Cardano Development Updates",tagline:"Regular updates from Cardano Development Teams",url:"https://input-output-hk.github.io",baseUrl:"/cardano-updates/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.ico",organizationName:"input-output-hk",projectName:"cardano-updates",plugins:[["content-blog",{id:"quarterly",routeBasePath:"quarterly",path:"quarterly",authorsMapPath:"authors.yml",editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/"}]],scripts:[{src:"https://plausible.io/js/script.js",defer:!0,"data-domain":"input-output-hk.github.io/cardano-updates"}],presets:[["classic",{blog:{id:"updates",routeBasePath:"/",showReadingTime:!0,editUrl:"https://github.com/input-output-hk/cardano-updates/tree/main/",blogTitle:"Cardano Development Updates",blogDescription:"Regular updates from Cardano Development Teams",postsPerPage:5,blogSidebarTitle:"Recent Posts",blogSidebarCount:10,feedOptions:{type:"all",title:"Cardano Updates Feed",description:"Regular updates from Cardano Development Teams"}},sitemap:{},theme:{customCss:"/home/runner/work/cardano-updates/cardano-updates/src/css/custom.css"}}]],themeConfig:{navbar:{title:"Cardano Updates",logo:{alt:"Cardano Logo",src:"img/logo.svg"},items:[{to:"/",label:"Home",position:"right"},{to:"/quarterly",label:"Quarterly",position:"right"},{type:"dropdown",to:"tags",label:"Topics",position:"right",items:[{to:"tags",label:"All Topics"},{to:"tags/network",label:"Network"},{to:"tags/consensus",label:"Consensus"},{to:"tags/ledger",label:"Ledger"},{to:"tags/hydra",label:"Hydra"},{to:"tags/db-sync",label:"DB Sync"},{to:"tags/cli-api",label:"Node CLI & API"},{to:"quarterly/tags/cli-api-quarterly",label:"Node CLI & API Quarterly"},{to:"tags/crypto",label:"Crypto"},{to:"tags/goedel",label:"Goedel"},{to:"tags/mithril",label:"Mithril"}]},{to:"archive",label:"Archive",position:"right"},{href:"https://github.com/input-output-hk/cardano-updates",position:"right",className:"header-github-link","aria-label":"GitHub repository"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Blog",items:[{label:"Home",to:"/"},{label:"Archive",to:"archive"},{label:"Tags",to:"tags"}]}],copyright:"Copyright \xa9 2023 Input Output Global, Inc. Built with Docusaurus."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",path:"i18n",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},87462:(e,t,n)=>{"use strict";function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},a.apply(this,arguments)}n.d(t,{Z:()=>a})},75068:(e,t,n)=>{"use strict";function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,a(e,t)}n.d(t,{Z:()=>r})},63366:(e,t,n)=>{"use strict";function a(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}n.d(t,{Z:()=>a})},38776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=!0,r="Invariant failed";function o(e,t){if(!e){if(a)throw new Error(r);var n="function"==typeof t?t():t,o=n?"".concat(r,": ").concat(n):r;throw new Error(o)}}},57529:e=>{"use strict";e.exports={}},16887:e=>{"use strict";e.exports=JSON.parse('{"/cardano-updates/2022-08-12-network-e9a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"71e4641a"},"/cardano-updates/2022-08-12-sre-cf2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"43bbbae7"},"/cardano-updates/2022-08-31-consensus-6f9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"7030fa2f"},"/cardano-updates/2022-09-01-ledger-ccc":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"6d371395"},"/cardano-updates/2022-09-16-ledger-8dd":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5733c82d"},"/cardano-updates/2022-09-19-db-sync-a4b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"637356df"},"/cardano-updates/2022-09-20-consensus-b11":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"015be621"},"/cardano-updates/2022-09-27-network-7f3":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"daace409"},"/cardano-updates/2022-09-30-ledger-58c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"94133299"},"/cardano-updates/2022-10-02-consensus-758":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"fba052bd"},"/cardano-updates/2022-10-04-db-sync-114":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3328a3bf"},"/cardano-updates/2022-10-04-node-cli-api-01f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a9019578"},"/cardano-updates/2022-10-05-consensus-020":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"da7937f0"},"/cardano-updates/2022-10-14-hydra-8a0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"733f2214"},"/cardano-updates/2022-10-14-ledger-585":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8ccf5d9f"},"/cardano-updates/2022-10-18-consensus-52a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"6d826f51"},"/cardano-updates/2022-10-19-node-cli-api-dea":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"1377d1fa"},"/cardano-updates/2022-10-21-hydra-577":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8cd47ea9"},"/cardano-updates/2022-10-27-crypto-8f1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"93b15a8c"},"/cardano-updates/2022-10-28-hydra-835":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5889a844"},"/cardano-updates/2022-10-28-network-a2a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"370c5287"},"/cardano-updates/2022-10-28-performance-and-tracing-207":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"dfd49ee8"},"/cardano-updates/2022-10-31-open-source-374":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"485c7377"},"/cardano-updates/2022-11-01-db-sync-aee":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"78d8ce1d"},"/cardano-updates/2022-11-02-ledger-672":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"add555bf"},"/cardano-updates/2022-11-02-node-cli-api-a05":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"089154c4"},"/cardano-updates/2022-11-02-release-459":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8d3da32e"},"/cardano-updates/2022-11-02-system-test-d6c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"17630979"},"/cardano-updates/2022-11-03-embedding-quality-246":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"1147f4da"},"/cardano-updates/2022-11-04-hydra-f05":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e3c3ef1c"},"/cardano-updates/2022-11-04-mithril-591":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"dff84d74"},"/cardano-updates/2022-11-11-crypto-1d7":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"187056c8"},"/cardano-updates/2022-11-11-hydra-83e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"32d4ad41"},"/cardano-updates/2022-11-11-ledger-2f1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"b03d4a4e"},"/cardano-updates/2022-11-11-network-34f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"03d856aa"},"/cardano-updates/2022-11-16-consensus-a8f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ac56cb0b"},"/cardano-updates/2022-11-16-node-cli-api-bbe":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"eac6bb0a"},"/cardano-updates/2022-11-16-performance-and-tracing-5fa":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"94c6d911"},"/cardano-updates/2022-11-18-hydra-c71":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"017cd6b7"},"/cardano-updates/2022-11-18-mithril-0a1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"81bb24c9"},"/cardano-updates/2022-11-23-ledger-53d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"fd6fd4a3"},"/cardano-updates/2022-11-25-crypto-f67":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d3f3f546"},"/cardano-updates/2022-11-25-hydra-839":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"51cf8946"},"/cardano-updates/2022-11-28-network-e29":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e6402687"},"/cardano-updates/2022-11-30-consensus-e7e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f59c978c"},"/cardano-updates/2022-11-30-node-cli-api-e8e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"120c0b00"},"/cardano-updates/2022-11-30-performance-and-tracing-8d0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4aaac366"},"/cardano-updates/2022-12-01-db-sync-ae4":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"347c3e4d"},"/cardano-updates/2022-12-01-mithril-543":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"042169f6"},"/cardano-updates/2022-12-01-system-test-706":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"21857c8f"},"/cardano-updates/2022-12-02-hydra-b24":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"26678b7e"},"/cardano-updates/2022-12-09-crypto-531":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9f70a142"},"/cardano-updates/2022-12-09-hydra-b00":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5668eccd"},"/cardano-updates/2022-12-09-ledger-d4c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ff8cfcf7"},"/cardano-updates/2022-12-12-network-550":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"91b05c51"},"/cardano-updates/2022-12-14-consensus-70e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9440f007"},"/cardano-updates/2022-12-14-db-sync-9c9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9b6092d7"},"/cardano-updates/2022-12-14-node-cli-api-27e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"b88c8fa9"},"/cardano-updates/2022-12-14-performance-and-tracing-5c7":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"fb63aa20"},"/cardano-updates/2022-12-15-mithril-650":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ee94a44f"},"/cardano-updates/2022-12-16-hydra-d53":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5e3dc99b"},"/cardano-updates/2022-12-28-node-cli-api-c05":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9f7c2154"},"/cardano-updates/2023-01-05-ledger-beb":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"795480a5"},"/cardano-updates/2023-01-06-crypto-4d1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"924be064"},"/cardano-updates/2023-01-11-consensus-632":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2fd426fa"},"/cardano-updates/2023-01-11-performance-and-tracing-c8e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4df30499"},"/cardano-updates/2023-01-12-mithril-02f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d92df848"},"/cardano-updates/2023-01-13-hydra-ac6":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"831d95cb"},"/cardano-updates/2023-01-13-release-f71":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"bb465a37"},"/cardano-updates/2023-01-13-system-test-6c4":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"cc267639"},"/cardano-updates/2023-01-14-db-sync-07c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"93729337"},"/cardano-updates/2023-01-19-ledger-2b7":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8a6fc2ec"},"/cardano-updates/2023-01-20-crypto-985":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8d209506"},"/cardano-updates/2023-01-20-hydra-aba":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"bcf46d9c"},"/cardano-updates/2023-01-20-network-c85":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f850a5f3"},"/cardano-updates/2023-01-20-sre-f1a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2eba0b82"},"/cardano-updates/2023-01-25-consensus-d6b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"691b1ed7"},"/cardano-updates/2023-01-25-node-cli-api-b8a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"b78698d9"},"/cardano-updates/2023-01-26-mithril-401":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"72c81964"},"/cardano-updates/2023-01-27-hydra-2f4":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4ce06e64"},"/cardano-updates/2023-02-02-ledger-7d2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"986e43da"},"/cardano-updates/2023-02-03-crypto-ad8":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"437db4bf"},"/cardano-updates/2023-02-03-goedel-2d4":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"550cdc1d"},"/cardano-updates/2023-02-03-hydra-45c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"eff08811"},"/cardano-updates/2023-02-08-consensus-a91":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"fb793160"},"/cardano-updates/2023-02-08-node-cli-api-c56":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"60e1630c"},"/cardano-updates/2023-02-08-performance-and-tracing-888":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ef4801f7"},"/cardano-updates/2023-02-09-mithril-898":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8c75942c"},"/cardano-updates/2023-02-10-hydra-fd6":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"44642b2f"},"/cardano-updates/2023-02-17-crypto-933":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4bed0e48"},"/cardano-updates/2023-02-17-goedel-855":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"62f46a38"},"/cardano-updates/2023-02-17-hydra-51e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0c48efb1"},"/cardano-updates/2023-02-17-ledger-a32":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f2b32cff"},"/cardano-updates/2023-02-17-network-136":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e8d4d6c0"},"/cardano-updates/2023-02-21-db-sync-141":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4b62dc40"},"/cardano-updates/2023-02-22-consensus-6a1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"324138c8"},"/cardano-updates/2023-02-22-node-cli-api-c5f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"144cea98"},"/cardano-updates/2023-02-23-mithril-f96":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"925feafa"},"/cardano-updates/2023-02-23-performance-and-tracing-570":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9a03c440"},"/cardano-updates/2023-02-24-hydra-120":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e5dd9161"},"/cardano-updates/2023-03-02-network-2cf":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"bc6b65d9"},"/cardano-updates/2023-03-03-crypto-afe":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c063df1b"},"/cardano-updates/2023-03-03-goedel-6d4":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"34012593"},"/cardano-updates/2023-03-03-hydra-b66":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"b4cc2dd2"},"/cardano-updates/2023-03-03-ledger-ad5":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4be9a3a6"},"/cardano-updates/2023-03-08-consensus-caa":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"28874657"},"/cardano-updates/2023-03-08-node-cli-api-4f2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"1d10bd9e"},"/cardano-updates/2023-03-08-performance-and-tracing-8bb":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f51bb76d"},"/cardano-updates/2023-03-09-mithril-031":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"97daee08"},"/cardano-updates/2023-03-10-hydra-7d8":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"fdba8f98"},"/cardano-updates/2023-03-16-goedel-2c1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e70f68c6"},"/cardano-updates/2023-03-17-crypto-91c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2e52ad4e"},"/cardano-updates/2023-03-17-hydra-531":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0d889cfb"},"/cardano-updates/2023-03-17-ledger-b04":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"43aa4824"},"/cardano-updates/2023-03-21-network-327":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"63fae4f0"},"/cardano-updates/2023-03-22-consensus-a73":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c63933b3"},"/cardano-updates/2023-03-22-node-cli-api-7a9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2a8f0182"},"/cardano-updates/2023-03-22-performance-and-tracing-665":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"b5164349"},"/cardano-updates/2023-03-23-db-sync-68e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d8668f0c"},"/cardano-updates/2023-03-23-mithril-d40":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8e410d22"},"/cardano-updates/2023-03-24-hydra-91d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d957ac34"},"/cardano-updates/2023-03-27-system-test-915":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"daa3e20a"},"/cardano-updates/2023-03-31-crypto-53e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e6ea9b03"},"/cardano-updates/2023-03-31-goedel-e53":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4fe12b4b"},"/cardano-updates/2023-03-31-hydra-f8f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"42ad0ca4"},"/cardano-updates/2023-03-31-ledger-bd1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"771f29e6"},"/cardano-updates/2023-04-05-consensus-948":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5d5964ec"},"/cardano-updates/2023-04-05-node-cli-api-bca":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f530b85c"},"/cardano-updates/2023-04-05-performance-and-tracing-50a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"47658b82"},"/cardano-updates/2023-04-06-mithril-a86":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"97cbe67b"},"/cardano-updates/2023-04-07-hydra-c27":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"05f2862f"},"/cardano-updates/2023-04-14-goedel-2bc":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d19a344f"},"/cardano-updates/2023-04-14-hydra-3aa":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ce7ed51f"},"/cardano-updates/2023-04-17-ledger-1d1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2d91c21f"},"/cardano-updates/2023-04-19-consensus-711":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"496cb9ef"},"/cardano-updates/2023-04-19-performance-and-tracing-1ef":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e7a72da0"},"/cardano-updates/2023-04-20-mithril-2f6":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a8738e5f"},"/cardano-updates/2023-04-20-node-cli-api-f77":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3cb9fdac"},"/cardano-updates/2023-04-21-hydra-12b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"73a96f39"},"/cardano-updates/2023-04-21-ledger-b7b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d2ea5af2"},"/cardano-updates/2023-04-27-hydra-266":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"435d8b4c"},"/cardano-updates/2023-04-28-crypto-8b9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9f761678"},"/cardano-updates/2023-04-28-goedel-0ba":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"219856ee"},"/cardano-updates/2023-04-28-network-bb5":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"df778edc"},"/cardano-updates/2023-05-01-db-sync-ab4":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3ee2c73a"},"/cardano-updates/2023-05-03-consensus-b9e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a2ee852b"},"/cardano-updates/2023-05-03-performance-and-tracing-370":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"77d820b6"},"/cardano-updates/2023-05-04-mithril-427":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"90bf9c2d"},"/cardano-updates/2023-05-05-ledger-4f2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f2180c0a"},"/cardano-updates/2023-05-05-node-cli-api-7ed":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4febca42"},"/cardano-updates/2023-05-12-crypto-eb6":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"cd612773"},"/cardano-updates/2023-05-12-goedel-10f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"67ce4884"},"/cardano-updates/2023-05-12-hydra-dc7":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d83d9042"},"/cardano-updates/2023-05-12-network-738":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5e730d4f"},"/cardano-updates/2023-05-17-consensus-f99":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c511c40f"},"/cardano-updates/2023-05-17-mithril-d0a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"7a7e39bb"},"/cardano-updates/2023-05-17-performance-and-tracing-976":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"b28a1077"},"/cardano-updates/2023-05-19-hydra-8b0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0c10bcf4"},"/cardano-updates/2023-05-24-node-cli-api-43d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d857251e"},"/cardano-updates/2023-05-26-goedel-5c5":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"78d554ba"},"/cardano-updates/2023-05-26-hydra-d35":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3a493dd8"},"/cardano-updates/2023-05-26-ledger-a41":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e4a61baa"},"/cardano-updates/2023-05-26-network-3a9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"588e4efd"},"/cardano-updates/2023-05-31-consensus-bc8":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"77d69aed"},"/cardano-updates/2023-05-31-performance-and-tracing-f2d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"752b6ead"},"/cardano-updates/2023-06-01-mithril-a0d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2bc04bf6"},"/cardano-updates/2023-06-02-hydra-e96":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f522921c"},"/cardano-updates/2023-06-07-node-cli-api-9c8":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c4479859"},"/cardano-updates/2023-06-08-db-sync-496":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c90fb258"},"/cardano-updates/2023-06-08-goedel-3d4":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d2ab2776"},"/cardano-updates/2023-06-08-sre-d91":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0281a492"},"/cardano-updates/2023-06-08-system-test-62e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"86c4d158"},"/cardano-updates/2023-06-09-crypto-2e0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a040c838"},"/cardano-updates/2023-06-09-developer-experience-c4e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"20bc6fcd"},"/cardano-updates/2023-06-09-hydra-bab":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a2a63bac"},"/cardano-updates/2023-06-12-network-fbe":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"99b0bd12"},"/cardano-updates/2023-06-14-consensus-ee8":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c08c0f47"},"/cardano-updates/2023-06-14-performance-and-tracing-3ec":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"82209890"},"/cardano-updates/2023-06-15-mithril-f0a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"50135b75"},"/cardano-updates/2023-06-16-hydra-2e0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0fa2fd29"},"/cardano-updates/2023-06-23-goedel-988":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"66345e96"},"/cardano-updates/2023-06-23-hydra-ec0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e25ae581"},"/cardano-updates/2023-06-23-network-e4b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4b996e44"},"/cardano-updates/2023-06-23-sre-088":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"47da279e"},"/cardano-updates/2023-06-28-consensus-031":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4ab012ff"},"/cardano-updates/2023-06-28-performance-and-tracing-997":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d988d084"},"/cardano-updates/2023-06-29-mithril-6e2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"632979e8"},"/cardano-updates/2023-06-30-hydra-fd5":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"cd0ded60"},"/cardano-updates/2023-07-04-db-sync-7cb":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"20ca2c37"},"/cardano-updates/2023-07-04-node-cli-api-ede":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8ed15298"},"/cardano-updates/2023-07-06-developer-experience-c31":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"492dc159"},"/cardano-updates/2023-07-07-crypto-240":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ec344652"},"/cardano-updates/2023-07-07-goedel-a98":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f452efc5"},"/cardano-updates/2023-07-07-hydra-5d6":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d5676bf9"},"/cardano-updates/2023-07-07-sre-5bc":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"16a93549"},"/cardano-updates/2023-07-12-consensus-395":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"84189288"},"/cardano-updates/2023-07-12-performance-and-tracing-b16":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"bd65afd9"},"/cardano-updates/2023-07-13-mithril-3dc":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3dbbac8a"},"/cardano-updates/2023-07-14-hydra-231":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3a3a2602"},"/cardano-updates/2023-07-18-node-cli-api-156":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"007e4c05"},"/cardano-updates/2023-07-20-goedel-d82":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"237aa4d6"},"/cardano-updates/2023-07-21-hydra-39b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"12208c5e"},"/cardano-updates/2023-07-21-ledger-ff7":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f63b6b72"},"/cardano-updates/2023-07-21-sre-ad2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ddce0bff"},"/cardano-updates/2023-07-26-consensus-c66":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"769eb34c"},"/cardano-updates/2023-07-27-mithril-8ae":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5a843cd2"},"/cardano-updates/2023-07-28-hydra-811":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"12c83d8a"},"/cardano-updates/2023-07-31-network-d4f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d6a3b4a5"},"/cardano-updates/2023-08-01-node-cli-api-cb1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"80537537"},"/cardano-updates/2023-08-04-crypto-e3c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"425dfc0f"},"/cardano-updates/2023-08-04-goedel-886":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c0ac1524"},"/cardano-updates/2023-08-04-hydra-15e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"7e644b1f"},"/cardano-updates/2023-08-04-ledger-d11":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"444dad87"},"/cardano-updates/2023-08-04-network-883":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2276e554"},"/cardano-updates/2023-08-04-performance-and-tracing-a82":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a572b6ff"},"/cardano-updates/2023-08-04-sre-2d9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"65ecf6d5"},"/cardano-updates/2023-08-09-consensus-092":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"692497e1"},"/cardano-updates/2023-08-10-mithril-c36":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3f2108ba"},"/cardano-updates/2023-08-11-hydra-7c0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"6bae8700"},"/cardano-updates/2023-08-11-performance-and-tracing-0bd":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"397686d4"},"/cardano-updates/2023-08-15-node-cli-api-27f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2455acc4"},"/cardano-updates/2023-08-17-crypto-fd2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"eb0e2fb1"},"/cardano-updates/2023-08-17-db-sync-20d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"77e9cceb"},"/cardano-updates/2023-08-17-secp-issue-6bb":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"15691c1d"},"/cardano-updates/2023-08-18-goedel-762":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"fa5dce7e"},"/cardano-updates/2023-08-18-hydra-09d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"43289e4d"},"/cardano-updates/2023-08-18-ledger-04c":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5226ad4f"},"/cardano-updates/2023-08-18-network-606":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"dee5d2d9"},"/cardano-updates/2023-08-18-sre-cc5":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9c7979b1"},"/cardano-updates/2023-08-23-consensus-8a6":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"301cd1f4"},"/cardano-updates/2023-08-24-performance-and-tracing-c0b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"be16a434"},"/cardano-updates/2023-08-25-hydra-ee1":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"52b8fa8a"},"/cardano-updates/2023-08-28-mithril-2ab":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f1df5007"},"/cardano-updates/2023-08-29-node-cli-api-851":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3bb06773"},"/cardano-updates/2023-09-01-goedel-9f0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4b90674f"},"/cardano-updates/2023-09-01-hydra-980":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d6f20405"},"/cardano-updates/2023-09-01-ledger-1d6":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"14ffac04"},"/cardano-updates/2023-09-01-network-567":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c178b56c"},"/cardano-updates/2023-09-01-sre-657":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5af0f4f9"},"/cardano-updates/2023-09-06-consensus-292":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d8c4fe87"},"/cardano-updates/2023-09-07-mithril-d11":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"1b2a226f"},"/cardano-updates/2023-09-07-performance-and-tracing-219":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a48d66c0"},"/cardano-updates/2023-09-08-hydra-7ec":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f117ec90"},"/cardano-updates/2023-09-12-node-cli-api-934":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e0b45b46"},"/cardano-updates/2023-09-14-db-sync-32d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"2b637fd9"},"/cardano-updates/2023-09-15-goedel-ca8":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"778ef860"},"/cardano-updates/2023-09-15-hydra-92f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"245ecae9"},"/cardano-updates/2023-09-15-ledger-890":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4e45b006"},"/cardano-updates/2023-09-15-network-6ee":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"6e7b669d"},"/cardano-updates/2023-09-15-sre-78b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5674f153"},"/cardano-updates/2023-09-20-consensus-d6f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8d0075ff"},"/cardano-updates/2023-09-20-mithril-91d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"1f9c0c9c"},"/cardano-updates/2023-09-22-hydra-c6b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ab4c3279"},"/cardano-updates/2023-09-22-performance-and-tracing-e17":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"4ed83391"},"/cardano-updates/2023-09-26-node-cli-api-6d5":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f89a4337"},"/cardano-updates/2023-09-27-mithril-42f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f4548430"},"/cardano-updates/2023-09-29-goedel-359":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"b8a3fbda"},"/cardano-updates/2023-09-29-hydra-3cc":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d15a0787"},"/cardano-updates/2023-09-29-ledger-bcc":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"35e2a0c5"},"/cardano-updates/2023-09-29-sre-9c9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a7a31948"},"/cardano-updates/2023-10-02-network-9f0":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"1afca88e"},"/cardano-updates/2023-10-04-consensus-451":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"354f96c6"},"/cardano-updates/2023-10-04-mithril-e3d":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9291df2e"},"/cardano-updates/2023-10-06-hydra-6a8":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d2aca35e"},"/cardano-updates/2023-10-06-performance-and-tracing-516":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"70372002"},"/cardano-updates/2023-10-10-node-cli-api-2c5":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ec06fa8a"},"/cardano-updates/2023-10-11-mithril-784":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f1bfc30d"},"/cardano-updates/2023-10-13-hydra-226":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5cc32405"},"/cardano-updates/2023-10-13-ledger-742":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"5d0266be"},"/cardano-updates/2023-10-13-sre-1c3":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0b0bfceb"},"/cardano-updates/2023-10-15-network-303":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"9ba26136"},"/cardano-updates/2023-10-18-consensus-c43":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"798d160f"},"/cardano-updates/2023-10-18-mithril-c02":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d967308c"},"/cardano-updates/2023-10-20-hydra-f5e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ca6829cb"},"/cardano-updates/2023-10-24-node-cli-api-4ea":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"78c763b8"},"/cardano-updates/2023-10-25-mithril-2fc":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"6927f7c4"},"/cardano-updates/2023-10-27-hydra-8d7":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a6e1d45a"},"/cardano-updates/2023-10-27-network-e80":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"d65b9dd2"},"/cardano-updates/2023-10-27-sre-06f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8fe062a7"},"/cardano-updates/2023-11-01-consensus-342":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"ccb7a847"},"/cardano-updates/2023-11-01-mithril-865":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"8d306cf9"},"/cardano-updates/2023-11-08-ledger-0c9":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"7439ef37"},"/cardano-updates/2023-11-08-mithril-19e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"44e33f80"},"/cardano-updates/2023-11-09-db-sync-484":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"36a96f5a"},"/cardano-updates/2023-11-10-hydra-181":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"387f3426"},"/cardano-updates/2023-11-10-sre-c9e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f2deb2f1"},"/cardano-updates/2023-11-14-node-cli-api-c82":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"e1f21c3f"},"/cardano-updates/2023-11-15-consensus-201":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"49d642c9"},"/cardano-updates/2023-11-15-mithril-072":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"a7418040"},"/cardano-updates/2023-11-16-network-659":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f0418a99"},"/cardano-updates/2023-11-17-hydra-609":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0ade4266"},"/cardano-updates/2023-11-17-performance-and-tracing-18e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"38284ae5"},"/cardano-updates/2023-11-20-cip1694-61b":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"1b34f23d"},"/cardano-updates/2023-11-22-ledger-d58":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"3a40f46b"},"/cardano-updates/2023-11-22-mithril-7ef":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"35961293"},"/cardano-updates/2023-11-24-hydra-18e":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"c0354ce6"},"/cardano-updates/2023-11-24-sre-ec2":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"57008883"},"/cardano-updates/2023-11-29-consensus-8be":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"335868d9"},"/cardano-updates/2023-11-29-mithril-a48":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"0e717c32"},"/cardano-updates/2023-12-01-hydra-264":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"decc8fa8"},"/cardano-updates/2023-12-04-performance-and-tracing-13f":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"f96c80d6"},"/cardano-updates/2023-12-06-ledger-b76":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"28d85025"},"/cardano-updates/2023-12-06-mithril-96a":{"__comp":"ccc49370","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","content":"55e35eab"},"/cardano-updates/archive-f69":{"__comp":"9e4087bc","__context":{"plugin":"08c82b6d"},"archive":"3ede3d79"},"/cardano-updates/markdown-page-52f":{"__comp":"1f391b9e","__context":{"plugin":"57700755"},"content":"393be207"},"/cardano-updates/page/10-4c1":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"6e43d302"},{"content":"b242687d"},{"content":"24d5a6d9"},{"content":"a1f2945e"},{"content":"e3067ecd"}],"metadata":"fc0eac3b"},"/cardano-updates/page/11-bea":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"69c7a5a7"},{"content":"a1d1f035"},{"content":"9668e24b"},{"content":"9e570fef"},{"content":"d343e3e1"}],"metadata":"d1d47ba3"},"/cardano-updates/page/12-d5b":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0e828f3a"},{"content":"046dd16d"},{"content":"611f3a9e"},{"content":"878c8163"},{"content":"3399a664"}],"metadata":"3ac14561"},"/cardano-updates/page/13-29a":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"31025fde"},{"content":"bb44f9e3"},{"content":"b65e5ec2"},{"content":"7c895c96"},{"content":"61e62d68"}],"metadata":"9e834cf3"},"/cardano-updates/page/14-63c":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"f96c80dc"},{"content":"9d7869bb"},{"content":"469935bd"},{"content":"7574ff34"},{"content":"77550e96"}],"metadata":"a1b4c76a"},"/cardano-updates/page/15-877":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"7a6174e7"},{"content":"d7836792"},{"content":"e56a9a29"},{"content":"fc8c3309"},{"content":"1e57c0e2"}],"metadata":"07541956"},"/cardano-updates/page/16-b38":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"a6e5ff3c"},{"content":"789f2cca"},{"content":"0e0c98f4"},{"content":"9dee36e7"},{"content":"65d0391b"}],"metadata":"e5a8e689"},"/cardano-updates/page/17-d0c":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"1a932c01"},{"content":"3c3d2bff"},{"content":"da04b7b0"},{"content":"80c54634"},{"content":"12a1613f"}],"metadata":"1e0f95a7"},"/cardano-updates/page/18-735":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"2e28eb6b"},{"content":"ca3b5bc8"},{"content":"246d9f04"},{"content":"10532414"},{"content":"f5b1250e"}],"metadata":"9450fd8f"},"/cardano-updates/page/19-42a":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"704e5bb8"},{"content":"6004d2a4"},{"content":"6a75c57a"},{"content":"35ef34ae"},{"content":"b4f5b98b"}],"metadata":"7b73b4cd"},"/cardano-updates/page/2-d2f":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"4de4e659"},{"content":"8534c2dd"},{"content":"fa00d705"},{"content":"5e9a4be9"},{"content":"ddcb8bff"}],"metadata":"47cae651"},"/cardano-updates/page/20-0b1":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"afa83c07"},{"content":"a1cde312"},{"content":"b032e7ab"},{"content":"ee0b7a59"},{"content":"d6c09ac2"}],"metadata":"3e93a65d"},"/cardano-updates/page/21-833":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0645cd02"},{"content":"68585f67"},{"content":"caab1e2e"},{"content":"a69f0deb"},{"content":"71d215be"}],"metadata":"548ef7ca"},"/cardano-updates/page/22-66d":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"e90b2ff0"},{"content":"113fed8c"},{"content":"c2b4dd94"},{"content":"8bfc66fb"},{"content":"4d3eb7e7"}],"metadata":"b020ac17"},"/cardano-updates/page/23-5e6":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"9cab6d73"},{"content":"45a10ae8"},{"content":"e4619b9c"},{"content":"0dfea636"},{"content":"c2eec07f"}],"metadata":"9a01d9b0"},"/cardano-updates/page/24-1ad":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ace79a55"},{"content":"d0e182b9"},{"content":"d077dadd"},{"content":"034a14a6"},{"content":"3bb415e3"}],"metadata":"cfdb38ee"},"/cardano-updates/page/25-fdb":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"fb0b9e22"},{"content":"871691d4"},{"content":"c036f08e"},{"content":"f48535bf"},{"content":"f8681695"}],"metadata":"3c8518bb"},"/cardano-updates/page/26-bc7":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"999e2b46"},{"content":"cf1bc381"},{"content":"1be923a7"},{"content":"6eecfaae"},{"content":"6190b2fb"}],"metadata":"8fddd37c"},"/cardano-updates/page/27-307":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"bdc4c1ed"},{"content":"d5cc3122"},{"content":"6d25229c"},{"content":"11423591"},{"content":"28bc1d1b"}],"metadata":"0ee9866d"},"/cardano-updates/page/28-0ae":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"c6f90b29"},{"content":"fbdc54bf"},{"content":"62ec9f43"},{"content":"b57687d8"},{"content":"2d52a685"}],"metadata":"3cb4be67"},"/cardano-updates/page/29-143":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"db50202c"},{"content":"0801ba5a"},{"content":"2154b8e4"},{"content":"bccb35b7"},{"content":"12637b23"}],"metadata":"9d43e047"},"/cardano-updates/page/3-a8a":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"7221b837"},{"content":"7fa9de70"},{"content":"a1d4a798"},{"content":"cb7a1a0b"},{"content":"7de83161"}],"metadata":"acd2edbe"},"/cardano-updates/page/30-f2b":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"aa4c9cc8"},{"content":"59a262d5"},{"content":"ebf8adea"},{"content":"99881079"},{"content":"91595845"}],"metadata":"d10ad4a6"},"/cardano-updates/page/31-0cc":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"fa0b1b5d"},{"content":"17e76f05"},{"content":"51bf60d9"},{"content":"b3041b60"},{"content":"73f0dde0"}],"metadata":"6610396c"},"/cardano-updates/page/32-383":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"c9210b26"},{"content":"ed930750"},{"content":"d96cfa54"},{"content":"6b16e156"},{"content":"2d0da244"}],"metadata":"2f97c20a"},"/cardano-updates/page/33-263":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0431617f"},{"content":"78df8d65"},{"content":"876c34e9"},{"content":"90cc522f"},{"content":"de790939"}],"metadata":"89211367"},"/cardano-updates/page/34-f10":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"c10365f3"},{"content":"d9b708eb"},{"content":"8b4d9039"},{"content":"7a4b421f"},{"content":"a6238997"}],"metadata":"6b6054d2"},"/cardano-updates/page/35-f1b":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ef4f60e7"},{"content":"e80f56fd"},{"content":"12d5d907"},{"content":"89931013"},{"content":"3f9060c3"}],"metadata":"f6b8faad"},"/cardano-updates/page/36-35d":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"393cd824"},{"content":"ec53298b"},{"content":"9136968b"},{"content":"e158fd47"},{"content":"9c96fa11"}],"metadata":"84823557"},"/cardano-updates/page/37-9e5":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0af81f82"},{"content":"04c3317f"},{"content":"4d7c8e78"},{"content":"3ab5f4e0"},{"content":"913aac40"}],"metadata":"b8465b4d"},"/cardano-updates/page/38-525":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0db650db"},{"content":"ccfc9222"},{"content":"f2423430"},{"content":"d9ccb35d"},{"content":"50d0e663"}],"metadata":"be26e761"},"/cardano-updates/page/39-32f":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"e2011657"},{"content":"391126a1"},{"content":"3ac610ff"},{"content":"1caacab6"},{"content":"c061e3b1"}],"metadata":"62a53033"},"/cardano-updates/page/4-307":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"1c192ca4"},{"content":"6d22e028"},{"content":"b7dd63dc"},{"content":"82db709e"},{"content":"934a8f8d"}],"metadata":"60c9cc01"},"/cardano-updates/page/40-10d":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"f872275a"},{"content":"6fb45133"},{"content":"8864b77b"},{"content":"ea84a009"},{"content":"94a907c9"}],"metadata":"bf071e0b"},"/cardano-updates/page/41-643":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"fce7e268"},{"content":"56f35d85"},{"content":"55b9667a"},{"content":"fee99998"},{"content":"76794a21"}],"metadata":"d200e7a4"},"/cardano-updates/page/42-bb5":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d99d594e"},{"content":"d863ede2"},{"content":"f302e248"},{"content":"c831575d"},{"content":"8c6dbeca"}],"metadata":"415f2cd9"},"/cardano-updates/page/43-d3b":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"3ce290cc"},{"content":"2d72833d"},{"content":"62422ab6"},{"content":"79730245"},{"content":"eda7cf83"}],"metadata":"7ff38eb4"},"/cardano-updates/page/44-f06":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"a9347c1b"},{"content":"c60581f2"},{"content":"bda3e1c7"},{"content":"edca0251"},{"content":"b8bcf1d1"}],"metadata":"53f26dca"},"/cardano-updates/page/45-9bf":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0c11045c"},{"content":"faece773"},{"content":"a1597564"},{"content":"35785fae"},{"content":"4dc3be72"}],"metadata":"29801efc"},"/cardano-updates/page/46-9b4":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"8fea44ca"},{"content":"04326247"},{"content":"82f24945"},{"content":"417fc4b4"},{"content":"4735cd81"}],"metadata":"ffbc2281"},"/cardano-updates/page/47-b7b":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"c6ae40c2"},{"content":"2e2abe90"},{"content":"94780c38"},{"content":"e2a7c340"},{"content":"07fdf123"}],"metadata":"2ebccc4d"},"/cardano-updates/page/48-dc6":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"7c359f4d"},{"content":"c315164d"},{"content":"6e743f1b"},{"content":"3143eb67"},{"content":"8470e3c7"}],"metadata":"9bcfaf7c"},"/cardano-updates/page/49-08e":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"563fcf2e"},{"content":"0048047b"},{"content":"b6ef4fcb"},{"content":"98e6984f"},{"content":"74d66224"}],"metadata":"ac12bff3"},"/cardano-updates/page/5-0c2":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ea2603ff"},{"content":"9b5ce5fa"},{"content":"0b5e25e7"},{"content":"f7e5e70a"},{"content":"ed99d55f"}],"metadata":"f5f103cc"},"/cardano-updates/page/50-665":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ef2b6a3f"},{"content":"0a44a251"},{"content":"996aa714"},{"content":"805fc822"},{"content":"0b1b72af"}],"metadata":"9e9bda24"},"/cardano-updates/page/51-d42":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"84677cf0"},{"content":"f6aa5556"},{"content":"41606842"},{"content":"f210b4b5"},{"content":"81528b00"}],"metadata":"f5d27437"},"/cardano-updates/page/52-ffc":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d6a93ba7"},{"content":"e135bd86"},{"content":"a1ac97eb"},{"content":"7e87972d"},{"content":"533bb9dc"}],"metadata":"60a77258"},"/cardano-updates/page/53-554":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"6da0a796"},{"content":"d79a4bb7"},{"content":"6226ba71"},{"content":"41d087d7"},{"content":"f5e5d1cf"}],"metadata":"3f64a4c5"},"/cardano-updates/page/54-984":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"8914fa7e"},{"content":"10659ce5"},{"content":"76c61a3b"},{"content":"d7899fea"},{"content":"177280a4"}],"metadata":"388f6888"},"/cardano-updates/page/55-aa5":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"274d7200"},{"content":"b512dd46"},{"content":"9fba849d"},{"content":"144cf255"},{"content":"d124c703"}],"metadata":"709abed9"},"/cardano-updates/page/56-f12":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"1da92289"},{"content":"31889a8f"},{"content":"126e82e6"},{"content":"40e498fa"},{"content":"439b9a57"}],"metadata":"94dc91d7"},"/cardano-updates/page/57-4c1":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"15dc596d"},{"content":"0d671897"},{"content":"b92c36fd"},{"content":"fb8d4667"},{"content":"7faccef9"}],"metadata":"d442e1d8"},"/cardano-updates/page/58-60b":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"90f359c5"},{"content":"e356bfd0"},{"content":"77215fb3"},{"content":"d3a595c1"},{"content":"9b7a95a2"}],"metadata":"2dd2949a"},"/cardano-updates/page/59-11d":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ae2d2424"},{"content":"f5a24224"},{"content":"7c815b5e"},{"content":"06a283ef"},{"content":"4c4f8ee1"}],"metadata":"b6145ff0"},"/cardano-updates/page/6-444":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"7a263bfa"},{"content":"5c8fca76"},{"content":"c7e43a05"},{"content":"54a7c81e"},{"content":"ccf451f9"}],"metadata":"4c91b9ee"},"/cardano-updates/page/60-468":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"a3889346"},{"content":"2073b851"},{"content":"73bbd4d7"},{"content":"ce6dcc9e"},{"content":"68fb9d2f"}],"metadata":"86cc1b5f"},"/cardano-updates/page/61-5e4":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"2fa57f55"},{"content":"019bb279"},{"content":"ba0b6dbd"}],"metadata":"1b0bebd5"},"/cardano-updates/page/7-c54":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"1752e4e5"},{"content":"a14fd889"},{"content":"43ab8474"},{"content":"49d88be4"},{"content":"f6ec1152"}],"metadata":"82ed4471"},"/cardano-updates/page/8-3b7":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"a687dd04"},{"content":"3bc8fe23"},{"content":"d5f27176"},{"content":"35c3586e"},{"content":"d70b4c5f"}],"metadata":"66326f4e"},"/cardano-updates/page/9-d20":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"b3043f02"},{"content":"70396aa3"},{"content":"209bf559"},{"content":"d7c69167"},{"content":"80617771"}],"metadata":"7d4ab4f9"},"/cardano-updates/quarterly-968":{"__comp":"a6aa9e1f","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"6b51f988"},{"content":"57e0ab98"},{"content":"5296f864"},{"content":"7de7ce98"},{"content":"e716e5b6"},{"content":"97407dee"},{"content":"600e4190"},{"content":"12525f14"},{"content":"95f12e12"},{"content":"c0cf6239"}],"metadata":"34c17ec8"},"/cardano-updates/quarterly/2022-10-07-node-cli-api-6ba":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"5778ca6b"},"/cardano-updates/quarterly/2022-11-07-ledger-bf4":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"a0d18a99"},"/cardano-updates/quarterly/2022-11-09-network-8a6":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"e7486169"},"/cardano-updates/quarterly/2022-11-15-consensus-3cf":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"83e7e4db"},"/cardano-updates/quarterly/2023-01-13-network-608":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"cc5c2602"},"/cardano-updates/quarterly/2023-01-13-open-source-ac2":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"0dea9a3b"},"/cardano-updates/quarterly/2023-01-18-consensus-401":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"db138d7c"},"/cardano-updates/quarterly/2023-04-03-ledger-719":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"c5858ebd"},"/cardano-updates/quarterly/2023-04-04-network-bc4":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"4da01d42"},"/cardano-updates/quarterly/2023-04-25-consensus-28b":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"c7337d4e"},"/cardano-updates/quarterly/2023-Q2-consensus-562":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"f3c06362"},"/cardano-updates/quarterly/2023-Q2-network-6e3":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"be1e6782"},"/cardano-updates/quarterly/2023-Q2-sre-e4c":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"ce17d78b"},"/cardano-updates/quarterly/2023-Q3-performance-and-tracing-606":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"b073a55d"},"/cardano-updates/quarterly/2023-Q3-sre-32f":{"__comp":"ccc49370","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","content":"6c8b7ad4"},"/cardano-updates/quarterly/archive-c41":{"__comp":"9e4087bc","__context":{"plugin":"c1c5c6f5"},"archive":"ac8a5a87"},"/cardano-updates/quarterly/page/2-70e":{"__comp":"a6aa9e1f","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"79d76848"},{"content":"dceb6e64"},{"content":"46c51ef6"},{"content":"15072f11"},{"content":"cced6026"}],"metadata":"4ef71b5f"},"/cardano-updates/quarterly/tags-d09":{"__comp":"01a85c17","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","tags":"2494f6fc"},"/cardano-updates/quarterly/tags/cli-api-quarterly-723":{"__comp":"6875c492","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"cced6026"}],"tag":"bbc31819","listMetadata":"d7d2f3e9"},"/cardano-updates/quarterly/tags/consensus-842":{"__comp":"6875c492","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"6b51f988"},{"content":"97407dee"},{"content":"95f12e12"},{"content":"dceb6e64"}],"tag":"565f686e","listMetadata":"ae455379"},"/cardano-updates/quarterly/tags/ledger-62d":{"__comp":"6875c492","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"12525f14"},{"content":"15072f11"}],"tag":"60fae5f4","listMetadata":"965e9e9a"},"/cardano-updates/quarterly/tags/network-3b9":{"__comp":"6875c492","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"57e0ab98"},{"content":"600e4190"},{"content":"c0cf6239"},{"content":"46c51ef6"}],"tag":"3eae7101","listMetadata":"80057f85"},"/cardano-updates/quarterly/tags/open-source-03a":{"__comp":"6875c492","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"79d76848"}],"tag":"de5b481b","listMetadata":"1e24dd00"},"/cardano-updates/quarterly/tags/performance-tracing-7a7":{"__comp":"6875c492","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"7de7ce98"}],"tag":"8c574ba2","listMetadata":"1b2c892c"},"/cardano-updates/quarterly/tags/sre-102":{"__comp":"6875c492","__context":{"plugin":"c1c5c6f5"},"sidebar":"87088759","items":[{"content":"5296f864"},{"content":"e716e5b6"}],"tag":"eac9cf07","listMetadata":"40718b14"},"/cardano-updates/tags-3c0":{"__comp":"01a85c17","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","tags":"372219b0"},"/cardano-updates/tags/cip-1694-a7d":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"7221b837"}],"tag":"ea5726b6","listMetadata":"f47d214c"},"/cardano-updates/tags/cli-api-cf8":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"6d22e028"},{"content":"54a7c81e"},{"content":"d5f27176"},{"content":"a1f2945e"},{"content":"3399a664"}],"tag":"4cecd320","listMetadata":"fe184e91"},"/cardano-updates/tags/cli-api/page/2-ab6":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"77550e96"},{"content":"da04b7b0"},{"content":"b4f5b98b"},{"content":"a69f0deb"},{"content":"c2eec07f"}],"tag":"1a657a20","listMetadata":"9a4c05df"},"/cardano-updates/tags/cli-api/page/3-bd2":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"c6f90b29"},{"content":"12637b23"},{"content":"73f0dde0"},{"content":"d9b708eb"},{"content":"393cd824"}],"tag":"622f92df","listMetadata":"efad53df"},"/cardano-updates/tags/cli-api/page/4-8bc":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ccfc9222"},{"content":"6fb45133"},{"content":"f302e248"},{"content":"bda3e1c7"},{"content":"04326247"}],"tag":"8084428b","listMetadata":"d9e42018"},"/cardano-updates/tags/cli-api/page/5-bfe":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0048047b"},{"content":"0a44a251"},{"content":"a1ac97eb"},{"content":"10659ce5"},{"content":"40e498fa"}],"tag":"4906b8e6","listMetadata":"7ff27d5d"},"/cardano-updates/tags/cli-api/page/6-69e":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d3a595c1"},{"content":"4c4f8ee1"}],"tag":"1b2c8e6e","listMetadata":"98b2ca25"},"/cardano-updates/tags/consensus-d84":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d0639dee"},{"content":"7de83161"},{"content":"0b5e25e7"},{"content":"1752e4e5"},{"content":"b3043f02"}],"tag":"459dd1ef","listMetadata":"e0a90ddc"},"/cardano-updates/tags/consensus/page/2-56c":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"a1d1f035"},{"content":"7c895c96"},{"content":"fc8c3309"},{"content":"ca3b5bc8"},{"content":"ee0b7a59"}],"tag":"4fb1471a","listMetadata":"e06746c7"},"/cardano-updates/tags/consensus/page/3-2c0":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"113fed8c"},{"content":"d077dadd"},{"content":"999e2b46"},{"content":"b57687d8"},{"content":"59a262d5"}],"tag":"61f1e7c8","listMetadata":"62dc90a1"},"/cardano-updates/tags/consensus/page/4-384":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ed930750"},{"content":"8b4d9039"},{"content":"3f9060c3"},{"content":"0db650db"},{"content":"f872275a"}],"tag":"23a95b4f","listMetadata":"ea7f8016"},"/cardano-updates/tags/consensus/page/5-af0":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d863ede2"},{"content":"c60581f2"},{"content":"8fea44ca"},{"content":"6e743f1b"},{"content":"74d66224"}],"tag":"376dd8e8","listMetadata":"ed730a1d"},"/cardano-updates/tags/consensus/page/6-4a3":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"e135bd86"},{"content":"8914fa7e"},{"content":"31889a8f"},{"content":"9b7a95a2"},{"content":"7c815b5e"}],"tag":"8a766cbb","listMetadata":"eab6de32"},"/cardano-updates/tags/consensus/page/7-692":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"73bbd4d7"},{"content":"019bb279"}],"tag":"e57d1f62","listMetadata":"37b2e4a4"},"/cardano-updates/tags/crypto-865":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"65d0391b"},{"content":"3c3d2bff"},{"content":"246d9f04"},{"content":"8bfc66fb"},{"content":"6eecfaae"}],"tag":"35f1ce0d","listMetadata":"1a21d6a2"},"/cardano-updates/tags/crypto/page/2-d35":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"91595845"},{"content":"2d0da244"},{"content":"9136968b"},{"content":"50d0e663"},{"content":"ea84a009"}],"tag":"e2c8baed","listMetadata":"8395f67d"},"/cardano-updates/tags/crypto/page/3-8c2":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"8c6dbeca"},{"content":"b8bcf1d1"},{"content":"82f24945"},{"content":"8470e3c7"},{"content":"0b1b72af"}],"tag":"ae521593","listMetadata":"b96b3223"},"/cardano-updates/tags/crypto/page/4-85a":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"6da0a796"},{"content":"d7899fea"},{"content":"e356bfd0"}],"tag":"a34b3179","listMetadata":"ae7f7c70"},"/cardano-updates/tags/db-sync-5de":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"934a8f8d"},{"content":"878c8163"},{"content":"1a932c01"},{"content":"0dfea636"},{"content":"d5cc3122"}],"tag":"5cf7c214","listMetadata":"4fe88e48"},"/cardano-updates/tags/db-sync/page/2-957":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"6b16e156"},{"content":"3ab5f4e0"},{"content":"c831575d"},{"content":"94780c38"},{"content":"ef2b6a3f"}],"tag":"859b6012","listMetadata":"a0fc6770"},"/cardano-updates/tags/db-sync/page/3-aa5":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"f210b4b5"},{"content":"0d671897"},{"content":"06a283ef"},{"content":"ce6dcc9e"}],"tag":"0d7612e9","listMetadata":"4883d618"},"/cardano-updates/tags/devx-b40":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"e4619b9c"},{"content":"6190b2fb"}],"tag":"09abc415","listMetadata":"c091c5d8"},"/cardano-updates/tags/embedding-quality-49f":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"1da92289"}],"tag":"40a4cbba","listMetadata":"359aa856"},"/cardano-updates/tags/goedel-6fc":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d7c69167"},{"content":"9e570fef"},{"content":"61e62d68"},{"content":"1e57c0e2"},{"content":"10532414"}],"tag":"7d6aa09c","listMetadata":"b41783a8"},"/cardano-updates/tags/goedel/page/2-2a2":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"caab1e2e"},{"content":"4d3eb7e7"},{"content":"3bb415e3"},{"content":"6d25229c"},{"content":"db50202c"}],"tag":"27c15961","listMetadata":"fdfeff52"},"/cardano-updates/tags/goedel/page/3-6ad":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"fa0b1b5d"},{"content":"0431617f"},{"content":"ef4f60e7"},{"content":"e158fd47"},{"content":"3ac610ff"}],"tag":"35369e36","listMetadata":"56b3fab8"},"/cardano-updates/tags/goedel/page/4-5b7":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"94a907c9"},{"content":"3ce290cc"},{"content":"0c11045c"}],"tag":"578d3f15","listMetadata":"b9d87023"},"/cardano-updates/tags/hydra-319":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"9ce37f6e"},{"content":"8534c2dd"},{"content":"7fa9de70"},{"content":"b7dd63dc"},{"content":"ed99d55f"}],"tag":"cc30e037","listMetadata":"98277053"},"/cardano-updates/tags/hydra/page/10-dbd":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"b6ef4fcb"},{"content":"84677cf0"},{"content":"41606842"},{"content":"d79a4bb7"},{"content":"41d087d7"}],"tag":"830ba2c4","listMetadata":"948ff80d"},"/cardano-updates/tags/hydra/page/11-1ad":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"177280a4"},{"content":"9fba849d"},{"content":"b92c36fd"},{"content":"77215fb3"},{"content":"ae2d2424"}],"tag":"e84709f6","listMetadata":"7325235b"},"/cardano-updates/tags/hydra/page/2-e33":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ccf451f9"},{"content":"49d88be4"},{"content":"35c3586e"},{"content":"80617771"},{"content":"e3067ecd"}],"tag":"91831590","listMetadata":"79239208"},"/cardano-updates/tags/hydra/page/3-ec8":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d343e3e1"},{"content":"31025fde"},{"content":"f96c80dc"},{"content":"d7836792"},{"content":"a6e5ff3c"}],"tag":"c94f306d","listMetadata":"ef2b1d07"},"/cardano-updates/tags/hydra/page/4-281":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"80c54634"},{"content":"f5b1250e"},{"content":"a1cde312"},{"content":"d6c09ac2"},{"content":"71d215be"}],"tag":"cfb82551","listMetadata":"ac87db6a"},"/cardano-updates/tags/hydra/page/5-911":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"9cab6d73"},{"content":"ace79a55"},{"content":"fb0b9e22"},{"content":"f48535bf"},{"content":"bdc4c1ed"}],"tag":"04cbd10c","listMetadata":"51457b0b"},"/cardano-updates/tags/hydra/page/6-319":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"fbdc54bf"},{"content":"0801ba5a"},{"content":"aa4c9cc8"},{"content":"17e76f05"},{"content":"876c34e9"}],"tag":"a6afc437","listMetadata":"12ef8706"},"/cardano-updates/tags/hydra/page/7-fc5":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"90cc522f"},{"content":"e80f56fd"},{"content":"12d5d907"},{"content":"9c96fa11"},{"content":"4d7c8e78"}],"tag":"46d9aab0","listMetadata":"b13803f3"},"/cardano-updates/tags/hydra/page/8-e36":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"e2011657"},{"content":"1caacab6"},{"content":"fce7e268"},{"content":"fee99998"},{"content":"2d72833d"}],"tag":"40367786","listMetadata":"c6259fbb"},"/cardano-updates/tags/hydra/page/9-344":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"eda7cf83"},{"content":"faece773"},{"content":"35785fae"},{"content":"417fc4b4"},{"content":"e2a7c340"}],"tag":"be32a6ec","listMetadata":"e54fb861"},"/cardano-updates/tags/ledger-5cf":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"884eee03"},{"content":"5e9a4be9"},{"content":"7221b837"},{"content":"ea2603ff"},{"content":"f6ec1152"}],"tag":"2e69cd33","listMetadata":"41244b80"},"/cardano-updates/tags/ledger/page/2-c91":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"6e43d302"},{"content":"0e828f3a"},{"content":"9d7869bb"},{"content":"789f2cca"},{"content":"704e5bb8"}],"tag":"e8f5afda","listMetadata":"166775fd"},"/cardano-updates/tags/ledger/page/3-d03":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0645cd02"},{"content":"2154b8e4"},{"content":"b3041b60"},{"content":"de790939"},{"content":"a6238997"}],"tag":"154dea53","listMetadata":"d0a351c0"},"/cardano-updates/tags/ledger/page/4-754":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"0af81f82"},{"content":"391126a1"},{"content":"56f35d85"},{"content":"62422ab6"},{"content":"a1597564"}],"tag":"baed1590","listMetadata":"73a1bc7a"},"/cardano-updates/tags/ledger/page/5-86d":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"2e2abe90"},{"content":"563fcf2e"},{"content":"f6aa5556"},{"content":"6226ba71"},{"content":"274d7200"}],"tag":"49db7061","listMetadata":"48292e37"},"/cardano-updates/tags/ledger/page/6-9c7":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"126e82e6"},{"content":"f5a24224"},{"content":"a3889346"},{"content":"68fb9d2f"},{"content":"2fa57f55"}],"tag":"255b72b4","listMetadata":"3c2e75b4"},"/cardano-updates/tags/mithril-5ea":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"37b247a8"},{"content":"4de4e659"},{"content":"ddcb8bff"},{"content":"1c192ca4"},{"content":"9b5ce5fa"}],"tag":"9c662d1f","listMetadata":"86e0423a"},"/cardano-updates/tags/mithril/page/2-8ae":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"f7e5e70a"},{"content":"c7e43a05"},{"content":"a14fd889"},{"content":"3bc8fe23"},{"content":"70396aa3"}],"tag":"551db1ac","listMetadata":"f4cb7e87"},"/cardano-updates/tags/mithril/page/3-30f":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"24d5a6d9"},{"content":"9668e24b"},{"content":"bb44f9e3"},{"content":"7a6174e7"},{"content":"2e28eb6b"}],"tag":"00bb8269","listMetadata":"17f4ca64"},"/cardano-updates/tags/mithril/page/4-c21":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"b032e7ab"},{"content":"e90b2ff0"},{"content":"d0e182b9"},{"content":"f8681695"},{"content":"62ec9f43"}],"tag":"6f700e99","listMetadata":"960e3390"},"/cardano-updates/tags/mithril/page/5-fc4":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ebf8adea"},{"content":"c9210b26"},{"content":"c10365f3"},{"content":"89931013"},{"content":"913aac40"}],"tag":"bbe7c3bd","listMetadata":"9945c128"},"/cardano-updates/tags/mithril/page/6-c91":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"c061e3b1"},{"content":"76794a21"},{"content":"a9347c1b"},{"content":"4dc3be72"},{"content":"c315164d"}],"tag":"6b553c5c","listMetadata":"6a2140b3"},"/cardano-updates/tags/mithril/page/7-812":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"98e6984f"},{"content":"81528b00"},{"content":"f5e5d1cf"},{"content":"144cf255"}],"tag":"f6a3ab66","listMetadata":"b073edd1"},"/cardano-updates/tags/network-e9b":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"cb7a1a0b"},{"content":"7a263bfa"},{"content":"43ab8474"},{"content":"209bf559"},{"content":"046dd16d"}],"tag":"fa57bfdd","listMetadata":"9dce568f"},"/cardano-updates/tags/network/page/2-312":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"469935bd"},{"content":"0e0c98f4"},{"content":"6004d2a4"},{"content":"afa83c07"},{"content":"871691d4"}],"tag":"db5663d1","listMetadata":"21735eff"},"/cardano-updates/tags/network/page/3-b91":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"1be923a7"},{"content":"bccb35b7"},{"content":"51bf60d9"},{"content":"78df8d65"},{"content":"d9ccb35d"}],"tag":"54597942","listMetadata":"1f965afe"},"/cardano-updates/tags/network/page/4-314":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"55b9667a"},{"content":"79730245"},{"content":"4735cd81"},{"content":"805fc822"},{"content":"533bb9dc"}],"tag":"4fd8c72a","listMetadata":"7aaa65e3"},"/cardano-updates/tags/network/page/5-d89":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"b512dd46"},{"content":"fb8d4667"},{"content":"2073b851"},{"content":"ba0b6dbd"}],"tag":"ff276f6a","listMetadata":"7e8e081f"},"/cardano-updates/tags/open-source-905":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"d124c703"}],"tag":"684a796f","listMetadata":"a5bf291f"},"/cardano-updates/tags/performance-tracing-7e4":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"26a4b8b3"},{"content":"a1d4a798"},{"content":"d70b4c5f"},{"content":"69c7a5a7"},{"content":"b65e5ec2"}],"tag":"2c045882","listMetadata":"14fc0a72"},"/cardano-updates/tags/performance-tracing/page/2-665":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"e56a9a29"},{"content":"12a1613f"},{"content":"6a75c57a"},{"content":"c2b4dd94"},{"content":"034a14a6"}],"tag":"aafd9eaa","listMetadata":"e9310706"},"/cardano-updates/tags/performance-tracing/page/3-b14":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"cf1bc381"},{"content":"2d52a685"},{"content":"99881079"},{"content":"d96cfa54"},{"content":"7a4b421f"}],"tag":"0dc0e43e","listMetadata":"e695f231"},"/cardano-updates/tags/performance-tracing/page/4-fad":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"ec53298b"},{"content":"f2423430"},{"content":"8864b77b"},{"content":"d99d594e"},{"content":"edca0251"}],"tag":"e406e44d","listMetadata":"7312b66d"},"/cardano-updates/tags/performance-tracing/page/5-f63":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"3143eb67"},{"content":"996aa714"},{"content":"7e87972d"},{"content":"76c61a3b"},{"content":"7faccef9"}],"tag":"e86dcd26","listMetadata":"3be95f92"},"/cardano-updates/tags/release-2e7":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"4735cd81"},{"content":"07fdf123"},{"content":"805fc822"},{"content":"533bb9dc"},{"content":"439b9a57"}],"tag":"61d299e1","listMetadata":"5df8a536"},"/cardano-updates/tags/security-616":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"7221b837"}],"tag":"4c7d0c08","listMetadata":"66be9998"},"/cardano-updates/tags/sre-abe":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"fa00d705"},{"content":"82db709e"},{"content":"5c8fca76"},{"content":"a687dd04"},{"content":"b242687d"}],"tag":"a8723288","listMetadata":"6c658908"},"/cardano-updates/tags/sre/page/2-2a2":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"611f3a9e"},{"content":"7574ff34"},{"content":"9dee36e7"},{"content":"35ef34ae"},{"content":"68585f67"}],"tag":"82c38436","listMetadata":"f13a89c7"},"/cardano-updates/tags/sre/page/3-7ef":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"45a10ae8"},{"content":"c036f08e"},{"content":"11423591"},{"content":"c6ae40c2"},{"content":"90f359c5"}],"tag":"5c5c653f","listMetadata":"89a43a90"},"/cardano-updates/tags/system-test-c77":{"__comp":"6875c492","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"28bc1d1b"},{"content":"04c3317f"},{"content":"7c359f4d"},{"content":"d6a93ba7"},{"content":"15dc596d"}],"tag":"e38c8545","listMetadata":"e5b737ed"},"/cardano-updates/docs-49f":{"__comp":"1be78505","__context":{"plugin":"27c463c7"},"versionMetadata":"935f2afb"},"/cardano-updates/docs/category/tutorial---basics-14d":{"__comp":"14eb3368","categoryGeneratedIndex":"8f7e10a3"},"/cardano-updates/docs/category/tutorial---extras-19d":{"__comp":"14eb3368","categoryGeneratedIndex":"0de82e28"},"/cardano-updates/docs/intro-433":{"__comp":"17896441","content":"0e384e19"},"/cardano-updates/docs/tutorial-basics/congratulations-9cd":{"__comp":"17896441","content":"822bd8ab"},"/cardano-updates/docs/tutorial-basics/create-a-blog-post-ca9":{"__comp":"17896441","content":"533a09ca"},"/cardano-updates/docs/tutorial-basics/create-a-document-5bb":{"__comp":"17896441","content":"1e4232ab"},"/cardano-updates/docs/tutorial-basics/create-a-page-8d5":{"__comp":"17896441","content":"5c868d36"},"/cardano-updates/docs/tutorial-basics/deploy-your-site-c68":{"__comp":"17896441","content":"f55d3e7a"},"/cardano-updates/docs/tutorial-basics/markdown-features-319":{"__comp":"17896441","content":"18c41134"},"/cardano-updates/docs/tutorial-extras/manage-docs-versions-9eb":{"__comp":"17896441","content":"dff1c289"},"/cardano-updates/docs/tutorial-extras/translate-your-site-0ea":{"__comp":"17896441","content":"e44a2883"},"/cardano-updates/-5f5":{"__comp":"a6aa9e1f","__context":{"plugin":"08c82b6d"},"sidebar":"d6b66cf4","items":[{"content":"884eee03"},{"content":"37b247a8"},{"content":"26a4b8b3"},{"content":"9ce37f6e"},{"content":"d0639dee"}],"metadata":"b4645a09"}}')}},e=>{e.O(0,[40532],(()=>{return t=49383,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.bc51b93f.js.LICENSE.txt b/assets/js/main.bc51b93f.js.LICENSE.txt new file mode 100644 index 00000000000..6e08db297b1 --- /dev/null +++ b/assets/js/main.bc51b93f.js.LICENSE.txt @@ -0,0 +1,53 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + */ + +/** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.0180faa2.js b/assets/js/runtime~main.0180faa2.js new file mode 100644 index 00000000000..c6a2526f929 --- /dev/null +++ b/assets/js/runtime~main.0180faa2.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,c,a,d,f,b={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=b,r.c=t,e=[],r.O=(c,a,d,f)=>{if(!a){var b=1/0;for(i=0;i<e.length;i++){a=e[i][0],d=e[i][1],f=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=d();void 0!==n&&(c=n)}}return c}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[a,d,f]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};c=c||[null,a({}),a([]),a(a)];for(var t=2&d&&e;"object"==typeof t&&!~c.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach((c=>b[c]=()=>e[c]));return b.default=()=>e,r.d(f,b),f},r.d=(e,c)=>{for(var a in c)r.o(c,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((c,a)=>(r.f[a](e,c),c)),[])),r.u=e=>"assets/js/"+({81:"08c82b6d",162:"e86dcd26",278:"9f761678",292:"b032e7ab",376:"f6aa5556",416:"09abc415",458:"43289e4d",770:"1752e4e5",947:"733f2214",1129:"f5b1250e",1285:"28bc1d1b",1321:"f2423430",1338:"ef2b6a3f",1435:"98b2ca25",1537:"d3a595c1",1821:"d8668f0c",1929:"e25ae581",2109:"219856ee",2136:"871691d4",2221:"3ede3d79",2307:"06a283ef",2348:"1a932c01",2432:"7e87972d",2506:"c6259fbb",2578:"d92df848",2681:"62f46a38",2773:"a69f0deb",2789:"35c3586e",3136:"d9ccb35d",3270:"d5676bf9",3403:"7312b66d",3445:"565f686e",3530:"8c75942c",3649:"017cd6b7",3792:"dff1c289",3918:"5668eccd",4093:"20bc6fcd",4307:"16a93549",4376:"3ab5f4e0",4497:"a9019578",4608:"ac12bff3",4615:"12a1613f",4775:"53f26dca",4910:"0dea9a3b",4944:"691b1ed7",4986:"9136968b",5106:"43ab8474",5214:"28d85025",5237:"ccf451f9",5337:"4883d618",5485:"56f35d85",5552:"61d299e1",5978:"1d10bd9e",6036:"cfb82551",6115:"35961293",6166:"d10ad4a6",6169:"9f70a142",6236:"47da279e",6246:"bb465a37",6249:"55e35eab",6255:"5296f864",6324:"51cf8946",6413:"03d856aa",6683:"94dc91d7",6807:"986e43da",6890:"10532414",6919:"769eb34c",6962:"15dc596d",6996:"2dd2949a",7204:"3143eb67",7233:"35785fae",7266:"9b7a95a2",7322:"485c7377",7413:"b28a1077",7555:"4ab012ff",7729:"6d826f51",7741:"b8a3fbda",7783:"c10365f3",7891:"eab6de32",7897:"4b996e44",7966:"246d9f04",7968:"7de83161",8033:"d343e3e1",8580:"d83d9042",8694:"62ec9f43",8737:"a6e1d45a",8765:"a1b4c76a",9107:"e3c3ef1c",9140:"3be95f92",9499:"a040c838",9817:"14eb3368",9821:"d442e1d8",9828:"7de7ce98",9928:"8ed15298",10114:"0af81f82",10173:"89931013",10335:"4b62dc40",11254:"f6ec1152",11400:"b7dd63dc",11652:"1e24dd00",11727:"c63933b3",11748:"5e9a4be9",11952:"301cd1f4",12029:"3bc8fe23",12626:"f51bb76d",12634:"f6a3ab66",12812:"baed1590",13085:"1f391b9e",13276:"57700755",13412:"d2aca35e",13680:"77215fb3",13764:"d3f3f546",14274:"68585f67",14348:"db5663d1",14392:"5674f153",14582:"93b15a8c",15091:"3ac610ff",15152:"d124c703",15224:"be32a6ec",15347:"8914fa7e",15529:"4735cd81",15589:"5c868d36",15623:"8bfc66fb",15677:"2f97c20a",15715:"b65e5ec2",16002:"a2a63bac",16091:"7ff27d5d",16165:"5af0f4f9",16171:"d96cfa54",16227:"0ade4266",16348:"12d5d907",16349:"4febca42",16360:"d2ab2776",16855:"3dbbac8a",16878:"54a7c81e",16886:"a7418040",16934:"8395f67d",16959:"9a03c440",17214:"5226ad4f",17285:"d7899fea",17433:"f2180c0a",17490:"91b05c51",17693:"c6ae40c2",17837:"66326f4e",17873:"ae2d2424",17903:"4da01d42",17923:"622f92df",18058:"7d6aa09c",18144:"8d306cf9",18242:"dceb6e64",18303:"2d72833d",18367:"48292e37",18479:"05f2862f",18634:"db138d7c",18654:"3ce290cc",18694:"1a21d6a2",19105:"7ff38eb4",19516:"52b8fa8a",19644:"0801ba5a",19773:"925feafa",19861:"98e6984f",20203:"ff8cfcf7",20387:"d19a344f",20433:"7439ef37",20553:"2d52a685",20635:"1f965afe",20681:"5cf7c214",20738:"d200e7a4",20779:"57e0ab98",20955:"b073a55d",20957:"d967308c",20974:"3a3a2602",21080:"37b247a8",21129:"ec53298b",21158:"9a01d9b0",21198:"415f2cd9",21200:"0dfea636",21463:"1147f4da",21562:"c063df1b",21597:"8fe062a7",21642:"2455acc4",21798:"924be064",22109:"255b72b4",22154:"8a6fc2ec",22191:"b242687d",22206:"45a10ae8",22254:"a34b3179",22393:"d6c09ac2",22469:"ccb7a847",22496:"41244b80",22519:"31025fde",22838:"4ed83391",22954:"1da92289",23092:"40e498fa",23146:"1c192ca4",23271:"347c3e4d",23318:"ed930750",23360:"add555bf",23427:"80617771",23531:"e406e44d",23599:"d6f20405",23621:"0b5e25e7",23941:"94a907c9",24212:"8a766cbb",24215:"62a53033",24251:"372219b0",24288:"d7c69167",24310:"43bbbae7",24327:"27c463c7",24379:"bbe7c3bd",24384:"6b51f988",24651:"b57687d8",24671:"d8c4fe87",24745:"f210b4b5",24891:"e0a90ddc",24910:"b4645a09",24913:"960e3390",24941:"9e834cf3",25189:"f89a4337",25272:"8e410d22",25351:"611f3a9e",25353:"a1d4a798",25403:"f850a5f3",25469:"be1e6782",25480:"4be9a3a6",25540:"e8f5afda",25578:"548ef7ca",25590:"73bbd4d7",25759:"04326247",25778:"8fddd37c",25853:"ac8a5a87",25946:"e5a8e689",26026:"a687dd04",26276:"0b1b72af",26299:"2d0da244",26397:"0e717c32",26540:"e695f231",26544:"ee0b7a59",26565:"274d7200",26584:"c90fb258",26614:"578d3f15",26710:"fa00d705",27237:"0d889cfb",27335:"bda3e1c7",27449:"042169f6",27478:"b3043f02",27647:"82db709e",27668:"cd0ded60",27850:"9bcfaf7c",27918:"17896441",28298:"46c51ef6",28323:"1f9c0c9c",28480:"2154b8e4",28577:"6c8b7ad4",28592:"28874657",28669:"d5cc3122",28843:"2276e554",29059:"0d671897",29071:"76794a21",29121:"91831590",29177:"daa3e20a",29399:"77d69aed",29514:"1be78505",29537:"78df8d65",29614:"0dc0e43e",29750:"6d22e028",30101:"73f0dde0",30126:"ba0b6dbd",30141:"82209890",30335:"2d91c21f",30374:"5df8a536",30482:"d6a3b4a5",30584:"6b6054d2",30670:"50d0e663",30830:"ce7ed51f",30843:"3c2e75b4",30849:"e2011657",30907:"a5bf291f",31005:"ddce0bff",31349:"d6a93ba7",31421:"cc30e037",31617:"bcf46d9c",31636:"44e33f80",31724:"8084428b",31757:"9c7979b1",31831:"60e1630c",32023:"faece773",32035:"90bf9c2d",32070:"97daee08",32438:"370c5287",32464:"f8681695",32472:"9f7c2154",32627:"d0e182b9",32706:"12637b23",32831:"632979e8",32852:"12208c5e",32871:"684a796f",32925:"9e570fef",32936:"8d209506",33215:"113fed8c",33288:"b78698d9",33399:"57008883",33538:"b020ac17",33596:"54597942",33671:"5d0266be",33724:"82f24945",33815:"444dad87",34070:"4906b8e6",34631:"4bed0e48",34719:"387f3426",34828:"5c5c653f",34891:"7574ff34",34985:"f3c06362",35029:"9dce568f",35388:"c2eec07f",35400:"35f1ce0d",35703:"6bae8700",35748:"79239208",35846:"ea5726b6",35877:"f1bfc30d",35889:"b3041b60",36016:"2fd426fa",36160:"bd65afd9",36171:"fba052bd",36186:"66be9998",36229:"82c38436",36303:"1b2c8e6e",36337:"3a40f46b",36370:"934a8f8d",36398:"3f9060c3",36434:"56b3fab8",36463:"a1ac97eb",36504:"822bd8ab",36721:"e2c8baed",36881:"c0354ce6",37221:"5a843cd2",37329:"e5dd9161",37426:"17f4ca64",37495:"fd6fd4a3",37595:"965e9e9a",37734:"9d7869bb",38141:"8470e3c7",38516:"20ca2c37",38518:"0048047b",38672:"ae455379",38938:"7fa9de70",39066:"edca0251",39071:"3a493dd8",39080:"c6f90b29",39113:"acd2edbe",39329:"ac56cb0b",39419:"07541956",39439:"07fdf123",39596:"c091c5d8",39640:"7030fa2f",39745:"0c11045c",39898:"63fae4f0",39969:"ff276f6a",39987:"8534c2dd",40160:"bc6b65d9",40176:"b5164349",40309:"c036f08e",40373:"46d9aab0",40400:"10659ce5",40430:"187056c8",40682:"4c7d0c08",40705:"60fae5f4",40767:"74d66224",41153:"ca6829cb",41794:"0c48efb1",42126:"d7836792",42185:"de790939",42190:"b88c8fa9",42198:"59a262d5",42347:"4fb1471a",42575:"32d4ad41",42677:"c831575d",42686:"6e743f1b",43020:"c2b4dd94",43108:"44642b2f",43140:"80537537",43194:"c315164d",43261:"789f2cca",43363:"e9310706",43412:"e56a9a29",43686:"14fc0a72",43729:"15691c1d",43898:"2eba0b82",43980:"40718b14",44003:"5c8fca76",44281:"f452efc5",44377:"7a6174e7",44379:"73a1bc7a",44501:"94c6d911",44966:"35ef34ae",45237:"e7486169",45389:"4d7c8e78",45410:"9450fd8f",45480:"335868d9",45542:"154dea53",45662:"2e69cd33",45766:"d863ede2",45821:"f48535bf",45932:"878c8163",45943:"bb44f9e3",46003:"81bb24c9",46033:"e84709f6",46103:"ccc49370",46207:"12525f14",46271:"ec06fa8a",46318:"4ce06e64",46521:"d99d594e",46545:"f59c978c",46576:"2e28eb6b",46831:"86c4d158",46846:"e7a72da0",46922:"f872275a",46982:"0645cd02",47093:"b512dd46",47176:"2fa57f55",47263:"97407dee",47406:"40367786",47605:"469935bd",47658:"1be923a7",47669:"26a4b8b3",47704:"2073b851",47724:"26678b7e",48221:"97cbe67b",48275:"94133299",48423:"eda7cf83",48600:"6190b2fb",48610:"6875c492",48622:"e2a7c340",48679:"9e9bda24",48818:"cced6026",48837:"4fe12b4b",48863:"84189288",48909:"f7e5e70a",48983:"66345e96",48990:"9b6092d7",49105:"38284ae5",49237:"046dd16d",49238:"7e8e081f",49605:"f530b85c",49706:"3c3d2bff",49769:"a3889346",49835:"1afca88e",49904:"a6238997",50097:"588e4efd",50165:"752b6ead",50307:"29801efc",50471:"81528b00",50506:"3ee2c73a",50881:"144cea98",50919:"aa4c9cc8",51092:"e38c8545",51164:"3e93a65d",51257:"00bb8269",51268:"91595845",51410:"f5e5d1cf",51522:"f117ec90",51727:"5778ca6b",51934:"d0a351c0",51951:"4df30499",52322:"b92c36fd",52506:"d0639dee",52560:"dee5d2d9",52650:"6b16e156",52703:"70372002",52818:"e8d4d6c0",52834:"b03d4a4e",53004:"99881079",53121:"e4a61baa",53165:"805fc822",53210:"1b2c892c",53288:"f1df5007",53426:"efad53df",53482:"c0cf6239",53516:"b6ef4fcb",53608:"9e4087bc",53662:"4de4e659",53931:"5d5964ec",53940:"71e4641a",54007:"7d4ab4f9",54176:"50135b75",54193:"f55d3e7a",54415:"84677cf0",54607:"533a09ca",54642:"ddcb8bff",54669:"ebf8adea",54750:"e5b737ed",54868:"77e9cceb",54975:"884eee03",55135:"e0b45b46",55202:"8b4d9039",55413:"376dd8e8",55531:"ef4f60e7",55553:"144cf255",55638:"3cb9fdac",55791:"f47d214c",55855:"62422ab6",56010:"2bc04bf6",56482:"e4619b9c",56618:"a572b6ff",56674:"771f29e6",56733:"704e5bb8",56789:"ae7f7c70",56815:"ee94a44f",56950:"69c7a5a7",57161:"fb8d4667",57193:"6004d2a4",57227:"2a8f0182",57271:"417fc4b4",57583:"2494f6fc",57772:"d957ac34",57918:"decc8fa8",58312:"82ed4471",58470:"fb63aa20",58566:"f2b32cff",58628:"8cd47ea9",58680:"e1f21c3f",58744:"9dee36e7",58774:"12c83d8a",58925:"94780c38",59037:"eac9cf07",59158:"a0fc6770",59318:"7c815b5e",59494:"14ffac04",59576:"51457b0b",59671:"0e384e19",59736:"cfdb38ee",59747:"6e43d302",59749:"4ef71b5f",59798:"99b0bd12",59955:"120c0b00",60019:"6927f7c4",60183:"49db7061",60247:"dfd49ee8",60263:"47658b82",60280:"0e0c98f4",60375:"7e644b1f",60459:"6f700e99",60715:"a1597564",60852:"496cb9ef",60881:"7b73b4cd",60903:"0b0bfceb",61039:"12ef8706",61137:"ed730a1d",61185:"ace79a55",61596:"79730245",61660:"7a7e39bb",61908:"8864b77b",61980:"78d554ba",62034:"86cc1b5f",62083:"da7937f0",62140:"fce7e268",62227:"77550e96",62231:"9ba26136",62302:"9291df2e",62703:"ac87db6a",62767:"a0d18a99",62901:"51bf60d9",63089:"4e45b006",63565:"0a44a251",63566:"db50202c",63824:"fbdc54bf",64013:"01a85c17",64112:"65ecf6d5",64156:"21735eff",64313:"1e57c0e2",64410:"e06746c7",64562:"c08c0f47",64614:"c061e3b1",64827:"4d3eb7e7",64906:"ffbc2281",64966:"17e76f05",65029:"3bb06773",65123:"1e0f95a7",65318:"ed99d55f",65319:"d1d47ba3",65356:"245ecae9",65421:"dff84d74",65562:"5cc32405",65773:"393cd824",65956:"c7e43a05",66458:"40a4cbba",66602:"98277053",66649:"8ccf5d9f",66743:"0de82e28",66764:"9ce37f6e",66840:"2e52ad4e",66891:"90f359c5",67170:"f5f103cc",67205:"cd612773",67272:"5e3dc99b",67330:"bbc31819",67452:"7a4b421f",67463:"d9b708eb",67787:"bf071e0b",67820:"ea7f8016",67825:"459dd1ef",67927:"fc0eac3b",68044:"9668e24b",68077:"9a4c05df",68102:"83e7e4db",68115:"afa83c07",68153:"0431617f",68184:"5889a844",68352:"47cae651",68580:"ec344652",69376:"2b637fd9",69399:"3eae7101",69467:"2e2abe90",69565:"a6afc437",69778:"86e0423a",69791:"e135bd86",70022:"533bb9dc",70085:"f4cb7e87",70170:"d9e42018",70594:"996aa714",70613:"b073edd1",70635:"b4cc2dd2",70641:"f96c80dc",70644:"6226ba71",70729:"ef2b1d07",70883:"61f1e7c8",70950:"3399a664",71843:"b6145ff0",71844:"f5a24224",71870:"d70b4c5f",71972:"41d087d7",72033:"8f7e10a3",72311:"4cecd320",72317:"de5b481b",72344:"089154c4",72690:"ab4c3279",72744:"60c9cc01",72815:"e70f68c6",72872:"0c10bcf4",73001:"fa5dce7e",73277:"b8bcf1d1",73320:"78d8ce1d",73321:"c4479859",73336:"e80f56fd",73343:"49d88be4",73798:"27c15961",73799:"f0418a99",73800:"007e4c05",73875:"6c658908",74390:"71d215be",74433:"35369e36",74607:"0db650db",74933:"b8465b4d",75064:"7faccef9",75319:"831d95cb",75379:"79d76848",75394:"ef4801f7",75501:"9b5ce5fa",75506:"55b9667a",75556:"f522921c",75696:"90cc522f",75698:"d857251e",75730:"550cdc1d",75748:"492dc159",75773:"9c662d1f",76074:"4dc3be72",76294:"4fd8c72a",76323:"a9347c1b",76413:"77d820b6",76433:"999e2b46",76581:"bdc4c1ed",76705:"4c91b9ee",76762:"5e730d4f",77338:"0e828f3a",77411:"b96b3223",77533:"ce17d78b",77642:"fc8c3309",77644:"ce6dcc9e",77696:"7c359f4d",77965:"a48d66c0",78101:"da04b7b0",78148:"9d43e047",78153:"a6e5ff3c",78183:"8c574ba2",78397:"3f64a4c5",78446:"795480a5",78461:"b4f5b98b",78580:"354f96c6",78761:"cc5c2602",79036:"df778edc",79224:"fdba8f98",79260:"6fb45133",79362:"e57d1f62",79503:"0281a492",79765:"3ac14561",79841:"1377d1fa",79967:"fe184e91",80048:"68fb9d2f",80053:"935f2afb",80113:"4c4f8ee1",80309:"42ad0ca4",80367:"209bf559",80542:"391126a1",80567:"6da0a796",80575:"49d642c9",80599:"600e4190",80613:"015be621",80622:"eb0e2fb1",81030:"fdfeff52",81169:"61e62d68",81214:"cc267639",81587:"437db4bf",81947:"ae521593",82164:"f2deb2f1",82214:"4fe88e48",82358:"798d160f",82859:"18c41134",82939:"89a43a90",82941:"9fba849d",83036:"7c895c96",83050:"04c3317f",83051:"37b2e4a4",83129:"15072f11",83160:"60a77258",83167:"019bb279",83214:"f302e248",83247:"be16a434",83377:"80057f85",83584:"f6b8faad",83646:"0fa2fd29",84069:"6eecfaae",84340:"6610396c",84599:"e3067ecd",84727:"95f12e12",84773:"cf1bc381",84877:"8d3da32e",85138:"d988d084",85173:"859b6012",85349:"425dfc0f",85351:"f5d27437",85362:"709abed9",85369:"876c34e9",85417:"21857c8f",85442:"1caacab6",85845:"93729337",85943:"a7a31948",86003:"62dc90a1",86074:"551db1ac",86095:"be26e761",86326:"ea2603ff",86393:"3328a3bf",86582:"f13a89c7",86673:"a8723288",86809:"34012593",86830:"67ce4884",86983:"3c8518bb",87233:"ccfc9222",87314:"0ee9866d",87326:"a14fd889",87389:"f63b6b72",87407:"a1f2945e",87411:"fb793160",87414:"393be207",87445:"eac6bb0a",88101:"41606842",88572:"65d0391b",88592:"6a75c57a",88697:"435d8b4c",88767:"948ff80d",88782:"1b2a226f",88818:"1e4232ab",88829:"e158fd47",88845:"6a2140b3",88862:"d077dadd",88869:"e6ea9b03",89008:"daace409",89083:"aafd9eaa",89104:"b41783a8",89248:"e54fb861",89325:"9945c128",89548:"d15a0787",89752:"c0ac1524",89756:"397686d4",90045:"7221b837",90047:"87088759",90056:"fa0b1b5d",90083:"e356bfd0",90178:"9c96fa11",90206:"d79a4bb7",90288:"f96c80d6",90748:"a1cde312",90934:"cb7a1a0b",90999:"35e2a0c5",91151:"c7337d4e",91192:"76c61a3b",91282:"a1d1f035",91760:"fee99998",91879:"6d25229c",91902:"34c17ec8",91984:"d2ea5af2",91990:"1b34f23d",92149:"fa57bfdd",92160:"36a96f5a",92214:"692497e1",92255:"c178b56c",92308:"4b90674f",92501:"ea84a009",92517:"70396aa3",92522:"fb0b9e22",92846:"913aac40",93089:"a6aa9e1f",93108:"d65b9dd2",93203:"9cab6d73",93524:"e6402687",93570:"caab1e2e",93724:"17630979",93784:"6b553c5c",93789:"f4548430",94184:"5733c82d",94379:"e716e5b6",94560:"563fcf2e",94583:"23a95b4f",94590:"72c81964",94759:"bccb35b7",94771:"84823557",94900:"3bb415e3",94922:"c511c40f",95018:"034a14a6",95199:"c5858ebd",95208:"a2ee852b",95447:"177280a4",95516:"d6b66cf4",95558:"d5f27176",95569:"c1c5c6f5",95613:"324138c8",95739:"0d7612e9",95816:"eff08811",95845:"73a96f39",95850:"b9d87023",95979:"637356df",96121:"439b9a57",96140:"ca3b5bc8",96162:"8c6dbeca",96394:"388f6888",96410:"11423591",96446:"31889a8f",96558:"b13803f3",96755:"e44a2883",96774:"3cb4be67",96799:"6e7b669d",96838:"778ef860",96840:"e90b2ff0",96871:"126e82e6",96944:"78c763b8",97094:"c60581f2",97245:"04cbd10c",97317:"359aa856",97363:"d7d2f3e9",97382:"1a657a20",97421:"89211367",97517:"8fea44ca",97535:"4aaac366",97730:"6d371395",97801:"1b0bebd5",97959:"c9210b26",98254:"9440f007",98347:"43aa4824",98370:"2ebccc4d",98450:"7a263bfa",98698:"24d5a6d9",98727:"c94f306d",98777:"2c045882",98882:"7aaa65e3",98918:"237aa4d6",99610:"3f2108ba",99726:"830ba2c4",99750:"8d0075ff",99808:"80c54634",99847:"166775fd",99873:"7325235b",99881:"a8738e5f"}[e]||e)+"."+{81:"8647aa4f",162:"125084b6",278:"efd79bb9",292:"b1a9961b",376:"97793938",416:"e2f175c7",458:"c91734fc",770:"873d8644",947:"260f1743",1129:"5a405e64",1285:"e033ce8a",1321:"bec1d3ae",1338:"276cebb0",1435:"58b9f52d",1537:"813f9114",1821:"be2330b5",1929:"b6c5260b",2109:"fc647f5b",2136:"358d342f",2221:"3f739406",2307:"b8b2b1f9",2348:"6aaf6224",2432:"24662f86",2506:"fdd3fb9d",2529:"3a3a1ec8",2578:"9daf110c",2681:"200c43f2",2773:"4d5ff44c",2789:"55caad30",3136:"cea6c556",3270:"f90c55bb",3403:"97615e9e",3445:"5a6ec3a7",3530:"5e08e3a4",3649:"6c855c6e",3792:"c8e36228",3918:"20b5304f",4093:"6a2cce37",4307:"ab7d990e",4376:"04ccd5a8",4497:"618a0894",4608:"f511d815",4615:"0e2fe3c1",4775:"4f1881f6",4910:"e1158297",4944:"406ee554",4972:"a20ea76a",4986:"5abe266e",5106:"0e965728",5214:"84af456e",5237:"7efe9c4d",5337:"0d6007b2",5485:"c3eab92c",5552:"76807eb6",5978:"e7b9cd1c",6036:"e63304fb",6115:"d0fa4575",6166:"af42a029",6169:"92a32352",6236:"0dc7a732",6246:"a85dd0e6",6249:"f696c438",6255:"dabe31b3",6324:"e4f02867",6413:"52e2f164",6683:"e956eef6",6807:"f541f01c",6890:"69c8af62",6919:"4403be81",6962:"ecdc1050",6996:"e4a51357",7204:"b959afc8",7233:"0a17f637",7266:"ff1a9f67",7322:"08d81db4",7413:"d4571d53",7555:"891d7eda",7729:"2c78b028",7741:"c9a4283c",7783:"472f2046",7891:"8354251c",7897:"f9c2f0cd",7966:"1a9615d1",7968:"6e30b750",8033:"3cb5767a",8580:"fc0ecb0d",8694:"b063b2d8",8737:"affc557f",8765:"51af9271",9107:"61c2b7ed",9140:"45db99c1",9499:"3f6e8559",9817:"75d4fe89",9821:"854196c8",9828:"caa95da2",9928:"d65354c1",10114:"4b115c93",10173:"c6ff4cfa",10335:"f3efb060",11254:"c2043e3a",11400:"a0a6b412",11652:"03c90e48",11727:"19137cb7",11748:"9e7aea0b",11952:"2e5b4d2a",12029:"54d3883d",12626:"7f54a00b",12634:"dd8c87cc",12812:"d9d74d98",13085:"4c243540",13276:"3e57e6d9",13412:"86129eca",13680:"5fcc484d",13764:"88297ed1",14274:"eb9cce0f",14348:"a1ed76f8",14392:"b4eb130b",14582:"d2a93a61",15091:"316c8e11",15152:"15587654",15224:"24f1e527",15347:"0fe96f3b",15529:"21fed183",15589:"01487d90",15623:"c75678d4",15677:"ce7c08f0",15715:"d8fca806",16002:"f350ae76",16091:"5960fd00",16165:"98e85c8f",16171:"2939f4b2",16227:"b7cf47d6",16348:"1addbe15",16349:"f94e02ae",16360:"0b7a25c4",16855:"56fe0fb3",16878:"d059c59c",16886:"313e46d8",16934:"798e5dd2",16959:"55017adb",17214:"b1d14706",17285:"8822e22a",17433:"2c802d5e",17490:"41ca190f",17693:"fcdab135",17837:"78fd62e9",17873:"be7ef5ae",17903:"55b2a465",17923:"5ca5ec26",18058:"fba7f48c",18144:"aa58ca4c",18242:"eb5e94a8",18303:"b2ed8410",18367:"4e1a58d5",18479:"32b47b8d",18634:"1b8b9080",18654:"49694d77",18694:"8c1f975e",19105:"f5ac8427",19516:"b3e53016",19644:"ebcbb7d6",19773:"07b667eb",19861:"26f25dbd",20203:"83f44d88",20387:"3d64c4eb",20433:"e15faba5",20553:"16ff720d",20635:"e03ac866",20681:"36586195",20738:"e30d362a",20779:"71940d4e",20955:"87d95835",20957:"4b0b548a",20974:"b09aebb4",21080:"bcaeb502",21129:"c7e575ce",21158:"da592dca",21198:"064a1e9b",21200:"45223f2a",21463:"c6a37e99",21562:"518f2336",21597:"d7311ede",21642:"54c4fd43",21798:"77e5f297",22109:"c906285c",22154:"f5b11d20",22191:"9e8010a3",22206:"de178977",22254:"fc92e4ec",22393:"62736fde",22469:"7e3751a5",22496:"81b0a059",22519:"797a7c77",22838:"31eb1d59",22954:"64c6b1ce",23092:"7e0d2b44",23146:"8659f9df",23271:"648bedec",23318:"a3d3ae4d",23360:"8ea1e3df",23427:"3351af55",23531:"c4e96dd4",23599:"d88dddb4",23621:"c75d5f30",23941:"b1899393",24212:"70e76067",24215:"08859e4a",24251:"103948fa",24288:"06afceb4",24310:"8ce14775",24327:"c17177cd",24379:"224be55a",24384:"6976254a",24651:"ad244a62",24671:"808f0700",24745:"8690c2eb",24891:"a29272eb",24910:"58164e44",24913:"9a5d2160",24941:"1e4d257a",25189:"d99ad3e6",25272:"c34ee40e",25351:"dc1be487",25353:"53b252bf",25403:"536e35f2",25469:"4ec13c11",25480:"9e933a24",25540:"eb7f2404",25578:"87502d26",25590:"28eef603",25759:"8876239e",25778:"2e76cb01",25853:"fb97dd70",25946:"c5c3df95",26026:"bb48cff5",26276:"a3f1baa4",26299:"cbe1ecb9",26397:"e588556c",26540:"2dfaf583",26544:"f2d5e972",26565:"08e977b8",26584:"9c89e222",26614:"ece3e377",26710:"cb0aaed6",27237:"7f793126",27335:"8c9d07fa",27449:"41e4831f",27478:"38a94c82",27647:"075c055a",27668:"0db37d65",27850:"459a8722",27918:"12db7610",28298:"7652a0cc",28323:"5dc5eee7",28480:"4635d227",28577:"3b4a3f73",28592:"18164af4",28669:"33b4ba11",28843:"dfa87ea9",29059:"dc5836f3",29071:"2d5266e5",29121:"028d52d9",29177:"f1391e79",29399:"613ab23b",29514:"eb072735",29537:"119ba796",29614:"00835288",29750:"a5fcbc6b",30101:"f2c110fe",30126:"00ad8d78",30141:"d5e4ff65",30335:"2b35d919",30374:"f44554bd",30482:"0e85b9f0",30584:"1032f2af",30670:"0674ac23",30830:"8bdb2215",30843:"1fb064d3",30849:"8d35be8c",30907:"f146d996",31005:"2c93fa43",31349:"2190ecb6",31421:"47fc6eda",31617:"dc0dfba9",31636:"842bca3f",31724:"0eba4435",31757:"e1cf42fe",31831:"96901eb9",32023:"2d8cf6c5",32035:"ecec42d7",32070:"077f549d",32438:"99fe1c0a",32464:"f50d9273",32472:"b8bd5c7b",32627:"835c5b63",32706:"8c689cc8",32831:"1945c14a",32852:"498a6ea8",32871:"c08bc3c2",32925:"3918b741",32936:"e4591885",33215:"43bf9228",33288:"e2fd1721",33399:"11bb08cb",33538:"f01a9412",33596:"94ae773b",33671:"e028d3f3",33724:"8746cef5",33815:"29aa76a0",34070:"48c4df9c",34631:"0ec05e19",34719:"93ddf683",34828:"17cac15c",34891:"785c26ac",34985:"96ecb4f3",35029:"09ea27c7",35388:"f7406fac",35400:"c093fa38",35703:"1896d76a",35748:"68e37e23",35846:"2672f5db",35877:"4bc1270e",35889:"04095479",36016:"ac550511",36160:"b89ce463",36171:"92a16ec4",36186:"833c32ac",36229:"f7c1816e",36303:"9c8b7196",36337:"b5ec8c54",36370:"939addfb",36398:"e4eac2b7",36434:"8ae61492",36463:"58460967",36504:"dfb2cd17",36721:"fe76b678",36881:"09b0b808",37221:"63c9493e",37329:"eed06922",37426:"bfe3c38a",37495:"1f94006f",37595:"ae2a813a",37734:"35b4854a",38141:"4090b9b2",38516:"5368fb83",38518:"7e1f75e8",38672:"e0af4636",38938:"cff3c34e",39066:"665a94cd",39071:"735658ae",39080:"8b77bc39",39113:"7d8cc863",39329:"5e036803",39419:"2c467b7c",39439:"654288cb",39596:"ce22eeb2",39640:"ac2104c3",39745:"7ecdd83c",39898:"c9242707",39969:"72f5da9b",39987:"8ec8dbda",40160:"f1413473",40176:"8a4ed5f9",40309:"230d3185",40373:"40f77729",40400:"04295867",40430:"90cfbf91",40682:"57bb3429",40705:"0a220c69",40767:"39d38542",41153:"00bb58af",41794:"01a06fce",42126:"8920f6e8",42185:"74e01666",42190:"9fdee81f",42198:"9dd70cc0",42347:"876221eb",42575:"059e2e13",42677:"33f5874b",42686:"64602d6e",43020:"778afa9a",43108:"9ca08045",43140:"5725cfd8",43194:"90ef02cc",43261:"39f99462",43363:"e46f5ee8",43412:"d1d0f3d4",43686:"a4681214",43729:"51e197de",43898:"d58fcc5f",43980:"5ad5937f",44003:"d1a16dc0",44281:"b66888d2",44377:"93ed69fb",44379:"eede1bae",44501:"ce947e81",44966:"d5d7c472",45237:"d066da59",45389:"a7f8c06f",45410:"f4c685b8",45480:"3ea9cbb3",45542:"1fc8ba85",45662:"7723f713",45766:"11363200",45821:"29fcdfb3",45932:"fc733a29",45943:"0939305b",46003:"76693a73",46033:"bffbbe4e",46103:"66cad8e9",46207:"359b7596",46271:"8d919f1b",46318:"8c5577b4",46521:"0abb20d4",46545:"51f789b1",46576:"9479c2e3",46831:"2e916fa2",46846:"d7b2d45e",46922:"dbdfeb4f",46982:"fa280ace",47093:"0c3c6eed",47176:"9c6c3715",47263:"1346e5b9",47406:"801454be",47605:"daaef810",47658:"8d35f70e",47669:"b55c0ab6",47704:"3d1c7c5a",47724:"706c9ffb",48221:"9fa74904",48275:"4eaf7b31",48423:"e9a49dd3",48600:"6cb691e4",48610:"16502a56",48622:"17f426f9",48679:"2571a9f9",48818:"061e2055",48837:"941e6176",48863:"e5afffc2",48909:"061609b3",48983:"e312da06",48990:"8ac0135c",49105:"6211d81b",49237:"729d4d40",49238:"455c9b12",49605:"90d61588",49706:"6a9b8a9e",49769:"f4b45fc1",49835:"5924808c",49904:"20176f92",50097:"70f41653",50165:"8868ca89",50307:"c897fcb8",50471:"9aeb470f",50506:"56f15864",50881:"f99162b0",50919:"6f769daf",51068:"b4d6108e",51092:"52bffd2c",51164:"c81741e5",51257:"def94b86",51268:"dbcc8865",51410:"409624be",51522:"7fad2391",51727:"8bc37115",51934:"258067ed",51951:"579d0d55",52322:"da51b229",52506:"f18be2c7",52560:"044804a9",52650:"2e2f483e",52703:"8347b491",52818:"20140c19",52834:"5d00abc3",53004:"7399a249",53121:"347ef4cf",53165:"c864d419",53210:"dc757eff",53288:"afbfc914",53426:"45dcc7a1",53482:"cd90552c",53516:"68ecccd5",53608:"47006cd4",53662:"cb788841",53931:"d720c839",53940:"c575aa4b",54007:"0ec0db41",54176:"e3faee2b",54193:"f786acd2",54415:"55a9266a",54607:"3d88b763",54642:"0be505e0",54669:"dcda8491",54750:"3fd1fabf",54868:"9b232c45",54975:"9c216150",55135:"004f9296",55202:"1f86965b",55413:"2261b7dd",55531:"f66551bc",55553:"88218aa6",55638:"eb9b02da",55791:"7885e24c",55855:"648df983",56010:"977be0a1",56482:"0e5fd447",56618:"fac7438c",56674:"38c2d771",56733:"fbbc39f4",56789:"147dae80",56815:"72450e08",56950:"4519d82c",57161:"f082283b",57193:"ab1b5f3f",57227:"70e085a1",57271:"4f4a2695",57583:"cb95a366",57772:"2fafdb70",57918:"03de18e2",58312:"838c38ab",58470:"850437a9",58566:"39abae3b",58628:"cf455658",58680:"7f2072d9",58744:"c9cec439",58774:"ebd0fc40",58925:"71d2b83d",59037:"e77df8c6",59158:"402665bb",59318:"a5522061",59494:"cf60f381",59576:"bd558a45",59671:"2cd17c73",59736:"97cf8400",59747:"e737c437",59749:"e4f1978f",59798:"4ff93e6b",59955:"b79d45ef",60019:"bee27a35",60183:"7d2045e9",60247:"8d5945b5",60263:"e1d6cb38",60280:"b615e9a6",60375:"ef2c8f6f",60459:"66ebd5a7",60715:"186e8185",60852:"aaee1128",60881:"d7498fa0",60903:"29fc63d0",61039:"114e8e85",61137:"19e36255",61185:"6028e600",61596:"14cda0d8",61660:"20054c14",61908:"cb1a7306",61980:"66ab6334",62034:"c4aa4649",62083:"7cc22aaa",62140:"e65bf999",62227:"e668c8a1",62231:"1faa833c",62302:"9b87d940",62703:"c0500c01",62767:"9c37ba0b",62901:"2a2866d6",63089:"d8b869ce",63565:"e62524d6",63566:"71a9a110",63824:"80a293fa",64013:"545379d8",64112:"9b390ce8",64156:"0b009fcd",64313:"66497df8",64410:"a59320ce",64562:"416aafe8",64614:"52557f8e",64827:"deb360a8",64906:"bed0db17",64966:"72c79f2a",65029:"29b34cb1",65123:"4185e54d",65318:"e3582b94",65319:"c8bfd78a",65356:"0554e2e3",65421:"7af6b65c",65562:"fd1def08",65773:"593da712",65956:"c308de8a",66458:"c44c73f4",66602:"8204ac95",66649:"108f5ee1",66743:"ff3d9525",66764:"77804269",66840:"1909c27b",66891:"bdc4672e",67170:"b1cf07d2",67205:"d9b87bb0",67272:"c7aa10e4",67330:"a65c3848",67452:"f75b7a16",67463:"a7b8ca27",67787:"76b7ab70",67820:"7c07b525",67825:"7604d487",67927:"320a4227",68044:"a1fef7db",68077:"566cf4df",68102:"6c511419",68115:"67905eb7",68153:"5c919503",68184:"62933b70",68352:"5e63cd4e",68580:"83a054ec",69376:"56e9f371",69399:"1c3bfdde",69467:"2e84cbdd",69565:"c755f9a0",69778:"929b4796",69791:"35a0a708",70022:"b96dad64",70085:"0c2f8fe1",70170:"8af86b03",70594:"48a86a7d",70613:"1e4774ca",70635:"ac8372ad",70641:"85f32d0b",70644:"40eb13ae",70729:"41206daf",70883:"3b0a1c29",70950:"cb1ecec9",71843:"7ca20c32",71844:"d169d439",71870:"9e25feed",71972:"f106b6c0",72033:"d241f9ad",72311:"50a66533",72317:"565b362c",72344:"cd4dba30",72690:"cc8e8278",72744:"8f5bc5c6",72815:"0a94e2cb",72872:"c8aa7ca2",73001:"e833700b",73277:"204838b0",73320:"84441dbe",73321:"8309a90c",73336:"6510f040",73343:"57145c14",73798:"1370e42d",73799:"2c34ef4d",73800:"e45fd96d",73875:"1afc9614",74390:"87d3dda2",74433:"c570c97c",74607:"bac77798",74933:"c76114e0",75064:"aac12434",75319:"0c66da8a",75379:"47b0a3f4",75394:"5d3fc9af",75501:"860ab49e",75506:"9fc9a6eb",75556:"3a805440",75696:"bcba69c4",75698:"5d7f7fca",75730:"5c224350",75748:"444114ca",75773:"abf660e9",76074:"1b8e67d2",76294:"6da59da0",76323:"a93f84b5",76413:"ed642bc4",76433:"b9eca61e",76581:"c2a461dc",76705:"800884f9",76762:"bf3e3989",77338:"84204c63",77411:"99af26b5",77533:"b895a29b",77642:"746176a0",77644:"38a5e04e",77696:"0c522b73",77965:"554b9825",78101:"390ca13a",78148:"df69749e",78153:"f8f8d3c0",78183:"ca3a46e5",78397:"7672a1fc",78446:"e692d8ea",78461:"d8a4a2ab",78580:"f214d6fc",78761:"db9902d7",79036:"6398e671",79224:"8aadb32b",79260:"8780f9a7",79362:"5be8a504",79503:"3b7b7eac",79765:"1cd1f4d0",79841:"d6f4b9df",79967:"4c2cc153",80048:"2531ccaa",80053:"12b4c978",80113:"35fd4774",80210:"245c42c2",80309:"784088d6",80367:"8a8670ee",80542:"ec0b455d",80567:"a9cb8072",80575:"3891d7a8",80599:"0bee7b6c",80613:"e0570f17",80622:"07255769",81030:"d2d4df98",81169:"b6c5bb67",81214:"9995a73a",81587:"f20821a1",81947:"22fed2a0",82164:"b1733abd",82214:"fa1e775a",82358:"fc29dc61",82859:"31284dc4",82939:"47af50cd",82941:"b41ee22a",83036:"960a5ba4",83050:"e2f79174",83051:"2c8ca832",83129:"49e121a3",83160:"17d58a0f",83167:"7e5077df",83214:"841b73d3",83247:"031b2037",83377:"edc1c235",83584:"decb8bc1",83646:"15fed629",84069:"6cbf1fce",84340:"3cf94bee",84599:"64e66e32",84727:"89a759bd",84773:"4cd9437b",84877:"efff0598",85138:"3a371a78",85173:"9836dc83",85349:"51e517b1",85351:"a48dcb5c",85362:"708c231e",85369:"eaf9747b",85417:"db26831e",85442:"f165aa95",85845:"24640633",85943:"7327cf2d",86003:"3f3d2412",86074:"ee42f66f",86095:"724d58c0",86326:"ae5b22eb",86393:"2a0ee70d",86582:"c87b817b",86673:"631293b3",86809:"05c2493c",86830:"ec575d6b",86983:"e3668a02",87233:"e04c413b",87314:"aa05b5be",87326:"9bf1cea0",87389:"003220d2",87407:"cd202afc",87411:"b4e7853d",87414:"17ef41bf",87445:"1aa24d10",88101:"90043f12",88572:"cf9502af",88592:"f8e5de89",88697:"89bf5b70",88767:"35bdc0f3",88782:"ac20107e",88818:"8f20f4ae",88829:"041cd656",88845:"b4a88233",88862:"9fa7f5a1",88869:"a0904c0a",89008:"1ea8e0b2",89083:"e577fb53",89104:"f909dc33",89248:"dc652803",89325:"4d1fc2f5",89548:"33318e9f",89752:"13b59269",89756:"61d37a76",90045:"a070d45c",90047:"90416017",90056:"f62143b4",90083:"a7639fa4",90178:"ea8e50f7",90206:"a815c560",90288:"4ce4cb71",90748:"838f2c04",90934:"fc91c3ee",90999:"c76faf09",91151:"6cea3bb1",91192:"3a82d970",91282:"546a3e7f",91760:"1c695705",91879:"2394cdc6",91902:"6d76c4fb",91984:"447b9563",91990:"944aa387",92149:"f14710cf",92160:"9a5af48d",92214:"a2ed0b7c",92255:"3e187747",92308:"c49340db",92501:"36271ad3",92517:"b3e5d301",92522:"7e06c8d0",92846:"95dd1cb5",93089:"3167acc2",93108:"7da8dd3d",93203:"47f4f611",93524:"8934f415",93570:"790da899",93724:"ef34abf8",93784:"fe679aa9",93789:"7eb98ed2",94184:"3d490188",94379:"99afaa36",94560:"dc6fb4c7",94583:"a0a27f60",94590:"0dc8e201",94759:"5dbc8a59",94771:"5b494971",94900:"ede0fcad",94922:"0dd3f662",95018:"3aafc153",95199:"c70ee4f9",95208:"3deb7f04",95447:"d0786185",95516:"24242dbb",95558:"938b3c42",95569:"bba09171",95613:"0ffe20ee",95739:"c2555544",95816:"39187769",95845:"b97f3a8a",95850:"3ccfd671",95979:"030a1e3f",96121:"c4abecba",96140:"d750be9f",96162:"57f339f6",96394:"258f2772",96410:"8e82ecb7",96446:"911b77aa",96558:"f0a1384b",96755:"8da70635",96774:"1f1b2aaa",96799:"61ef66f9",96838:"762eeabd",96840:"7fbed957",96871:"4290e249",96944:"c42d19d7",97094:"f0c60a3a",97245:"9008202b",97317:"a7e87b7a",97363:"262520e6",97382:"8a85f02f",97421:"d2f211db",97517:"9d9d62e9",97535:"4801cea2",97730:"59984cd7",97801:"e1bd57de",97959:"f9c92b06",98254:"f4a7587d",98347:"940228f0",98370:"b7a55404",98450:"1c805219",98698:"56e383b8",98727:"475fec2b",98777:"801eedcd",98882:"2ad8effb",98918:"8db3819a",99610:"00951b81",99726:"c975997b",99750:"7598228c",99808:"fd705a3e",99847:"be23135f",99873:"554ee35f",99881:"f18e47da"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),d={},f="cardano-updates:",r.l=(e,c,a,b)=>{if(d[e])d[e].push(c);else{var t,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+a){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+a),t.src=e),d[e]=[c];var l=(c,a)=>{t.onerror=t.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(a))),c)return c(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/cardano-updates/",r.gca=function(e){return e={10532414:"6890",11423591:"96410",17630979:"93724",17896441:"27918",28874657:"28592",34012593:"86809",35961293:"6115",40367786:"47406",41606842:"88101",54597942:"33596",57008883:"33399",57700755:"13276",70372002:"52703",79239208:"35748",79730245:"61596",80537537:"43140",80617771:"23427",82209890:"30141",84189288:"48863",84823557:"94771",87088759:"90047",89211367:"97421",89931013:"10173",91595845:"51268",91831590:"29121",93729337:"85845",94133299:"48275",98277053:"66602",99881079:"53004","08c82b6d":"81",e86dcd26:"162","9f761678":"278",b032e7ab:"292",f6aa5556:"376","09abc415":"416","43289e4d":"458","1752e4e5":"770","733f2214":"947",f5b1250e:"1129","28bc1d1b":"1285",f2423430:"1321",ef2b6a3f:"1338","98b2ca25":"1435",d3a595c1:"1537",d8668f0c:"1821",e25ae581:"1929","219856ee":"2109","871691d4":"2136","3ede3d79":"2221","06a283ef":"2307","1a932c01":"2348","7e87972d":"2432",c6259fbb:"2506",d92df848:"2578","62f46a38":"2681",a69f0deb:"2773","35c3586e":"2789",d9ccb35d:"3136",d5676bf9:"3270","7312b66d":"3403","565f686e":"3445","8c75942c":"3530","017cd6b7":"3649",dff1c289:"3792","5668eccd":"3918","20bc6fcd":"4093","16a93549":"4307","3ab5f4e0":"4376",a9019578:"4497",ac12bff3:"4608","12a1613f":"4615","53f26dca":"4775","0dea9a3b":"4910","691b1ed7":"4944","9136968b":"4986","43ab8474":"5106","28d85025":"5214",ccf451f9:"5237","4883d618":"5337","56f35d85":"5485","61d299e1":"5552","1d10bd9e":"5978",cfb82551:"6036",d10ad4a6:"6166","9f70a142":"6169","47da279e":"6236",bb465a37:"6246","55e35eab":"6249","5296f864":"6255","51cf8946":"6324","03d856aa":"6413","94dc91d7":"6683","986e43da":"6807","769eb34c":"6919","15dc596d":"6962","2dd2949a":"6996","3143eb67":"7204","35785fae":"7233","9b7a95a2":"7266","485c7377":"7322",b28a1077:"7413","4ab012ff":"7555","6d826f51":"7729",b8a3fbda:"7741",c10365f3:"7783",eab6de32:"7891","4b996e44":"7897","246d9f04":"7966","7de83161":"7968",d343e3e1:"8033",d83d9042:"8580","62ec9f43":"8694",a6e1d45a:"8737",a1b4c76a:"8765",e3c3ef1c:"9107","3be95f92":"9140",a040c838:"9499","14eb3368":"9817",d442e1d8:"9821","7de7ce98":"9828","8ed15298":"9928","0af81f82":"10114","4b62dc40":"10335",f6ec1152:"11254",b7dd63dc:"11400","1e24dd00":"11652",c63933b3:"11727","5e9a4be9":"11748","301cd1f4":"11952","3bc8fe23":"12029",f51bb76d:"12626",f6a3ab66:"12634",baed1590:"12812","1f391b9e":"13085",d2aca35e:"13412","77215fb3":"13680",d3f3f546:"13764","68585f67":"14274",db5663d1:"14348","5674f153":"14392","93b15a8c":"14582","3ac610ff":"15091",d124c703:"15152",be32a6ec:"15224","8914fa7e":"15347","4735cd81":"15529","5c868d36":"15589","8bfc66fb":"15623","2f97c20a":"15677",b65e5ec2:"15715",a2a63bac:"16002","7ff27d5d":"16091","5af0f4f9":"16165",d96cfa54:"16171","0ade4266":"16227","12d5d907":"16348","4febca42":"16349",d2ab2776:"16360","3dbbac8a":"16855","54a7c81e":"16878",a7418040:"16886","8395f67d":"16934","9a03c440":"16959","5226ad4f":"17214",d7899fea:"17285",f2180c0a:"17433","91b05c51":"17490",c6ae40c2:"17693","66326f4e":"17837",ae2d2424:"17873","4da01d42":"17903","622f92df":"17923","7d6aa09c":"18058","8d306cf9":"18144",dceb6e64:"18242","2d72833d":"18303","48292e37":"18367","05f2862f":"18479",db138d7c:"18634","3ce290cc":"18654","1a21d6a2":"18694","7ff38eb4":"19105","52b8fa8a":"19516","0801ba5a":"19644","925feafa":"19773","98e6984f":"19861",ff8cfcf7:"20203",d19a344f:"20387","7439ef37":"20433","2d52a685":"20553","1f965afe":"20635","5cf7c214":"20681",d200e7a4:"20738","57e0ab98":"20779",b073a55d:"20955",d967308c:"20957","3a3a2602":"20974","37b247a8":"21080",ec53298b:"21129","9a01d9b0":"21158","415f2cd9":"21198","0dfea636":"21200","1147f4da":"21463",c063df1b:"21562","8fe062a7":"21597","2455acc4":"21642","924be064":"21798","255b72b4":"22109","8a6fc2ec":"22154",b242687d:"22191","45a10ae8":"22206",a34b3179:"22254",d6c09ac2:"22393",ccb7a847:"22469","41244b80":"22496","31025fde":"22519","4ed83391":"22838","1da92289":"22954","40e498fa":"23092","1c192ca4":"23146","347c3e4d":"23271",ed930750:"23318",add555bf:"23360",e406e44d:"23531",d6f20405:"23599","0b5e25e7":"23621","94a907c9":"23941","8a766cbb":"24212","62a53033":"24215","372219b0":"24251",d7c69167:"24288","43bbbae7":"24310","27c463c7":"24327",bbe7c3bd:"24379","6b51f988":"24384",b57687d8:"24651",d8c4fe87:"24671",f210b4b5:"24745",e0a90ddc:"24891",b4645a09:"24910","960e3390":"24913","9e834cf3":"24941",f89a4337:"25189","8e410d22":"25272","611f3a9e":"25351",a1d4a798:"25353",f850a5f3:"25403",be1e6782:"25469","4be9a3a6":"25480",e8f5afda:"25540","548ef7ca":"25578","73bbd4d7":"25590","04326247":"25759","8fddd37c":"25778",ac8a5a87:"25853",e5a8e689:"25946",a687dd04:"26026","0b1b72af":"26276","2d0da244":"26299","0e717c32":"26397",e695f231:"26540",ee0b7a59:"26544","274d7200":"26565",c90fb258:"26584","578d3f15":"26614",fa00d705:"26710","0d889cfb":"27237",bda3e1c7:"27335","042169f6":"27449",b3043f02:"27478","82db709e":"27647",cd0ded60:"27668","9bcfaf7c":"27850","46c51ef6":"28298","1f9c0c9c":"28323","2154b8e4":"28480","6c8b7ad4":"28577",d5cc3122:"28669","2276e554":"28843","0d671897":"29059","76794a21":"29071",daa3e20a:"29177","77d69aed":"29399","1be78505":"29514","78df8d65":"29537","0dc0e43e":"29614","6d22e028":"29750","73f0dde0":"30101",ba0b6dbd:"30126","2d91c21f":"30335","5df8a536":"30374",d6a3b4a5:"30482","6b6054d2":"30584","50d0e663":"30670",ce7ed51f:"30830","3c2e75b4":"30843",e2011657:"30849",a5bf291f:"30907",ddce0bff:"31005",d6a93ba7:"31349",cc30e037:"31421",bcf46d9c:"31617","44e33f80":"31636","8084428b":"31724","9c7979b1":"31757","60e1630c":"31831",faece773:"32023","90bf9c2d":"32035","97daee08":"32070","370c5287":"32438",f8681695:"32464","9f7c2154":"32472",d0e182b9:"32627","12637b23":"32706","632979e8":"32831","12208c5e":"32852","684a796f":"32871","9e570fef":"32925","8d209506":"32936","113fed8c":"33215",b78698d9:"33288",b020ac17:"33538","5d0266be":"33671","82f24945":"33724","444dad87":"33815","4906b8e6":"34070","4bed0e48":"34631","387f3426":"34719","5c5c653f":"34828","7574ff34":"34891",f3c06362:"34985","9dce568f":"35029",c2eec07f:"35388","35f1ce0d":"35400","6bae8700":"35703",ea5726b6:"35846",f1bfc30d:"35877",b3041b60:"35889","2fd426fa":"36016",bd65afd9:"36160",fba052bd:"36171","66be9998":"36186","82c38436":"36229","1b2c8e6e":"36303","3a40f46b":"36337","934a8f8d":"36370","3f9060c3":"36398","56b3fab8":"36434",a1ac97eb:"36463","822bd8ab":"36504",e2c8baed:"36721",c0354ce6:"36881","5a843cd2":"37221",e5dd9161:"37329","17f4ca64":"37426",fd6fd4a3:"37495","965e9e9a":"37595","9d7869bb":"37734","8470e3c7":"38141","20ca2c37":"38516","0048047b":"38518",ae455379:"38672","7fa9de70":"38938",edca0251:"39066","3a493dd8":"39071",c6f90b29:"39080",acd2edbe:"39113",ac56cb0b:"39329","07541956":"39419","07fdf123":"39439",c091c5d8:"39596","7030fa2f":"39640","0c11045c":"39745","63fae4f0":"39898",ff276f6a:"39969","8534c2dd":"39987",bc6b65d9:"40160",b5164349:"40176",c036f08e:"40309","46d9aab0":"40373","10659ce5":"40400","187056c8":"40430","4c7d0c08":"40682","60fae5f4":"40705","74d66224":"40767",ca6829cb:"41153","0c48efb1":"41794",d7836792:"42126",de790939:"42185",b88c8fa9:"42190","59a262d5":"42198","4fb1471a":"42347","32d4ad41":"42575",c831575d:"42677","6e743f1b":"42686",c2b4dd94:"43020","44642b2f":"43108",c315164d:"43194","789f2cca":"43261",e9310706:"43363",e56a9a29:"43412","14fc0a72":"43686","15691c1d":"43729","2eba0b82":"43898","40718b14":"43980","5c8fca76":"44003",f452efc5:"44281","7a6174e7":"44377","73a1bc7a":"44379","94c6d911":"44501","35ef34ae":"44966",e7486169:"45237","4d7c8e78":"45389","9450fd8f":"45410","335868d9":"45480","154dea53":"45542","2e69cd33":"45662",d863ede2:"45766",f48535bf:"45821","878c8163":"45932",bb44f9e3:"45943","81bb24c9":"46003",e84709f6:"46033",ccc49370:"46103","12525f14":"46207",ec06fa8a:"46271","4ce06e64":"46318",d99d594e:"46521",f59c978c:"46545","2e28eb6b":"46576","86c4d158":"46831",e7a72da0:"46846",f872275a:"46922","0645cd02":"46982",b512dd46:"47093","2fa57f55":"47176","97407dee":"47263","469935bd":"47605","1be923a7":"47658","26a4b8b3":"47669","2073b851":"47704","26678b7e":"47724","97cbe67b":"48221",eda7cf83:"48423","6190b2fb":"48600","6875c492":"48610",e2a7c340:"48622","9e9bda24":"48679",cced6026:"48818","4fe12b4b":"48837",f7e5e70a:"48909","66345e96":"48983","9b6092d7":"48990","38284ae5":"49105","046dd16d":"49237","7e8e081f":"49238",f530b85c:"49605","3c3d2bff":"49706",a3889346:"49769","1afca88e":"49835",a6238997:"49904","588e4efd":"50097","752b6ead":"50165","29801efc":"50307","81528b00":"50471","3ee2c73a":"50506","144cea98":"50881",aa4c9cc8:"50919",e38c8545:"51092","3e93a65d":"51164","00bb8269":"51257",f5e5d1cf:"51410",f117ec90:"51522","5778ca6b":"51727",d0a351c0:"51934","4df30499":"51951",b92c36fd:"52322",d0639dee:"52506",dee5d2d9:"52560","6b16e156":"52650",e8d4d6c0:"52818",b03d4a4e:"52834",e4a61baa:"53121","805fc822":"53165","1b2c892c":"53210",f1df5007:"53288",efad53df:"53426",c0cf6239:"53482",b6ef4fcb:"53516","9e4087bc":"53608","4de4e659":"53662","5d5964ec":"53931","71e4641a":"53940","7d4ab4f9":"54007","50135b75":"54176",f55d3e7a:"54193","84677cf0":"54415","533a09ca":"54607",ddcb8bff:"54642",ebf8adea:"54669",e5b737ed:"54750","77e9cceb":"54868","884eee03":"54975",e0b45b46:"55135","8b4d9039":"55202","376dd8e8":"55413",ef4f60e7:"55531","144cf255":"55553","3cb9fdac":"55638",f47d214c:"55791","62422ab6":"55855","2bc04bf6":"56010",e4619b9c:"56482",a572b6ff:"56618","771f29e6":"56674","704e5bb8":"56733",ae7f7c70:"56789",ee94a44f:"56815","69c7a5a7":"56950",fb8d4667:"57161","6004d2a4":"57193","2a8f0182":"57227","417fc4b4":"57271","2494f6fc":"57583",d957ac34:"57772",decc8fa8:"57918","82ed4471":"58312",fb63aa20:"58470",f2b32cff:"58566","8cd47ea9":"58628",e1f21c3f:"58680","9dee36e7":"58744","12c83d8a":"58774","94780c38":"58925",eac9cf07:"59037",a0fc6770:"59158","7c815b5e":"59318","14ffac04":"59494","51457b0b":"59576","0e384e19":"59671",cfdb38ee:"59736","6e43d302":"59747","4ef71b5f":"59749","99b0bd12":"59798","120c0b00":"59955","6927f7c4":"60019","49db7061":"60183",dfd49ee8:"60247","47658b82":"60263","0e0c98f4":"60280","7e644b1f":"60375","6f700e99":"60459",a1597564:"60715","496cb9ef":"60852","7b73b4cd":"60881","0b0bfceb":"60903","12ef8706":"61039",ed730a1d:"61137",ace79a55:"61185","7a7e39bb":"61660","8864b77b":"61908","78d554ba":"61980","86cc1b5f":"62034",da7937f0:"62083",fce7e268:"62140","77550e96":"62227","9ba26136":"62231","9291df2e":"62302",ac87db6a:"62703",a0d18a99:"62767","51bf60d9":"62901","4e45b006":"63089","0a44a251":"63565",db50202c:"63566",fbdc54bf:"63824","01a85c17":"64013","65ecf6d5":"64112","21735eff":"64156","1e57c0e2":"64313",e06746c7:"64410",c08c0f47:"64562",c061e3b1:"64614","4d3eb7e7":"64827",ffbc2281:"64906","17e76f05":"64966","3bb06773":"65029","1e0f95a7":"65123",ed99d55f:"65318",d1d47ba3:"65319","245ecae9":"65356",dff84d74:"65421","5cc32405":"65562","393cd824":"65773",c7e43a05:"65956","40a4cbba":"66458","8ccf5d9f":"66649","0de82e28":"66743","9ce37f6e":"66764","2e52ad4e":"66840","90f359c5":"66891",f5f103cc:"67170",cd612773:"67205","5e3dc99b":"67272",bbc31819:"67330","7a4b421f":"67452",d9b708eb:"67463",bf071e0b:"67787",ea7f8016:"67820","459dd1ef":"67825",fc0eac3b:"67927","9668e24b":"68044","9a4c05df":"68077","83e7e4db":"68102",afa83c07:"68115","0431617f":"68153","5889a844":"68184","47cae651":"68352",ec344652:"68580","2b637fd9":"69376","3eae7101":"69399","2e2abe90":"69467",a6afc437:"69565","86e0423a":"69778",e135bd86:"69791","533bb9dc":"70022",f4cb7e87:"70085",d9e42018:"70170","996aa714":"70594",b073edd1:"70613",b4cc2dd2:"70635",f96c80dc:"70641","6226ba71":"70644",ef2b1d07:"70729","61f1e7c8":"70883","3399a664":"70950",b6145ff0:"71843",f5a24224:"71844",d70b4c5f:"71870","41d087d7":"71972","8f7e10a3":"72033","4cecd320":"72311",de5b481b:"72317","089154c4":"72344",ab4c3279:"72690","60c9cc01":"72744",e70f68c6:"72815","0c10bcf4":"72872",fa5dce7e:"73001",b8bcf1d1:"73277","78d8ce1d":"73320",c4479859:"73321",e80f56fd:"73336","49d88be4":"73343","27c15961":"73798",f0418a99:"73799","007e4c05":"73800","6c658908":"73875","71d215be":"74390","35369e36":"74433","0db650db":"74607",b8465b4d:"74933","7faccef9":"75064","831d95cb":"75319","79d76848":"75379",ef4801f7:"75394","9b5ce5fa":"75501","55b9667a":"75506",f522921c:"75556","90cc522f":"75696",d857251e:"75698","550cdc1d":"75730","492dc159":"75748","9c662d1f":"75773","4dc3be72":"76074","4fd8c72a":"76294",a9347c1b:"76323","77d820b6":"76413","999e2b46":"76433",bdc4c1ed:"76581","4c91b9ee":"76705","5e730d4f":"76762","0e828f3a":"77338",b96b3223:"77411",ce17d78b:"77533",fc8c3309:"77642",ce6dcc9e:"77644","7c359f4d":"77696",a48d66c0:"77965",da04b7b0:"78101","9d43e047":"78148",a6e5ff3c:"78153","8c574ba2":"78183","3f64a4c5":"78397","795480a5":"78446",b4f5b98b:"78461","354f96c6":"78580",cc5c2602:"78761",df778edc:"79036",fdba8f98:"79224","6fb45133":"79260",e57d1f62:"79362","0281a492":"79503","3ac14561":"79765","1377d1fa":"79841",fe184e91:"79967","68fb9d2f":"80048","935f2afb":"80053","4c4f8ee1":"80113","42ad0ca4":"80309","209bf559":"80367","391126a1":"80542","6da0a796":"80567","49d642c9":"80575","600e4190":"80599","015be621":"80613",eb0e2fb1:"80622",fdfeff52:"81030","61e62d68":"81169",cc267639:"81214","437db4bf":"81587",ae521593:"81947",f2deb2f1:"82164","4fe88e48":"82214","798d160f":"82358","18c41134":"82859","89a43a90":"82939","9fba849d":"82941","7c895c96":"83036","04c3317f":"83050","37b2e4a4":"83051","15072f11":"83129","60a77258":"83160","019bb279":"83167",f302e248:"83214",be16a434:"83247","80057f85":"83377",f6b8faad:"83584","0fa2fd29":"83646","6eecfaae":"84069","6610396c":"84340",e3067ecd:"84599","95f12e12":"84727",cf1bc381:"84773","8d3da32e":"84877",d988d084:"85138","859b6012":"85173","425dfc0f":"85349",f5d27437:"85351","709abed9":"85362","876c34e9":"85369","21857c8f":"85417","1caacab6":"85442",a7a31948:"85943","62dc90a1":"86003","551db1ac":"86074",be26e761:"86095",ea2603ff:"86326","3328a3bf":"86393",f13a89c7:"86582",a8723288:"86673","67ce4884":"86830","3c8518bb":"86983",ccfc9222:"87233","0ee9866d":"87314",a14fd889:"87326",f63b6b72:"87389",a1f2945e:"87407",fb793160:"87411","393be207":"87414",eac6bb0a:"87445","65d0391b":"88572","6a75c57a":"88592","435d8b4c":"88697","948ff80d":"88767","1b2a226f":"88782","1e4232ab":"88818",e158fd47:"88829","6a2140b3":"88845",d077dadd:"88862",e6ea9b03:"88869",daace409:"89008",aafd9eaa:"89083",b41783a8:"89104",e54fb861:"89248","9945c128":"89325",d15a0787:"89548",c0ac1524:"89752","397686d4":"89756","7221b837":"90045",fa0b1b5d:"90056",e356bfd0:"90083","9c96fa11":"90178",d79a4bb7:"90206",f96c80d6:"90288",a1cde312:"90748",cb7a1a0b:"90934","35e2a0c5":"90999",c7337d4e:"91151","76c61a3b":"91192",a1d1f035:"91282",fee99998:"91760","6d25229c":"91879","34c17ec8":"91902",d2ea5af2:"91984","1b34f23d":"91990",fa57bfdd:"92149","36a96f5a":"92160","692497e1":"92214",c178b56c:"92255","4b90674f":"92308",ea84a009:"92501","70396aa3":"92517",fb0b9e22:"92522","913aac40":"92846",a6aa9e1f:"93089",d65b9dd2:"93108","9cab6d73":"93203",e6402687:"93524",caab1e2e:"93570","6b553c5c":"93784",f4548430:"93789","5733c82d":"94184",e716e5b6:"94379","563fcf2e":"94560","23a95b4f":"94583","72c81964":"94590",bccb35b7:"94759","3bb415e3":"94900",c511c40f:"94922","034a14a6":"95018",c5858ebd:"95199",a2ee852b:"95208","177280a4":"95447",d6b66cf4:"95516",d5f27176:"95558",c1c5c6f5:"95569","324138c8":"95613","0d7612e9":"95739",eff08811:"95816","73a96f39":"95845",b9d87023:"95850","637356df":"95979","439b9a57":"96121",ca3b5bc8:"96140","8c6dbeca":"96162","388f6888":"96394","31889a8f":"96446",b13803f3:"96558",e44a2883:"96755","3cb4be67":"96774","6e7b669d":"96799","778ef860":"96838",e90b2ff0:"96840","126e82e6":"96871","78c763b8":"96944",c60581f2:"97094","04cbd10c":"97245","359aa856":"97317",d7d2f3e9:"97363","1a657a20":"97382","8fea44ca":"97517","4aaac366":"97535","6d371395":"97730","1b0bebd5":"97801",c9210b26:"97959","9440f007":"98254","43aa4824":"98347","2ebccc4d":"98370","7a263bfa":"98450","24d5a6d9":"98698",c94f306d:"98727","2c045882":"98777","7aaa65e3":"98882","237aa4d6":"98918","3f2108ba":"99610","830ba2c4":"99726","8d0075ff":"99750","80c54634":"99808","166775fd":"99847","7325235b":"99873",a8738e5f:"99881"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(c,a)=>{var d=r.o(e,c)?e[c]:void 0;if(0!==d)if(d)a.push(d[2]);else if(/^(40532|51303)$/.test(c))e[c]=0;else{var f=new Promise(((a,f)=>d=e[c]=[a,f]));a.push(d[2]=f);var b=r.p+r.u(c),t=new Error;r.l(b,(a=>{if(r.o(e,c)&&(0!==(d=e[c])&&(e[c]=void 0),d)){var f=a&&("load"===a.type?"missing":a.type),b=a&&a.target&&a.target.src;t.message="Loading chunk "+c+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}}),"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,a)=>{var d,f,b=a[0],t=a[1],o=a[2],n=0;if(b.some((c=>0!==e[c]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(c&&c(a);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},a=self.webpackChunkcardano_updates=self.webpackChunkcardano_updates||[];a.forEach(c.bind(null,0)),a.push=c.bind(null,a.push.bind(a))})()})(); \ No newline at end of file diff --git a/atom.xml b/atom.xml new file mode 100644 index 00000000000..55ab670a7ec --- /dev/null +++ b/atom.xml @@ -0,0 +1,6233 @@ +<?xml version="1.0" encoding="utf-8"?> +<feed xmlns="http://www.w3.org/2005/Atom"> + <id>https://input-output-hk.github.io/cardano-updates/</id> + <title>Cardano Updates Feed + 2023-12-06T00:00:00.000Z + https://github.com/jpmonette/feed + + Regular updates from Cardano Development Teams + https://input-output-hk.github.io/cardano-updates/img/favicon.ico + + <![CDATA[Ledger Team Update]]> + 2023-12-06-ledger + + 2023-12-06T00:00:00.000Z + + High level summary

This period we reached a major milestone, namely we now have an initial version of Conway +conformance testing working. We are now able to generate random valid data with the help +of constraint based testing framework, apply that data to Conway Ledger rules and verify +that the output matches to the one produced by the executable version of the Formal Ledger +Specification, when it is applied to the same random data.

We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get +Constitutional Committee query is complete and tested. Various improvements to the +testing tools. Addition of more test cases.

Low level summary

Conway

  • pull-3888 - Add checks for valid ProtVer when a proposal is a HardFork
  • pull-3902 - Fix pvCanFollow usage in Conway and improve clarity in Shelley
  • pull-3855 - Remove unreachable proposals
  • pull-3903 - Add lenient decoder for Addr
  • pull-3878 - Committee query - implement next epoch change

Testing

  • pull-3893 - Move tree-diff dependency to tests together with all instances
  • pull-3896 - Fix Brute force failure
  • pull-3904 - New ListWhere Pred added to the Constrained Solver.
  • pull-3907 - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file
  • pull-3883 - Committee QuerySpec Imp Test
  • pull-3909 - Make impAnn a bit more useful, by making the logs scoped by impAnn
  • pull-3908 - Use upstream testing instances for very basic types
  • pull-3912 - Removed call to tail, and the 'watchPulser' test
  • pull-3852 - Added constrained generators to conformance tests - Part 1

Improvements and releasing

]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-12-06-mithril + + 2023-12-06T00:00:00.000Z + + High level overview

This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking.

Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io.

Low level overview

  • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
  • Worked on the issue P2P threat modeling and risk analysis #1350
  • Worked on the issue Create a test network on Sanchonet #1173
  • Worked on the issue Upgrade breaking changes crates #1357
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Completed the issue Enhance aggregator REST API performances #1327
  • Completed the issue Signer runtime is stuck for some SPO #1312
  • Completed the issue Make mithril-client examples full crates #1385
  • Completed the issue Manual publication to crates.io with GitHub action #1380
  • Completed the issue Remove sqlite dependency from mithril-client crate #1390
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Performance & Tracing Update]]> + 2023-12-04-performance-and-tracing + + 2023-12-04T00:00:00.000Z + + High level summary
  • Benchmarking: Release benchmarking for node 8.7.0. Also, we performed the first-ever Conway benchmarks.
  • Development: Conway capability of our workload generator has been implemented and merged to master.
  • Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data.
  • Tracing: Quality-of-life improvements to tracing output and addition of a test suite.
  • Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.

Low level overview

Benchmarking

A full set of benchmarks for node 8.7.0 has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of 8.7.0 over 8.6.0, and can confirm no regressions have been introduced.

Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version. +Only Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty.

Development

Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era. +Currently, we're looking into adding Conway-exclusive features, such as DRep registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining DRep sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying.

Infrastructure

As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've +improved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data.

Tracing

The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages. +Additionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system.

Nomad backend

We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-12-01-hydra + + 2023-12-01T00:00:00.000Z + + High-level summary

This week, the Hydra team conducted a packed Monthly Review meeting, +featuring demonstrations and the preparation of the monthly report. They +addressed flakiness in tests and enhanced the logs json schema, +improving overall test reliability. Additionally, the team successfully +built MacOS ARM64 (aarch64-darwin) binaries in CI, expanding platform +support. They further improved the network configuration by detecting +incompatible persisted states, contributing to overall system +robustness. Finally, the team released version 0.14.0, highlighting +their commitment to delivering regular updates and improvements.

What did the team achieve this week

  • Monthly Review +meeting +packed with demonstrations and prepared monthly report +#1189
  • Fixed several flaky tests and improved the logs json schema +#1188#1190#1192
  • Built MacOS ARM64 (aarch64-darwin) binaries in CI +#1182
  • Improved network configuration by detecting incompatible persisted +states #1174
  • Released version 0.14.0

What are the goals of next week

  • Start work on incremental decommit
  • Continue shepherding contributed PRs to completion
  • Finish stateless-observation work
  • Open a head on a Conway network
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-11-29-consensus + + 2023-11-29T00:00:00.000Z + + High level summary

The Consensus team implemented and tested a patch that does not propagate future headers. +It is under review, and we expect it can be released in the next Cardano node version. +On the UTxO-HD front, we finished prototyping the LedgerDB and BackingStore redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend. +With this prototype finished we can start integrating the rest of the code. +We investigated the unexpected performance degradation observed when acquiring the block context. +We also released Cardano node 8.7.0 and moved tree-diff outside cardano-ledger libraries.

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-11-29-mithril + + 2023-11-29T00:00:00.000Z + + High level overview

This week, the Mithril team released the initial version of the Mithril client library, enabling developers to integrate core Mithril features into their applications. They also released a new distribution, 2347.0, which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements.

The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance.

Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users.

Low level overview

  • Release of the mithril-client library crate
  • Publication of a dev blog post about the released Mithril library
  • Released the new distribution 2347.0
  • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Worked on the issue P2P threat modeling and risk analysis #1350
  • Worked on the issue Enhance aggregator REST API performances #1327
  • Worked on the issue Signer runtime is stuck for some SPO #1312
  • Completed the issue Support P2P relay in infrastructure #1361
  • Completed the issue Make Cardano node version custom in CI/CD #1355
  • Completed the issue Manually deploy a test Mithril network #1356
  • Completed the issue mithril-client verbosity not following usage menu #1325
  • Completed the issue Error message for mithril-client snapshot download #1375
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-11-24-hydra + + 2023-11-24T00:00:00.000Z + + High-level summary

This week, the Hydra team spent significant time opening a head among +themselves on mainnet using the release candidate, revealing and +addressing lurking bugs such as +#1174. Also +required was this change to dynamically calculate the min utxo value +#1176, a +necessary adjustment following the switch to inline datums. The team +engaged with cardano-cli / cardano-api maintainers to discuss recent +changes and collaborated on drafting feature ideas, including providing +Conway support +for the Hydra roadmap. As part of ongoing improvements, they +experimented with writing the specification in markdown instead of +LaTex.

What did the team achieve this week

  • Opened head among us on mainnet and uncovered a few lurking bugs like +#1174 in the +release candidate
  • Calculate the min utxo value instead of hard-coding it +#1176, which is +needed since we switched to inline datums.
  • Met with the cardano-cli / cardano-api maintainers to discuss +recent changes and way forward
  • Drafted features ideas to provide Conway +support on the +Hydra roadmap
  • Experimented in writing the specification in markdown instead of LaTex

What are the goals of next week

  • Have the Monthly review meeting with several demos
  • Release version 0.14.0 with this +scope
  • Complete tidying up chain layer via stateless observation changes in +hydra-node +#1096
  • Update dependencies to prepare for Conway +#1114
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[SRE Team Update]]> + 2023-11-24-sre + + 2023-11-24T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • The cardano-node nixos service now supports SIGHUP p2p topology reloading when the useSystemdReload option is enabled

Lower level summary

Capkgs

  • Update cardano-db-sync and offchain-metadata-tools package paths and/or references: capkgs-compare

Cardano-node

  • Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: cardano-node-pull-5537
    • Creates a useSystemdReload bool option for the cardano-node nixos service
    • This will move the topology file(s) to /etc/cardano-node/topology-$i.yaml and inject systemd reload hooks for p2p configured cardano-node instances
    • Moving topology files to /etc also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired

Cardano-parts

  • Adds a metadata server profile and a number of other features and improvements: cardano-parts-pull-20
    • Adds a new metadata-service profile
    • Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile
    • Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish
    • Adds extra node list producers and public producers for cardano-node-topology profile
    • Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch
    • Adds select systemd metrics reporting to grafana-agent profile
    • Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS
    • Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it
    • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
    • Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation
    • Adds support for grafana recording rules in the template files
    • Improves cardano-group profile handling of producers with respect to multiple instance nodes
    • Improves grafana-agent profile metrics handling for multi-instance cardano-node servers
    • Improves smash service preStart handling while waiting for a node socket
    • Updates Justfile for ERA_CMD demo support
    • Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates
    • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
    • Defaults cardano-postgres profile psqlrc use to false

Cardano-playground

  • Adds a new testnet metadata server, cluster webserver, and other improvements: cardano-playground-pull-6
    • Adds a new metadata server
    • Adds a new webserver for the cluster's static virtualhost needs
    • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
    • Adds systemd metrics monitoring to the cluster
    • Resizes sanchonet machines to support the growing chain
    • Completes migration of preprod from world
    • Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes
    • Updates Justfile for ERA_CMD demo support
    • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
    • Migrates book static code to playground from world, with refactor, cleanup and updates
    • Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules

Offchain-metadata-tools

  • Adds db password option with obfuscation plus misc improvements: offchain-metadata-tools-pull-61
    • Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services
    • Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile
    • Moves from std use in the nix flake to standard flake schema
    • Fixes hydra CI failures
    • Builds update-docs in hydra to avoid long local build times
    • Removes deprecated tullia
    • Removes deprecated check-hydra from pkgs
    • Removes deprecated bors files and references
]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-11-22-ledger + + 2023-11-22T00:00:00.000Z + + High level summary

Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of +CDDL specification. Important bugfixes include:

  • Fix deserialization of ValueNotConservedUTxO predicate failure that could not +previously report zero ADA.
  • Fix deserialization of CostModels in the PParamsUpdate. Invalid CostModels are no +longer allowed, only CostModels for unrecognized Plutus versions are allowed starting +with Conway
  • Fix returning of Deposits for ProposalProcedures

Testing tooling has been improved and new tests have been implemented for Conway era.

Low level summary

Conway

  • pull-3858 - Restructure computing Refunds and Deposits in a TxBody across all eras
  • pull-3860 - Removed mock/crypto.cddl, added optional tag to sets
  • pull-3864 - Fix Proposal deposits and add deposit tests to imp tests
  • pull-3859 - Rename ProposalsSnapshot to Proposals
  • pull-3867 - MaryValue fixes
  • pull-3869 - Indicate that tag 258 is optional for OSet. Fix rational CDDL
  • pull-3863 - Improve deposits refunds re-usability
  • pull-3861 - Fail PParamsUpdate deserialization for invalid costmodels in Conway
  • pull-3875 - Fix cddl spec for CostModels in Conway
  • pull-3876 - Change 4 PParam fields from EpochNo to EpochInterval
  • pull-3884 - Relax requirement on the Set tag 258 to be enforced in the next era

Testing

  • pull-3868 - Improvements to support property tests on Traces with simple Tx with DRep related Certs
  • pull-3792 - RATIFY and GOV constraint tests
  • pull-3885 - Added a test for genTxAndNewEpoch
  • pull-3886 - QuickCheck Imp integration

Improvements and releasing

]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-11-22-mithril + + 2023-11-22T00:00:00.000Z + + High level overview

This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer.

Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release.

Low level overview

  • Completed the issue Prototype a P2P relay with libp2p #1326
  • Worked on the issue Enhance aggregator REST API performances #1327
  • Worked on the issue Signer runtime is stuck for some SPO #1312
  • Completed the issue Manually deploy a test Mithril network #1356
  • Completed the issue Make Cardano node version custom in CI/CD #1355
  • Worked on the issue Support P2P relay in infrastructure #1361
  • Completed the issue mithril-client fails to extract archive #1352
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Initial CIP 1694 Security Analysis and Responses]]> + 2023-11-20-cip1694 + + 2023-11-20T00:00:00.000Z + + High level summary

We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

Initial CIP-1694 Security Analysis and Responses

Section: The constitutional committee


  • “For example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


Section: Size of the constitutional committee


  • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


Section: Terms


  • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

Thanks. Yes, that suggestion is a bit easier to read.


Section: Registered DReps


  • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


Section: Ratification


  • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

These correspond exactly to the groups that are administered by the Parameter Committee.


  • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

Yes, it’s not about harming the system, since Info +actions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


Section: Content


  • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


Section: Protocol Parameter groups


  • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


  • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


Section: Votes


  • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


  • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


Section: Changes post Edinburgh workshop (July 2023)


  • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


Section: Reduced deposits for some government actions


  • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

Indeed. We have no plans for this at the moment.

]]>
+ + Kevin Hammond + https://github.com/kevinhammond + + + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-11-17-hydra + + 2023-11-17T00:00:00.000Z + + High-level summary

This week, the Hydra team made several impactful updates. They addressed +misleading errors regarding collect com transactions, resolved a security +advisory (CVE-2023-42806), and simplified the Hydra Head protocol by using +inline datums. The team also tackled minor inconsistencies in specifications and +implementation, documented reasons for potentially dropped close transactions by +the cardano-node, and collaborated with SundaeLabs on an offline mode for +hydra-node. Additionally, they engaged in discussions with researchers about +incremental de-/commits.

What did the team achieve this week

  • Removed misleading errors about collect com transactions #839
  • Addressed security advisory CVE-2023-42806 in PR #1161
  • Changed the head protocol to use inline datums, simplifying things in the hydra-node #1162
  • Addressed minor inconsistencies in spec and implementation #1104
  • Documented why close transacations might be dropped by the cardano-node (cant fix) #1039
  • Tidy up a few things here and there
  • Worked with SundaeLabs on the offline mode for hydra-node
  • Discussed incremental de-/commits with researchers

What are the goals of next week

  • Start work on incremental decommits protocol specification #1057
  • Provide support to Hypix
  • Address all open bugs
  • Release version 0.14.0 with this scope
  • Update dependencies to prepare for Conway #1114
  • Shepherd off-line mode PR over the finish line
  • Complete tidying up chain layer via stateless observation changes in hydra-node #1096
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Performance & Tracing Update]]> + 2023-11-17-performance-and-tracing + + 2023-11-17T00:00:00.000Z + + High level summary
  • Benchmarking: Release benchmarking for node 8.6.0 as well as benchmarks scrutinizing GHC versions and the new tracing system.
  • Development: PlutusV3 capability of our workload generator has been implemented.
  • Tracing: First round of optimization of the cardano-tracer service has completed, awaiting validation.
  • Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.
  • Workbench: Configurable remote environments and improvements to run documentation have been merged to master.

Low level overview

Benchmarking

We've performed and analyzed a full set of benchmarks for node 8.6.0, both in comparison to recent release tags +and mainnet version 8.1.2. A lot of development work has entered the system since then, so it is crucial +we can rule out any potential performance risks for the next mainnet release.

Additionally, we've been benchmarking GHC9.6.3 builds of cardano-node. Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform.

A last set of benchmarks was dedicated to the new tracing system with node 8.6.0. We were able to show that +there is no performance risk to enabling the new system, even when forwarding all trace messages to a cardano-tracer +service on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.

Development

For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes +to the execution budgets by developing specialized workloads.

Tracing

The cardano-tracer service has received its first batch of optimizations. Profiling output is promising; to measure +performance for a long service run time, we're currently equipping the service binary with the same capability to +emit regular resource traces as cardano-node. Analysis of those will be the basis for validating this and possible future optimization efforts.

Nomad backend

Many improvements for the nomad backend have been implemented and merged to master. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service, +more detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables +our team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.

Workbench

Our performance workbench has seen upgrades in documenting and reporting cardano-node builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler. +When alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential.

Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Network Team Update]]> + 2023-11-16-network + + 2023-11-16T00:00:00.000Z + + High-level overview of sprint 48

Bootstrap Peers

We continued reviewing bootstrap peers, ouroboros-network#4555.

IOClasses / IOSim

We prepared slides for a Haskell meetup were we presented a talk on IOSimPOR. +The recording will be availble on YouTube.

We also used the opportunity to do some refactoring of the IOSim code base: io-sim#117. +We released io-sim-1.3.0.0 on Hackage: io-sim#119.

We also added forkFinally to MonadFork (not included in 1.3.0.0 release): io-sim#123.

Tech debt

We refactored Resource used by the DNS subsystem: ouroboros-network#4707. +We continued reviewing the ouroboros-network#4625 PR, which refactors +RootPeersDNS module.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-11-15-consensus + + 2023-11-15T00:00:00.000Z + + High level summary

Over the last two weeks, we managed to run a UTxO-HD capable node in legacy mode, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does). +This legacy mode could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not. +However, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter. +On the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node. +Therefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.

On the Genesis front, we reviewed the peer simulator for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.

We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.

Javier Sagredo continues his cycle as release engineer, and he is working on version 8.7 of Cardano node.

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-11-15-mithril + + 2023-11-15T00:00:00.000Z + + High level overview

This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.

Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.

Low level overview

  • Worked on the issue Prototype a P2P relay with libp2p #1300
  • Completed the issue Light Wallet: Release mithril-client library #1311
  • Completed the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
  • Completed the issue release-mainnet aggregator is unreachable #1310
  • Completed the issue Fix certificate hashes re-computation in aggregator #1343
  • Completed the issue Remove unstable tag in unstable release #1235
  • Worked on the issue Enhance aggregator REST API performances #1327
  • Worked on the issue Signer runtime is stuck for some SPO #1312
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-11-14-node-cli-api + + 2023-11-14T00:00:00.000Z + + 2023-11-01 - 2023-11-14

High level summary

CARDANO-NODE

CARDANO-CLI

  • Improve golden tests
  • Clean-up of conway era commands

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-11-10-hydra + + 2023-11-10T00:00:00.000Z + + High-level summary

The last two weeks, the Hydra team achieved several milestones. They published +the monthly report for October, providing updates on project developments. The +team delivered a presentation and workshop at the Cardano Summit, contributing +to community engagement. They implemented a \"dirt road\" solution for the +\"Ignored init tx\" notification and moved the hydra-poll example project to a +dedicated repository. Additionally, the team built a hydra-chain-observer tool +for Hydra Heads, updated the toolchain to GHC 9.6.3, and made various +improvements to tooling and code formatting. They addressed specific issues, +such as fixing the gen-hydra-keys command and resolving concerns with the +rewritten hydra-tui. The team also enhanced the hydra-cluster smoke test +suite by fetching network configurations dynamically. Lastly, they actively +reviewed pull requests and architectural decision records from the community, +including contributions from SundaeSwap. An experiment, the Hydra tally, was +completed and successfully deployed to the mainnet by the Cardano Foundation.

What did the team achieve this week

  • Published the monthly report for +october
  • Given a presentation / workshop at the Cardano summit +#1109
  • Dirt road implementation for \"Ignored init tx\" notification +#529 (without +stateless observation)
  • Completed and moved hydra-poll example project into a +dedicated +repository
  • Built a first version of a chain observation tool for Hydra Heads +#1096
  • Switched toolchain to GHC 9.6.3 and various improvements on tooling +and code formatting +#1135#1152#1151#1154
  • Fix gen-hydra-keys command to not overwrite existing +keys #1136
  • Fixed the rewritten hydra-tui#1113#1137
  • Fetch network configurations instead of packaging them into +hydra-cluster (smoke) test suite +#1156
  • Reviewing PRs and ADRs from the community (SundaeSwap) +#1118#1157
  • Hydra tally experiment (Cardano Foundation) deployed to mainnet

What are the goals of next week

  • Tackle reported bugs
  • Shepherd contributed off-line mode PR to the main codeline
  • Improve chain observation tool to include more data and refactor +existing code towards more stateless observation
  • Start work on incremental decommits
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[SRE Team Update]]> + 2023-11-10-sre + + 2023-11-10T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the cardano-playground stack

Lower level summary

Capkgs

Cardano-parts

  • General migration support PR for cardano-world to cardano-playground cardano-parts-pull-18
    • Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground
    • Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes
    • Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains
    • The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state
    • The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable
    • Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0
    • For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true
    • Template updates include:
      • Adds optional TF AZ declaration on ec2 resources
      • Adds a cardano node p2p dashboard to the grafana cloud stack
      • Adds a dbsync pool performance analysis query
      • Updates python distribute and delegation scripts from world for playground compatibility
      • Starts a python script lib to reduce shared code among the python scripts
      • Several justfile improvements and new recipes
    • More detail is available in the PR description
  • Update submit action script for 8.6 cardano-parts-pull-19
  • Update scripts for 8.6.0-pre cardano-parts-pull-21
    • Fixes subcommand names based on ERA_CMD
    • Adds deposits to some commands
    • Separates CC cold/hot key generation as host authorization has to occur after action is approved
    • CC voting enabled in vote job

Cardano-playground

  • Migration PR to largely complete the network migration from cardano-world to cardano-playground: cardano-playground-pull-5
    • Adds re-spun private chain network
    • Migrates shelley-qa chain network from world
    • Justfile improvements and new recipes
    • Improve concurrent environment chain support
    • More detail is available in the PR description

Iohk-nix

  • Migration to play: iohk-nix-pull-561
    • Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org
    • Remove deprecated cardano-lib p2p network environment
    • Update sanchonet chain with respin changes
    • Update private chain with respin changes
    • Bump private and shelley-qa chains to sanchonet equivalent conway genesis
    • Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing

Sanchonet-demo

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[DB-sync Team Update]]> + 2023-11-09-db-sync + + 2023-11-09T00:00:00.000Z + + High level summary

We have created new tag sancho-2-2-0, which integrates missing Conway feautures and some minor fix +tags sancho-2-1-0, sancho-2-0-1. +We have completed the initial implementation for the bootstrap instance objective.

Lower level summary

  • Add a new --disable-gov flag which disabled Conway ferautures +#1558
  • Fix of the committee key size +#1544
  • Workaround a ledger issue with unregistered pools +#1542
  • Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs +#1539
  • Rename offline to offchain +#1533
  • Transfer existing tests to Conway era +#1529#1547
]]>
+ + Kostas Dermentzis + https://github.com/kderme + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-11-08-ledger + + 2023-11-08T00:00:00.000Z + + High level summary

This update contains mostly improvements to quality of Conway era implementation and +tooling that we use for testing Ledger. Major Conway bugs that were discovered and +squashed are:

  • PParamsUpdate proposals will now correctly use DRep thresholds for ratification
  • Treasury withdrawals are now properly enacted.
  • Corrected snapshotting and DRep Stake Distribution Pulser initialization
  • Delegation to non-existent Stake pool is no longer possible

Other important quality of life improvements are addition of reusable interfaces for an +ordered set OSet and ordered map OMap. Which allowed us to disable duplicate +certificates and proposals in a transaction. As a precursor to PlutusV3 integration, a +serious reorganization of Plutus related functionality was performed.

Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on +expired proposals, addition of Anchor to Constitutional Committee resignation proposals.

Significant improvements have been made to a specialized "Imp" test library that allows us +writing concise stateful unit tests for verifying the Ledger logic. Serious progress has +been made on the conformance testing, where we can now interface with Haskell generated +code from the Agda specification. Serialization testing has been extended to increase +binary conformance coverage.

Low level summary

Conway

  • pull-3808 - Enhance CommitteeMembersState query to return quorum and NoConfidence
  • pull-3801 - Fix epoch rule and tests
  • pull-3803 - Fix delegation validation
  • pull-3759 - Reshuffle things to the DRepPulser incorporates some snap shot things
  • pull-3779 - Prevent duplicate certs and proposals
  • pull-3794 - Added anchor to resign certs
  • pull-3797 - Cleanup JSON instances for Conway governance
  • pull-3848 - Plutus modules restructure
  • pull-3840 - Fix anomalies in Deposits in the Conway Era
  • pull-3856 - Add governance related ledger events
  • pull-3825 - Prevent voting on expired GovActions
  • pull-3831 - Treasury withdrawal fix
  • pull-3791 - Use a Data.OMap.Strict to replace ProposalsSnapshot
  • pull-3836 - PParamsUpdate enactment fix
  • pull-3846 - Revert argument order swap.

Testing

  • pull-3782 - Move ImpTest to Shelley testlib
  • pull-3842 - Imp improvements
  • pull-3844 - Add mappings to Agda types
  • pull-3853 - Fix strange assertion failure, which hides real Block too big problem.
  • pull-3809 - CDDL roundtrip testing
  • pull-3832 - Treasury withdrawals tests
  • pull-3839 - Added cardano-ledger-conformance
  • pull-3841 - Add sha256 to cardano-ledger-executable-spec

Improvements and releasing

  • pull-3843 - Add ...WithLogs versions of evalScripts and friends
  • pull-3795 - Bump plutus to 1.15
  • pull-3798 - Bump urllib3 from 1.26.17 to 1.26.18 in /doc
  • pull-3799 - Changes needed for 8.6 release
  • pull-3807 - Add invalidBeforeL and invalidHereAfterL functions
  • pull-3819 - Fixups needed for a release
  • pull-3829 - Post release CHANGELOG version bumps
  • pull-3830 - Bump aeson to 2.2
  • pull-3833 - Backport release cardano-ledger-conway-1.10.1.0
  • pull-3828 - Add changelog for node release 8.6
]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-11-08-mithril + + 2023-11-08T00:00:00.000Z + + High level overview

This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files.

Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator.

Low level overview

  • Worked on the issue Prototype a P2P relay with libp2p #1300
  • Worked on the issue Light Wallet: Release mithril-client library #1311
  • Worked on the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
  • Worked on the issue release-mainnet aggregator is unreachable #1310
  • Completed the issue Client Docker package is incorrect #1322
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-11-01-consensus + + 2023-11-01T00:00:00.000Z + + High level summary

This week the Consensus team made progress on two fronts: the question of survivable eclipse duration, which is part of our work supporting Genesis delivery, and how to improve the handling of blocks from the future. +Regarding the UTxO-HD branch, we managed to run a node with legacy blocks, which is syncing with mainnet, up to including Alonzo. +We also investigated a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release.

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-11-01-mithril + + 2023-11-01T00:00:00.000Z + + High level overview

This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the release-mainnet aggregator.

Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI.

Low level overview

  • Worked on the issue P2P Networking - Proof of Concept #1300
  • Completed the issue Build mithril-common and mithril-client in WASM PoC #1284
  • Completed the issue Fix devnet Mithril Docker images [#1272](https://github.com/input-output-hk/mithril/issues/1272
  • Worked on the issue Light Wallet: Release mithril-client library #1311
  • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
  • Worked on the issue release-mainnet aggregator is unreachable #1310
  • Completed the issue Client regressions in snapshot list and download #1321
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-10-27-hydra + + 2023-10-27T00:00:00.000Z + + High-level summary

This week, the Hydra team fixed the gen-hydra-keys command to avoid +overwriting existing keys, and resolved issues related to the rewritten +hydra-tui. They also worked on a \"dirt road\" implementation for the +\"Ignored init tx\" notification, improving the robustness of the system.

The team finalized preparations for the Cardano Summit presentation, including +implementation of the hydra-poll example DApp.

If you happen to read this and attend the Summit in Dubai, make sure to check +out our Masterclass about \"Developing Hydra + Mithril for Scaling Cardano\" on +Friday, November 3 at 14:00-15:30 local time in the \"Al Dar\" room!

What did the team achieve this week

  • Fix gen-hydra-keys command to not overwrite existing keys +#1136
  • Fixed the rewritten hydra-tui#1113#1137
  • Finalized cardano summit preparation +#1109
  • Implemented the hydra-poll example DApp link to +repository
  • Dirt road implementation for \"Ignored init tx\" notification +#529

What are the goals of next week

  • Attend cardano summit and deliver presentation
  • Clarify / close user created issues
  • Build aarch64-darwin binaries in CI
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Network Team Update]]> + 2023-10-27-network + + 2023-10-27T00:00:00.000Z + + High-level overview of sprint 47

Bootstrap Peers

We continued to review the process of bootstrap peers, see ouroboros-network#4555

CI / Tests

We investigated our CI issues. We found a memory leak in typed-protocols +function used for testing codecs which triggered out of memory manager (OOM) on +some platforms (typed-protocols#43); we also found a bug in the connection manager which resulted in CI +timeouts (see connection-manager-fix).

KeepAlive client

We found two small issues with the keep-alive client, which were addressed +by Karl Knutsson (Cardano Foundation), ouroboros-network#4689.

Galois

We merged two large PRs prepared by Galois:

Cardano Network Service Assurance (CNSA)

Galois made the following progress on CNSA:

  • a simple [InfuxDB] database backend has been added;
  • the documentation has been updated;
  • internal improvements to the code;
  • progress on a new "CSNA analysis" that provides, for each sampler node, the +block download throughput in bytes over time.

New CHaP Release

We cut a new release of ouroboros-netowrk packages to CHaP: chap#547

More details

CI / Tests

We improved the memory footprint of some of our tests by analysing a stream of +IOSim traces without retaining them, see ouroboros-network#4696

As a safety measure, we introduced an upper bound for heap memory used by test +artefacts in our nix tests. We use 200MB limit for all tests except for +network-mux tests which use 350MB limit, see ouroboros-network#4702.

We refactored one of our tests to use ephemeral ports thus allowing it to +run concurrently, see ouroboros-network#4702.

We merged ouroboros-network#4623 which fixes a bunch of test failures.

All of them were due to a bug in test logic rather than a bug in production +code.

Release Process

We updated our release process & associated scripts, see +ouroboros-network#4705.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[SRE Team Update]]> + 2023-10-27-sre + + 2023-10-27T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the cardano-playground stack

Lower level summary

Capkgs

  • Adds offchain-metadata-tools, dbsync sanchonet updates: capkgs-compare

Cardano-parts

  • General package updates, modules improvements and template recipes to support network migration from world to playground cardano-parts-pull-17
    • Bumps cardano-db-sync-ng to sancho-2-0-0 tag
    • Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play
    • Adds more machine system bins and devShell bins for scripting and debug purposes
    • Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module
    • Adds profile-cardano-node-topology module for a simplified interface to most common topology needs
    • Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs
    • Adds a topology function to filter self from group machines with an allowList for matching infixes
    • Adds metadata-server and related offchain-metadata-tools bins from capkgs
    • Updates justfile template with:
      • a new query-all recipe for getting status of multiple concurrent running environments
      • a new set-default-cardano-env recipe for fast switching between environments
      • a new start-demo recipe for forking a custom env into conway
      • a new start-node recipe for generic environment start
      • a new stop-node recipe for generic environment stop
      • updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions
      • updated query-tip recipe to a generic query tip compatible with each environment

Cardano-playground

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-10-25-mithril + + 2023-10-25T00:00:00.000Z + + High level overview

This week, the Mithril team released a new distribution 2342.0. This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes.

They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files.

Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the release-mainnet aggregator, and enhanced the Mithril explorer UI.

Low level overview

  • Worked on the issue P2P Networking - Proof of Concept #1300
  • Completed the issue Make mithril-client crate a library #1141
  • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
  • Completed the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
  • Worked on the issue Fix devnet Mithril Docker images #1272
  • Worked on the issue release-mainnet aggregator is unreachable #1310
  • Worked on the issue Build mithril-common and mithril-client in WASM PoC #1284
  • Completed the issue Display a summary of signers before the full list in explorer #1133
  • Completed the issue Add certificates list in explorer #1184
  • Completed the issue CoreVerifier setup does not compute total_stake correctly #1306
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-10-24-node-cli-api + + 2023-10-24T00:00:00.000Z + + 2023-10-11 - 2023-10-24

High level summary

CARDANO-CLI

  • Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified.
  • stake-address-info now shows deposits balance.
  • Added conway governance action view to allow to inspect governance action files before submitting them on a transaction.
  • build-raw support for --vote-file and --proposal-file

CARDANO-API

  • Support DRep extended keys
  • Support Plutus V1 in Conway

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-10-20-hydra + + 2023-10-20T00:00:00.000Z + + High-level summary

This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023.

In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON. +This improvement offers users greater flexibility and ease of interaction with the API.

Finally, the team has followed up on the TUI brick upgrade to version 1.10. +This effort has resulted in addressing minor details and enhancing the overall user experience with the TUI.

What did the team achieve this week

  • Prepare presentation and workshop for Cardano Summit.
  • More TUI fixes and improvements.
  • Upgrade GHC from 9.2.8 -> 9.6.2 #1105
  • Solved user issue related to submitting transactions in cbor format #1111.
  • Fix hydraw connection issue making it more stable #1121.

What are the goals of next week

  • Work on hydra-poll dApp for Cardano summit.
  • Start the work on packaging hydra-node and related services.
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-10-18-consensus + + 2023-10-18T00:00:00.000Z + + High level summary

During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node.

UTxO-HD

  • The Plutus workload benchmark for the in-memory backend showed no regressions for the metrics of interest, but it does show an increase in resource usage.
  • We got additional ad-hoc measurements on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB.
  • We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.

Genesis

  • We produced the first draft for a Survivable Eclipse Duration Model (422).

Support

  • Esgen finished his cycle as release engineer. Node 8.5.0 has been released.
  • We resumed work on the subpar handling of block from the future (4251).
  • We prepared the integration of new tracing events for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned issue).
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-10-18-mithril + + 2023-10-18T00:00:00.000Z + + High level overview

This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay.

Finally, they enhanced the CI/CD to publish multiple packages to crates.io and started improving the developer experience with the Mithril devnet.

Low level overview

  • Published the security advisory Mithril relay could expose Cardano block producer internal IP when updated #GHSA-9m3h-72xj-x2gq
  • Worked on the issue P2P Networking - Proof of Concept #1300
  • Worked on the issue Make mithril-client crate a library #1141
  • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
  • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
  • Completed the issue Publish multiple packages to crates.io #1298
  • Completed the issue Rename public key published in releases #1292
  • Completed the issue Mithril networks infrastructure maintenance #1218
  • Worked on the issue Fix devnet Mithril Docker images #1272
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Network Team Update]]> + 2023-10-15-network + + 2023-10-15T00:00:00.000Z + + High-level overview of sprint 46

Bootstrap Peers

We continued reviewing of bootstrap peers, see ouroboros-network#4555.

Towards Typed Protocols 0.2.0.0

We diagnosed the performance regression of the new design. The work on +typed-protocols will be postponed. For more details see the +typed-protocols#3. As an outcome of the performance debugging we prepared +PR which updates the demo-ping-pong and +demo-chain-sync applications.

Peer Sharing

We made progress in review of ouroboros-network#4644, which simplifies the +peer sharing and fixes the ouroboros-network#4642 issue.

Tech Debt

We reviewed the ouroboros-network#3836 PR which inspects all the uses of +error in ouroboros-network. The PR was prepared by Galois.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-10-13-hydra + + 2023-10-13T00:00:00.000Z + + High-level summary

This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity.

They also completed the exploration of potentially moving the Plutus validator scripts to Aiken.

Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project.

What did the team achieve this week

  • Network Resilience Persistence (#1101)[https://github.com/input-output-hk/hydra/pull/1101].
  • Upgrade brick on TUI (#1103)[https://github.com/input-output-hk/hydra/pull/1103].
  • Aiken commit validator translation (#1072)[https://github.com/input-output-hk/hydra/pull/1072].
  • Fixed some bugs in our TUI client.

What are the goals of next week

  • Prepare presentation and workshop for Cardano Summit.
  • Work on hydra-poll dApp for Cardano summit.
  • Start the work on packaging hydra-node and related services.
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-10-13-ledger + + 2023-10-13T00:00:00.000Z + + High level summary

The Ledger team has been shifting focus from implementing Conway related features to +testing. For this reason there is a very little amount features that are reported this +time aorund. Notable Conway related changes are a specialized ledger query for getting +Constitutional Committee state and prevention of submitting proposal procedures that have +no valid path to enactment.

Testing related work was mainly on a constraint base system as well as on roundtrip +serialization. As a result of this extra testing a bug in Conway Genesis serialization +was eliminated.

Low level summary

Conway era

Integration and releasing

Testing

  • pull-3769 - Add roundtrip testing by validating FlatTerm
  • pull-3783 - Update TranslationInstance.hs
  • pull-3775 - Refactor and improve constraint based STS tests
  • pull-3793 - Fix sums with negative RHS.
]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[SRE Team Update]]> + 2023-10-13-sre + + 2023-10-13T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Sanchonet environment was updated to 8.5.0-pre.
  • Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring

Lower level summary

Capkgs

  • Various improvements and fixes including:
    • Add GHA cron schedule
    • Add nix auto-gc to avoid running out of storage during large package set builds
    • Add new packages to capkgs
    • Reduce runner storage requirement leaving more room for builds
    • Restructure capkgs attribute names to avoid package name collisions
    • Return to non-musl builds for cardano packages to retain journald compatability
    • Update cache usage to from file level to folder level to reduce network and latency overhead
    • Commit diff: capkgs-compare

Cardano-parts

  • Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: cardano-parts-pull-16
  • Dbsync, smash, faucet and more: cardano-parts-pull-15
    • Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes
    • Adds nginx vhost metrics exporter profile
    • Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down
    • Adds bash *-ng autocompletion compatible wrappers
    • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
    • Adds downstream grafana cloud dashboard as templates
    • Adds downstream grafana cloud alerts as templates
    • Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish
    • Updates the basic profile with IOG cache and commonly used bins
    • Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
    • Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks
    • Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets
    • Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration
    • Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion
    • Updates the colmena template with dbsync, smash, faucet machines profiles and roles
    • Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns
    • Bumps capkgs node-ng to 8.5.0-pre

Cardano-playground

  • Dbsync, smash, faucet and more: cardano-playground-pull-3
    • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
    • Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts
    • Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change
    • Optimizes machine sizes
    • Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets
    • Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion
    • Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
    • Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration

Cardano-world

Sanchonet-demo

  • Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: sanchonet-demo-commit
]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-10-11-mithril + + 2023-10-11T00:00:00.000Z + + High level overview

This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on crates.io, the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures.

Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI.

Low level overview

  • Worked on the issue Make mithril-client crate a library #1141
  • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
  • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
  • Completed the issue Update Rust compiler in nix CI #1282
  • Worked on the issue Mithril networks infrastructure maintenance #1218
  • Worked on the issue Activate Cloudflare protection of infrastructure #1230
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-10-10-node-cli-api + + 2023-10-10T00:00:00.000Z + + 2023-09-27 - 2023-10-10

High level summary

CARDANO-NODE

CARDANO-CLI

  • Depracated governance query commands and moved all governance related queries to cardano-cli <era> query
  • Drep registration certificates now allow to include an anchor
  • Integrated Drep retirement ceriticates
  • clean up of Drep registration certificates.

CARDANO-API

  • Add support for committee hot key witnesses
  • Require conway onwards for voting
  • Conway drep registration: expose ledger anchor parameter
  • Add certs to txbody of Conway transactions

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-10-06-hydra + + 2023-10-06T00:00:00.000Z + + High-level summary

This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums.

The team also delivered the first version of the network resilience layer, significantly increasing head availability.

Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra.

Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra.

What did the team achieve this week

  • Release 0.13.0
  • Published vulnerability reports #1088
  • Merged network resilience work part I #1074
  • Planning for Cardano Summit participation
  • Discussions with funded Catalyst projects wanting to build on Hydra for support
  • Merged typos fix PR from @omahs #1095

What are the goals of next week

  • Complete Aiken commit validator script #1072
  • Complete Kupo integration #1078
  • Brick upgrade on TUI #1103
  • Clean backlog
  • Prepare and rehearse demo and talk for Cardano Summit
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-10-06-performance-and-tracing + + 2023-10-06T00:00:00.000Z + + High level summary
  • Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system.
  • Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7.
  • Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store.
  • Tracing: The machine-readable tracer configuration has been merged. Optimization of cardano-tracer started.
  • Nomad backend: Ongoing variance analysis and refined cluster topology.

Low level overview

Benchmarking

Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the +performance of the in-memory backing store and evaluate possible optimizations (or regressions) for it.

Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results +show all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the cardano-tracer service.

Consensus QTAs

The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The +feedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype.

Development

Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort.

PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time, +we'd like to validate the many improvements that have gone into the Plutus evaluator.

Tracing

The focus for further optimization of the new tracing system has shifted to cardano-tracer - the service +receiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in cardano-node is +more performance critical, the receiving service must still minimize its resource footprint. Moreover, it can +generate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations.

Nomad backend

Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated +the same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-10-04-consensus + + 2023-10-04T00:00:00.000Z + + High level summary

The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the in-memory backend.

On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain. +We also merged a fix for the Babbage to Conway transition, and released a new version of Consensus.

Genesis

  • We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (392).

Support

  • We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (366).
  • We enabled richer tracers in cardano-node that can be useful in future debugging (384).
  • Esgen continues with his release engineer activities, and created a new Consensus release.

Fostering collaboration

  • We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (369).
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-10-04-mithril + + 2023-10-04T00:00:00.000Z + + High level overview

This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion on implementing Mithril in a light wallet to receive feedback and contributions from the community.

They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks.

Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs.

Low level overview

  • Created the discussion Implement Mithril in a light wallet #1273
  • Completed the issue Run client in browser WASM PoC #1254
  • Completed the issue Benchmark aggregator performances #1220
  • Worked on the issue Add SPO tickers in explorer #1185
  • Completed the issue Add a non 404 status code on the aggregator endpoint #1103
  • Completed the issue Use source attribute in errors #1265
  • Completed the issue Create a SPO checklist for KES keys update #1267
  • Completed the issue Configure status page and alerting #1277
  • Completed the issue Upgrade dependencies #1274
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Network Team Update]]> + 2023-10-02-network + + 2023-10-02T00:00:00.000Z + + High-level overview of sprint 45

Bootstrap Peers

We started reviewing the bootstrap peers PR, ouroboros-network#4615.

Towards Typed Protocols 0.2.0.0

We discovered a performance regression when using typed-protocols-0.2.0.0, and we +started investigating where it comes from. Currently, we see that +typed-protocols-0.2.0.0 can outperform typed-protocols-0.1.0.0 when running +in isolation with a simple ping-pong protocol, so the regression might be in +the new block fetch implementation which comes with typed-protocols-0.2.0.0 +See typed-protocols#3.

Tech Debt

We merged two PRs written by Galois engineers:

  • a pull request which refactors the main entry function for P2P, see ouroboros-network#3834;
  • a pull request which reviews usage of unsafe function in the network code based.

Galois also made progress with the following two issues:

IO-Sim

IOSimPOR

We found and fixed a bug in IOSimPOR. We'd like to thank Prof. John Hughes +(Quviq AB) for helping us with debugging the issue.

We also provided a more uniform API for IOSimPOR, and added ways to make the +debugging similar problems in the future easier.

Technical Details on IOSim refactoring
We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future.

IOSim

To prepare for the next release, we consolidate packages taking advantage of +the public sublibraries supported now both by cabal and Hackage. This is +a work in progress, io-sim#114.

Cardano Newtork Service Assurance

Galois made the following progress:

  • A test run of spinning up a CNSA instance was done, as a result documentation +was updated.
  • Based on the IOG code review of the CNSA code, updates to the CNSA code were +made.
  • Galois has started the design for adding a CNSA analysis for "fetched bytes +over time while node is syncing".

P2P adoption

In the last two weeks, we've seen increase in P2P adoption. +P2P relays

The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays. +node versions

Open Source

We upstreamed our FFI bindings to Windows named pipes to Win32 package, the +PR was accepted and merged.

We also received an external contribution which enhanced our documentation, see +ouroboros-network#4676.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-09-29-goedel + + 2023-09-29T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and testing the +performance analysis tool

Details

  • drafting processs calculus semantics of mini protocol programs

  • testing the new performance modelling tool

  • further work on specification of mini protocols

  • extension of mini protocol framework to support communication of +programs with local environments via synchronous channels

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-09-29-hydra + + 2023-09-29T00:00:00.000Z + + High-level summary

This week, the Hydra team mainly focused on having a working new reliability +network layer; and specified its expected behavior in a new ADR.

They also revisited the security policy and vulnerability disclosure policy on +how to handle security vulnerability within Hydra, and in particular how to +handle so-called "Silent fixes".

What did the team achieve this week

  • Updated security policy and vulnerability disclosure policy #1088
  • Adr/network reliability #1082

What are the goals of next week

]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-09-29-ledger + + 2023-09-29T00:00:00.000Z + + High level summary

Few important Conway related features were completed in this two week period:

  • Constitutional Committee was the last missing Conway related entity that has now been +fully implemented.
  • Treasury withdrawals governance actions have been fixed and now behave as expected.
  • Current treasury amount supplied in the transaction is now enforced by the rules.
  • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no +proposals to vote on.
  • Semantics of how CostModels are updated with Protocol Parameters have been changed to +allow for individual Plutus language version updates, rather than requiring a complete +replacement of all CostModels

Besides the new features there were also important performance and testing improvements:

  • In particular stake distribution computation and native script handling received some +optimizations.
  • New testing DSL has been implemented that drastically simplifies writing unit tests for +ledger rules.
  • Integration tests and benchmarks are now possible for Conway era because of the overhaul +of functionality for initial funds and staking injection whenever node starts up in +Conway, while bypassing all previous eras.

Low level summary

Conway era

  • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
  • pull-3739 - Rename some PParams to be consistent with Agda specification
  • pull-3743 - Move DRepDistr from VState to ConwayGovState
  • pull-3746 - Implement tcTranslationContextL for Shelley
  • pull-3737 - Implement EraTransition
  • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
  • pull-3748 - Apply enacted treasury withdrawals
  • pull-3745 - Constitutional Committee Ratification
  • pull-3763 - Plutus interface improvements
  • pull-3771 - Changed how costmodel updates are applied
  • pull-3766 - Prevent updating protocol version with PParamUpdate

Performance

  • pull-3765 - Improve native script handling
  • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
  • pull-3758 - Cardano-Perf regression: UMap.size regression fix
  • pull-3754 - Use Alonzo-style TxOut encoder when possible

Releasing

  • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
  • pull-3744 - Changelog 8.4
  • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
  • pull-3753 - Minor cleanup and changelog entries
  • pull-3760 - Fixup issues for release
  • pull-3764 - Bump plutus deps to 1.13

Testing

  • pull-3734 - Removed Shaped instance for Rep
  • pull-3735 - Simplify the implementations of hasOrd and hasEq
  • pull-3728 - STS tests based on constraints
  • pull-3714 - Implement the remaining upgradable families
  • pull-3733 - Add some unit tests for Conway features
  • pull-3762 - Update CDDL for praos headers.
]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[SRE Team Update]]> + 2023-09-29-sre + + 2023-09-29T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node 8.4.0-pre.
  • The use of cardano-node docker hub will be deprecated in preference of GHCR

Lower level summary

Capkgs

  • Refactor parsing scripts, add github action automation, various bugfixes and cleanup: capkgs-compare

Cardano-parts

  • Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: cardano-parts-pull-8

Cardano-playground

  • Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: cardano-playground

Cardano-world

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-09-27-mithril + + 2023-09-27T00:00:00.000Z + + High level overview

The Mithril team has released a new distribution 2337.0, which includes the following enhancements: support for zstandard compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator.

They also completed the refactoring and standardization of the errors in the Mithril nodes and published an Architectural decision record on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure.

Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs.

Low level overview

  • Completed the issue Release new 2337 distribution #1219
  • Completed the issue Errors refactoring #798
  • Completed the issue Client traffic creates performance bottleneck in aggregator #1207
  • Completed the issue Record statistics about the downloaded snapshot in the aggregator #1127
  • Completed the issue Create a SPO checklist for KES keys update #1267
  • Worked on the issue Spike: Run client in browser WASM PoC #1254
  • Worked on the issue Benchmark aggregator performances #1220
  • Worked on the issue Activate Cloudflare protection of infrastructure #1230
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-09-26-node-cli-api + + 2023-09-26T00:00:00.000Z + + 2023-09-13 - 2023-09-26

High level summary

  • cardano-node 8.4.0-pre release suitable for SanchoNet.
  • CLI continues making progress integrating governance features. During this sprint we integrated the info and new-committee governance actions.
  • The team continued moving to the ERA top-level commands structure. Removed --conway-era flag from the legacy commands making conway era commands only accessible via cardano-cli conway.
  • stake-pool command is now under the ERA top level structure.
  • API continues integration with governance features, it is worth to higlight that now ProposeNewCommitee uses the right key type (cc-cold)

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-09-22-hydra + + 2023-09-22T00:00:00.000Z + + High-level summary

This week, the Hydra team conducted the monthly review meeting in +collaboration with Mithril, enhancing project coordination.

The team improved the gen-hydra-key node command for smoother usability +and identified concrete steps to enhance network resiliency in feature +items #188, +#1080, and +#1079. +Additionally, they contributed the aiken-mode editor integration to the +aiken-lang organization, updated dependencies to utilize cardano-api +8.20, and published the Hydra security advisory CVE-2023-42806 with a +workaround available for users.

These efforts demonstrate the team\'s commitment to project improvement, +security, and open-source community collaboration.

What did the team achieve this week

  • Conducted the monthly review meeting together with Mithril
  • Improved gen-hydra-key node command +#1077
  • Established a clear plan to improve resiliency of network and manifested +feature items #188, +#1080 and +#1079
  • Moved aiken-mode (created by SN) +to aiken-lang organization
  • Updated dependencies to using cardano-api 8.20 +#1075
  • Published security advisory +CVE-2023-42806 +(workaround available)

What are the goals of next week

  • Write-up the monthly report for September
  • Finish "network resilience to disconnects" +#188
  • Finish kupo integration with hydra +#1078
  • Discuss and decide on using aiken or not
  • Address the published security advisory +CVE-2023-42806 +(to not require workaround)
  • Ideally, release 0.13.0
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-09-22-performance-and-tracing + + 2023-09-22T00:00:00.000Z + + High level summary
  • Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters.
  • Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time.
  • Tracing: Work on machine-readable tracing of tracer configuration is ongoing.
  • Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster.
  • Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Blöndal!

Low level overview

Benchmarking

As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking +backend with means to measure and document network latency for each run. Furthermore we've implemented means to +capture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences +in the behaviour of the underlying networking stack at OS level.

Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided +to compare standard deviations instead to validate the measurements from nomad.

Infrastructure

Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline +have been merged to master. They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis.

Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for trace-dispatcher and tx-generator we were able to address those issues.

Tracing

After various steps in constructing a configuration upon node startup, it is vital to document +which runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML +trace message for that purpose.

This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node.

Nomad backend

As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it +produces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an +impact on our measurements, as we'd be basically using two different instruments to take them.

Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service +or the slightly different system architecture of the new cluster.

New team member

Baldur Blöndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team. +So I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on cardano-tracer, the component receiving, processing and making available node traces and metrics.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-09-20-consensus + + 2023-09-20T00:00:00.000Z + + High level summary

We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks. +We are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough. +On the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain. +We also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway.

UTxO-HD

  • We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (349). System level benchmark results are pending.
  • Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (344), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run.
  • We also brought the UTxO-HD branch up to date with node version 8.4.0.

Genesis

  • We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain. +We are now drafting the final self-contained argument. (4157)

Support

  • We debugged a bad parameter update on the Babbage to Conway transition in the SanchoNet testnet (339). +A superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (340, 354, and 355) +However we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ConsensusProtocol type class and the HardForkBlock combinator (345 and 346). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-09-20-mithril + + 2023-09-20T00:00:00.000Z + + High level overview

This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports.

Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution.

Low level overview

  • Completed the issue Add snapshot compression parameters in infrastructure deployments #1200
  • Completed the issue Add Cloudflare protection of infrastructure #986
  • Worked on the issue Record statistics about the downloaded snapshot in the aggregator #1127
  • Worked on the issue Error refactoring #798
  • Worked on the issue Activate Cloudflare protection of infrastructure #1230
  • Worked on the issue Release new 2337 distribution #1219
  • Completed the issue Upgrade dependencies #1238
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-09-15-goedel + + 2023-09-15T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

Details

  • working on collating and open sourcing performance analysis prototype

  • improvements to Ouroboros Praos specification in Isabelle

  • working on formalising chain sync mini-protocol

  • reviewing an alternatice semantics for DeltaQ

  • Seminar talk at U. Bergen on algebraic properties of timeliness

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-09-15-hydra + + 2023-09-15T00:00:00.000Z + + High-level summary

This week, most of the Hydra team was attending a cardano scaling workshop in +Nantes, France. They used this oportunity to meet fellow mithril team and spend +some time together to hack on some code and, as always, reflect on the past work +and find optimal path forward for both projects. They also fixed a bug that +caused hydra-node to crash when querying L1, worked on a new network resillience +proof-of-concept and accepted a new ADR related to stateless transaction +observation.

What did the team achieve this week

  • Cardano scaling workshop with members of hydra and mithril teams
  • Accepted user contribution for possible new use-case #1048
  • Fix for the hydra-node crash related to internal wallet query #1053
  • Collected experimental CI findings #1070
  • Propose first POC for the network resilience #1074

What are the goals of next week

  • Monthly review meeting & report including updates from Mithril
  • Review POC and discuss our options for the network resilience
  • Update cardano-api to version 8.20
  • Address TODOs on aiken commit validator #1072
  • Complete hydra-support in kupo kupo#117
]]>
+ + Sasha Bogicevic + https://github.com/v0d1ch + + + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-09-15-ledger + + 2023-09-15T00:00:00.000Z + + High level summary

The Ledger team's focus is still mainly on the Conway era implementation.

We were able to add ability to specify initial Constitutional Comittee and the initial +version of Constitution. Priority in which Governance Action are now enacted matches the +specification. DRep's deposits are now properly accounted for. Governance actions that are +not allowed to be voted on by Stake Pool operators and Constitutional Committee members +are prevented by transaction submission failure, rather than simply being ignored. There +was a few important CDDL fixes as well as a lot of new round trip serialization +tests. Constraint based testing framework has also received a lot of improvements.

Low level summary

Conway era

  • pull-3681 - Conway Genesis additions
  • pull-3690 - Preserve the order of ProposalProcedures
  • pull-3705 - Removed ProtVer from EnactState
  • pull-3700 - Add conway-specific certs to deposit/refunds
  • pull-3704 - Add comments on deprecating certs to Conway CDDL
  • pull-3698 - Reordering of governance actions
  • pull-3712 - Disallow empty fields in ConwayTxBodyRaw
  • pull-3716 - Abstract threshold calculation
  • pull-3725 - Fix mistaken use of dollar sign in cddl files
  • pull-3718 - Predicate failure for mismatched Voter GovAction
  • pull-3721 - Committee expiration, validation and modification

Improvements and releasing

Testing

  • pull-3730 - Implement Show instance for Rep using IsTypeable
  • pull-3697 - Rewrite testEql using Typeable to make it impossible to forget cases
  • pull-3709 - Add many new features to the Constrained modues in cardano-ledger-test
  • pull-3726 - Conway and other eras serialization roundtrip tests
  • pull-3713 - Improve CI resiliency against GitHub issues
]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[Network Team Update]]> + 2023-09-15-network + + 2023-09-15T00:00:00.000Z + + High-level overview of sprint 44

Bootstrap Peers

In this sprint, we focused on developing bootstrap peers.

Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we +identified a possible improvement to bootstrap peers. A more detailed +description is available here.

Cardano-Node-8.4.0 Release

We also were responsible for the cardano-node-8.4.0-pre release. A final +integration PR is currently being merged. We published +new versions of ouroboros-consensus, cardano-api and cardano-cli.

Towards Typed Protocols 0.2.0.0

We also updated the future typed-protocols-0.2.0.0 and its integration with +cardano-node. This is towards our goal which we planned for the next +quarter. The identified tasks are to fix breaking tests, and then measure and +address possible performance regressions.

Tech Debt

Mark Tullsen (Galois) submitted two more PRs: ouroboros-network-#4663, +ouroboros-network-#4664. We provided feedback on their other pull requests: ouroboros-network-#4661 and +ouroboros-network-#4660.

P2P adoption

In the last two weeks, there was a regression in P2P adoption concerning +the number of SPOs or stakes, although the number of overall P2P relays has +increased. Karl Knutsson (Cardano Foundation) is investigating +this issue. +P2P relays

The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

Data has been kindly provided by Cardano Foundation and their mainnet +monitoring infrastructure.

Open Source

We are in the process of upstreaming our ffi to Windows Named Pipes API to the Win32 package, see [win32-220].

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[SRE Team Update]]> + 2023-09-15-sre + + 2023-09-15T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Sanchonet environment was updated to 8.3.0-pre.
  • Cardano-parts now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is here.

Lower level summary

Capkgs

  • Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: capkgs-compare

Cardano-ops

Cardano-parts

  • Utilize content addressed binaries to significantly improve eval, build and devShell performance: cardano-parts-pull-8
  • Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: cardano-parts-pull-10
  • Fix warns thrown during some builds and devShell usage: cardano-parts-pull-11
  • Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: cardano-parts-pull-12
  • Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: cardano-parts-pull-13

Cardano-perf

  • Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: cardano-perf-compare

Cardano-playground

Cardano-world

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[DB-sync Team Update]]> + 2023-09-14-db-sync + + 2023-09-14T00:00:00.000Z + + High level summary

We have created a DBSync tag sancho-1-1-0 which can follow sanchonet. Also +the team has ran a number of benchmarks and tests for the new options/flavours of DBSync +and prepared a blogpost which summorises them, for downstream components.

Lower level summary

  • Integration of node-8.3.x and support for Sanchonet on Conway +#1498
  • Simplifications of new feautures +#1496
  • Makes it impossible to restart DBSync with different schema options and adds +tests for them +#1466
  • CI fixes +#1494#1491
  • Prepared a blogpost about different DBSync options +blog
]]>
+ + Kostas Dermentzis + https://github.com/kderme + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-09-12-node-cli-api + + 2023-09-12T00:00:00.000Z + + 2023-08-30 - 2023-09-12

High level summary

Release of Cardano-node 8.3.0-pre for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs. +This release completes phase 2 of SanchoNet feature roll out plan

CLI continues on its migration to a era-based top-level commands. This sprint we moved text-view, key, query, genesis, node, stake-address, transaction and address into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints.

We are moving the drep delegation-certificate to the stake-address command so delegating to a drep is done via stake-addres vote-delegation-certificate. Along the same lines, we are renaming +stake-address delegation-certificate (delagating to a stake pool) to stake-address stake-delegation-certificate to distinguish between stake delegation to a pool and votes delegation to a drep. On top +of that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly stake-address stake-and-vote-delegation-certificate. Note that change is not included on 8.3 but will come on 8.4. +Removing --conway-era flag from all the transaction sub-commands.

Update description fields in delegation certificates from Stake Address Delegation Certificate to respectively (Conway onwards):

  • Stake Delegation Certificate
  • Vote Delegation Certificate
  • Stake and Vote Delegation Certificate

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-09-08-hydra + + 2023-09-08T00:00:00.000Z + + High-level summary

This week, the Hydra team improved the commit process with support for inline +datums. They simplified the chain layer by refactoring how the chain state is +persisted. Updates to the Hydra tutorial were completed, including CI workflows +to keep it up-to-date. The team engaged in discussions with researchers about +incremental commits & decommits, and drafted an architectural decision record +for a resource-based API. They also explored simpler solutions for the upcoming +network resilience feature.

What did the team achieve this week

  • Support InlineScriptDatum in commit +#1043
  • Refactored chain state persistency +#1049
  • Completed tutorial updates (by adding CI and some cleanup) +#997
  • Intersect Open Source committee meeting
  • Experimented with various models to better express the \"Network +resilience problem\" to find a KISS solution for +#188
  • Drafted and discussed incremental de-/commit features within team +and with researchers +#199 and +#1057
  • Created ADR for a resource based overhaul of the API +#1028

What are the goals of next week

  • Meetup of Hydra & Mithril contributors in Nantes, France
  • Integrated cardano-api 8.15 to have GHC 9.6 support
  • A clear design for incremental commits (decommits are already +understood)
  • An ADR for improving tx construction & observation to not need chain +state
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-09-07-mithril + + 2023-09-07T00:00:00.000Z + + High level overview

The Mithril team has released a new distribution 2335.0 which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information.

They have also worked on snapshots enhancements: implementation of the zstandard compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes.

Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client.

Low level overview

  • Completed the issue Use 'zstandard' compression for snapshot archives #876
  • Completed the issue Design & implement stress test tool for aggregator - phase 2 #1155
  • Completed the issue Provide progress information with '--json' option in Client #1095
  • Completed the issue Make client download and extract the archive simultaneously #1115
  • Completed the issue Add aggregator Cardano node version in snapshot artifact #948
  • Completed the issue Make Cardano node version part of the Mithril network configuration #947
  • Completed the issue Post deployment 'mainnet' infrastructure #1091
  • Worked on the issue Errors refactoring #798
  • Worked on the issue Add Cloudflare protection of infrastructure #986
  • Completed the issue Failed to restore recent snapshot with strange error #1160
  • Completed the issue Update 'ed25519-dalek' to '2.0.0' #1188
  • Completed the issue Add target networks blocks in release notes #1151
  • Completed the issue Fix end to end 'wait_for_the_expected_time' test #1191
  • Completed the issue Fix docs 'git checkout' command #1174
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-09-07-performance-and-tracing + + 2023-09-07T00:00:00.000Z + + High level summary
  • Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack.
  • Infrastructure: Various improvements of our analysis pipeline have been merged to master, supporting safe log truncation.
  • Tracing: Namespace consistency checks have been merged to master along with a curated configuration for benchmarking.
  • Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.

Low level overview

Benchmarking

We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer.

With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance.

The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack.

Infrastructure

As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation +operation that keeps the interdependencies of block events intact.

Truncation might happen at a slightly different point +in time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time.

Tracing

Consistency checking of namespace implementation and configuration when using the new system has been completed. +This feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a cardano-node shows inconsistencies with the namespaces the system provides - and hence needs attention.

Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many +detailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable.

Nomad backend

The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the +first real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-09-06-consensus + + 2023-09-06T00:00:00.000Z + + High level summary

We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation. +On the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers. +The Consensus release engineer finished his rotation: version 8.3.0-pre of cardano-node is releasing 2023 September 5.

UTxO-HD

  • We ran the first successful system-level benchmarks for UTxO-HD (see #203) using the in-memory backend.
    • We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot.
    • After the mempool regression is fixed the benchmarks need to be ran again.
    • System-level UTxO-HD benchmarks with the LMDB are still pending.
  • UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see #344).
  • We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in GetUTxOByAddress (see this comment). Preliminary results are promising.
  • Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (#344), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.

Tech debt

  • We added tests that Consensus emits valid CBOR (#3099). This helped us detect a couple of serialization bugs. The tests still need to be merged into the main branch (#323).

Support

  • Nick Frisby finished his release engineer rotation; cardano-node 8.3.0-pre is releasing 2023 September 5.
  • We helped to investigate a protocol version bug in Sanchonet (see #3491).
  • We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see #91.
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-09-01-goedel + + 2023-09-01T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

Details

  • finalising a presenting performance analysis internship work to the +formal methods team

  • developed a new Isabelle mini-protocol framework and examples

  • planning an extended version of the ICE DeltaQ paper

  • working on algebraic rules for properisation of any-to-finish

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-09-01-hydra + + 2023-09-01T00:00:00.000Z + + High-level summary

This week, the Hydra team focused primarily on changes needed in the network +layer and have the first draft document related to needed design. They also +improved the user experience by allowing a commit using inline datums. +Discussed the off-chain governance with researchers and improved internal model +tests.

What did the team achieve this week

  • Monthly report published
  • Small changes to hydraw and tutorial in light of the Masterclass
  • Investigated a bug and saw it was solved by recent developments
  • Improved the model tests by fully validating L1 transactions
  • Enhanced the /commit API to also allow commit from scripts with inline datums (user request)
  • Discussed off-chain governance with IOG and CF researchers
  • Drafted a first network specification document in the context of Network resilience

What are the goals of next week

  • Have a clear understanding of the changes we need for the "Improve network resiliency" feature
  • Groomed and agreed plan on incremental commits/decommits
  • Updated tutorials including CI workflows to check consistency
  • Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)
]]>
+ + Sasha Bogicevic + https://github.com/v0d1ch + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-09-01-ledger + + 2023-09-01T00:00:00.000Z + + High level summary

Broadly speaking the Ledger team focused on a few main areas of Conway era:

  • Creation of voting state snapshots in order to correctly delay ratification for one epoch
  • Validation of the Governance Actions sequencing and ordering
  • Proper expiry of DReps and Proposal Procedures
  • Expanding Conway Genesis functionality
  • Utilization of some of the new Protocol Parameters in ledger validation rules

Low level summary

Conway era

  • pull-3659 - Validate Network for ProposalProcedure and TreasuryWithdrawal
  • pull-3637 - Avoid using sequence of tuples, by adding GovActionId to GovActionState
  • pull-3651 - Inactive DReps
  • pull-3664 - Track proposal expiry
  • pull-3668 - Add min committee size predicate to NewCommittee
  • pull-3669 - Add Proposal deposit check against PParam
  • pull-3676 - Fix inactive PoolStake not counting as Drep Stake
  • pull-3635 - Make snapshots of GovActionsState
  • pull-3670 - Validate previously enacted govAction
  • pull-3694 - Improve error reporting on the positive coin decoder
  • pull-3674 - Added RATIFY thresholds
  • pull-3684 - Add proposal delaying, remove predicate failure from ENACT
  • pull-3688 - DRep Refunds and update evalTransactionBalance

Improvements and releasing

  • pull-3677 - Minor patch that fixes the DRep distribution computation
  • pull-3686 - Post patch release fixup
  • pull-3695 - Changelog for cardano-node-8.3 release
  • pull-3683 - Add two new bench mark programs

Testing

]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[Network Team Update]]> + 2023-09-01-network + + 2023-09-01T00:00:00.000Z + + High-level overview of sprint 43

In this sprint, we received contributions from CF & Galois. Karl Knutsson +(CF) has addressed various issues regarding peer churning in P2P, timeouts +and our WireShark dissector. While the Galois developers focused on +addressing issues from their review last year. See below for more details.

We continued working on bootstrap peers ouroboros-network-#4661.

We refactored our test suites: they are split into io-tests which require to +be run natively on all platforms (these tests mostly contain tests that +require IO system calls) and sim-tests which are platform independent. We +run io-tests on all supported platforms (e.g. x86_64-linux, +x86-64-darwin, aarch64-darwin and x86_64-w64-mingw32 (Windows)) natively. +The sim-tests are not executed on Windows due to memory limitations on +GitHub Actions runners. ouroboros-network-#4653

We also started rebasing typed-protocols refactoring branches.

Marcin was appointed as the cardano-node release engineer for the 8.4.0-pre +version. So far he integrated cardano-ledger-conway-1.8 and +ouroboros-network-0.9.1.0 to ouroboros-consensus, cardano-cli and +cardano-api. Once we will have an integration branch for cardano-node, +cardano-ledger-conway-1.8 and ouroboros-consensus packages can be released +to CHaP and PRs can be merged once they go through review & CI.

We also fixed some smaller issues regarding peer sharing (both were discovered +by Karl from CF). More details are included below.

Progress on P2P addoption

SPO relays

There are currently ~2000 relays running P2P +enabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On +16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil +Ada.

P2P relays

The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

Data has been kindly provided by CF and their mainnet monitoring +infrastructure.

IOG relays

As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all +IOG relays will be running P2P.

Detailed description

In this sprint, we got a few contributions from CF:

  • Karl made peer churning mechanism less aggressive ouroboros-network-#4656; and
  • he added timeouts for idle states in ChainSync & KeepAlive +miniprotocols. These timeouts help a node remove idle connections from the +responder (server) side ouroboros-network-#4648.
  • he improved the WireShark dissector by adding support for the peer-sharing mini-protocol ouroboros-network-#4656.

Galois has been making progress in addressing some of the issues they raised in their review (last year):

Peer Sharing

  • Light peer sharing is only enabled when peer sharing is turned on ouroboros-network-#4652;
  • Handshake incorrectly reports peer sharing value. It's supposed to relay the +remote value, but instead, it returns the local value. ouroboros-network-#4642 (in review).

Async Demotion Test Fix

  • We fixed an async demotion test failure which turned out to be a weakness of +the test itself rather than a bug in the connection manager. ouroboros-network-#4655
]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[SRE Team Update]]> + 2023-09-01-sre + + 2023-09-01T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes
  • Work on a new capkgs repository started -- "Content Addressed Packages"
    • This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output
    • These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do
    • Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers

Lower level summary

Capkgs

  • Content addressed packages -- new repo: capkgs

Cardano-ops

  • Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: cardano-ops-compare

Cardano-parts

Cardano-perf

Cardano-world

Sanchonet-demo

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-08-29-node-cli-api + + 2023-08-29T00:00:00.000Z + + 2023-08-16 - 2023-08-29

High level summary

CLI is making progress towards phases 3 and 4 of SanchoNet.

  • Ability to create info, no-confidence and new committee governance actions.

  • Voting as DREP is possible now on the CLI

  • API is now using Ledger's PParams and VotingProcedures

  • Expose following queries from consensus:

    - GetGovState
    - GetDRepState
    - GetDRepStakeDistr
    - GetCommitteeState
    - GetConstitution

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-08-28-mithril + + 2023-08-28T00:00:00.000Z + + High level overview

The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of zstandard compression of the snapshot archive, and streaming its download and decompression in the client.

Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer.

Low level overview

  • Completed the issue Create explorer page with registered signers #1097
  • Completed the issue Simplify logs on the Signer/Aggregator #1106
  • Completed the issue Refactor (de)serialization of crypto entities #668
  • Completed the issue Mithril client last snapshot download #1078
  • Completed the issue Use the '/signers/registered' route to verify if a signer is registered #1152
  • Worked on the issue Provide progress information with '--json' option in Client #1095
  • Worked on the issue Use 'zstandard' compression for snapshot archives #876
  • Worked on the issue Make client download and extract the archive simultaneously #1115
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-08-25-hydra + + 2023-08-25T00:00:00.000Z + + High-level summary

This week, the Hydra team conducted the monthly review meeting for Agust,which +continously ensures transparent communication and project evaluation.

In terms of community engagement, the Hydra team gave a Hydra master-class at +RareEvo workshop as an educational initiative for the community. +Additionally, the team updated the Hydra demo and tutorial to include Mithril +and latest release changes.

They also focused on exploring the Hydra network resiliance in order to improve +hydra-node availability, as it becomes stuck very easily and that leads to a +bad user experience.

What did the team achieve this week

  • Hydra master-class at RareEvo workshop!
  • Monthly report & review meeting
  • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
  • Groomed network resilience and explorer features #188
  • New ADR for “Resourced based API” #1028

What are the goals of next week

  • Have a poc on network resilience working #188
  • Fix issue #931: “Chain state in head state not updated on replayed observation”
  • Fix issue #1039: "Close transaction dropped from cardano-node"
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-08-24-performance-and-tracing + + 2023-08-24T00:00:00.000Z + + High level summary
  • Benchmarking: Benchmarking node version 8.2.1 has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD.
  • Infrastructure: Our analysis pipeline has received improvements reducing memory footprint.
  • Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing.
  • Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.

Low level overview

Benchmarking

We've performed and analysed the benchmarks for the 8.2.1 version of cardano-node as part of our release benchmarking cycle.

Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths.

Infrastructure

As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held +in memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline.

Tracing

The next portion of optimizations has been completed and merged to master, getting rid of Haskell's native String representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by cardano-node.

The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup.

Nomad backend

The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster +and porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-08-23-consensus + + 2023-08-23T00:00:00.000Z + + High level summary

On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests. +On the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base.

UTxO-HD

  • We addressed the issues that came from the benchmarking and testing phase (see #314).
    • We fixed the operational-certificate update exception (#305).

Tech debt

  • We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see this branch).
  • We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see this branch).
  • We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see #275).
  • We decreased the flakiness for our test suite (#284).
  • We incorporated and merged the pull-request on query versioning (#273).
  • We started working on new performance-based regression tests for mempool operations.

Support

  • Nick Frisby continues with his engineer responsibilities. Notably getting the Consensus release out for node pre-release 8.3. Nick also began integrating it into downstream branches (cardano{-api,-cli,-node}). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-08-18-goedel + + 2023-08-18T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

Details

  • Development of an automated prover for showing conformance of +programs to state machines (as part of the mini-protocol framework)

  • Completion of the documentation of the (current state of the) +mini-protocol framework

  • Discussion about two DeltaQ lectures with two practical sessions as part +of 4th year masters course on distributed systemsby colleagues at UC +Louvain in the Autumn

  • Discussion about four DeltaQ lectures by colleagues at U. Bergen as part +of a 5th year Masters course in the Autumn

  • Adapted original DeltaQ implementation to the new typeclasses and +wrote property tests for its algebraic laws

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-08-18-hydra + + 2023-08-18T00:00:00.000Z + + High-level summary

This week, the Hydra team released version 0.12.0, a significant update that +brings support for cardano-node 8.1.2, along with performance enhancements and +various API improvements. Additionally, the team successfully onboarded a new +contributor who is now actively participating in operating a Hydra Head. They +took part in a meeting of the Intersect open source committee and prepared the +Hydra master-class for RareEvo, an educational initiative for the community.

If you happen to be at RareEvo, register for the Hydra master-class using this +form. +We hope to make it possible to follow along on-line as well and will announce +details on the Hydra announcements channel on the IOG discord +server.

What did the team achieve this week

  • Released version 0.12.0 which adds support for cardano-node 8.1.2, performance +and several API improvements. Release notes
  • Replaced commit via websocket with external draft + submit. #954
  • Onboarded new contributor to the point where he actively participates in operating a Head now.
  • Joined a first meeting of the Intersect open source committee
  • Prepared the Hydra master-class for RareEvo.

What are the goals of next week

  • Monthly review meeting
  • Run the Hydra master-class at RareEvo!
  • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
  • Clear out red bin items (technical debt)
  • Groom network resilience and explorer features
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-08-18-ledger + + 2023-08-18T00:00:00.000Z + + High level summary

The ledger team made great progress in advancing Conway era forward. In particular, voting +for DRep and Stake Pool Operators is now at the state that can be used by downstream +components. Addition of new ledger state queries makes it possible to verify changes to +the governance state, such as placement of votes, submission of governance proposals, +inspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the +ability to enact all of the governance actions, except for the hard fork initiation.

Low level summary

Conway progress

  • pull-3577 - Move PParams to GovState
  • pull-3609 - Adjust thresholds for sanchonet
  • pull-3604 - README: update CIP-1694 link
  • pull-3616 - Switch TreasuryWithdrawals to use RewardAcnt
  • pull-3599 - Add governance action well-formedness check
  • pull-3607 - Rename governance to gov
  • pull-3601 - Added DRep anchors
  • pull-3615 - Add optional previous GovActionId in some ProposalProcedures
  • pull-3596 - Upgradeable families
  • pull-3625 - Change constitution to use Anchor
  • pull-3592 - Added pulsing incremental computation of the DRep distribution
  • pull-3523 - Treasury donations
  • pull-3633 - Prevent state changes on phase2 failure
  • pull-3634 - Disable serialization of protocolVersion param update
  • pull-3630 - Implemented DRep refreshing
  • pull-3640 - Remove crypto parameterization from AnchorData
  • pull-3636 - Implement DRep ratification with an "always passing"; threshold
  • pull-3648 - Governance queries
  • pull-3650 - Change environment for ShelleyPOOLREAP rule
  • pull-3658 - Set DRep ratify threshold to 51%
  • pull-3628 - DELEG, POOL, GOVCERT conformance with Spec v0.8

Testing

Improvements and releasing

  • pull-3660 - Fix bounds and versions
  • pull-3661 - Adjust versions, bounds and CHANGELOGs to account for the latest release
]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[Network Team Update]]> + 2023-08-18-network + + 2023-08-18T00:00:00.000Z + + High-level overview of sprint 42

Eclipse Evasion

We merged and released a new version of the ouroboros-network package (version +0.9.0.0) which includes big ledger peers feature. +This is the primary peer selection mechanism to defend against eclipses. We +also prepared a PR to updated ouroboros-cosnensus +and ekg-forward packages.

CDDL specs for protocol codecs

We made the cddl spec for network codec more inline with the implementation +which is highly polymorphic. cddl doesn't have the notion of polymorphism, +but has any which can generate any valid cbor term. We matched it with an +Any type on the Haskell side and made all remaining tests & specs use it. +This simplified the specifications and made it easier to understand which parts +are defined in the spec, and which parts are left unspecified. See +ouroboros-network#4595.

Ouroboros-Network-Framework API changes

We also released ouroboros-network-framework and other network components. +The ouroboros-network-framework package contains a redesign of API exposed to +ouroboros-consensus. We consolidated, cleaned it and made it easier to +extend in the future if there will be new arguments that need to be passed to +mini-protocol initiator and responders which comes from the low-level network +layer.

Nix setup (CI)

We also made a major review of our nix setup. With help from our DevX team +we ended up with a clean flake.nix file which can:

  • compile & test the code on x86_64-linux, x86_64-darwin and aarch64-darwin
  • cross-compile to Windows on x86_64-linux

And provides a shell which contains all the build tools, including ghc-9.6, +hls, cddl, and more. See ouroboros-network#4640, +ouroboros-network#4643.

Other contributions

Cardano Network Service Assurance

  • The work and writeup in finishing up the CNSA, first stage (first +contract).
  • Getting Sam Cowger (Galois Inc) up to speed.
  • The IOG Networking team carried a reivew of CNSA project progress: a limitted +code & design review.

Galois Review

Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues

scoping, requirements, and getting started.

CI

We added a nightly run for GitHub actions and made the GitHub actions test be +executed with extra concurrency ouroboros-network#4637, ouroboros-network#4649.

We also added GitHub's dependabot ouroboros-network#4650.

Bootstrap Peers

We settled on implementation design of bootstrap peers which is being +implemented, ouroboros-network#4615.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[SRE Team Update]]> + 2023-08-18-sre + + 2023-08-18T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Sanchonet and shelley-qa environments were updated to 8.2.1-pre.
  • Work on two new repos utilizing flake parts for cardano cluster generation, automation and operation.

Lower level summary

Cardano-ops

Cardano-parts

Cardano-perf

Cardano-playground

Cardano-world

Inputs-check

  • A flake parts module to check input closure sizes recursively for optimization considerations: inputs-check
]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Crypto Team Update]]> + 2023-08-17-crypto + + 2023-08-17T00:00:00.000Z + + High level summary

The open fronts that the crypto team is working on are:

  • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
  • mithril: Full node verifier
  • musig2: Include MuSig2 description in cryptography handbook
  • kes_agent: Finilising test and CI. Working on KES binary

Low level summary

Mithril

  • Full Node Verifier merged #939.

MuSig2

  • Started describing MuSig2 to include it as part of the cryptography handbook

Sidechains

  • Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in this fork.

KES agent

  • KES agent is ready:
    • CI ready #19
    • Receipt confirmation message #20
    • KES agent binary ready #21
    • Control client implemented #11
]]>
+ + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
+ + <![CDATA[DB-sync Team Update]]> + 2023-08-17-db-sync + + 2023-08-17T00:00:00.000Z + + High level summary

We have integrated many new Conway feutures and allow db-sync to sync sanchonet. +We also continued testing and improving the new db-sync options.

Lower level summary

  • Conway integration +#1484
  • Support for Sanchonet +#1476
  • Stake distribution is computed earlier +#1484
  • Deposit ledger events are now used. This reduces the db queries and makes syncing faster +#1484
  • Testing new db-sync options +#1466
  • Added support for ghc-9.6 +#1479
  • Tech debt: improve exceptions +#1471
]]>
+ + Kostas Dermentzis + https://github.com/kderme + + +
+ + <![CDATA[SECP bindings Security Issue Report]]> + 2023-08-17-secp-issue + + 2023-08-17T00:00:00.000Z + + Security Issue Report: SECP256k1 bug

Date Occurred: July 15, 2022 +Severity: Potentially Very High if exploited on Mainnet +Authors: Iñigo Querejeta Azurmendi

Date of Report: August 17, 2023

Summary of Issue

Criticality Level

Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet +Context

New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains. +How was the Issue Detected

The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there.

What Action was Taken

The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod). +Fixes were applied to prevent the use of the primitives. +A full security audit was carried out on the bindings. +The rollout of the primitives was postponed to a new hard fork (Valentine)

Potential Effect

The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction.

Actual Effect

  • Delay to the Vasil hard-fork
  • Temporary removal of SECP256k1 primitives
  • Additional hard-fork to introduce SECP256k1 primitives

Ongoing Mitigations Needed, if any

None

Responsibility for Mitigations

Core team

Detailed description of Incident

New Plutus secp256k1 cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet.

The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing.

  • This is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an expected structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely.
  • The same happened with the Schnorr verification function. It takes as input a SECP256k1_xonly_pubkey, which is again an opaque structure that holds a parsed and valid public key.

The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated.

The fix was addressed in this PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts.

Recommendations

  • Check all new Plutus bindings for correct use.
  • Audit all new Plutus built-in bindings.
  • Continue to develop specific End-to-End tests for all new Plutus features.
  • Do not assume that any existing library functions are "safe". Treat all external calls circumspectly.
]]>
+ + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-08-15-node-cli-api + + 2023-08-15T00:00:00.000Z + + 2023-08-02 - 2023-08-15

High level summary

  • cardano-node 8.2.1 (pre-release) to SanchoNet
  • Continue moving CLI into era-based top level command structure
  • Wire-up DREP key generation,
  • Fix DREP deregistration certificates
  • Implement Constitutional Committee Key generation on the CLI
  • Introducing era-based protocol parameters on the API
  • Removing depracated functions and types on the API

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

Fix broken links in docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-08-11-hydra + + 2023-08-11T00:00:00.000Z + + High-level summary

This week, the Hydra team updated hydra-node to support cardano-node version +8.1.2, ensuring compatibility with the latest mainnet release. The team also +participated in discussions about a "cardanonical" JSON schema and added it as a +submodule to the project, contributing to improved data modeling and +interoperability.

In terms of community engagement, the team successfully onboarded a new +contributor, also participated in a RareEvo Twitter space, and continued +preparations for the Hydra master-class.

What did the team achieve this week

  • Updated dependencies to support cardano-node 8.1.2 #1007
  • Engaged in discussions about a cardanonical json schema and +add it as submodule to the project +#1013
  • Onboarded a new contributor to the hydra project (@locallycompact)
  • Joined RareEvo twitter space and continued preparation of hydra master-class

What are the goals of next week

  • Update & streamline tutorial to work with latest version of hydra-node
  • Remove the internal commit functionality #954
  • Release 0.12.0
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-08-11-performance-and-tracing + + 2023-08-11T00:00:00.000Z + + High level summary
  • Benchmarking: We've concluded benchmarking node version 8.2.0.
  • Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration.
  • Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.

Low level overview

Benchmarking

As part of our release benchmarking cycle, we've completed and analysed the runs for the 8.2.0 version of cardano-node. In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version.

Tracing

A significant amount of optimizations for the new tracing system has finally been merged to master. At the moment, +we're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding +insight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward.

Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing.

Nomad backend

The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent +and reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were +able to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks.

A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to master.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-08-10-mithril + + 2023-08-10T00:00:00.000Z + + High level overview

The Mithril team completed the Mithril protocol’s mainnet beta launch: the release-mainnet network is now consistently producing new certificates and snapshots! The team has released a new distribution 2331.1 which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the mainnet infrastructure.

Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network.

Low level overview

  • Released the new distribution 2331.1
  • Completed the epic Release 'mainnet' Mithril network #918
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Completed the issue Design & implement basic stress test tool for aggregator - phase 1 #991
  • Worked on the epic Post deployment 'mainnet' infrastructure #1091:
    • Completed the issue Create Production Infrastructure Runbook #1085
    • Completed the issue Ingest 'mainnet' metrics/logs in Grafana #1122
  • Worked on optimizations:
    • Completed the issue Add a 'clean' file to extracted database in client #1131
    • Worked on the issue Create explorer page with registered signers #1097
  • Worked on refactoring:
    • Worked on the issue Refactor (de)serialization of crypto entities #668
  • Worked on bugs:
    • Completed the issue Client fails to unpack some snapshot archive #1137
    • Completed the issue The 'release-preprod' network stopped producing certificates #1114
    • Completed the issue The 'release-mainnet' network does not show up in the explorer #1111
  • Worked on dependencies:
    • Completed the issue Upgrade Cardano node to '8.1.2' #1090
  • Worked on troubleshooting:
    • Completed the issue Signer can't sign with 'Invalid signature for party' error #1125
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-08-09-consensus + + 2023-08-09T00:00:00.000Z + + High level summary

This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of fs-sim and fs-api, and released strict-checked-vars.

UTxO-HD

  • Rebased UTxO-HD on top of node 8.2 (issue)
  • Address new Maybe translations for UTxOs in Conway 1.6. (PR).
  • Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory.
  • Fixed an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully.
  • Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running QueryUTxOByAddress (PR).
  • Measured the speed of QueryUTxOByAddress under different queryBatchSize values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution.
  • Refactored and implemented ledgertable-related classes for the general HardforkBlock.

Genesis

  • Frisby and Esgen continue to engage with the Researchers on grinding against the Genesis design.

Fostering collaboration

  • Drafted a document explaining versioning of local state queries #273.

Support

  • Frisby is the release engineer this cycle.
  • Successfully created work-in-progress ouroboros-consensus and cardano-api commits that integrate the 2023 Aug 7 tip of cardano-ledger. This will require a release of ouroboros-consensus, which hasn't happened yet.
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Crypto Team Update]]> + 2023-08-04-crypto + + 2023-08-04T00:00:00.000Z + + High level summary

The open fronts that the crypto team is working on are:

  • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
  • mithril: Full node verifier
  • musig2: Finalised the missing fuzz tests
  • kes_agent: engineer on PTO. Work halted

Low level summary

Mithril

  • Work on a mithril flaky test #1105
  • Keep working on Full Node Verifier #939. +Should be merged in the coming week.

MuSig2

  • Finalised the fuzz tests #43

Sidechains

  • Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.
]]>
+ + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-08-04-goedel + + 2023-08-04T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is formalising mini protocols and also further developing the +performance modelling prototype.

Details

  • Developing new framework for specification and verification of +mini-protocols which is closer to the Haskell implementation.

  • Developed a new internal representation for the DeltaQ algebra that +allows for more modularity in backend implementations

  • Discussions regarding the Cardano networking specification

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-08-04-hydra + + 2023-08-04T00:00:00.000Z + + High-level summary

This week, the Hydra team achieved notable progress in various aspects of the +project. The team updated the use case section for auctions on the /unstable +branch of the website, improving the understanding of Hydras applicability.

From the development side, the team successfully completed event-sourced +persistence, a key enhancement in the projects architecture which improves +off-chain transaction processing performance. They also added a +submit-transaction endpoint to the API.

In addition to project-related progress, the team actively engaged in community +reviews for several catalyst proposals related to Hydra and Mithril, +contributing to the wider Cardano ecosystem.

Finally, the full report for the month of July was also published here.

What did the team achieve this week

  • Published the monthly report for July
  • Updated the use case section for auctions (published on /unstable branch)
  • Completed event sourced persistence #913
  • Added a submit-transaction endpoint to the API #966
  • Community reviews for several catalyst proposals related to Hydra and Mithril
  • Created a network testing tool (hydra-net) #1006

What are the goals of next week

  • Update hydra-node to work with cardano-node version 8.x
  • Remove the internal commit functionality
  • Release version 0.12.0
  • Update & streamline tutorial to work with latest version of hydra-node
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-08-04-ledger + + 2023-08-04T00:00:00.000Z + + High level summary

The ledger team was working almost exclusively on the Conway era implementation. In +particular, the main focus was directed towards solidifying transaction related types and +their binary representation. We also directed some effort into unblocking Plutus team with +respect to PlutusV3 integration.

Low level summary

Conway progress

  • pull-3552 - Allow Constitutional Committee Hot Key to be ScriptHash
  • pull-3581 - Make Constitutional Committee Cold Key to be ScriptHash
  • pull-3571 - Implement a portion of the TICKF rule.
  • pull-3556 - Add Script to Constitution
  • pull-3576 - Add optional Anchor to ConwayRegDRep certificate
  • pull-3495 - Implement refund logic for Proposal deposits
  • pull-3579 - Change voting procedure in the transaction to a nested Map
  • pull-3585 - Rename CommitteeCert into a GovCert
  • pull-3587 - Remove DelegStakeTxCert from the COMPLETE pragma for TxCert
  • pull-3586 - Add CurrentTreasuryValue to TxBody
  • pull-3588 - Rename key roles
  • pull-3557 - Update NewCommittee action to use RewardAcnt and add more info
  • pull-3595 - Add ConwayUpdateDRep constructor to ConwayTxCertGov type
  • pull-3600 - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway
  • pull-3597 - Update ProposalProcedure return address to be a RewardAcnt

Testing

  • pull-3374 - New features for generation subject to constraints
  • pull-3519 - Basic Conway features test

Bugfixes

Plutus integration

  • issue-3538 - A fairly complete specification was created for the PlutusV3 context
  • pull-3593 - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality

Improvements and releasing

  • pull-3574 - Improve clarity and performance of collateral Non-ADA validation:
  • pull-3573 - Update top-level CHANGELOG.md with cardano-node relevant changes
  • pull-3555 - Bump pygments from 2.12.0 to 2.15.0 in /doc
  • pull-3575 - Bump certifi from 2022.12.7 to 2023.7.22 in /doc
  • pull-3567 - Backport mint field translation bugfix
  • pull-3568 - Fixed typo in byron ledger spec
  • pull-3572 - Release/backport tickf bugfix
]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[Network Team Update]]> + 2023-08-04-network + + 2023-08-04T00:00:00.000Z + + High-level overview of sprint 41

24th July - 6th August 2023

We started the implementation of bootstrap peers. Bootstrap peers are designed +to provide a safety guarantee for nodes joining the network while still taking +advantage of the distributed network for nodes that are synced. This will be +an intermediate step before Genesis which will allow for further distribute the +system. The bootstrap peers will be run by some trusted partners like CF, +Emurgo or IOG. They are primarily designed for leaf nodes (e.g. full node +wallets), which often end up syncing and require access to the honest chain. See +ouroboros-network#4615 for a more detailed implementation plan.

Other contributions

We started to use nothunks library to discover if we have any unevaluated +thunks which can lead to memory leaks ouroboros-network#4633. We found +a small one in the peer metric component of the P2P networking stack. Fixing +it put us on a small detour of fixing the API of the strict-checked-vars +package: cardano-base#431, cardano-base#432, as well as adding NFData +instance to io-classes. We also improved nothunks +library to make debugging easier and we provided a NoThunks instance for +ThreadId which we will need in the future (see nothunks#33).

We released a new version of io-classes (version 1.2.0.0) and related +packages to Hackage.

We addressed all review comments on the eclipse evasion PR which introduces big +ledger peers, ouroboros-network#3886.

We fixed how SIGHUP signal handlers are registered, so it's not possible to +shutdown a node which was starting while trying to update network topology, +see cardano-node#5421.

I didn't mention that in the previous update, so here it goes: in the previous +sprint we released ouroboros-network-0.8.2.0 and +ouroboros-network-framework-0.7.0.0.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-08-04-performance-and-tracing + + 2023-08-04T00:00:00.000Z + + High level summary
  • Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version 8.2.0.
  • Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing.
  • Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6.
  • Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.

Low level overview

Benchmarking

The 8.2.0 version of cardano-node required adjustment of some of the sanity checks that are part of our benchmarking +cluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version.

Tracing

The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint +when using it as default for a running node.

A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any +inconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node. +This feature adds another layer of robustness to the whole system.

Infrastructure

A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler +versions. We've future-proofed our benchmarking code.

Nomad backend

The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend +accordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant.

The validation phase is ongoing. We were able to perform successful runs and analyses for various 8.x node versions, including 8.2.0-pre. With parallel runs on the current cluster, we hope to measure the same effects we've observed with the +nomad backend - which will be a big step towards production use.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[SRE Team Update]]> + 2023-08-04-sre + + 2023-08-04T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent updates or improvements include:

  • Preprod and preview envionments were updated to 8.1.2.
  • Sanchonet and shelley-qa environments were updated to 8.2.0-pre.
  • Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.

Lower level summary

Cardano-ops

Cardano-perf

Cardano-world

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-08-01-node-cli-api + + 2023-08-01T00:00:00.000Z + + 2023-07-19 - 2023-08-01

High level summary

  • Release of Node 8.2.0
    • Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694.
    • This release is phase 1 of the SanchoNet roll out
    • Allows SPOs to vote on changes to the on-chain constitution.
    • Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag.
    • Updates to the networking packages prepare the road for peer sharing.
  • cardano-cli and cardano-api continue to integrate Conway era features
  • Continue refactoring of cardano-testnet

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Network Team Update]]> + 2023-07-31-network + + 2023-07-31T00:00:00.000Z + + Network Update (Sprints 39 & 40)

The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away. +It was great to see and talk to so many of the community members.

Sprint 39 (Jun 26 - Jul 09)

Major changes

Now the following list of traces will be turned on by default:

node-to-client protocol
  • LocalConnectionManagerTracer
  • LocalInboundGovernor
  • LocalHandshake
  • LocalServer
node-to-node protocol
  • Server

See cardano-node#5353. This will be released in node-8.2.0.

We made sure that cardano-client-0.1.0.x library (which is db-sync) is not using the experimental node-to-client protocol. +The cardano-client-0.2.0.0 was not affected. +See ouroboros-network#4612.

We merged the dynamic block production feature to ouroboros-consensus (also available in the cardano-node-8.2.0 release). +Dynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes. +See ouroboros-network#3159, [ouroboros-consensu#140].

We continued to review the implementation of big ledger peers for eclipse evasion, see ouroboros-network#4462.

Minor changes

Sprint 40 (Jul 09 - Jul 23)

Major changes

We integrated ouroboros-network-0.8.2.0 with the master branch of cardano-node for the 8.2.0 release (the version match between ouroboros-network and cardano-node is purely accidental). +This includes:

  • integration with dynamic block production feature. +This feature is documented in the following PR.
  • Warm valency for local root peers (see below).

For the full list of features included in the 8.2.0 release from the network side, please take a look at the pre-release nodes.

We improved the memory footprint of peer metrics measured by the P2P stack. +Peer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation). +See ouroboros-network#4620. +The improvement will be available in cardano-node-8.2.0.

We added an optional explicit warm valency to local root peers of the P2P topology file. +Previously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to. +The hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones. +Warm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses. +See ouroboros-network#4575, cardano-node#5409.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-07-28-hydra + + 2023-07-28T00:00:00.000Z + + High-level summary

During this week, the Hydra team achieved significant progress in various areas. +They conducted the monthly review meeting for July, which continously ensures +transparent communication and project evaluation. The team migrated the core +logic of the node to an event-sourced architecture and incremental writes of +events to persistence, enhancing the projects performance and maintainability. +Furthermore, the team added the ability to read protocol parameters via the API +and fixed the CI workflows to support pull requests from forks of external +contributors, streamlining the development process for community involvement.

What did the team achieve this week

  • Held the monthly review meeting for July (recording)
  • Migrate the core logic of the node to an event-sourced architecture #999
  • Updated persistence to faster incremental writes of events #1000
  • Added ability to read protocol parameters via API #735
  • Fix CI workflows to support pull requests from forks of external contributors #993
  • Updated to GHC 9.2.8 #1005
  • Prepared an updated use cases section on https://hydra.family (published with next release)

What are the goals of next week

  • Publish monthly report
  • Complete user transaction submission work #966
  • Remove commit from internal wallet (deprecated) #954
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-07-27-mithril + + 2023-07-27T00:00:00.000Z + + High level overview

The Mithril team launched Mithril protocol’s mainnet beta: the release-mainnet network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch.

They have released a new distribution 2329.0, which is running on the release-mainnet network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator.

Finally, they have worked on enhancing the documentation for onboarding SPOs and setting up a Mithril signer, and fixing installation bugs of the binary artifacts produced in the CI.

Low level overview

  • Created the dev blog post Mithril Protocol’s Mainnet Beta Launch
  • Released the new distribution 2329.0
  • Closed the epic that prepares the Mithril infrastructure for mainnet #767:
    • Completed the issue Deploy 'mainnet' infrastructure #988
    • Completed the issue Handle Secrets management #989
  • Worked on the epic Release 'mainnet' Mithril network #918
    • Completed the issue Prepare SPO on-boarding guide #1049
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Worked on the issue Design & implement basic stress test tool for aggregator #991
  • Worked on optimizations:
    • Completed the issue Enhance the configuration of Mithril relay #1080
    • Completed the issue Remove legacy store adapters from aggregator #1053
    • Completed the issue Add a 'sign' sub-command to 'genesis' command in aggregator #1081
  • Worked on refactoring:
    • Worked on the issue Refactor (de)serialization of crypto entities #668
  • Worked on documentation:
    • Completed the issue Enhance 'Run a Mithril Signer node (SPO)' guide #1055
  • Worked on bugs:
    • Completed the issue Shared library error in CI binaries #1073
    • Completed the issue Debian package does not install cleanly on older ubuntu versions #834
    • Completed the issue Aggregator panics with new (de)serialization of 'ProtocolVerificationKey' #1083
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-07-26-consensus + + 2023-07-26T00:00:00.000Z + + High level summary

The db-sync team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now. +We also focused on completing tracing support for UTxO-HD in cardano-node. +Currently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further.

The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ChainSync client as part of the onboarding efforts for the team that will implement Genesis.

The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team.

Genesis liaising

Improvements to the ChainSync client:

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-07-21-hydra + + 2023-07-21T00:00:00.000Z + + High-level summary

This week, the Hydra team updated the specification to align with recent +off-chain protocol changes, completed refactoring the snapshot emission +in preparation for event-sourced protocol logic, and updated to GHC +9.2.7, resulting in improved compile times and slightly smaller Plutus +scripts.

What did the team achieve this week

  • Updated the specification to match the recent off-chain protocol +changes to complete +#728
  • Refactored the snapshot emission logic in preparation for event +sourced protocol logic.
  • Updated to GHC 9.2.7, which led to improved compile times and +slightly smaller plutus scripts.

What are the goals of next week

  • Monthly review meeting next wednesday and July report
  • Reflect latest information onto our roadmap.
  • Actual implemention of event-sourced persistence +#913.
  • Update the use cases section on https://hydra.family
  • Remove deprecated internal commit +#954.
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-07-21-ledger + + 2023-07-21T00:00:00.000Z + + High level summary

Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet. +All members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era. +We also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release). +Additionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available. +We also made progress on the constraint-based generators, which can now generate valid transactions and ledger states.

What we achieved

  • [pull-3521] [pull-3554] Improved Governance model (GovernanceProcedures, ProposalProcedure)
  • [pull-3520] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert )
  • [pull-3531] Refactored and simplified code interacting with Plutus
  • [pull-3558] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix.
  • [pull-3550] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed.
  • [pull-3551] [pull-3546] [pull-3472] Updated tools and added some small improvements
  • [issue-3146] [pull-3498] Introduced Conway protocol parameters
  • [issue-2948] [pull-3499] Implemented ConwayGenesis with the new protocol parameters

What is currently in progress

]]>
+ + Alexey Kuleshevich + https://github.com/lehins + + +
+ + <![CDATA[SRE Team Update]]> + 2023-07-21-sre + + 2023-07-21T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent improvements include:

  • Re-spin sanchonet for testing a new node version followed by fork to Conway
  • Deploying a sanchonet compatible faucet to sanchonet
  • Migrate shelley qa legacy environment to cardano-world

Lower level summary

Cardano-node

Cardano-ops

  • Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: cardano-ops-compare

Cardano-world

Iohk-nix

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-07-20-goedel + + 2023-07-20T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

The team is working on formalising mini protocols, the performance +modelling prototype and also finishing off their ICE papers.

Details

  • Formalization of the chain synchronization mini-protocol in the +thorn calculus

  • Final pre-publication steps for ICE 2023 papers

  • Developing approach for specification and verification of +mini-protocols

  • Started work on porting the DeltaQ framework to a new, more concrete +backend based on piecewise-polynomials

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-07-18-node-cli-api + + 2023-07-18T00:00:00.000Z + + 2023-07-05 - 2023-07-18

High level summary

  • Integrate Conway certificates in cardano-api
  • Prepare cardano-cli and cardano-api for cardano-node 8.1.2
  • Tagged cardano-cli 8.3.0.0
    • Query for the hash of the constitution (Conway)
    • Ability to create votes and governance actions
  • Tagged cardano-cli 8.3.1.0
    • Make it build with ghc-9.6
  • Upgrade to optparse-applicative-fork-0.18.1.0 for parsing command line options

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-07-14-hydra + + 2023-07-14T00:00:00.000Z + + High-level summary

This week the team focused on exploring the event sourced persistence in order +to improve hydra-node performance. Because of this work the team noticed we +need to refactor the emit snapshot emission logic and update the spec in the +light of new changes. They also took the time to revisit their goals and product +plans for the next quarter as well as doing some security fixes related to +multisignatures.

What did the team achieve this week

  • Finished spike about performance improvements of event sourced persistence #963.
  • Refactor snapshot emission in protocol logic.
  • Revisited our roadmap and goals.
  • Prepared and conducated a learning session on lean-waste.
  • Improve security of multi-signature checks, see this Github security advisory.
  • Implemented a cache friendly way to version our binaries #962.

What are the goals of next week

  • Implement Event sourced persistence #913.
  • Remove deprecated internal commit #954 and close #728.
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + + Sasha Bogicevic + https://github.com/v0d1ch + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-07-13-mithril + + 2023-07-13T00:00:00.000Z + + High level overview

The Mithril team created a new 2327.0 distribution. They focused on preparing the beta launch on the mainnet: they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the mainnet infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library.

Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs.

Low level overview

  • Released the new distribution 2327.0
  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Completed the issue Add infrastructure monitoring #987
    • Worked on the issue Deploy 'mainnet' infrastructure #988
    • Worked on the issue Handle Secrets management #989
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Worked on the issue Design & implement basic stress test tool for aggregator #991
  • Worked on optimizations:
    • Completed the issue Remove certificate hash from Artifact #932
    • Completed the issue Check vulnerabilities in CI #1037
    • Completed the issue Add 'created_at' in Mithril Stake Distribution messages #1030
    • Completed the issue Add a 'run-only' option in end to end test #1048
  • Worked on refactoring:
    • Completed the issue Factorize protocol crypto operations #669
    • Completed the issue Refactor aggregator dependency injection and services #1058
    • Completed the issue Build static binaries in CI #874
  • Worked on documentation:
    • Completed the issue Prepare SPO on-boarding guide #1049
    • Completed the issue Add instructions to set firewall using iptables #1040
    • Completed the issue Update ufw command to set firewall on Mithril Signer installation instructions #1041
  • Worked on bugs:
    • Completed the issue Aggregator does not detect certificate chain epoch gap #952
    • Completed the issue 'testing-preview' network does not create certificates #1015
    • Completed the issue SQLite compatibility in aggregator #837
    • Completed the issue Q&A followup fixes #1035
    • Completed the issue E2E tests are flaky in CI #1023
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-07-12-consensus + + 2023-07-12T00:00:00.000Z + + High level summary

This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a proposed fix. The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine.

The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility.

On the support front, the team drafted an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load.

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-07-12-performance-and-tracing + + 2023-07-12T00:00:00.000Z + + High level summary
  • Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed.
  • Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends.
  • Tracing: Optimization of the new tracing system is ongoing and yielding good performance results.
  • Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.

Low level overview

Benchmarking

Our analysis of the GHC9 build of cardano-node has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation.

In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into cardano-node. This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle.

Infrastructure

We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in master.

Tracing

Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance.

Nomad backend

For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run.

Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to master.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Crypto Team Update]]> + 2023-07-07-crypto + + 2023-07-07T00:00:00.000Z + + High level summary

The open fronts that the crypto team is working on are:

  • Sidechains: First version of snark-based ATMS
  • mithril: Full node verifier
  • kes_agent: Keep progress, and prepare CIP and CPS
  • CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP

Low level summary

kes_agent

Mithril

  • Final review of the implementation of Full Node Verifier #939. +Included benchmarks and further tests.

Sidechains

  • Schnorr signature implemented
  • ATMS signature implemented
  • First benchmarks show that for the committe size we expect, we need 2^21 constraints.

CIPs and community

  • Addressed some review comments in #PR506
  • Worked with the communityt on #PR524 to include Keccak as part of the next Plutus release.
]]>
+ + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-07-07-goedel + + 2023-07-07T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the teams have been working on finalising their ICE papers +for publication in EPTCS, formalising concensus, and investigating chain +sync.

Details

  • Preparing final versions of ICE papers

  • Reviewing the chain sync design and documentation

  • Refactoring the thorn calculus

  • First draft of Praos specification

  • Developing bounding factors on timeouts

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-07-07-hydra + + 2023-07-07T00:00:00.000Z + + High-level summary

This week the Hydra team accomplished some nice progress. They secured the +network layer further by implementing authentication of the messages between the +peers in the Head protocol. In the process they also managed to separate +HeartBeat messages from the protocol ones which somewhat improved the quality of +code in Hydra. The team also finished work related to sending only transaction +ids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark +publishing on the website.

What did the team achieve this week

What are the goals of next week

  • Spike on performance improvements of event sourced persistence #913
  • Add new endpoint for submitting client transactions
  • Remove commit from internal wallet
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + + Sasha Bogicevic + https://github.com/v0d1ch + + +
+ + <![CDATA[SRE Team Update]]> + 2023-07-07-sre + + 2023-07-07T00:00:00.000Z + + High level summary

The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance.

Some notable recent improvements include:

  • Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment
  • Explorer component updates
  • Spongix caching server rewrite for R2 Cloudflare support and various performance improvements

Lower level summary

Cardano-node

Cardano-ogmios

Cardano-ops

  • Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: cardano-ops-compare

Cardano-rosetta

Cardano-world

Spongix

  • Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: spongix-simple-branch
]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Developer Experience Update]]> + 2023-07-06-developer-experience + + 2023-07-06T00:00:00.000Z + + High level summary

The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements.

Lower level summary

build support & maintainance

The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions.

compiler upgrades

Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests.

Hydra Tools

Our repository, input-output-hk/actions, has seen quite some improvements to facility the hydra <-> github integration.

haskell.nix

Haskell.nix has been maintained and updated with the addition of preliminary GHC 9.8 support.

devx

The devx repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our actions/devx GitHub Actions, we have a consistent set of tooling for

  • nix develop shells
  • GitHub CodeSpaces integration
  • VSCode DevContainer support
  • GitHub Actions integration

upstream tooling

Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

]]>
+ + Moritz Angermann + https://github.com/angerman + + +
+ + <![CDATA[DB-sync Team Update]]> + 2023-07-04-db-sync + + 2023-07-04T00:00:00.000Z + + High level summary

We've made progress in all high level objectives

  • CIP-1694 integration design
  • UTxO-HD integration proof of concept
  • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested
  • Many devx issues resolved

Lower level summary

  • We have improved and validated the design for the Conway integration in db-sync
  • Improved the initial integration of the UTxO-HD feauture branches which are under test
  • Prepared a new release 13.1.1.3 which supports node 8.1.1 +#1455.
  • This also fixes a bug +#1451
  • Added new tests to the new tx_out options +#1429
  • Fixed a chronic issue in db-sync related to exception handling and concurrency +This fixes many other issues and simplifies the logic in db-sync +#1447
  • A number of fixes and improvements in ci, docker, devx, docs +#1436#1442#1448#1452
]]>
+ + Kostas Dermentzis + https://github.com/kderme + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-07-04-node-cli-api + + 2023-07-04T00:00:00.000Z + + 2023-06-21 - 2023-07-04

High level summary

  • Started integration of conway era into the cardano-api,
  • Pre-release of cardano-cli 8.2.1 which enables creating goveranance "Update constitution" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.
  • Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities.
  • Continue refactoring cardano-testnet
  • CI and docs house keeping on the new cardnao-cli and cardano-api repositories

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-06-30-hydra + + 2023-06-30T00:00:00.000Z + + High-level summary

This week, the Hydra team wrote and published the monthly report for June, +implemented the end-to-end functionality for external commits, and tested it on +the preview environment. They also listed Hydra as a tool on the Cardano +developer portal, providing more visibility for the project. The team clarified +the path forward for L2 protocol improvements and explored an alternative CI +approach using cabal instead of nix. Additionally, they released version 0.11.0, +marking another milestone in the projects development.

What did the team achieve this week

  • Written and published the monthly report for June
  • Implemented external commits end-to-end incl. tested it on preview #215
  • Listed Hydra as a tool on cardano developer portal
  • Cleared up path forward on L2 protocol improvements #728
  • Established an alternative CI using more cabal tools #923
  • Release version 0.11.0

What are the goals of next week

  • Spike on performance improvements of event sourced persistence #913
  • Complete ReqSn only sends transaction ids #728
  • Groom and plan last items for 0.12.0 (remove internal commit)
  • Improve reliability of benchmarks
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-06-29-mithril + + 2023-06-29T00:00:00.000Z + + High level overview

The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano mainnet infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator.

Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1.

Low level overview

  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Worked on the issue Add infrastructure monitoring #987
  • Completed the epic Prepare Mithril Signer deployment model for SPO #862:
    • Completed the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
    • Completed the issue Adapt infrastructure to use Mithril Relay #1018
    • Completed the issue Announce the new signer deployment model in a dev blog post #1017
  • Worked on the epic Benchmark performances of Mithril Aggregator #904:
    • Worked on the issue Design & implement basic stress test tool for aggregator #991
  • Worked on bugs:
    • Completed the issue Aggregator does not exit on critical error #993
    • Completed the issue Computation of master certificate of an epoch is incorrect #1006
    • Completed the issue End to end tests are flaky #954
    • Worked on the issue 'testing-preview' network does not create certificates #1015
  • Worked on optimizations:
    • Completed the issue Dates format is not standardized #946
    • Completed the issue Add 'recompute-certificates-hash' command to aggregator #1001
    • Completed the issue Add a retry mechanism for artifact creation in aggregator #984
    • Completed the issue Log node version at startup in Aggregator/Signer #944
    • Completed the issue Reactivate Publish Results job in CI #978
    • Completed the issue Clean 'pending_snapshot' directory of aggregator #983
    • Completed the issue Update OpenAPI spec examples #1000
  • Worked on refactoring:
    • Completed the issue Refactor 'MithrilStakeDistribution' entity #967
    • Completed the issue Refactoring client #982
    • Completed the issue Refactor download code in client #1010
    • Worked on the issue Factorize protocol crypto operations #669
  • Worked on dependencies:
    • Completed the issue Upgrade Cardano node to '8.1.1' #973
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-06-28-consensus + + 2023-06-28T00:00:00.000Z + + High level summary

During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team.

The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components.

Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node.

Genesis

  • We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.

  • We decided on an approach of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team.

UTxO-HD

  • We merged the last of the PRs that were part of UTxO-HD improvements for version 0.1: expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size.
  • We added a new "legacy" cardano block in a new ouroboros-consensus-cardano-legacy-block package that should ease the transition for some downstream packages to UTxO-HD, like db-sync. This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block.
  • We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-06-28-performance-and-tracing + + 2023-06-28T00:00:00.000Z + + High level summary
  • Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9.
  • Infrastructure: The first batch of refactoring and documentation for our tx-generator has been merged to master.
  • Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown.
  • Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.

Low level overview

Benchmarking

The compiler switch to GHC9 as the default build platform for cardano-node and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard.

Using the forge-stress approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node.

Infrastructure

The tx-generator is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to master. Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base.

Tracing

The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue.

Nomad backend

With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress.

Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-06-23-goedel + + 2023-06-23T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the teams presented two papers at ICE 2023.

Details

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-06-23-hydra + + 2023-06-23T00:00:00.000Z + + High-level summary

This week, the Hydra team shared progress updates during the monthly review +meeting (monthly report and video recording available soon) and started +experimenting on preview network with the new commit from external wallet +feature.

What did the team achieve this week

  • Monthly report & review meeting, demonstrating commit from external +wallet
  • Published regular benchmarks for +Hydra
  • Moved forward the journey for external commits using multiple script UTxOs +#903
  • Changed the API to only put transaction id in snapshots, instead of the full +transactions #922 -> this +is now evolved into fully addressing #728
  • Fuel marking is now optional as one can now commit from an external wallet +#924
  • Add flag option to display node version on tui +#934

What are the goals of next week

  • Complete external commits using multiple script UTxOs #903
  • New release 0.11.0
  • Dirtroad solution of improved persistence performance #913
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + + Pascal Grange + https://github.com/pgrange + + +
+ + <![CDATA[Network Team Update]]> + 2023-06-23-network + + 2023-06-23T00:00:00.000Z + + Network Update

Key contributions

We held a series of session to review the implementation of big ledger peers +(eclipse evasion). See #4462.

We get a request from a 3rd party to clarify an inconsistency between CDDL spec +and protocol implementation. We worked out a nice solution which takes +advantage of the any notion available in CDDL. On the Haskell side we +provide Any type which gen generate almost any CBOR term (some are excluded +only because they are not decoded back to the same form, and we relay on that +property). See #4580.

We fixed a bunch of problems of the cardano-cli ping command. It also now has +a limited support of node-to-client mini-protocol (the -c option is +ignored, as it cannot be supported by node-to-client protocol). Note that +the format of messages has changed, timestamps are printed in ISO8601 format. +See #4601, #5326, #5313, #30

In order to provide a new flag in the topology file which enables ledger peers +when the chain is close to the tip, we continued to work on #4530. This is +currently in review, the consensus team will need to provide us with the new +api. This feature is useful for two reasons: makes it easier to maintain +a topology file, it will also limit the traffic on public roots generated by +for example full node wallets and distribute it to ledger peers.

We also continued to work on a blog post which describes the journey of design +& implementation of the dynamic P2P network layer. Too be announced soon :).

Other smaller changes

We limit the concurrency of resolving dns names. Up to 8 root peers or ledger +peers DNS names are resolved concurrently, and at most 2 local root peer DNS +names. See #4596.

We fixed handshake query timeout in #4603.

We renamed one of the block-fetch decision constructors as requested by the +consensus team, see #4608.

]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[SRE Team Update]]> + 2023-06-23-sre + + 2023-06-23T00:00:00.000Z + + High level summary

The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:

  • A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality
  • Cardano Sanchonet environment was stood up to test Conway era functionality
  • Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case
  • Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments

Lower level summary

Cardano-node

  • Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: cardano-node-pull-5318

Cardano-ops

Cardano-world

Ci-ops

Ci-world

  • Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ci-world-compare

Devx-ci

  • A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: devx-ci-repo

Iohk-nix

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-06-16-hydra + + 2023-06-16T00:00:00.000Z + + High-level summary

This week, the Hydra team focused their efforts on continuing to investigate and +experiment operating a head on mainnet. They collected several bugs and issues +and worked on fixing them. Now the team is soon to release a new version, +0.11.0, which comes with a lot of improvements and bug fixes.

What did the team achieve this week

  • Restored and fixed a bug which stalled our head on mainnet #927
  • Solved one user issue #914
  • Reduced significantly local state size and logs by removing the full scripts from it #928
  • (pending review) Reduced snapshot size in the API, by only including tx ids #922

What are the goals of next week

  • New release 0.11.0
  • Monthly report & review meeting.
  • Fix some minor bugs discovered when operating our head on mainnet
  • Complete journey for external commits using multiple script UTxOs #903
  • Publish benchmarks and provide regular benchmarks for Hydra #186
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-06-15-mithril + + 2023-06-15T00:00:00.000Z + + High level overview

The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client’s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet.

Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI.

Low level overview

  • Completed on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the issue Create the sub-command for 'Mithril Stake Distribution' in client #896
    • Completed the issue Adapt end to end tests to handle new types of data #899
    • Completed the issue Update client documentation #897
    • Completed the issue Update architecture documentations for new types of data #898
    • Completed the issue Refactoring client #960
  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Completed the issue Enhance terraform infrastructure #930
  • Completed the epic that implements the computation of the stake distribution for mainnet #880:
    • Completed the issue Check performance impact of new stake distribution command on the 'mainnet' #962
  • Worked on the epic Prepare Mithril Signer deployment model for SPO #862:
    • Worked on the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
  • Worked on bugs and optimizations:
    • Completed the issue Aggregator does not always detect new immutable file #953
    • Completed the issue CI tests fail with Rust '1.70.0' #958
    • Worked on the issue End to end tests are flaky #954
    • Worked on the issue Certificate dates in metadata are not on the same timezone #946
    • Worked on the issue Refactor 'MithrilStakeDistribution' entity #967
    • Completed the issue Fix 'Mithril Client multi-platform test' with new client interface #956
    • Completed the issue Enhance 'ImmutableDigesterError::NotEnoughImmutable' error #969
    • Completed the issue Client 'snapshot download' command fails with option '--download-dir' #979
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-06-14-consensus + + 2023-06-14T00:00:00.000Z + + High level summary

The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the Byron and TPraos eras do not need to be checkpointed for an MVP. +There is one remaining question (which applies also to the Praos era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated "Limit on Patience" timeout sufficiently bounds how long the adversary can inflate a victim's overall sync time.

On the UTxO-HD front, the prototype branch was rebased on top of the latest ouroboros-consensus main branch and integrated on top of cardano-node 8.1.1-pre. As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD. +We managed to run a node again with UTxO-HD enabled. +We also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for cardano-node, which uncovered a performance regression on the Network component when using GHC-9.2/9.4. This is being addressed.

Regarding our support activities, we Released fs-sim-0.2.0.0 and are in the process of preparing the 8.2 release of cardano-node. We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests.

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-06-14-performance-and-tracing + + 2023-06-14T00:00:00.000Z + + High level summary
  • Benchmarking: We've continued release benchmarking and established a new baseline for 8.0.0.
  • New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined.
  • Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.

Low level overview

Benchmarking

In our release benchmarking cycle, we established a new performance baseline for 8.0.0. Additionally, we've measured +performance under various workloads for 8.1.1-pre; the results look promising and validate the optimization efforts +done on several system components.

In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for +benchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper.

Tracing

The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be +meaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific +trace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles.

Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD.

Nomad backend

As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs.

This means the backend is entering validation phase, where we systematically compare all metrics taken from the new +infrastructure to the existing ones, including determining reproducibility and variance.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Network Team Update]]> + 2023-06-12-network + + 2023-06-12T00:00:00.000Z + + Network Update

Key contributions and advances

We merged light peer sharing feature, which allows to include inbound peers +into outbound governor known peers. This is the primary way for new +unregistered nodes to enter the network, which then can be shared using peer +sharing. Note that peer sharing is an experimental feature which is disabled +until genesis & eclipse evasion as fully implemented. See #3596.

We are making progress reviewing eclipse evasion, #3886.

We fixed another bug in local root peers. We found out that if the local roots +where ignored until the first domain name was resolved, see #4583. The bug +fix was backported and released in ouroboros-network-0.8.1.1.

We re-started working on dynamically enabling block forging to address issue +#3159, which will enable us to release P2P on block producing nodes. See #140.

New cardano-ping / cardano-cli ping release

We prepared a new release of cardano-ping library which supports the new +query feature (query supported versions). See #4589, #4593 and #5313. +The new version of cardano-cli ping will use ISO8601 formatted +timestamps; also the formatting of ping results is slightly improved, and it +will introduce the new --query-versions (-Q) switch. If the remote site +supports the query parameter, the command will print:

redacted-ip:port network rtt: 0.064
redacted-ip:port handshake rtt: 0.064010896s
redacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat
orAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]

otherwise it will print the negotiation results

redacted-ip:port network rtt: 0.045
redacted-ip:port handshake rtt: 0.101867615s
redacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder

Note that in that case cardano-cli ping offers InitiatorAndResponder, which +allows us to detect whether the remote side is an InitiatorOnly or +InitiatorAndResponder. Also cardano-cli ping will no longer announce +itself as InitiatorAndResponder, except for the case mentioned above.

Other smaller contributions

On a request from the Marlow Team, we published haddocks of typed-protocols, +which are now available here (#40, #41).

We made a new release of strict-stm-1.1.0.1 on Hackage, which fixed a bug in +package description file, #101 .

We also helped to debug a deadlock when using named pipes on Windows in the new +RawBearer API. The API is being used to store secret keys only in memory. +The PR #4395 is under review.

We also have two more PRs which are under review:

  • #4530: enabling ledger peers on a fixed number of slots before the tip of the chain;
  • #4580: a PR which fixes inconsistencies in one of our cddl specs.
]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Crypto Team Update]]> + 2023-06-09-crypto + + 2023-06-09T00:00:00.000Z + + High level summary

The open fronts that the crypto team is working on are:

  • cardano-base: E2E tests for BLS bindings and KES agent
  • Sidechains: Implement ECC chip and Rescue hash primitives for ATMS
  • mithril: Full node verifier

Low level summary

cardano-base

  • RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); blocked due to issue with windows' localSnocket. Trying to resolve.
  • Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors #317.
  • Above, blocked by the simplification of typeclasses #404.
  • Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings

Mithril

  • Implementation of Full Node Verifier #939

Sidechains

  • ECC chip implemented for JubJub over BLS12-381
  • Rescue chip implemented for hashing.
  • Currently working on Schnorr signature (which uses the above constraints)
]]>
+ + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
+ + <![CDATA[Developer Experience Update]]> + 2023-06-09-developer-experience + + 2023-06-09T00:00:00.000Z + + High level summary

The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements.

Lower level summary

build support & maintainance

Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure LoadDLL errors to blst integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like cardano-base experiencing significant reductions in CI complexity.

compiler upgrades

After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility.

CHaP (cardano-haskell-packages)

We relocated the underlying tooling, (foliage), for CHaP into the IOG organization. Furthermore, we have introduced improved tooling to quickly add constraints to packages, better error reporting for add-revision and better hackage url compatibility to facilitate easer usage of CHaP.

GitHub Actions

Our repository, input-output-hk/actions, now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the base and haskell install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking cabal.

iohk-nix

The iohk-nix repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, sodium, blst, and secp256k1, are also fixed to certain revisions within the iohk-nix repository.

haskell.nix

Haskell.nix has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to gmp.

devx

The relatively new devx repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The devx repository's readme has been updated to reflect its purpose and usage guidelines.

upstream tooling

Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

]]>
+ + Moritz Angermann + https://github.com/angerman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-06-09-hydra + + 2023-06-09T00:00:00.000Z + + High-level summary

This week, the Hydra team worked on multiple fronts. They finished the +investigation about the broken head on mainnet and re-opened their persistent +head instance. The team also fixed the monthly report publication on their +website and started sketching ideas and further improvements. Also, they are on +the last mile to deliver a new feature which will allow parties to commit funds +from extern wallets. Finally the team started to work on optimizing the +performance on their benchmarks.

What did the team achieve this week

  • Finished investigation on broken head on mainnet #897 and re-opened it.
  • Added support for externally committing regular utxo #887
  • Fix monthly report publication on docs website and published the monthly report. Odd problems when publishing monthly report:
    • Make us think about if we should change something about the website #908
    • Open issue to docusaurus #9036
  • Fixed a bug in the benchmark process #910
  • Explored performance of the hydra-node{.verbatim} and identified a +bottleneck.
  • Timed transaction feature is being used by the auction project 🎉

What are the goals of next week

  • Complete performance analysis and start/plan improvements and provide +regular benchmarks for Hydra #186
  • Add hydra as tool to developer platform #872.
  • Authenticate network messages #727.
  • Complete journey for external commits using multiple script UTxOs #903
  • Start implementing Option B for external commits #215.
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[DB-sync Team Update]]> + 2023-06-08-db-sync + + 2023-06-08T00:00:00.000Z + + High level summary

We've made progress in all high level objectives

  • CIP-1694 integration design
  • UTxO-HD integration proof of concept
  • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2
  • A new hire will help us with devx issues.

Lower level summary

]]>
+ + Kostas Dermentzis + https://github.com/kderme + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-06-08-goedel + + 2023-06-08T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on giving and preparing public +talks, also on preparing final versions of their ICE 2023 papers, and +on analysing chain selection.

This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

Details

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[SRE Team Update]]> + 2023-06-08-sre + + 2023-06-08T00:00:00.000Z + + High level summary

The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer.

Lower level summary

Bitte

  • Equinix bare metal capability was added to bitte: bitte-pull-194
  • Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: bitte-pull-201

Bitte-cells

Cardano-graphql

Cardano-node

Cardano-ops

Cardano-world

Ci-ops

  • Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ci-ops-pull-108

Ci-world

Cicero

  • Implement a cicero webhook backoff with exponential decay plus jitter: cicero-pull-79

Iohk-nix

Openziti

]]>
+ + John Lotoski + https://github.com/johnalotoski + + +
+ + <![CDATA[System Test Team Update]]> + 2023-06-08-system-test + + 2023-06-08T00:00:00.000Z + + High level summary

Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.7 and 8.0.0 releases.

Workstreams

Full list of closed PRs

Framework improvements:

  • Make cardano-submit-api REST API service available and run corresponding regression tests by default
  • Update cabal build testing for 8.0.0
  • Add support for testing governance SPO poll
  • Use Poetry for Python dependency management
  • Check status of known GH issues during tests runtime and finish the test accordingly
  • Generate topology files with both IP addresses and DNS names
  • Log issues like failure to start a cluster instance and report errors during tests runtime

Testing improvements

  • Add rollback testing:
    1. global consensus is reached after rollback, in situation where less than securityParam blocks were produced since cluster split
    2. global consensus is not reached when more than securityParam blocks were produced, and the result is permanent fork
  • Add tests to governance SPO poll commands

Node:

DB-Sync:

  • improvements in db-sync sync tests
  • improvements in db-sync functional tests
]]>
+ + Martin Kourim + https://github.com/mkoura + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-06-07-node-cli-api + + 2023-06-07T00:00:00.000Z + + 2023-06-07 - 2023-06-20

High level summary

  • Completed cardano-cli migration to input-output-hk/cardano-cli
  • cardano-cli ping now uses cardano-ping-0.2.0.5
  • New queries on API:
    • queryCurrentEpochState
    • queryDebugLedgerState
    • queryGenesisParameters
    • queryPoolDistribution
    • queryPoolState
    • queryProtocolParameters
    • queryProtocolParametersUpdate
    • queryProtocolState
    • queryStakeAddresses
    • queryStakeDistribution
    • queryStakePoolParameters
    • queryStakeSnapshot
  • Deprecate:
    • queryPparams
  • Export query API as functions
    • genFeatureValueInEra
    • featureInShelleyBasedEra
    • isFeatureValue
    • valueOrDefault
    • asFeatureValue
    • asFeatureValueInShelleyBasedEra
    • queryEpoch
    • requireShelleyBasedEra
  • Restructure cardano-testnet (WIP)

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

CI & project maintenance

]]>
+ + Carlos LopezDeLara + https://github.com/CarlosLopezDeLara + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-06-02-hydra + + 2023-06-02T00:00:00.000Z + + High-level summary

This week, the Hydra team has put their effort on finding solutions on many +different problems, such as our broken head on mainnet +#897, our fragile monthly +report publications on the website and implementing Option A for +external commits #215. +Although most of these items are still open, huge progress has been made. To +accelerate the investigation, they improved their logging to give more precise +errors when a transition requirement fails, and to reduce duplication on effets +logged content. Last but not least, the team is exploring formal methods and +attended a workshop on formalizing cryptographic protocols in Agda.

What did the team achieve this week

  • Continued investigating broken head and opened an issue to keep track #897.

    As part of this issue, improvements were made to the node logs:

    • Give a precise error when a transition requirement fails #895.

    • Reduce duplication for effects logged content by using sequential eventId and effectId pair #896.

  • Fixed references in the hydra specification #893.

  • Attended a workshop on formal methods and crypto in Agda.

What are the goals of next week

  • Investigate and re-open our team-internal head on mainnet.
  • Improve and provide regular benchmarks for Hydra #186.
  • Complete journey for external commits implementing Option A and start implementing Option B #215.
  • Authenticate network messages #727.
  • Add hydra as tool to developr platform #872.
  • Fix monthly report publication on docs website.
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-06-01-mithril + + 2023-06-01T00:00:00.000Z + + High level overview

The Mithril team released a new 2321.1 distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots.

Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks.

Low level overview

  • Released the new distribution 2321.1
  • Worked on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the issue Enhance MessageAdapter for Artifact in aggregator REST API #925
    • Completed the issue Create the sub-command for 'Cardano Immutable Files Full' in client #895
    • Completed the issue Enhance state machines Aggregator/Signer #933
    • Completed the issue Adapt the aggregator REST API to list certificates #892
    • Worked on the issue Adapt end to end tests to handle new types of data #899
    • Worked on the issue Update client documentation #897
    • Worked on the issue Update architecture documentations for new types of data #898
  • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
    • Worked on the issue Enhance terraform infrastructure #930
  • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
    • Completed the issue Upgrade Cardano node to '8.0.0' #920
  • Completed the issue Add export path in Client CLI #512
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-05-31-consensus + + 2023-05-31T00:00:00.000Z + + High level summary

During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see this issue). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain.

On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano.

UTxO-HD

  • We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking SOP classes like HPure and HAp . In short, we implement generalised versions of important classes like Applicative and Traversable.

Support

  • fs-sim-0.1.0.2 and fs-api-0.1.0.2 were released, which makes them now compatible with GHC up to 9.6.
  • ouroboros-consensus-0.7.0.0 was released for cardano-node 8.1, including query serialization fixes for backwards compatibility.
]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-05-31-performance-and-tracing + + 2023-05-31T00:00:00.000Z + + High level summary
  • Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster.
  • New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism.
  • Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.

Low level overview

Benchmarking

The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build +configuration: As it stands, the ghc-bignum package is using the Haskell native-backend as a default. We strive +to benchmark a build with the gmp-backend next.

A variant of our forge-stress local benchmark has been set up to serve as an early indicator for the resource usage profile +we'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way +shorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great +support when evaluating different compiler versions or RTS flags incrementally.

Tracing

The hub of the new tracing system cardano-tracer is designed with a fixed output behaviour, which is limited to various +logging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to +directly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all.

Nomad backend

We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with +job definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing +benchmarking run required us to fine-tune communications with the nomad server.

Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible +and offers more detailed insight than the previous iteration in cardano-ops. The backend will enable you to formulate +very specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met.

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-05-26-goedel + + 2023-05-26T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

Details

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-05-26-hydra + + 2023-05-26T00:00:00.000Z + + High-level summary

This week, the Hydra team accomplished several important tasks. They held their +monthly review meeting and drafted the report for May. They made progress on +implementing the first end-to-end journey for external commits using "Option A" +for normal UTxOs, while still considering "Option B". The team also integrated a +Spanish translation contributed by the community, created micro-benchmarks for +transaction validation and deserialization, and made improvements to +hydra-node's version reporting. Last but not least, they implemented the ability +to commit multiple UTxOs to a head at once.

What did the team achieve this week

  • Held the monthly review meeting (recording + slides) & drafted the report for May.
  • Have a first end-to-end journey for external commits implementing Option A +for normal UTxOs #887 (still considering Option B).
  • Integrated the spanish translation #866.
  • Created micro-benchmarks for transaction validation and deserialization #884.
  • Improve hydra-node version reporting on non-released builds #849
  • Some minor CI improvements following up last weeks changes.
  • Allow commit transactions with multiple UTxO #774.

What are the goals of next week

  • Investigate and re-open our team-internal head on mainnet.
  • Improve and provide regular benchmarks for Hydra #186.
  • Complete external commits with script UTxOs #215.
  • Authenticate network messages #727.
  • Add hydra as tool to developr platform #872.
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-05-26-ledger + + 2023-05-26T00:00:00.000Z + + High level summary

The ledger team made progress on the conway ledger era. In particular, the design and implementation +of the new certificates is near complete, we refactored some of our data structures +to be able to support DReps, we cleaned up the serialization format, and renamed things to make +clearer the differences with Shelley.

The team also completed integration work for the next node release, namely 8.1.0. +And, as always, we continue to address technical debt.

Low level summary

Conway progress

  • pull-3408 - Improve conway delegation certificates
  • pull-3428 - Get rid of Constitutional in favor of Genesis and Committee
  • pull-3426 - Add DRep to internal data struture (UMap)
  • pull-3425 - Improve witness logic needed for conway
  • pull-3423 - Rename ShelleyDelegCerts constructors to distinguish them from Conway
  • pull-3421 - Rename DCert -> TxCert
  • pull-3454 - conway CDDL minor fixes

Improve testing

  • pull-3403 - Add Plutus script context golden tests

Integration work

  • pull-3410 - Update chaps index
  • pull-3416 - Bump cardano-ledger-alonzo-test version
  • pull-3414 - Bump cardano-ledger-shelley-test minor version
  • pull-3420 - Bump cardano-ledger-shelley-ma-test version
  • pull-3441 - Release cardano-ledger-[alonzo|babbage]-1.2.1

Technical debt

  • pull-3409 - Unit test - no such thing as a reference datum
  • pull-3407 - Fixup release process documentation
  • pull-3404 - Create TotalDeposits events during all eras
  • pull-3402 - Fix broken references in the Shelley spec
  • pull-3424 - Remove no longer used cardano-ledger-shelley-ma package
  • pull-3432 - Add an example on how to bump up versions in the changelog
  • pull-3440 - Revert back to the group serialization for ProtVer for PParams
]]>
+ + Jared Corduan + https://github.com/JaredCorduan + + +
+ + <![CDATA[Network Team Update]]> + 2023-05-26-network + + 2023-05-26T00:00:00.000Z + + High level summary

We continued working on eclipse-evasion. We also analysed and fixed a bug +when using DNS names in local root peers. We continued working on engineering +blog post about P2P. We released a new version of packages for +cardano-node-8.1.0 release.

We improved our CI, removed obsolete scripts add extra validation which checks +if CHANGELOG.md files were updated.

We also improved release scripts.

Detailed summary

  • Eclipse evasion: #4462
  • Local root peers bug fix: #4559
  • Release to CHaP: #4573
  • CI improvements: #4572
  • Release script improvements: #4573
]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-05-24-node-cli-api + + 2023-05-24T00:00:00.000Z + + 2023-05-24 - 2023-06-06

High level summary

  • The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released.
  • We provided assitance where needed in the release
  • An integration repository https://github.com/input-output-hk/fusion-flamingo was created to enable my team to more easily work on cardano-cli and cardano-api

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

]]>
+ + Jordan Millar + https://github.com/Jimbo4350 + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-05-19-hydra + + 2023-05-19T00:00:00.000Z + + High-level summary

This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the "Coding Standards" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.

What did the team achieve this week

  • Complete validation of timed transactions feature #196.
  • Write ops instructions and troubleshooting #569 and improve logs.
  • Remove --ledger-genesis argument to hydra-node options #863.
  • Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows #877.
  • Use nix to build test binaries to increase CI speed #867.
  • Updated our Coding Standards.

What are the goals of next week

  • Monthly report & review meeting.
  • Have a first end-to-end journey for external commits implementing "Option A" #215.
  • Integrate spanish translation #866.
  • Improve and provide regular benchmarks for Hydra #186.
  • Allow commit transactions with multiple UTxO #774.
  • Explored stateless observation and refined hydra explorer ticket #696.
]]>
+ + Franco Testagrossa + https://github.com/ffakenz + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-05-17-consensus + + 2023-05-17T00:00:00.000Z + + High level summary

During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the [Genesis][#genesis] section for more details.

Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our main branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain.

We improved our tooling by releasing an immutable DB server, which can be used for testing and benchmarking purposes, and a db-truncater program, which can be used in disaster recovery and benchmarking scenarios.

Genesis

The consensus team working on Genesis:

  • Improved the genesis selection rule as a result of our interaction with IO Research.
  • Studied how the hard-fork combinator handles forecasting at era transitions, and improved our documentation.
  • Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP.
  • Elaborated concrete proposal for the Genesis State Machine.
  • Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).

The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine.

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-05-17-mithril + + 2023-05-17T00:00:00.000Z + + High level overview

The Mithril team released a new 2318.0 distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types.

Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node 8.0.0 (along with the backward compatibility for previous 1.35.x versions).

Low level overview

  • Worked on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the handling of multiple types of signed entity in the aggregator runtime #907
    • Completed the adaptation of the signer runtime to use the signable builder service #854
    • Completed the adaptation of the aggregator runtime to use the artifact builder service #869
    • Completed the appending of the next AVK to all protocol messages #888
    • Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced #893
    • Completed the adaptation of the explorer to handle new artifact routes of the aggregator #927
  • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
    • Completed the implementation of the new stake distribution computation in the chain observer #919
    • Worked on upgrading the Cardano node to 8.0.0 #920
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-05-17-performance-and-tracing + + 2023-05-17T00:00:00.000Z + + High level summary
  • Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes.
  • New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due.
  • Analysis pipeline: First steps on implementing incremental analysis have been untertaken.
  • Open Sourcing: Exhaustive dataflow charts for both our analysis tool locli and our workbanch have been merged to master
  • Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster.
  • P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland.
  • Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.

Low level overview

Benchmarking

As a compiler switch to GHC 9.2.7 for cardano-node's default build environment is around the corner, we're setting up our benchmarking cluster to +handle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This +also involves choosing a reliable baseline as reference point for inter-version comparisons.

Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet, +we strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to +be balanced against resource demand for all our cluster's nodes.

Tracing

For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some +quality-of-life details that have changed required us to revision the system documentation.

Analysis

As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been +normally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a +huge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken.

Open Sourcing

A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking +copmonents more accessible. As a result, detailed charts for both our LogObject CLI locli and our workbench have been merged to master.

Nomad backend

While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting +those profiles of our workbench that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality +of the nomad cloud backend.

Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster.

Performance & Tracing Meetup

We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive +days together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future. +Also, it was a great opportunity to finally meet in person.

Offboarding

Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation +of team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!

]]>
+ + Michael Karg + https://github.com/mgmeier + + +
+ + <![CDATA[Crypto Team Update]]> + 2023-05-12-crypto + + 2023-05-12T00:00:00.000Z + + High level summary

The open fronts that the crypto team is working on are:

  • cardano-base: Include final tests for BLS signature. Further adaptations for KES agent.
  • Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.

Low level summary

cardano-base

Sidechains

  • Opened PR in halo2curves to include BLS12-381 and JubJub, #38
  • Addition constraint over JubJub merged #10
]]>
+ + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
+ + <![CDATA[Goedel Team Update]]> + 2023-05-12-goedel + + 2023-05-12T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

High level summary

This sprint the team had two paper accepted for ICE 2023 +(https://www.discotec.org/2023/ice). The event will be held in Lisbon +on 19th June 2023. The papers will be published in EPTCS.

Details

]]>
+ + James Chapman + https://github.com/jmchapman + + +
+ + <![CDATA[Hydra Team Update]]> + 2023-05-12-hydra + + 2023-05-12T00:00:00.000Z + + High-level summary

This week, the Hydra team achieved a number of milestones, including the release +of the first mainnet compatible version. Besides this they also addressed +inconsistencies in rollback handling, added an architecture page to the website, +reducing the size of logs using event IDs. They also had productive discussions +with researchers on plans for incremental commits/decommits and had a whiteboard +session on DeFi and lending protocols. The goals for next week include +completing the validation of the timed transactions feature, exploring stateless +observation, refining the Hydra explorer ticket, writing ops instructions and +troubleshooting, and implementing the first end-to-end journey for external +commits.

What did the team achieve this week

  • Released first mainnnet compatible version 0.10.0
  • Addressed inconsist handling of rollbacks #784
  • Added architecture page and fixed haddock links on our website #838
  • Opened a new hydra head on mainnet
  • Talked with researchers on initial plan for incremental commits/decommits
  • Had a Whiteboard session on DeFi and lending protocols
  • Reduced size of logs using event ids #859
  • Published the monthly report for April

What are the goals of next week

  • Complete validation of timed transactions feature #196
  • Explored stateless observation and refined hydra explorer ticket #696
  • Write ops instructions and troubleshooting #569 and improve logs
  • Have a first end-to-end journey for external commits implemented #215
]]>
+ + Sebastian Nagel + https://github.com/ch1bo + + +
+ + <![CDATA[Network Team Update]]> + 2023-05-12-network + + 2023-05-12T00:00:00.000Z + + High level summary

We started working on a new way to switch between root & ledger peers (see +below). We continued to work on eclipse-evasion. We merged changes to +Handshake contributed by Galois Inc. We made improvements to our tests (fixed +a flaky test, added cddl specs for NodeToNodeVersionData and +NodeToClientVersionData). We improved our CI and automated the process of +releasing new package version to CHaP.

Detailed summary

We continued to work on testing eclipse-evasion.

We came up with an idea to limit how full node wallets relay on root peers +(currently operated by IOG, in future also CF and Emurgo). We designed +a switch to use ledger peers if the node tip is close enough to the current +time. For more details see #4530.

We merged changes to the handshake mini-protocol which allow one to query +server's node-to-node / node-to-client parameters. We are grateful to +Galois Inc. for implementing it, #4256 and #4538. We published new version +of packages to CHaP chap-#253.

We added DiffusionError wrapper. Thanks to it, ouroboros-consensus will +not duplicate diffusion errors messages in the log, #4537.

We fixed an issue which caused one of our tests to be flaky, #4515.

We added cddl tests for NodeToNodeVersionData and NodeToClientVersionData: +#4540, #4544 (in review).

We wrote scripts which will help us release packages as well as verify that we +released all the package necessary to build the newest set of packages, +#4542.

We renamed the consensus startup tracer and make sure it doesn't log +ExitSuccess exceptions, consensus-#71.

We reviewed PR which adds RawBearer API, #4395.

We made series of improvements to our CI:

  • #4539: we don't need to install cryptographic libraries in CI;
  • #4545: Javier Sagredo (consensus) cleaned up CI after consensus moved +to a new repo;
  • #4546: we switched to use GitHub merge queues;
  • #4549: we made it possible to trigger building haddocks manually;
  • #4553: we fixed and enhanced caching of building dependencies.
]]>
+ + Marcin Szamotulski + https://github.com/coot + + +
+ + <![CDATA[Ledger Team Update]]> + 2023-05-05-ledger + + 2023-05-05T00:00:00.000Z + + High level summary

The ledger team focused mainly on the conway ledger era and node integration. +For conway, we completed a large structural change that now allows +for delegation certificates to be parameterized by era, and introducing +new certificates for the first time since Shelley. +We also continue to build out our contraint based generators that we will +use to property test the conway era. +In particular, we can now generate an entire ledger state and a +transaction which is balanced with respect to the ledger state.

Low level summary

Conway certificates

Certificiates are now abstracted as a type family in the ledger codebase. +Moreover, there are new certificates in the Conway era to support CIP-1694, +and MIR certificates have been removed.

Constraint based testing

Our plan for property testing in the conway era is to no longer use the trace generators, +but instead generate ledger states and transactions based on constraints. +We hit a milestone this week, namely the ability to generate a balanced transaction in the context +of a ledger state, all based on our ever growing constaint language.

Integration work

Technical debt

]]>
+ + Jared Corduan + https://github.com/JaredCorduan + + +
+ + <![CDATA[Node API & CLI Team Update]]> + 2023-05-05-node-cli-api + + 2023-05-05T00:00:00.000Z + + 2023-05-05 - 2023-05-23

High level summary

  • Golden tests for cardano-cli command help output were added.
  • Documentation was updated with new libsodium installation instructions.
  • There were several updates for the cardano-cli:
    • Deletion of the deprecated shelley command group.
    • Addition of golden tests for CLI help.
    • An improvement to avoid bare IO in tests, allowing better error reporting in failed tests.
    • Generation of UTCTime test values without leap seconds (avoids erroneous test failures)
    • Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32.
  • The cardano-api underwent multiple refinements:
    • Implementing deposit handling when balancing transactions (necessary for Conway)
    • Cleaning up socket file path code.
  • Several changes were made to the cardano-testnet:
    • Adding golden tests for cardano-testnet help.
    • Removing all hardcoded yaml files in cardano-testnet
    • Improving cardano-testnet help output.
    • Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

]]>
+ + Jordan Millar + https://github.com/Jimbo4350 + + +
+ + <![CDATA[Mithril Team Update]]> + 2023-05-04-mithril + + 2023-05-04T00:00:00.000Z + + High level overview

The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version 1.35.7.

Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain.

Low level overview

  • Worked on the epic that designs and implements generic signing/verification of entity services #780:
    • Completed the implementation of the Certifier service in the aggregator #850
    • Completed the implementation of the signable builder for the Mithril Stake Distribution #851
    • Completed the implementation of the artifact builder for the Mithril Stake Distribution #870
    • Completed the implementation of the signable builder for the Full Immutables Snapshot #852
    • Completed the implementation of the artifact builder for the Full Immutables Snapshot #871
    • Completed the adaptation of the aggregator runtime to use the signable builder service #853
    • Worked on the adaptation of the signer runtime to use the signable builder service #854
    • Completed the definition of the entity service interface for verification/restoration #868
    • Completed the refactoring of the OpenMessage type #878
  • Completed the epic that simplifies the multi-signer in the aggregator #398:
    • Completed the extraction of the single signature registration from the multi-signer #643
  • Completed the upgrade of the Cardano node to version 1.35.7 #881
  • Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators #873
]]>
+ + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
+ + <![CDATA[Consensus Team Update]]> + 2023-05-03-consensus + + 2023-05-03T00:00:00.000Z + + High level summary

During the past two weeks we made some important progress in the Genesis design. +It seems the BlockFetch logic need not be modified for Genesis, although this +needs to be confirmed. We started a DoS mitigation handbook and updated our +conceptual component diagram to guide the Genesis design. We engaged with the +IOG researchers to work on the Limit on Patience attack vector, work in this +area is still ongoing. We sketched a design to decouple the CPU load of the node +from its responsiveness to the socket. Finally, we discussed with Networking our +approach to lower the performance impact of the BlockFetch decision logic, and +got green light from them.

We migrated the consensus code to a new +repository, splitting +it from the ouroboros-network repository, and released version 0.6 of +Consensus.

We also merged the mempool fairness improvement to main branch.

Another significant enhancement to our documentation was the addition of an +explanation of the hardfork combinator forecast horizon.

See the sections below for more details.

Genesis

We reviewed the BlockFetch design documentation, and added some source-code +comments that emphasize certain properties of the decisions the BlockFetch +logic makes that are helping us confirm that Genesis does not require any +changes to BlockFetch. We are waiting on input from our former system +architect to verify this.

We migrated and updated the conceptual component diagram in the ouroboros-consensus +repository which helps us situate the Genesis design and argument.

We engaged with the IOG researchers about the Genesis design. We sketched out a +way to address the concern that the Limit on Patiente (LoP) attack vector duty +cycle is indeed low, but it's still non-trivial to ultimately conclude it's +sufficiently low.

We also sketched a design to decouple the CPU load of the node from its +responsiveness to the socket, since the LoP is a relatively tight timeout, and +node performance bugs inducing seconds-worth of latency are unfortunately +familiar phenomena.

Fostering collaboration

We added an +explanation of +a question that we had to explain many times about the exact behavior of the +hardfork combinator forecast horizon.

]]>
+ + Damian Nadales + https://github.com/dnadales + + +
+ + <![CDATA[Performance & tracing update]]> + 2023-05-03-performance-and-tracing + + 2023-05-03T00:00:00.000Z + +
  • Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.
  • New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint.
  • Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on.
  • Infrastructure: The plutus-apps flake input for cardano-node has finally been removed.
  • Nomad backend: A PR implementing placement of benchmarking clusters has been merged.
  • Benchmarking

    The performance investigations on the 8.0 release branch have lead to pinpointing and addressing incosistent behaviour. For that, +we created yet another local reproduction with the workbench's forge-stress benchmark.

    Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into 8.0 and +subsequent releases.

    Additionally, we've refined the trace-bench family of profiles that target benchmarking our own new tracing system.

    Tracing

    Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally +intended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant +conversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system.

    Infrastructure & Analysis

    Dataflow documentation

    The LogObject CLI locli is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate +further development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting.

    Remove redundant Plutus flake input

    This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input, +we simplify the dependency graph for cardano-node, as well as enable immediate feedback when developing Plutus benchmarks.

    Nomad backend

    Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking. +This capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along +with various quality-of-life improvements, has been merged to master.

    ]]>
    + + Michael Karg + https://github.com/mgmeier + + +
    + + <![CDATA[DB-sync Team Update]]> + 2023-05-01-db-sync + + 2023-05-01T00:00:00.000Z + + High level summary

    Lower level summary

    • Prepared a schema change which is expected to speed up queries and help clients +#1389.
    • Ran a big number of benchmarks on the above to evaluate if this change is reasonable.
    • Performance optimization related to rewards +#1382
    • Using the cache in more places to reduce recourses usage +#1380
    • Evaluated risks related to UTXO-HD integration
    • Worked on a feauture request to split the tx_out to an address table +#1396
    • Worked on another feauture request to prune the consumed entries from the tx_out table +#1398
    • Prepared for CIP-1694 integration
    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-04-28-crypto + + 2023-04-28T00:00:00.000Z + + High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library.
    • KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction.
    • Sidechains: Started implementing ECC chip of JubJub over BLS12-381.

    Low level summary

    cardano-base

    • #255 finally merged 🎉
    • Additional tests for BLS bindings #384
    • Open PR for including test vectors created with zkscrypto's library, PR#397

    KES agent

    • Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period PR#389.
    • Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) #317.
    • Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim
    • Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes
    • Refactor MonadSodium into MonadMLock PR#388.

    Sidechains

    • Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)
    • Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Goedel Team Update]]> + 2023-04-28-goedel + + 2023-04-28T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is working on porting an existing formalisation of Ouroboros +Praos to a newer foundation.

    Details

    ]]>
    + + James Chapman + https://github.com/jmchapman + + +
    + + <![CDATA[Network Team Update]]> + 2023-04-28-network + + 2023-04-28T00:00:00.000Z + + High level summary

    The networking team has released the following packages to Hackage:

    We published an announcement blog post. We made progress +also on another blog post which will describes the design of the P2P networking +layer.

    After moving ouroboros-consensus to its own repository, we made +ouroboros-network compatible with GHC 9.4 and 9.6.

    We made cardano-client library independent of +ouroboros-consensus-diffusion.

    We prepared release of network packages for cardano-node-8.0.

    Detailed log

    Ouroboros-Network

    IO-Sim

    • io-classes-1.0.0.0, and following up releases: 1.0.0.1 (ghc-9.6 +support), 1.1.0.0 (documentation fix).
    • Fixed timeouts and delays in io-sim in a series of PRs: io-sim#81, +io-sim#82, io-sim#86, io-sim#87.
    • Renamed a module: io-sim#88.
    • Fixed a failing registerDelayCancellable test: [io-sim#80].
    • Use GitHub merge queue in io-sim repository.
    • CI: download stylish-haskell: io-sim#83.

    Typed Protocols

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-04-27-hydra + + 2023-04-27T00:00:00.000Z + + High-level summary

    This week, the Hydra team held their Monthly review meeting and drafted the +report which likely is published next week. They put the spec into the +repository and website, addressed a user issue and fixed the TUI peer list. +Furthermore, they updated dependencies, conducted a Twitter space on Auctions +use cases, covered the rollback bug with tests and implemented a solution. +Looking ahead, their goals for next week include releasing 0.10.0, implementing +timed transactions support, writing a Query API ADR, and grooming work items +like off-chain benchmarks.

    What did the team achieve this week

    • Held the Monthly review meeting and drafted the report (to be published next week)
    • Added the spec into the repository +#693 and published on +the +website
    • Groom and addressed user issue #823
    • Covered the rollback bug with tests and implemented a solution (to be reviewed) #784
    • Fixed the TUI peer list
    • Updated dependencies to match cardano-node master
    • Conducted a twitter space on Auctions use cases

    What are the goals of next week

    • Release 0.10.0
    • Support timed transactions solution drafted and validated API with users
    • Write Query API ADR and groom a concrete step
    • Groom and solve PostTxOnChainFailed UX problem #832
    • Groom off-chain benchmarks idea #186 and turn it into a feature
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-04-21-hydra + + 2023-04-21T00:00:00.000Z + + High-level summary

    This week, the Hydra team worked on several fronts, including fixing state +machine continuity on-chain, discussing voting project solutions, exploring +adding Hydra support to kupo, and improving API navigation with a sidebar. The +team also updated dependencies and fixed issues in their test suites. Moving +forward, the team plans to hold the next monthly review meeting, address a user +issue, prepare for the 0.10.0 release, and work on a dirt road fix for the +rollbacks issue with proper test coverage.

    What did the team achieve this week

    • Fixed scripts to enforce state machine continuity on-chain #777.
    • Took part in a twitter space on Scaling Cardano.
    • Joined a CBIA meeting to discuss Cardano network protocols & how to specify them.
    • Discussed potential solutions of ensuring vote uniqueness in the voting project.
    • Updated dependencies to match cardano-node master to prepare for upcoming releases and hard-forks
    • Explored adding Hydra support to kupo, a lightweight Cardano chain indexer - some more work required.
    • Improved navigation of the API Reference with a sidebar, see unstable API version.
    • Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)

    What are the goals of next week

    • Monthly review meeting (join via Discord or AddEvent) & report
    • Dirt road fix for rollbacks #784 properly covered by a test.
    • Groom and ideally address user issue #823.
    • Put the spec into the repo #693 and prepare release 0.10.0.
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-04-21-ledger + + 2023-04-21T00:00:00.000Z + + High level summary

    We continued to make progress on CIP-1694 and the conway ledger era. +In particular, the conway era now supports Plutus V3. +Finally, we made small improvements to the ledger API and now host +our Haskell code documentation (haddocks) on github pages.

    Low level summary

    Conway ledger era

    Haddocks hosted on github pages

    Small improvements to the API

    Technical Debt

    • [pull-3367] Fix cost model json instances.
    • [pull-3371] UMap cleanup.
    • [pull-3373] Upgrade to ghc 9.2.7 and cabal 3.10.1.
    • [pull-3375] Sadly, we had to revert the TICKF optimizations. There was a regression we do not yet understand.
    • [pull-3377] Fix cabal warnings.
    • [pull-3383] Fix multi-asset test.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-04-20-mithril + + 2023-04-20T00:00:00.000Z + + High level overview

    The Mithril team released a new 2315.0 distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures.

    Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network.

    Low level overview

    • Released the new distribution 2315.0
    • Completed the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the signed_entity table #816
      • Completed the creation of the signer table #814
      • Completed the migration/adaptation of the single_signature table #829
    • Worked on the epic that designs and implement generic signing/verification of entity services #780:
      • Completed the definition of the interface of the generic entity service for signing #847
      • Worked on the implementation of the Certifier service in the aggregator #850
      • Completed the extension of the SignedEntityType type #848
      • Completed the implementation of the Tick service in the aggregator #849
      • Worked on implementing the signable builder for the Mithril Stake Distribution #851
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2023-04-20-node-cli-api + + 2023-04-20T00:00:00.000Z + + 2023-04-20 - 2023-05-04

    High level summary

    • Various fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-04-19-consensus + + 2023-04-19T00:00:00.000Z + + High level summary

    This week the consensus team continued working on the improved DB lock mechanism +for UTxO-HD, and modifications to the mempool benchmarks that this prototype +requires.

    On the Genesis front we validated that the fragment size calculation in +BlockFetch is a major performance sink for ChainSync Jumping. By removing it +we will get performance that is acceptably close to that of the baseline. We +also started investigating a performance fix that does not alter the existing +baseline behavior too much. In addition we reviewed our Genesis attack vector +calculations.

    On the support front we released Consensus 0.4, and we are working on improving +our release process, to support the Cardano-wide efforts in this area. We also +performed an analysis on the number of file descriptors that consensus use. This +information can be used by the node operators to check if the number of file +descriptors they want to support are enough.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Performance & tracing update]]> + 2023-04-19-performance-and-tracing + + 2023-04-19T00:00:00.000Z + +
  • Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.
  • New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois.
  • Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run.
  • Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench.
  • Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.
  • Benchmarking

    We have performed various cluster runs targeting the 8.0 release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile epoch-transition for local reproduction of what we observed on the benchmarking cluster.

    Furthermore, we bridged the gap between the run data from the 1.35.x releases to the the new 8.0.x release branch. This included walking the +master branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial +in locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of +benchmarks.

    Tracing

    In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still +ongoing.

    In coordination with Galois, who are developing a system assurance service by observing a number of cardano-nodes, we're working with the implementation +of data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational +burden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether cardano-tracer could be extended with a richer +feature set to that end.

    Infrastructure & Analysis

    Detailed manifest

    A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with. +These dependencies come from different package sources, have different versioning policies, and an identical package version might provide different +performance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated +by making all component bumps visible and accessible.

    GHC profiling inside workbench

    The workbench has been equipped with a new -profnix profile flavour. This enforces a -fprof-auto build for all node-related packages. The type of +profiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already +been merged to master.

    Nomad backend

    The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances. +This results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing.

    ]]>
    + + Michael Karg + https://github.com/mgmeier + + +
    + + <![CDATA[Incident Report]]> + 2023-04-17-ledger + + 2023-04-17T00:00:00.000Z + + Incident reporting: Cardano block production temporary outage

    On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a ‘critical’ incident, thus warranting immediate response and investigation by IOG engineers. +The investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue – a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite. +Following successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version. +With the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue.

    Further Details

    You can read more details on the incident and how it was managed from SundaeSwap’s Pi Lanningham here. Thanks again to all the community for its support in identifying and fixing this bug.

    ]]>
    + + Kevin Hammond + https://github.com/kevinhammond + + +
    + + <![CDATA[Goedel Team Update]]> + 2023-04-14-goedel + + 2023-04-14T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has submitted two papers for publication, carried +out consultancy with other teams and has an opening for an intern.

    Details

    ]]>
    + + James Chapman + https://github.com/jmchapman + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-04-14-hydra + + 2023-04-14T00:00:00.000Z + + High-level summary

    This week, the Hydra team focused on improving the smoke test, fixing developer +tooling, and improving the API for voting use cases. They reviewed progress on +auction, payments, and voting projects and made worked on reproducing a bug with +handling rollbacks. Moving forward, the team plans to update dependencies, +implement a dirt road fix for the rollbacks bug, and explore adding Hydra +support to kupo.

    What did the team achieve this week

    • Reviewed progress on auction, payments and voting projects
    • Improved smoke tests so they can run on mainnet
    • Fixed a regression in the development environment and updated cardano-node +used in tests
    • Improved API with more configurability to unblock voting use case
      • Exclude utxo in SnapshotConfirmed outputs #808
      • Addressed a user request by only sending Greetings once #813
    • Reproduced the rollback bug by improving our model-based test suite #784

    What are the goals of next week

    • Update dependencies to match cardano-node master
    • Dirt road fix for rollbacks #784
    • Update Hydraw to maintain state locally
    • Explore adding Hydra support to kupo
    • Put disclaimer texts and closing mainnet compatibility feature #713
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-04-07-hydra + + 2023-04-07T00:00:00.000Z + + High-level summary

    This week, the Hydra team published the monthly report for March, created +separate links for different versions of documentation, and clarified potential +solutions for the Rollbacks bug. The team also discussed Query API requests for +the Hydra Voting project and met with community members to answer questions +about Hydra. Moving forward, the team plans to integrate the specification into +the repository, implement a short-term fix for the Rollbacks issue, and draft a +Query API ADR.

    What did the team achieve this week

    • Published monthly reports on website
    • Separate last released and latest versions of docs (e.g. normal released vs. /unstable)
    • Discussed Query API concerns from Hydra Voting project (link)
    • Clarified rollbacks bug and defined possible solutions (short and long term) #784
    • Met with community members to answer questions about Hydra

    What are the goals of next week

    • Finally get the docs integrated into the repository #693
    • Dirt road fix for rollbacks #784
    • Disclaimer text and detail known issues about mainnet compatibility +#713
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-04-06-mithril + + 2023-04-06T00:00:00.000Z + + High level overview

    The Mithril team released a new 2313.0 distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages.

    Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to 1.35.6.

    Low level overview

    • Released the new distribution 2313.0
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the epoch_settings table #813
      • Completed the migration/adaptation of the signed-entity-type table #815
      • Completed the migration/adaptation of the certificate table #817
      • Completed the migration/adaptation of the open_message table #827
      • Completed the migration/adaptation of the signer_registration table #828
    • Completed the refactoring of the dependency injection of the aggregator #823
    • Completed the cleanup of the multi-signer of the aggregator #824
    • Completed the upgrade of the Cardano node to 1.35.6 #843
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-04-05-consensus + + 2023-04-05T00:00:00.000Z + + High level summary

    This week the consensus team finished the UTxO-HD prototype refactoring. We are +now working on improving the DB lock mechanism to improve performance. We also +introduced several improvements to the file system abstraction and simulation +layer (fs-sim), which culminated in the release of fs-sim-0.1.0.0 and +fs-api-0.1.0.0 to CHaP.

    On the Genesis front we distributed the updated Genesis design document, +soliciting feedback from Networking Team and IOG Researchers. We also opened up +a PR for the adversarial leader schedule QuickCheck generator, which is being +reviewed.

    On the support front, we got a new Consensus version that can use different +fundamental VRF crypto primitives for Babbage and Conway eras.

    On the tech debt front we fixed an bug in the followers logic, which was +discovered by our QuickCheck property tests.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2023-04-05-node-cli-api + + 2023-04-05T00:00:00.000Z + + 2023-04-05 - 2023-04-19

    High level summary

    • Introduce new governance commands create, answer and verify. This allows us to have onchain polls.
    • Begin making changes in cardano-api to accomodate for CIP-1694
    • Rename TestEnableDevelopmentHardForkEras to ExperimentalHardForksEnabled and TestEnableDevelopmentNetworkProtocols to ExperimentalProtocolsEnabled
    • Various bug fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Performance & tracing update]]> + 2023-04-05-performance-and-tracing + + 2023-04-05T00:00:00.000Z + +
  • Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.
  • New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput.
  • Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged.
  • Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added.
  • Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.
  • Benchmarking

    We have adapted our benchmarking cluster to the requirements of the 8.0 release branch. Testing runs of a very early feature branch for 8.0 +helped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for 8.0 soon.

    Tracing

    Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very +detailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing +the highest possible throughput of data for forwarding to cardano-tracer.

    Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions +for tunneling trace forwarding from a node to cardano-tracer via an easy to manage system service, which will match the production setup of most users.

    Infrastructure & Analysis

    General

    Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance +analysis can be fed back and serve as an additional point of comparison.

    Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations.

    Plutus library

    We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles. +This will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile. +It is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit.

    Nomad backend

    The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is +being improved to minimize any friction for the backend user.

    ]]>
    + + Michael Karg + https://github.com/mgmeier + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-03-31-crypto + + 2023-03-31T00:00:00.000Z + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Started looking into full-node verifier
    • cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties.
    • KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent.
    • Sidechains: Included BLS12-381 & JubJub to halo2curves
    • MuSig2: Final modifs to C version.

    Low level summary

    Mithril

    • Started designing how a full-node verifier would work. Issue comming in the next couple of weeks.

    cardano-base

    • BLS12-381 branch merged PR#266.
    • Testing strategy for BLS bindings:
      • Test-vectors for Groth16, and simple BLS signatures ready.
      • Test-vectors with different library, and created by different engineer.

    KES agent

    • Resolved issues of circular dependency
    • Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same.
    • Opened a PR for raw bearer branch in ouroboros network PR4395
    • Resolved a bug where the agent node did not properly closed connections
    • Updated version of IOSim allowed us to finish a first version of KES agent.

    Sidechains

    • Included BLS12-381 curve to our branch of halo2curves
    • Included JubJub to our branch of halo2curves

    MuSig2

    • Minor reorg PR#42
    • Started including fuzz testing for deserialisation PR#
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Goedel Team Update]]> + 2023-03-31-goedel + + 2023-03-31T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on final drafts of two papers +for internal review and planning next steps of analysis of consensus +design refiniments.

    Details

    • Preparing final draft of DeltaQSD algebra paper for internal review

    • Preparing final draft of verifying design refinements for +distributed system design for internal review

    • Planning next phase of consensus design refinement analysis

    ]]>
    + + James Chapman + https://github.com/jmchapman + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-03-31-hydra + + 2023-03-31T00:00:00.000Z + + High-level summary

    This week, the Hydra continued work on finishing mainnet compatibility. The +semi-automated smoke tests and some missing documentation is still preventing +from calling that fully done. They fixed smaller issues and made a step in the +Head protocol more robust. Besides development, they met with interested people +from the community who want to get started collaborating on communication and +marketing materials.

    What did the team achieve this week

    • Groomed and followed-up on GetUTxO user request discussion #797
    • Fixed hydra-node crashes after forks #560
    • Made collectCom more robust and aligned with spec #786
    • Completed configurable API feature #380
    • Met potential contributors about Hydra communication and marketing materials
    • Versioned documentation: we have a unstable bleeding edge version available as well now, seperate from the last released version

    What are the goals of next week

    • Follow-up backlog and roadmap clean-up
    • Complete mainnet compatibility feature #713 (documentation updates)
    • Integrate Hydra specification into repository #693
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-03-31-ledger + + 2023-03-31T00:00:00.000Z + + High level summary

    We are still heavily involved in work related to preparing the next release. +The other main thing we have worked on is experimentation about how we will +handle the DRep stake distribution for CIP-1694 in the conway ledger era. +Lastly, we merged a fix for +node-4826 +into our main branch (there will be a post-mortem shortly).

    Low level summary

    Support for the next release

    • pull-3363 - Fix problems relating to Arbitrary instances used by consensus.
    • pull-3361 - Remove the alonze genesis from the conway genesis.
    • pull-3360 - Translate bad pointer addresses to valid ones in conway.
    • pull-3357 - Fix a bug relating to zero valued ADA in the script context.
    • pull-3356 - Added needed instances (Arbitrary and Serialization) for conway integration.
    • pull-3345 - Added helper functions for the CLI.
    • pull-3342 - Fix a bug with a CLI helper function (having to do with deposit tracking).

    Experiments for DRep stake distribution

    Adding another stake distribution to the ledger state presents some new challenges. +We would like to be able to use the current stake distribution at the epoch boundary +for DRep voting so that people can always vote themselves in time for any proposal. +To this end, we have a prototype of an incremental computation based on the incremental +lambda calculus, together with tests and benchmarks (which are very promising). +See pull-3344.

    Additionally, more of the ledger state is going to need to be rearranged to accomodate +the new incremental computations. +We have two draft PRs up for possibles solution. +See pull-3353 and pull-3364.

    Technical debt and bug fixes

    Documentation changes

    • pull-3354 - Rename "optional datums" with "supplemental datums" in the alonzo spec.
    • pull-3352 - Add a section to the Shelly errata about the individual deposit tracking.
    • pull-3351 - Further clarify the details regarding the script integrity hash.
    • pull-3350 - Some cleanup of the Babbage spec.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[System Test Team Update]]> + 2023-03-27-system-test + + 2023-03-27T00:00:00.000Z + + High level summary

    Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.5 and 1.35.6 releases (and their predecessing release candidates) and ran tests on branch with the UTxO-HD functionality.

    Workstreams

    Framework improvements:

    • improvements in searching for unexpected error messages in log files during test run
    • added support for UTxO-HD testing
    • added support for the new P2P topology format
    • added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)
    • added preliminary support for the Conway era
    • added support for running tests on the Preview testnet

    Full list of closed PRs

    Node:

    • ran tests on node branch with the UTxO-HD functionality
    • tested the 1.35.5 release
    • tested the 1.35.6 release

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests
    ]]>
    + + Martin Kourim + https://github.com/mkoura + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-03-24-hydra + + 2023-03-24T00:00:00.000Z + + High-level summary

    This week, the Hydra had a team workshop and conducted the monthly review +meeting for March. They demonstrated a Hydra Head on mainnet, which was running +the hydraw demo application. While this marks an important milestone, they also +emphasized that more features are still to be added as needed for applications +to run on Hydra. Besides this, the roadmap is getting cleaned up to encourage +discussions and provide more space for user requests.

    What did the team achieve this week

    • Monthly review meeting slides/recording, full report of March next week
      • Opened a head on mainnet with hydraw demonstration
      • Hydra pay updates
    • Team workshop in Austria
      • Hydra presentation at the Cardano Foundation in Zurich
      • In-person grooming session, marked many items as candidates to be rather :idea: dicussions
      • Improved head protocol #786 and investigated a potential bug in rollback handling #784
      • Team building and retrospective

    What are the goals of next week

    • Follow-up on backlog and roadmap clean-up
    • Complete mainnet compatibility feature (documentation updates)
    • Make API more configurable #380
    • Integrate Hydra specification into repository #693
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[DB-sync Team Update]]> + 2023-03-23-db-sync + + 2023-03-23T00:00:00.000Z + + High level summary

    The DBSync team worked in performance enhancements issues, on providing new db-sync options and on +technical debt and bug fixing. The DBSync team also on boarded a new member.

    Low level summary

    • Worked on an issue which causes ada_pots tables to include the values related not only to an +epoch, but also the first epoch of the last epoch. +#1367
    • Fixed an issue where the epoch table didn't rollback and caused wrong values +#1370
    • Fixed an issue were users with disable-ledger option had to provide the state dir option, even +though it was never used. Also refactored the no ledger part of the codebase. +#1378
    • Improved the perforance by using the cache more. Also provided many new options which enables or +disables parts of db-sync. In addition a new --turbo mode is enables which allows db-sync to sync +mainnet in hours. +#1379
    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-03-23-mithril + + 2023-03-23T00:00:00.000Z + + High level overview

    The Mithril team released a new 2310.0 distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images.

    Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano mainnet and they have fixed some bugs.

    Low level overview

    • Completed the epic that implements eras behavior switch #707:
      • Completed handling the API version switch at era transition #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed on the migration/adaptation of the stake_pool table #787
      • Worked on the migration/adaptation of the epoch_settings table #813
      • Worked on the migration/adaptation of the signed-entity-type table #815
      • Completed the creation of a stake distribution service #799
    • Completed the testing of Mithril with Cardano mainnet network #777
    • Completed qualifying the computation of the stake distribution #810
    • Completed the testing of the Docker client in the Mithril Client multi-platform test workflow #794
    • Worked on bugs and optimizations:
      • Fixed a bug that made computation of the stake distribution occur multiple times during an epoch #804
      • Fixed a bug that created deadlocks on the SQLite connection #807
      • Optimized the error message and the behavior of the signer node when KES keys have expired #820
      • Upgraded the infrastructure of the testing-preview and pre-release-preview networks #801
      • Re-genesis of the testing-preview network #803
      • Re-genesis of the pre-release-preview network #818
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-03-22-consensus + + 2023-03-22T00:00:00.000Z + + High level summary

    This week the consensus team continued working on the refactoring of the UTxO HD +prototype, and design and testing of Genesis. We also extracted the fs-sim +package, which provides a file-system abstraction layer that can be used for +testing and simulation. This makes the Consensus code base smaller, while +providing a package that the community can reuse and contribute to. We also +fixed a failing property test related to iterators. We are also working on +mempool and VRF improvements.

    Low-level details

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2023-03-22-node-cli-api + + 2023-03-22T00:00:00.000Z + + 2023-03-22 - 2023-04-05

    High level summary

    • Added new cardano-cli ping command which allows users to ping remote cardano-nodes.
    • The transaction build command now can automatically balance multiassets
    • New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Performance & tracing update]]> + 2023-03-22-performance-and-tracing + + 2023-03-22T00:00:00.000Z + +
  • Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.
  • New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users.
  • Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery.
  • Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks.
  • Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing.
  • Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.
  • Performance

    New tracing

    The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe +a slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use.

    GHC RTS parametrization

    We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies +on different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use.

    Open Sourcing

    Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases.

    Tracing

    For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well +as a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points +for users of the new system, depending on their wants and needs.

    Infrastructure & Analysis

    General

    Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will +increase confidence in specific metrics.

    Nomad backend

    We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis +is patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries.

    ]]>
    + + Michael Karg + https://github.com/mgmeier + + +
    + + <![CDATA[Network Team Update]]> + 2023-03-21-network + + 2023-03-21T00:00:00.000Z + + High level summary

    In the last spring we released cardano-node-1.35.6 with dynamic P2P +functionality.

    We received reports from some SPOs who encountered problems with their non +P2P block producing nodes not being able to connect to their P2P relay. Karl +Knutsson (from Cardano Foundation) reproduced this issue between two nodes (a +non P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed +it and found a bug in the legacy non p2p code. The bug is only possible to +trigger with a P2P node which is binding its outbound connection port to +a fixed IP address and port (default in p2p). A possible solution was found. +For more information see #4465.

    We released cardano-ping-0.1.0.0 package to CHaP. cardano-ping is no +longer available as a standalone binary, but instead it will become part of +cardano-cli (see #4664)

    We are testing cardano-node with peer sharing functionality (#4019).

    We are working on eclipse evasion. We added new class of peers: big ledger +peers to the outbound governor, implemented tests and fixed found issues +(#4462). We also made the information if a given peer plays the role of +a big ledger peer to the mini-protocols. This will allow to modify +mini-protocol applications for such peers. As part of this functionality we +refactored some core types in the network code which simplifies exposed API.

    Together with Moritz Angerman we started to update io-sim to ghc-9.6.1 (see +#73).

    We merged a fix of configuration of accepted connections limit in +cardano-node (see #4902).

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-03-17-crypto + + 2023-03-17T00:00:00.000Z + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: RFP finished. Code ready for audit.
    • cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams.
    • KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing.
    • Sidechains: Preparing proving system to use the curves needed for main-net PoC.

    Low level summary

    Mithril

    • Merged PR#783
    • RFP for crypto audit ready.

    cardano-base

    • BLS12-381 branch approved PR#266. Blocker is Windown's CI. Working on it
    • Testing strategy for BLS bindings:
      • Preparing test-vectors for Groth16, and simple BLS signatures
      • Finding community projects to help write their use cases
      • Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)
    • Wrote blogpost on how using the same key for ed25519 and VRF completely breaks the security of both systems

    KES agent

    • Started integration of sockets interface used in consensus
    • Use that for de/ser
    • Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim
    • Results in having to parametrise for IOSim in KES and DSIGN for testing

    Sidechains

    • Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages.
    • Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS.
    • EdDSA over JubJub ready
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-03-17-hydra + + 2023-03-17T00:00:00.000Z + + High-level summary

    This week, the Hydra team has continued work on the mainnet compatibility of the +hydra-node. They added a golden test suite for hydra-plutus scripts, added +some detection of hydra-node misconfiguration, established a limit of 100 ADA +per commit and other smaller tasks to prepare for a mainnet beta release.

    Next week there will be a small team workshop to push for demonstrating a Hydra +Head on the Cardano mainnet, ideally just in time for the monthly review +meeting. See the hydra channels on the IOG Technical Community discord server +for details.

    What did the team achieve this week

    • Implement a 100 ADA hard-coded commit limit in the hydra-node +#763
    • Pay back funds to faucet after smoke-test run +#773
    • Setup custom github runner for smoke-tests on mainnet +#775
    • Created golden tests to assure the script hash stays the same between +changes #772
    • Removed hardcoded error codes in plutus scripts +#768
    • Detect misconfiguration of a hydra-node given persistent state +#767
    • Met with potential users for hydra-pay
    • Prepared hydra workshop

    What are the goals of next week

    • Hydra monthly meeting
    • Open a multi-party head on mainnet
    • Complete mainnet compatibility feature
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-03-17-ledger + + 2023-03-17T00:00:00.000Z + + High level summary

    We made further progress on the conway ledger era. +In particular, we expanded the ledger API significantly, including lots of governance features. +We also made progress on the specification and corresponding work in the Haskell implementation.

    We also continued to integrate the latest ledger packages into cardano node and addressed +technical debt.

    Low level summary

    Expanded ledger API

    The ledger API was significantly expanded to include:

    • a lot of protocol parameter support
    • versioning support (type level ledger eras and protocol versions)
    • auxiliary data support
    • many new lenses
    • support for witnesses
    • support for conway governance

    See pull-3328.

    Conway ledger rules

    We have made progress on the formal ledger specification for the Conway era. +Moreover, the corresponding Haskell updates were also completed:

    Incremental SPO/DRep stake distribution computation

    We have a working (and correct) proof of concept for how to use the incremental lambda calculus +to maintain several of the stake distributions incrementally. +For the per-SPO distribution, this is a performance improvement. +For the (conway) per-DRep distribution, this is will allow those who have delegated their votes +to a DRep to have time to react to any votes that they disapprove of. +(Sorry, no code to share just yet, more to come.)

    Technical debt

    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Goedel Team Update]]> + 2023-03-16-goedel + + 2023-03-16T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers +improving the deltaQ tutorial, consulting on performance design, and +the final version of the Djed paper.

    Details

    • Preparing draft of DeltaQSD algebra paper for ICE 2023

    • Successful outcome of Marlowe consultancy leading to substantial +improvement in performance

    • Preparing sections on the communication language and bisimulation +proofs for draft paper about verifying design refinements for +distributed system design

    • Camera ready version of Djed paper under preparation

    ]]>
    + + James Chapman + https://github.com/jmchapman + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-03-10-hydra + + 2023-03-10T00:00:00.000Z + + High-level summary

    This week, the Hydra team addressed issues with committing complex UTxOs into a +Hydra Head, prepared the hydra-node to be run on mainnet (soon) and improved +the test suite of the hydra-plutus scripts. The specification is constantly +getting improved upon reviewer feedback on overleaf - this week the graphical +notation was refined to be more transaction-focused.

    What did the team achieve this week

    • Clarified bug of committing UTxOs with reference scripts to a Hydra head #737
    • Prepare usage of hydra-node on mainnet by updating command line options #715
    • Improved our mutation test suite to all expected errors #705
    • Re-opened our persistent hydraw demo head on preprod using version 0.9.0
    • Updated on-chain graphs to be more transaction-focused in the specification

    What are the goals of next week

    • Complete mainnet compatibility feature
    • Prepare the Hydra workshop
    • Address all todo’s in the Hydra specification
    • Unblock the auctions project with commit from script a solution
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-03-09-mithril + + 2023-03-09T00:00:00.000Z + + High level overview

    The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano mainnet and computes the stake distribution with the optimized unreleased Cardano CLI command.

    Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup.

    Low level overview

    • Worked on the epic that implements eras behavior switch #707:
      • Completed the deployment of the era behavior switch to the test networks #752
      • Completed the enhancement of datum generation for era markers #786
      • Worked on handling the API version with an era switch #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Worked on the migration/adaptation of the stake_pool table #787
    • Completed the refactoring of errors in the signer and aggregator state machines #665
    • Worked on testing Mithril with a mainnet Cardano network #777
    • Worked on fixing bugs with the Docker client image:
      • Fixed a bug that made the Docker client container crash at startup #769
      • Fixed a bug that prevented the restoration of a snapshot with a Docker client #791
      • Worked on testing the Docker client in the Mithril Client multi-platform test workflow #794
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-03-08-consensus + + 2023-03-08T00:00:00.000Z + + High level summary

    The Consensus team continued working on refactoring and improving the UTxO-HD +prototype, and introducing improvements to the lmdb related packages. In +particular we identified an opportunity to gain performance by handling locks in +a more optimal way.

    On the Genesis front, we sketched a mitigation for an issue that PNSol and +Researchers caught. We also came op with a road map for not only testing the +Genesis prototypes, but also for enriching the tests we already have.

    Regarding technical debt, next to some minor improvements, we created +component-level micro-benchmarks for adding transactions to the mempool. The +results of these benchmarks will be published in the ouroboros-consensus web +page.

    We also finished moving the Consensus documentation to the ouroboros-consensus +repository, released ouroboros-consensus 0.3.0.0, and reduced the time +GitHub actions take in ouroboros-network.

    Workstreams

    UTxO HD Prototype

    We continued working on refactoring and improving the UTxO-HD prototype. As a +result of the first round of sytem-level benchmarks, we identified an +opportunity to optimise the way we handle locks to improve performance +(#4393).

    Also, we introduced several improvements to the lmdb related packages:

    Genesis

    We sketched out a mitigation of the issue that PNSol and Researchers caught in +the Genesis design.

    We came up with a road map for testing the Genesis prototypes, including early +milestones that are applicable to today's master branch, ie tests that are +useful before Genesis, and that will be nicely enriched when we do add Genesis.

    We developed the aforementioned tests, specifically a QuickCheck generator for +the Honest leader schedule and one as-aggressive-as-possible Adversarial +leader schedule that together satisfy the Praos properties that the Consensus +design takes as invariants.

    We investigated why the improved ChainDB queueing implementation behaves +differently in the baseline compared to the prototype, and we are close to +having a full picture of how the Consensus components interact during bulk sync.

    Technical debt

    We created component-level micro-benchmarks for adding transactions +to the mempool. We plan on extending this to more mempool actions and different +types of blocks. We store the benchmark data to make it available +to the GitHub action that publishes the benchmarks results.

    Other minor improvements include:

    • Removal of Test.Util.Classify in favour of Test.StateMachine.Labelling.
    • Addition of -Wunused-packages to the default ghc-options for Consensus +packages.

    Fostering collaboration

    We finished moving the Consensus documentation from +ouroboros-network to ouroboros-consensus, in preparation for +migrating the code to the latter repository.

    Support

    We released ouroboros-consensus 0.3.0.0.

    We reduced the load in the ouroboros-network GitHub actions, +thereby reducing the time CI jobs take.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2023-03-08-node-cli-api + + 2023-03-08T00:00:00.000Z + + 2023-03-08 - 2023-03-21

    High level summary

    General bug fixes and some refactoring

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Performance & tracing update]]> + 2023-03-08-performance-and-tracing + + 2023-03-08T00:00:00.000Z + +
  • Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.
  • New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.
  • Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.
  • Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.
  • Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.
  • Performance

    1.35.6 release

    Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.

    Analysis pipeline

    Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better +differentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance. +Additionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking +data more easily accessible.

    Open Sourcing

    As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable +third parties to make use of that data much more easily, by having reliable guidelines and a working example.

    Tracing

    The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make +the switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.

    Infrastructure

    Nomad backend

    The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented.

    ]]>
    + + Michael Karg + https://github.com/mgmeier + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-03-03-crypto + + 2023-03-03T00:00:00.000Z + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.
    • cardano-base: BLS branch is now ready for review. We are workign forward its merge.
    • KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.
    • Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs

    Low level summary

    Mithril

    • Bumped to version 0.2.0 the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using mlock.
    • Opened PR#783 to update dependency
    • Improved testing for batch opening of mtree, PR#773
    • Improved testing for batch verification of STM sigs PR#774
    • RFP for crypto audit almost ready.

    cardano-base

    • BLS12-381 branch finally ready for review PR#266

    KES agent

    Team off for one week. Other progress:

    • Learning about raw direct-bearer abstraction. An interface for sockets in consensus.
    • use that for direct ser/deser
    • written those syntaxes for ouroboros (coming PR)
    • the kes agent will depend on that.

    Sidechains

    Progress with familiarisation of Halo2 library to write circuits.

    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Goedel Team Update]]> + 2023-03-03-goedel + + 2023-03-03T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, improving the deltaQ tutorial, consulting on +performance design, and the Djed paper has been accepted for +publication.

    Details

    • Preparing draft of DeltaQSD algebra paper for FORTE 2023

    • Extending the technical report on which the above paper is based

    • Consulting with an external company on performance engineering of Plutus contracts

    • Planning improvements and collecting material for the deltaQ +tutorial based on experience with systems that manage risk at +multiple timescales

    • Preparing sections on the communication language and idempontency +laws for draft paper about verifying design refinements for +distributed system design

    • Studying Cardano chain sync protocol

    • "Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin +Protocol" has been accepted for publication at IEEE ICBC 2023

    ]]>
    + + James Chapman + https://github.com/jmchapman + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-03-03-hydra + + 2023-03-03T00:00:00.000Z + + High-level summary

    This week, the Hydra team released version +0.9.0 - a version +of the hydra-node with fully specified behavior of on-chain scripts and +off-chain head-logic, decreased costs for opening/closing a Head and scalable +contestation deadline semantics. Check out the full release notes for details.

    Furthermore, they published the monthly +report of the Hydra project +and conducted a review meeting with an increasingly wider audience. The team +plans to extend invitations through the new Hydra +#announcements discord channel for the next +months, stay tuned!

    What did the team achieve this week

    • Monthly review meeting with report published on website
    • Fixed smoke tests #726
    • Reduced the cost of opening/closing a Head (error codes #748 + head reference script #701)
    • Released version 0.9.0
    • Conducted a first experiment on mainnet compatibility #713
    • New discord category with #announcements channel
    • Received a demo about the Hydra for Voting project
    • Lightning talk on mutation-based testing (to be shared)
    • New themes view in on our roadmap and some rearranging as we align it with high-level objectives
    • Clarified things with researchers, but mostly identified action items for them

    What are the goals of next week

    • Redraw transaction graphs and address TODOs specification
    • Run hydraw with 0.9.0 on preprod
    • Make smoke tests on mainnet possible
    • Groom the explorer item
    • Unblock the auctions projecth with commit from script a solution
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-03-03-ledger + + 2023-03-03T00:00:00.000Z + + High level summary

    We have focused the last two weeks on CIP-1694, integration of the last several months of ledger +work into consensus and node, and testing infrastrutcture that we will use in the conway ledger era.

    Low level summary

    Conway rules

    We made a major update to the conway era so that the implementation is now in sync with the spec +with respect to the ratification and enactment logic.

    See the notes in pull-3291 for more details.

    Constraint based generators

    This week we hit a major milestone in our efforts to build out better property based testing +support for the main ledger properties. +The new constraint based generators can now generate full ledger states with what is probably +very close to the real constraints (if anything, it is under constrained). +Next we will work on generating a transaction in the context of a ledger state, which would allow +us to actually start using these generators for real tests.

    See pull-3219.

    Preparing a release, now with proper versioning

    After quite some time, we are ready to release a version of ledger that will work with a new +version of consensus, using CHaPs.

    See pull-3308.

    Technical debt

    • We cleaned up the redeemer serialization code (to prevent future mistakes). See pull-3269.
    • We added a note to the Alonzo spec, specifying that the transaction inputs are +lexicographically ordered in the Plutus script context. See pull-3306.
    • We fixed a problem with the address deserialiazation +(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway). +See pull-3307.
    • We fixed a problem with our nix build. See pull-3311.
    • We fixed a problem with our NoThunks tests. See pull-3310.
    • We improved our nightly tests. See pull-3316.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Network Team Update]]> + 2023-03-02-network + + 2023-03-02T00:00:00.000Z + + High level summary

    In the current sprint the networking team focused on fixing bugs and pushing +forward implementation of eclipse evasion. We also found a bug in our +simulation testing setup (in integration of test node). We also overviewed the +work on extending handshake protocol which is delivered by Galois Inc.

    We published ouroboros-network-0.4.0.1 and +ouroboros-network-protocols-0.3.0.0 to CHaP.

    We also fixed a bug in cardano-node which results in not being able to +configure inbound connection limits, see PR #4902.

    Together with Karl Knutsson (CF) we realised an issue in cardano-cli: it's +validation of DNS names, IP address & ports when registering a stake pool +should be more strict to protect against common mistakes which we identified on +the chain. See issue #4929.

    Detailed work log

    In PR #4385 we fixed two bugs in peer state actions. First one results in +a busy loop if demotion from hot to warm times outs. This busy loop is +eventually exited when mux exits (we reported this in our previous report). +This fix made it to 1.35.6 release as well.

    In addition the PR #4385 also fixes another bug which results in hot -> warm +-> hot demotion / promotion busy loop.

    The PR #4385 also fixed a bug in a node only used in simulation which +resulted in not using chain-sync or block-fetch mini-protocols. In the +review process, we realised that the header-body split in the simulated node +requires further work (see PR #4419, which is under review).

    The PR #4385 also extend our generators, which together with the above fix, +cover the hot -> warm -> hot demotion / promotion busy loop.

    In PR #4419 we introduce a ChainDB for our simulation node, which plays +similar role to ChainDB in the ouroboros-consensus: a persistent (across +simulated restarts) store of blocks which does chain selection. This ensures +that the simulated node is using block-fetch to download blocks announced by +chain-sync mini-protocol.

    We also made progress with reviewing PR #4019 - peer sharing.

    We also fixed issue #4370 - a connection manager test failure, see PR #4384.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-02-24-hydra + + 2023-02-24T00:00:00.000Z + + High-level summary

    This week, the Hydra team continue closing many gaps and aligning the +implementation with the specification. More over, they have groomed a plan to +make Hydra Mainnet compatible. Also, they continue moving forward with the +internal auditing and have published some auditing guidelines to receive +contributions from the community.

    What did the team achieve this week

    • Completed #452 (what is +remaining in there)
    • Aligned the Head protocol logic implementation with the specification
    • Completed full minting policy implementation and spec +#720
    • Clarified message authentication with researchers
    • Groomed what is left to do for Mainnet compatibility +#713 and drafted a +0.10.0 version
    • Added a tutorial by @perturbing to the +website LINK
    • Published auditing guidelines +LINK
    • Made hydra-node work for macos +#746 and added support +for building on aarch64 +#673
    • Met with a potential customer of Hydra for Payments

    What are the goals of next week

    • Have the monthly review meeting incl. the report
    • Have smoke tests fixed and running regularly
    • Release 0.9.0 with updated scripts
    • Redraw transaction graphs for specification
    ]]>
    + + Franco Testagrossa + https://github.com/ffakenz + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-02-23-mithril + + 2023-02-23T00:00:00.000Z + + High level overview

    The Mithril team released a new 2306.0 distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes’ CLI that allows generating and signing an era marker’s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI.

    Low level overview

    • Released the new distribution 2306.0
    • Completed the epic that implements signer versions deployment monitoring #718:
      • Completed the implementation an event producer/consumer via channel #738
      • Completed the creation of a database and its configuration to save the events on the consumer side #740
      • Completed the creation of events and sending them on the channel on the producer side #741
      • Completed the creation of the signer registration event #742
      • Completed the creation a query to extract the node versions stakes distribution #743
    • Worked on the epic that implements eras behavior switch #707:
      • Completed the loading of era reader adapters from config in the signer and the aggregator #732
      • Completed the implementation of an era cli command in the aggregator #755
      • Completed the implementation of a dynamic matrix of cases in CI end to end tests #760
    • Fixed some bugs:
      • Fixed the unsupported unixepoch() function #757
      • Fixed the problem that prevented some signers from signing on the testing-preview network #730
      • Update SQLite version to 3.40 in aggregator infrastructure #765
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Performance & tracing update]]> + 2023-02-23-performance-and-tracing + + 2023-02-23T00:00:00.000Z + +
  • SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.
  • Release benchmarking: we performed a round of benchmarks for the 1.35.6 release.
  • UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup.
  • New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities.
  • Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure.
  • Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.
  • Performance

    SECP

    1. For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead.
    2. The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run.
    3. The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking.

    UTxO-HD

    1. After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop.
    2. We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.

    1.35.6 release

    Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health.

    Tracing

    Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible.

    Infrastructure

    Nomad backend

    1. Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients.
    2. Locality assumptions were removed and job monitoring was refactored.
    3. To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster.
    4. We're currently evaluating different options for genesis distribution in said cluster.

    NixOps backend

    The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery.

    ]]>
    + + Michael Karg + https://github.com/mgmeier + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-02-22-consensus + + 2023-02-22T00:00:00.000Z + + High level summary

    During the past two weeks we got the results from the system level benchmarks +for UTxO HD. They showed a substantial performance regression, so we spent some +time analyzing the results. We found out the frequency at which ledger snapshots +were taken was too high, so we requested the benchmarking team a new run with a +more realistic snapshotting policy. We continued refactoring and improving the +prototype, and we released UTxO-HD related packages to CHaP.

    We met with IOG researchers and networking specialists to discuss the Genesis +design, which was well received. We continued working on testing and +benchmarking different Genesis prototypes.

    We are also working on solving a test failure related to iterators. This work +derived in several improvements such as better documentation, a framework for +writing unit (and regression) tests, and the possibility of debugging +QuickCheck counter examples in the REPL.

    Finally, we released ouroboros-consensus 0.2.0.0 and +ouroboros-consensus-cardano 0.3.0.0 to CHaP

    Workstreams

    UTxO HD Prototype

    We got the results of the first system level benchmarks for UTxO HD. They seemed +to indicate a significant regression in performance. After looking into the +benchmark logs we found that the benchmark runs took ledger state snapshots too +often, due to the default snapshotting policy depending on k, and k being so +small in the benchmark runs. Therefore, the next step is to re-run the +benchmarks with a snapshotting policy that more closely resembles the one from +mainnet.

    At the same time, we continued refactoring and cleaning up the prototype.

    Also, we prepared the anti-diff packages (fingertree-rm, diff-containers, +simple-semigroupoids) and the lmdb related packages (cardano-lmdb and +cardano-lmdb-simple) to CHaP.

    Genesis

    The Genesis design was presented to the IOG researchers and Peter Thompson from +NSol. It was well received. They pointed out one blindspot, but we think it'll +be relatively simple to mitigate.

    In parallel, we continued developing test and benchmarks for the Genesis +prototypes. I particular we tested and implemented a potential fix for +increased ChainDB dequeue timings, which partly +behaved as we expected, but still needs further investigation. Also we obtained +new benchmarking data for the prototype.

    Technical debt

    Related to #4183, we developed a DSL for specifying +ChainDB unit tests. This will allow us to better understand the +counter-examples returned by QuickCheck tests, and to write regression +tests for them. Also, we added a module to enable +QuickCheck counter-examples to be run on the REPL, allowing for faster debugging +feedback. Also, we improved the documentation related to followers +(#4372).

    We are also working on a design for optimizing the way we handle blocks from the +future.

    Support

    We released ouroboros-consensus 0.2.0.0 and ouroboros-consensus-cardano +0.3.0.0 to CHaP. Remember that we decided to split the packages related to +Consensus into two bundles, one with the core functionality, Cardano-agnostic +code, and another bundle with instantiations specific to Cardano.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2023-02-22-node-cli-api + + 2023-02-22T00:00:00.000Z + + 2023-02-22 - 2023-03-07

    High level summary

    General bug fixes

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    Documentation

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[DB-sync Team Update]]> + 2023-02-21-db-sync + + 2023-02-21T00:00:00.000Z + + High level summary

    The db-sync team created a new tag 13.1.0.2 which is ready to release. +We also investigated and had the first working UTxO-HD integration which is one +of the potential future risks for db-sync.

    Low level summary

    • Integrated the UTxO-HD feauture branch in kderme/utxo-hd-1. This doesn't +use the full on disk storage but keeps things in memory and the plan is to keep +it this way for the first iteration. The integration still has some performance +issues which we investigate
    • Created tag 13.1.0.2 which upgrades the dependencies of db-sync
    • Fixed an issue related to errors appearing in SMASH +#1353
    • Continued with ghc-9.2 integration +#1339
    • Worked on an new fixing procedure for +#1348. +We try to make these procedures work also on older schema version, without the +need to migrate to newer schema, which can be very useful for fixing existing +snapshots.
    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-02-17-crypto + + 2023-02-17T00:00:00.000Z + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration.
    • cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: started implementation in rust.

    Low level summary

    Mithril

    • Transmute helpers merged PR#722
    • We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope.
    • We are working in a modification of KES to require caller to allocate the secret key buffer.
    • Proposed a solution for signer registration of Mithril.

    cardano-base

    • Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 proof.
      • Results are promising, with using only 23% of the execution budget to verify a realistic proof.
      • Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril.
    • KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this.
    • Conversion finally merged PR#344.

    KES agent

    • Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation
    • Figuring out how to go from fake file descriptor to write the raw bytes

    MuSig2

    • Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Goedel Team Update]]> + 2023-02-17-goedel + + 2023-02-17T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, distributivity properties of deltaQ, and consulting +on performance design with the Marlowe team.

    Details

    • Processing reviews on performance engineering paper and planning +paper revisions accordingly

    • Investigating distributivity properties of DeltaQ

    • Preparing sections on the thorn calculus and idempotency laws for +draft paper about verifying design refinements for distributed +system design

    • Consulting on performance design with Marlowe team

    ]]>
    + + James Chapman + https://github.com/jmchapman + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-02-17-hydra + + 2023-02-17T00:00:00.000Z + + High-level summary

    This week, the Hydra team completed work on dealing differently with contests +during the contestation period. These will now always push out the deadline and +hence contestation periods are easier to pick (depending on the network a Head +runs on). Furthermore, they added an important acceptance test and completed +internal refactoring of the protocol logic making future changes easier.

    What did the team achieve this week

    • Push contestation deadline on each contest #716
    • Wrote an acceptance (property) test can always close/fanout when collect is successful
    • Internal refactoring of our HeadLogic
    • Groomed remaining things from #452 into dedicated features

    What are the goals of next week

    • Complete full minting policy #720
    • Release 0.9.0 with updated scripts
    • Plan mainnet milestone and a 0.10.0 version
    • Redraw transaction graphs for specification (upon feedback)
    • Have smoke tests fixed and running regularly
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-02-17-ledger + + 2023-02-17T00:00:00.000Z + + High level summary

    This past two weeks saw many months worth of ledger changes integrated with the cardano-base +and ouroboros-network repositories. +The vast majority of the effort involved all the changes to the ledger serialization libraries +(and the interplay with cardano-base) which now support proper versioning. +Supporting the conway ledger era, and in particular allowing the ledger state to transition +to a whole new system of governance, also played a noticeable part in the integration.

    Besides the integration work, the team continues to address technical debt, improve the +documentation, make our testing infrastructure better (such as experimenting with better +nightly tests), and formally specifying more parts of CIP-1694.

    Lower level summary

    Integration work

    Below is all the integration work completed, which will enable a release to node from +the current ledger master. Many thanks to +Alexey for this colossal undertaking!

    Technical debt

    Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted +in the CBOR specification. See pull-3241.

    We now have our .cabal files being checked for a consistent formatting given by +cabal format in our CI. See pull-3286.

    We are still experimenting with better nightly tests for our long running +property based tests. See pull-3276 and pull-3296.

    Small documentation improvements

    The hand proofs of the preservation ADA property have been added back to the +Shelley ledger specification. See pull-3295.

    We have clarified how the script integrity hash is computed in the CDDL description. +See pull-3290.

    Specifying CIP-1694

    Our new formal specifications backed by Agda have seen a lot of progress! +Upgrading to Agda 2.6.3 fixed our main build infrastructure problems, +and we no longer have to rely on our custom fork. See pull-50.

    Our progress on formally specifying CIP-1694 can be followed here:

    Constraint based testing

    We are still actively working on our new constraint based property testing framework. +We have nearly all of the constraints for an entire ledger state +hooked into generators, and tests that the generators do indeed obey the constraints. +The variable count in the constraints is over 100! +There is still much work to do on shrinking, making the generators faster, +and writing actual property tests for the ledger, but the approach still seems viable and +we are hopeful that it could replace our trace generators. +The WIP can be followed here: pull-3219.

    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Network Team Update]]> + 2023-02-17-network + + 2023-02-17T00:00:00.000Z + + High level summary

    Recently QA found a bug in P2P code, which results in busy loops. We added one +fix to 1.35.6 release, another one will likely be part of next release. The +first one is already included in ouroboros-network-0.3.0.1 release. These +bugs could only affect nodes which are out of sync and thus should not impose +risk on well maintained nodes on mainnet. We also advertise to deploy at most +one of the relays as a P2P node, which shields from possible consequences.

    We recently finished design phase of eclipse evasion and we started +implementing it (see issue #3886 for progress).

    Galois finished implementing Handshake extension which will allow to query +network protocol versions (see pr #4256).

    We also recently released a newer set of network packages to be integrated with +cardano-node master branch, this includes:

    * monoidal-synchronisation-0.1.0.2
    * cardano-client-0.1.0.2
    * network-mux-0.3.0.0
    * ouroboros-network-api-0.1.0.0
    * ouroboros-network-protocols-0.2.0.0
    * ouroboros-network-testing-0.2.0.1
    * ouroboros-network-mock-0.1.0.0
    * ouroboros-network-framework-0.3.0.0
    * ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
    in `0.3.0.1`)
    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-02-10-hydra + + 2023-02-10T00:00:00.000Z + + High-level summary

    This week, the Hydra team closed several gaps to align the Hydra scripts +implementation further with the specification. This also resulted in a slight +improvement on Hydra script size and costs. They consequently analysed the +asymptotic complexity of collect and fanout and how they relate. Also plutus-tx +profiling toolchain was evaluated and set up for future improvements on Hydra +on-chain performance. In discussions with researchers and internal auditors, +they also uncovered next steps on further securing the Head protocl using a +"full" minting policy.

    What did the team achieve this week

    • Closed several gaps to align script implementation with specification #452
      • Allow contest only once #680
      • Optimization through head output at index 0 #700
      • Value is preserved #702 + optimized exact value equality #709
    • Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to #721
    • Fixed our tooling around the Haskell language server
    • Discussed full minting policy with researchers
    • Started grooming “what we need for mainnet” on this idea ticket and milestone

    What are the goals of next week

    • Implement full minting policy
    • All remaining protocol discrepancies are implemented or groomed as individual features
    • Ideally release 0.9.0 with updated scripts
    • Discuss what we need for mainnet (milestone planning)
    • Redraw transaction graphs for specification (upon feedback)
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-02-09-mithril + + 2023-02-09T00:00:00.000Z + + High level overview

    The Mithril team released a new 2304.1 distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.

    Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version 1.35.5 on their devnet and infrastructure.

    Low level overview

    • Released the new distribution 2304.1
    • Fixed a bug that prevented some signers to sign with 2304.0-prerelease #716
    • Completed the implementation of an EraChecker that checks if an era is active #708
    • Completed the implementation of an EraReader that gathers era activation data #709
    • Completed the implementation of an EraReader adapter with on chain transaction as source #710
    • Completed the relational design of the aggregator store #476
    • Completed adding a new SPO on the testing-preview network #729
    • Completed the upgrade of the Cardano node to 1.35.5 #725
    • Fixed flakiness in the CI #734
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-02-08-consensus + + 2023-02-08T00:00:00.000Z + + High level summary

    We continue refactoring the UTxO HD prototype while we wait for the system level +benchmarks. We have created a new repository that contains the anti-diff +packages used in this prototype.

    On the Genesis front, we are preparing another meeting with the researchers to +audit the implementation design, and we continued working on basic tests and +simplifications.

    During the past two weeks we also introduced two new tools. One for dumping CBOR +encoded blocks to JSON, and another to serve a local immutable DB.

    Workstreams

    UTxO HD Prototype

    We are in the process of refactoring the UTxO HD prototype, while we wait for +the system level benchmarks to confirm if the performance of the prototype is +satisfactory.

    We also set up a repository for the anti-diff package, which +required us to refactor the code, write documentation, and prepare a release to +CHaP.

    Genesis

    We worked on basic tests for the Limit on Eagerness property of +Genesis. We also introduced further robustness and simplifications in the +Genesis Density governor. Finally, we developed a presentation to engage again +with the researchers on our Genesis implementation design.

    Technical debt

    Fostering collaboration

    We are in the process of polishing the ouroboros-consensus +documentation site, which we will use a the entry point for Consensus related +documentation. The first version will not be complete, but we plan on +systematically improving it.

    Support

    We added a tool to ouroboros-consensus-cardano-tools which allows +to dump the Chain DB blocks or any given CBOR encoded blocks as JSON.

    We also added another tool that serves an existing immutable DB via +BlockFetch and ChainSync. This tool can help in assisting our local benchmarking +efforts (for instance Genesis' ChainSync jumping prototype).

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2023-02-08-node-cli-api + + 2023-02-08T00:00:00.000Z + + 2023-02-08 - 2023-02-21

    High level summary

    More maintenance and resolving raised issues.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Performance & tracing update]]> + 2023-02-08-performance-and-tracing + + 2023-02-08T00:00:00.000Z + + High level summary
    1. SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions.
    2. Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks.
    3. New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node.
    4. New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide.
    5. Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live.
    6. Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on.
    7. Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.

    Performance

    We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:

    • we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,
    • after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,
    • finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.

    In addition, we started benchmarks of the 1.35.6 release.

    Tracing

    A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way.

    Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting.

    Infrastructure

    On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders.

    The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment.

    The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops.

    ]]>
    + + Serge Kosyrev + https://github.com/deepfire + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-02-03-crypto + + 2023-02-03T00:00:00.000Z + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril.
    • cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.

    Low level summary

    Mithril

    • Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing PR#722
    • We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper.
    • We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.

    cardano-base

    • There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381.
    • The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner.
    • The update VRF PR#341 is finally merged, and we are ready to merge PR#344, which implements conversion functions from the compatible types between Praos and PraosBatchCompat.

    KES agent

    • Use of snockets to send the data directly from the socket to secure memory.
    • We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives
    • Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.

    MuSig2

    The GitHub Action linelint is used to check the files.

    • A new job for linting is added to the file /.github/workflows/ci.yml. The rules are configured in the file /.github/workflows/.linelint.yml. Some files from the configuration of libsecp were failing, so in the rules in .linelint.yml the failing files are denoted to be ignored by the linter.
    • Folders are reorganized. We created a folder to handle the example. This folder includes the examplemusig2.c, a distinct config.h, and helper.c. The example is enhanced by implementing the functions in the helper for the configuration given in config.h. The number of messages is different than the tests. The example is made more generic to run with a loop.
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Goedel Team Update]]> + 2023-02-03-goedel + + 2023-02-03T00:00:00.000Z + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been preparing several papers for peer review +and knowledge sharing and consulting within IO and the community.

    Details

    • R&D Seminar on experience participating in a member based organisation
    • Full day tutorial on performance engineering presented at HiPEAC +2023 conference
    • Finished preparing and submitted a paper on performance engineering +to an ACM workshop
    • Preparing a draft paper for future submission about verifying design +refinements for distributed system design
    • Consulting on performance design of other IO projects
    ]]>
    + + James Chapman + https://github.com/jmchapman + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-02-03-hydra + + 2023-02-03T00:00:00.000Z + + High-level summary

    This week, the Hydra team completed the Hydra specification with a section about +rollbacks and updated graphs +(#448). In a next step, +the specification will be made more approachable and an open standard. They +improved their hydra-cluster tool to launch a local --devnet sandbox +environment and continued aligning the hydra-plutus scripts with the +specification by hardening the checks on close and contest transactions.

    What did the team achieve this week

    • Completed the specification with a section about rollbacks and updated graphs +#448, with a follow-up on making it more approachable and an open standard.
    • Continued spec review with internal auditor and incorporated changes.
    • Talked to TxPipe about how Demeter and Hydra could work together
    • The hydra-cluster executable can be used to launch a local --devnet sandbox environment.
    • Reproduced the “head being stuck on network outage” bug
      • relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed.
    • Progressed with higher velocity by addressing more and more gaps #677

    What are the goals of next week

    • Upstream our JSON instances to the ledger
    • Close all transaction security related on-chain gaps
    • Ideally release 0.9.0 with updated scripts
    • Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-02-02-ledger + + 2023-02-02T00:00:00.000Z + + High level summary

    Much of the work the past two weeks involved integration efforts, +cleaning up and debugging some serialization issues, +adding tests, and work on large projects that are still ongoing. +We also released a CIP this week that aims to make the ledger +a registered CIP category.

    Lower level summary

    Ledger evolution CIP

    We published a +CIP +that will make the Cardano ledger a registered category of the CIP process.

    Serialization issues

    We had previously thought that we had found a serialization problem with the redeemers, +but it turned out to just be particularly confusing code. +We have now clarified the issue for the future.

    See pull-3263, pull-3269, and pull-3268.

    Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps.

    See pull-3277.

    New tests

    We added a new property test suite for some of our custom containers.

    See pull-3270.

    Progress on a better cost model serialization situation.

    We are still working our way through issue-2902. +Towards this end, we are now properly gating the new flexible encoders +until version 9.

    See pull-3274.

    Nightly tests

    We are still experimenting with moving more CI actions to GitHub actions.

    See pull-3276.

    Constraint based generators

    We continue to add to our proof of concept for constraint based generators. +See the previous ledger update for more information about this project.

    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-01-27-hydra + + 2023-01-27T00:00:00.000Z + + High-level summary

    This week, the Hydra team had a monthly review meeting with their stakeholders, +contributors and interested people from the community. The monthly repot for +January 2023 is a digest +of the things presented and also includes a summary of the meeting. The Hydra +specification was getting discussed and the team is incorporating suggested +changes of reviewers. Last but not least, they compute and publish script +information on every PR and also on the +website +now.

    What did the team achieve this week

    • Had the monthly review meeting with a broader audience
    • Published the monthly report for January 2023
    • Reviewed the spec and discussed individual aborts with researchers
    • Compute and publish script information along benchmarks on every PR and website

    What are the goals of next week

    • Add rollback section to Hydra spec, update pictures and publish it as part of repository
    • Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository.
    • Groom & plan actions required for a maintainable Head explorer + break down align gaps feature.
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-01-26-mithril + + 2023-01-26T00:00:00.000Z + + High level overview

    The Mithril team released a new 2302.0 distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes.

    Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node.

    Low level overview

    • Released the new distribution 2302.0
    • Implemented a backward/forward compatibility mechanism for API messages #688:
      • Implement the mechanism for the signer registration #689
      • Implement the mechanism for the signature registration #693
      • Implement the mechanism for epoch settings #695
      • Implement the mechanism for certificate pending #696
      • Implement the mechanism for certificate #697
      • Implement the mechanism for snapshots list #698
      • Implement the mechanism for snapshot #699
      • Update enforcement of API version with Semver #705
    • Completed the PoC implementation of backward compatibility with protobuf #677
    • Completed the PoC implementation of backward compatibility with avro #678
    • Completed the PoC to Read/Write transaction on chain for Era activations #672
    • Completed the upgrade Cardano devnet to 1.35.4 #523
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-01-25-consensus + + 2023-01-25T00:00:00.000Z + + High level summary

    During the past two weeks, the consensus team finished the testing activities +around the UTxO-HD prototype. This is a very important milestone which will +enable us to run system-level tests and benchmarks, as well as start refactoring +and cleaning the prototype. Regarding our Genesis workstream, we elaborated a +roadmap that gives an indication of the remaining work. We also continued our +work on benchmarking chain-sync-jumping. We also continued working on improving +the way we handle blocks from the future, and advancing the integration of the +new VRF and KES crypto.

    Workstreams

    UTxO HD Prototype

    As the prototype is nearing its completion, it was important to have enough +confidence that we will be able to move additional parts of the ledger state +onto disk. We worked together with the Ledger team to elaborate a +sketch on how the UTxO-HD design would accommodate the migration of +additional data from memory to disk. This gave us enough confidence that the +current architecture will be extensible in the future.

    On the testing front, we added property-based tests for the UTxO-HD +type classes.

    We also enabled disabled components, and addressed several +technical debt issues:

    • Implement splitSized anti-diff split (#4269), and integrate it +into consensus (#4273).
    • Renaming of peekVal to peekMDBVal (#7).

    We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We +found a race condition in the LMDB backing store, which we fixed. +After the fix we were able to successfully run these benchmarks. The results +were published by this pull request.

    We used our db-analyser tool to benchmark the cost of reading keys and +flushing values to disk. The following plot shows the duration of these disk +operation in relation to the main ledger operations, where we can see that the +cost of the former are comparatively low. The spike at the beginning of the +graph is when, at the start of the Shelley era, the entire UTxO set is flushed +to disk.

    UTxO-HD read and flush benchmarks

    After months of hard work adding tests for the prototype, we are ready to run +end-to-end tests on the node, and system level benchmarks. This signals a very +important milestone for the UTxO-HD workstream 🎉.

    Genesis

    We elaborated a high-level decomposition of the remaining +work for Genesis. We also continued benchmarking the chain-sync-jumping +happy-path.

    Technical debt

    We continued working on improving the way we handle blocks from the future.

    Support

    We completed the mapping of Crypto to HeaderCrypto and body Crypto. +HeaderCrypto is moved to cardano-protocol-tpraos. We created a draft pull +request to facilitate compiling consensus.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2023-01-25-node-cli-api + + 2023-01-25T00:00:00.000Z + + 2023-01-25 - 2023-02-07

    High level summary

    General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the cardano-cli query stake-snapshot command.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-01-20-crypto + + 2023-01-20T00:00:00.000Z + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We explored whether some uses of transmute could be removed, but it resulted in considerable regression.
    • cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision.
    • KES agent: An inconsistency between contra-tracer available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the contra-tracer used by consensus.

    Low level summary

    Mithril

    • We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average PR#675. We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing.
    • We are writing a RFP for the audit of the core library.

    cardano-base

    • A problem with Nix is blocking merge of PR#341
    • Plutus team ran benchmarks of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution.
    • Team is fully digesting the Plonk paper.
    • There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used.

    KES agent

    • A little unforseen delay has been caused by a mismatch in the use of contra-tracer. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are doing the change, but still the CI is not happy.
    • The same was needed for the KES agents prerequisites PR#317.
    • We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-01-20-hydra + + 2023-01-20T00:00:00.000Z + + High-level summary

    This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1 +specification. Of which a first version has been aggregated and is currently +under review. They aligned the on-chain scripts of reimbursing funds on abort +like defined in the specification, improved the mutation test framework to have +more control when testing plutus scripts. The added HeadId in the API and the +TUI example client make hydra-node easier to use and a first experiment of a +Hydra Head explorer was showing the utility of this - see what Heads exist on +the preview network here.

    What did the team achieve this week

    • HeadId to API and display in the TUI #678
    • Experiment of creating a hydra explorer, first result hosted here
    • Improved mutation framework allowing to fail for the right reason #679
    • Correctly reimburse funds in abort (matching the spec) #670
    • Finished a first write-up of the Hydra HeadV1 spec: Read it on overleaf (Communication channels for feedback)

    What are the goals of next week

    • Monthly review meeting with a broader audience
    • Groom & plan actions required for a maintainable Head explorer
    • Break “align gaps” feature into smaller chunks (at least on- /off-chain) and groom it
    • Review the spec & discuss individual aborts with researchers (a bigger open question)
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Network Team Update]]> + 2023-01-20-network + + 2023-01-20T00:00:00.000Z + + High level summary

    We have been working towards cardano-node-1.35.5 release. QA & benchmarking +teams gave a green light for the release, and we made decent progress with some +CI problem which we encountered on the way (PR #4612). We are also working on +peer sharing, making improvements in our testing infrastructure, reducing +technical debt and making progress towards io-sim-1.0.0.0. Galois is making +progress on Handshake improvements.

    Low level summary

    Our diffusion simulation network now includes a mixed network of initiator +only and initiator and responder nodes. issue #4222

    We are now reviewing the peer sharing pull request.

    We are also reviewing pull request which introduces handshake query flag. PR #4256

    We fixed a bug in our network simulator. The bug was triggered when a node +died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

    We also refactored Snocket interface and removed the bearer construction from +its methods. PR #4260

    We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes +reviewing two PRs: PR #57 and PR #60 as well as writing an announcement +blog post.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + + +
    + + <![CDATA[SRE Team Update]]> + 2023-01-20-sre + + 2023-01-20T00:00:00.000Z + + High level summary

    The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing +support for cardano-world.

    Lower level summary

    Cicero

    • Fixed various race conditions around transformers.
    • Brought our CI up to date.
    • Migrated to the Nomad exec driver with Nix support for many actions.
    • Moved Nix builds to the Nomad clients for much better cache locality.
    • Ongoing work on vastly improving the action matching and evaluation speed.

    Tullia

    • Made it easier to support cloning from a PR's fork
    • Update to latest std
    • Add workaround for cgroup issue: nomad#12877
    • github preset: add github.ci.remote and (read|get)Repository functions
    • Fix various issues around CUE handling

    Bitte

    • Upgrade to NixOS 22.11
    • Prototype usage of Colmena for deploys instead of deploy-rs
    • Finalized work on Equinix Metal support
    • Prototype better secrets management with ragenix instead of sops-nix
    • Improve CI and bring it up to date

    cardano-world

    • Fixd various OOM issues on preview and preprod
    • Rotated KES keys on preview and preprod
    • Optimize mainnet db-sync to cope with higher load
    • Fix an issue where PostgreSQL would fail after a reboot

    bitte-world

    • Updated to NixOS 22.11

    ci-world

    • Updated to NixOS 22.11
    • Added Equnix cluster
    • Improve caching of Nix builds
    ]]>
    + + Michael Fellinger + https://github.com/manveru + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-01-19-ledger + + 2023-01-19T00:00:00.000Z + + High level summary

    The ledger team completed some preliminary ground work in preparation for CIP-1694 +(restructuring the ledger state), +fixed the PDF hosting problem (mostly the formal specs), +built out more of the new user-friendly ledger API, +finished a proof of concept for constraint-based generators for property tests +(with the hopes of being able to replace our trace generators one day), +and addressed technical debt.

    Lower level summary

    Restructuring the ledger state

    The existing governance structures will be replace in the conway ledger era, +as described in CIP-1694. +In particular, the ledger rules will be restructured as follows:

       BBODY
    |
    |-------------------------------|
    v v
    TICK LEDGERS
    | |
    |---------| |
    v v v
    RUPD ~NEWEPOCH~ ~LEDGER~
    | |
    |----------| |--------|-------------------|-----------|
    v v v v v
    ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+
    | | |
    |---------|------------| v |
    v v v DELPL v
    SNAP POOLREAP -UPEC- | UTXO
    |--------| |
    v v v
    POOL DELEG ~UTXOS~

    -..- Removed
    +..+ Added
    ~..~ Modified

    Moreover, the ledger state will also be restructured in accordance with the new rules. +In the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT. +We have also adapted all the data structures in the ledger state.

    See:

    PDF hosting

    We now build all of our PDFs using a GitHub action which is triggered by pushing a tag +with a specific form, cardano-ledger-spec-YYYY-MM-DD. +The action creates a GitHub release containing the PDFs. +The links in the main ledger README now point to the PDFs in the latest release.

    See:

    Powering the new ledger API

    We have now removed all the HasField instances from the protocol parameter data types, +and replaced them with lenses. +This is probably the last major restructuring that the ledger team will do on the code base +for the API for a while +(the Plutus tools team will be working on it next, see here). +We also added a new helpful function ensureMinCoinTxOut.

    See:

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We would like to switch to tests which instead generate a random ledger state representative +of not just an initial state, generate a single random valid block, and then test our properties. +The hope is that these will be much more random and easier to maintain.

    We have finished a proof of concept are encouraged that this approach could work!

    See:

    Technical debt

    • pull-3244 massive CI speedup
    • pull-3249 better types for fees in the protocol parameters
    • pull-3264 move our annotator code to the cardano-ledger-binary package where it belongs
    • pull-3239 move the Wdrls type to the Core module.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[DB-sync Team Update]]> + 2023-01-14-db-sync + + 2023-01-14T00:00:00.000Z + + High level summary

    After spending the last months on improving DBSync and releasing 13.1.0.0 the DBSync team focused +the last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the +new leger core and ghc-9.2.4

    Lower level summary

    • Integrate CHaP +#1331
    • Integrate new ledger core 0.1.1.1 and ghc-9.2 +#1332
    • Technical debt: Add code formatter fourmolu +#1334
    • Preparing and tracking Conway and UTxO integration
    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Hydra Team Update]]> + 2023-01-13-hydra + + 2023-01-13T00:00:00.000Z + + High-level summary

    Since last weekly update before christmas, the Hydra team worked on the +technical specification, closed gaps in hydra-plutus scripts, made the unique +headId available to Hydra clients through the API, allow the hydra-node to +explicitly synchronize from genesis (if configured), and fixed smaller log and +build issues reported by new users.

    Besides this, a retrospective blog +post +was published by Matthias Benkort (CF) on Hydra, summarizing our progress made +in 2022 also an outlook where Hydra is headed for in 2023. Also, the team had +some first sessions on the voting project with Catalyst and the CF.

    A full digest monthly digest for December 2022 can be found on the hydra +website.

    What did the team achieve this week

    • Had some first sessions on the voting project with Catalyst and CF
    • Published retrospective blog +post +by Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also +an outlook where Hydra is headed for in 2023.
    • Worked on the LaTeX spec for HydraHeadV1, not final or published yet - latest +version in this repository.
    • Add unique headId to API and hence make it available to clients.
    • Allow hydra-node to explicitly synchronize from genesis using --start-chain-from 0.
    • Closed gaps in hydra-plutus scripts
      • bounded transaction validity (ADR21)
      • enforcing contract continuity via state token in output
    • Fixed JSON for some logs and smaller build issues reported by new users.

    What are the goals of next week

    • Reach out to have hydra-tutorial integrated.
    • Plan the next couple of months.
    • Complete checking reimbursing of commits in head validator.
    • Align plutus scripts to spec and simplify them (identified some simplifications)
    • Improve mutation framework to be sure we fail tests for the right reasons
    • Complete the spec except the open points (<5) and also discuss them with researchers.
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Node Release Team Update]]> + 2023-01-13-release + + 2023-01-13T00:00:00.000Z + + Node Reelease Update

    2022-11-02 - 2023-01-13

    Executive Summary

    A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on +release/1.35 branch and does not bump cardano-ledger.

    The team successfully integrated an interim release bump of ledger and consensus into cardano-node master. +This work will not be released in a node version, but will be continued by the current dependency bump in progress.

    We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again.

    The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress.

    Completed

    In Progress

    ]]>
    + + Samuel Leathers + https://github.com/disassembler + + +
    + + <![CDATA[System Test Team Update]]> + 2023-01-13-system-test + + 2023-01-13T00:00:00.000Z + + High level summary

    During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the P2P Single +Relay functionality.

    We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level.

    Workstreams

    Framework improvements:

    • extended the cardano-node-tests with the ability for anybody to fork the repo and run all our System Tests on GitHub Actions
    • added 2 new nightly pipelines - nightly-mixed and nightly-p2p - details here
    • some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;

    === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) === + to + === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===

    Node:

    • ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled
    • started the preparations for testing the next tag - details here

    DB-Sync:

    • some improvements on db-sync sync tests
    ]]>
    + + Dorin Solomon + https://github.com/dorin100 + + +
    + + <![CDATA[Mithril Team Update]]> + 2023-01-12-mithril + + 2023-01-12T00:00:00.000Z + + High level overview

    The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ADR. They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible.

    Finally, they have worked on upgrading the devnet and fixing some flakiness in the end to end tests of the CI.

    Low level overview

    • Implemented the redaction of an ADR for handling graceful updates of the Mithril Network #671
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with protobuf #677
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with avro #678
    • Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction #672
    • Worked on upgrading the Cardano node of the Mithril devnet, as well as fixing flakiness of the CI #523
    • Prepared and tested the new 2302 distribution pre-release 2302.0-prerelease
    • Updated the documentation for SPO to build a signer node in order to better reflect the new release process #681
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Consensus Team Update]]> + 2023-01-11-consensus + + 2023-01-11T00:00:00.000Z + + High level summary

    The consensus team is resuming its activities after the Christmas break. During +these weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and +discussing with the Ledger team the changes that might be required for the next +iterations. The pull request that adds the Conway era is waiting for a second +review round and we hope to merge it soon. On the technical debt side we are +looking into a property-test failure found in the iterators. We are +investigating if this is an error in the model or in the implementation. We also +improved the documentation of our testing code.

    Workstreams

    UTxO HD Prototype

    We worked with the Ledger team to start preparing the next versions of UTxO-HD. +The Ledger team is concerned that for the remaining maps we might need the full +ledger state on epoch boundaries. Since the main consumer of the ledger rules is +Consensus, the code that requires access to a full state could be moved from the +ledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take +place in such bridge, instead of querying the ledger for the values that are +required in the epoch-transition computations.

    We relocated some UTxO-HD definitions, in preparation for merging +the prototype into master.

    We also completed updated local benchmarks comparing the replay time and memory +consumption of:

    • the baseline node (f2fc76ef45647275c98634da1718290b976ff364)
    • the UTxO-HD node with the in-memory backend
    • the UTxO-HD node with the LMDB backend

    The following plot shows the results: we can see that the LMDB node barely +reaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The +in-memory backend is about 30 minutes faster, but still slower than the baseline +version. We are aware of this phenomenon and it is inherent to the problem of +maintaining sequences of differences of the last k ledger states that allows +us to perform rollback and roll-forward. We are in the process of measuring +syncing from scratch times.

    We also added StaticEither accessors that helped us to simplify +the UTxO-HD prototype.

    New Conway era

    We incorporated the feedback of the pull request, and rebased this +branch on top of master. The PR is pending a second review round and we hope +to merge this soon.

    Technical debt

    We are investigating a property-testing failure involving +iterators. Solving this requires understanding the expected behavior of +iterators in the counterexample found by QuickCheck to determine if the error +is in the model or in the implementation.

    Fostering collaboration

    We moved the contents of docs/Testing.md closer to the code, so that the +explanations about the tests are easier to find in the relevant modules, and the +documentation is easier to keep up to date.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Performance & tracing update]]> + 2023-01-11-performance-and-tracing + + 2023-01-11T00:00:00.000Z + + High level summary

    Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:

    1. SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress.
    2. The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over.
    3. Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks.
    4. New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs.
    5. Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench.
    6. Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.

    Performance

    The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on.

    Tracing

    The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done.

    Infrastructure

    Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components.

    On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters. +We now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes.

    We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development. +Once this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads.

    ]]>
    + + Serge Kosyrev + https://github.com/deepfire + + +
    + + <![CDATA[Crypto Team Update]]> + 2023-01-06-crypto + + 2023-01-06T00:00:00.000Z + + High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: The API features (error handling) has been merged.
    • Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI.
    • KES agent: We keep progressing with KES secure forgetting implementation.

    We also started working in the cryptography engineering handbook, which will be a cross team effort.

    Low level summary

    MuSig2

    • Merged the more granular error handling mechanism PR#33

    Mithril

    • Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in Version 0.1.1, which was published in crates.io.
    • Updated new KES format to mithril library PR 674
    • We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync PR 531
    • We keep progressing on reducing the use of transmute in mithril-stm.

    cardano-base

    • Nothing new to report. Still working in merging these PRs. We are only missing nix merge of PR#520 and the updates on VRF will be merged.

    KES agent

    • We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests PR#255.

    Cryptography handbook

    We have made available the (temporary) cryptography handbook https://input-output-hk.github.io/cryptography_spec/, and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives.

    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-01-05-ledger + + 2023-01-05T00:00:00.000Z + + High level summary

    The ledger team finished up the remaining work for tracking individual depots, +built out the new Conway era transaction body (in line with CIP-1694), +greatly reduce some problematically large calculations on the epoch boundary, +and addressed technical debt.

    Lower level summary

    Finishing the deposit tracking

    The initial work on the individual deposit tracking project focused only on correctness. +As this is a large data structure +(since its size is linear with respect to the number of registered stake credentials), +it is very important that we also reduce the memory overhead as much as possible. +Fortunately, we were able to add very little overhead for the deposits by using existing +efficient data structures. The extra tracking now only incurs one word (8 bytes) +per registered stake credential.

    See:

    New Conway era transaction

    We implemented the Conway era transaction body, which is in line with CIP-1694. +Note that the Conway era implements, losing speaking, the parts of CIP-1694 that are not +related to the liquid democracy (the "DReps"). +The new transaction body adds the new governance actions and votes, +while also deprecating the old governance structures +(i.e. the old protocol parameter updates and MIR certificates).

    We also now have the wire specification (CDDL file) and serialization code in place. +The wire specification is still subject to change while we work on the Conway era, +but it is now usable and has proper testing support +(so that, for example, the serialization round-trips, etc).

    See:

    Optimizing the TICKF transition

    Every since the release of the Shelley era, we have been working to reduce the computational load +placed on the node by the ledger at the epoch boundary. +While still not perfect, we believe that we have removed one of the final problematically long +epoch boundary computations that exacerbate situations like +this. +In particular, the problem involved the way in which the consensus layer obtains a view of the +ledger for the purposes of checking the leadership schedule in a new epoch. +We implemented a stopgap measure which now only incurs a single multi-second cost once per epoch +instead of potentially several multi-second costs while the networks waits for the first block +of a new epoch to be minted.

    See:

    Technical debt

    We closed the year out with a lot of reduction to the technical debt!

    Improved ledger event

    • pull-3212 - The ledger events are not guaranteed to appear in any given order within a block. +For this reason, motivated by the use case in db-sync, the TotalDeposits event now +includes a transaction ID and emits the change in deposits instead of the value.

    Improved type saftey

    • pull-3208 - We replaced NominalDiffTime with a newtype wrapper. The problem was that our CBOR +encoders and decoders were using the wrong level of precision, having to due with with +the Shelley genesis file. We removed the potential problem with a newtype wrapper.
    • pull-3167 - We now use a GADT to ensure consistency of the Plutus language in the types +for TransactionScriptFailure and PlutusDebug.

    Code/Module organization

    • pull-3175 - The Allegra and Mary eras had an unusual relationship in our codebase, +due to the uncertainly of release dates while we were implementing them. +In particular, they were coupled in way that is different from the rest of the code base. +With hindsight on our side, we split the combined shelley-ma Haskell package into two +separate ledger era packages, which is now consistent with the rest of the repository +and module structure.
    • pull-3184 - We created a core test sub-library, cleaning up a lot of our property test +generator code.
    • pull-3210 - We moved the KeyPair type to the test library. Outside of testing, +the ledger does not need to deal with signing keys, and since this is a topic that +deserves the utmost care, it is best to make it clear that our use of signing keys +is only for testing.
    • pull-3229 - We split the Cardano.Ledger.Alonzo.Data module, which is more consistent with the rest +of the codebase.

    Revert pointer address deprecation

    Thanks to one of our excellent internal auditors, +@jmhrpr, +we now have a better plan for deprecating pointer addresses. +This meant that we had to revert the previous work to deprecate them.

    See:

    Miscellaneous

    • pull-3205 - We removed deprecated type synonyms.
    • pull-3218 - We cleaned up the address deserialization.
    • pull-3223 - We fixed faulty address deserialization tests.
    • pull-3222 - We switched to a general type family TxOut from concrete ones, +reducing many constraints.
    • pull-3224 - ShelleyGenesis is now parameterized by crypto instead of by era.
    • pull-3170 - We set the cabal-version to 3.0 in our projects.
    • pull-3172 - We removed the now useless EncodeMint/DecodeMint classes.
    • pull-3225 - We switch from ormolu to +fourmolu. +The reason was to be able to finally have more diff friendly code!
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-12-28-node-cli-api + + 2022-12-28T00:00:00.000Z + + 2022-12-28 - 2023-01-10

    High level summary

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-12-16-hydra + + 2022-12-16T00:00:00.000Z + + High-level summary

    This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on the website and reduced the cost for commit transactions by ~30% with the help of reference scripts.

    The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.

    What did the team achieve this week

    • Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.
    • Reduce commit transaction costs by ~30% with reference scripts.
    • Prepared an RFP for external audit of the Hydra Head solution.
    • Fixed transaction cost benchmarks for abort tx #631.
    • Recorded decision to use model-based testing (ADR22) and improved Model documentation.
      • Concluding the first increment on Validate coordinated Head protocol #194.
      • Formulated next step / follow-up on testing the Soundness property of our protocol #656.
    • Switched to using nix flakes for development setup and CI build #646.

    What are the goals of next week

    • Push ADR21 & tx validity gap over the finish line (smoke tests missing).
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Close & recap on the year with another monthly report (+ blog post).
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Mithril Team Update]]> + 2022-12-15-mithril + + 2022-12-15T00:00:00.000Z + + High level overview

    The Mithril team has released the new distribution 2248.1 of their nodes. They have published the first version of the Mithril cryptographic library on crates.io, the Rust community’s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.

    Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities.

    Low level overview

    • Implemented removing verification key and stake from single signatures #619
    • Completed the extraction of the signer registration from the multi-signer #642
    • Completed the extraction of the certificate creation from the multi-signer #638
    • Implemented a workflow to test client binaries (Linux / MacOS / Windows) #601
    • Completed the signature of the artifacts produced by the CI #587
    • Fixed the protocol parameters transition #627
    • Worked on optimizing the snapshot digest computation #510
    • Worked on enforcing the API protocol versions in the client and signer #633
    • Worked on deactivating the non certified signer registration mode #621
    • Worked on the re-genesis of the test networks #651
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-12-14-consensus + + 2022-12-14T00:00:00.000Z + + High level summary

    During the past two weeks, the Consensus team finalized the QSM tests for the +backing store and Mempool on the UTxO-HD branch with important discoveries +regarding parallel QSM testing. We also worked with the Ledger team to envisage +the modifications that are required in Ledger and Consensus to accommodate the +changes in the crypto VRF and KES. The db-analyser now supports bechmarking +the ledger operations, which will allow us to identify, debug, and profile +potential performance problems. We drafted a document that defines how to manage +the versions of Consensus-related packages. The top level documentation of +ouroboros-network now features a description of the consensus components and +provides a hyperlinked map to the modules documentation.

    Workstreams

    UTxO HD prototype

    Whereas we had passing sequential state-machine tests for the mempool, the +parallel case proved to be more challenging than we thought. The operation of +adding a list of transactions to the mempool is not atomic and, as a result, +when adding a list of transactions, transactions from other processes can be +added in between. The mempool implementation handles this correctly, however +this required us to redesign the parallel model we had to take +the lack of atomicity into account.

    Backing store property tests

    We finished refactoring the backing store property tests. The second review +round is ongoing.

    LSM tree implementation

    We are working on benchmarking (in terms of time and number of IO operations) +fetching/looking up data from disk.

    Genesis

    We worked on the design of a mechanism to prevent a DoS attack on our Genesis +design related to rollbacks. This was arguably the biggest outstanding question.

    During the discussions around Genesis, we noticed a design boundary that nicely +delineates a fundamental component. We almost have a full Haskell prototype of +it. It will be very nicely self-contained, perhaps even usable in the ultimate +implementation!

    New VRF and KES crypto integration

    We collaborated with the Ledger team on preparing the ledger state and crypto +types to avoid huge allocation on the epoch boundary when changing aspects of +the crypto that will only manifest in headers, not in the ledger states.

    Technical debt

    We merged the pull-request that adds a support to db-analyser for +benchmarking ledger operations. This will allow us to identify, debug, and +profile potential performance problems. The benchmark focus on the main 5 ledger +operations that are involved in chain syncing, block forging, and block +validation, namely:

    1. Forecast.
    2. Header tick.
    3. Header application.
    4. Block tick.
    5. Block application.

    The following figure shows a plot of the benchmarking results for the first 65 +million blocks (approximately) of the Cardano chain. The thin yellow lines under +the x-axis show the epoch boundaries, whereas the thick yellow lines correspond +to the era transitions.

    As we can see in this figure, era and epoch boundaries require more computation +time. The ledger team are aware of this problem, and we are working to improve +this situation.

    Fostering collaboration

    We drafted a document motivating and defining how Consensus (and +possibly other core teams) will/should manage our package versions. This +pull-request garnered many great discussions from our team members and other +teams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et +al. We want to thank you all for your input, and we found this discussion very +enlightening!

    We merged the pull request that adds an overview of consensus to +the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[DB-sync Team Update]]> + 2022-12-14-db-sync + + 2022-12-14T00:00:00.000Z + + High level summary

    The DBSync team continued testing release 13.1.0.0. The QA team has reported that no issues have +been found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.

    Lower level summary

    • Release is cherry-picked back to master, which uses the new rollback mechanism which uses +reverse indexes, same as the release +#1320 +This also fixes a bug number of issues on master.
    • Depenencies upgrade and CHaP integration +#1324
    • AdaPots fix #1323. This +fixes an issue where the per epoch AdaPots didn't match the epoch boundary, but +they also included changes from the first block of the epoch.
    • Deposits Event fix #3212. This pr +adjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the +number of queries that db-sync does during syncing an make syncing faster.
    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-12-14-node-cli-api + + 2022-12-14T00:00:00.000Z + + 2022-12-14 - 2022-12-27

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Performance & tracing update]]> + 2022-12-14-performance-and-tracing + + 2022-12-14T00:00:00.000Z + + High level summary
    1. SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment.
    2. A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery.
    3. The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals.
    4. Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started.
    5. Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.

    Performance

    The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload.

    We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling.

    Tracing

    After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical.

    To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:

    1. We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration.
    2. The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.

    All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further.

    In addition, we're still pursuing our performance-enhancing rework of the new tracing internals.

    Infrastructure

    After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends.

    Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it. +This means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis. +This will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports.

    A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches. +Previously we only had automation for two aspects separately, so we only could either:

    • compare individual runs (used for different node configurations / versions)
    • collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version) +Naturally, combining these two capabilities was a long-desired feature of our analysis pipeline.
    ]]>
    + + Serge Kosyrev + https://github.com/deepfire + + +
    + + <![CDATA[Network Team Update]]> + 2022-12-12-network + + 2022-12-12T00:00:00.000Z + + High level summary

    In last sprint the team focused on preparations for the conference talk at +OPODIS 2022. We also worked on preparations to publish io-sim and related +packages on Hackage (PR #57, PR #60).

    We also started reviewing:

    • ouroboros-network
    • cardano-node
    • cardano-ledger +repositories for open-source readiness (PR #4128).

    We prepared a PR which changes how node-to-node and node-to-client protocol +versiones are serialised in cardano-node log (PR #4691).

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + + +
    + + <![CDATA[Crypto Team Update]]> + 2022-12-09-crypto + + 2022-12-09T00:00:00.000Z + + High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency.
    • Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack.
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • [Still in progress] We are introducing a more granular error handling mechanism PR#33
    • We merged the API redesig PR#35
    • We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future PR#36

    Mithril

    • We merged the individual signature PR#620
    • We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (kes repo)

    cardano-base

    • Nothing new to report. Still working in merging these PRs.
    • We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a bug in GHC

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Fixed a 'use-after-free' bug in the KES agent.
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-12-09-hydra + + 2022-12-09T00:00:00.000Z + + High-level summary

    This week, the Hydra team has worked on completing to "Validate coordinated head protocol against formal model", this is a huge step to verify the implementation is secure. They also worked on implementing ADR21 related to bounded tx validity which is now under review. HydraPay project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of issues they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced.

    What did the team achieve this week

    • Document model based testing #194 & #641
    • Got ADR21, reducing gaps between implementation and specification, under review.
    • Complete review on hydra-tutorial.
    • Complete first round of review on HydraPay work #634
    • Meeting with Director of CyberSecurity frio IOG to unblock "the RFP prepared for the external audit" #606
    • Remove vasil-dev and testnet from smoke-test because they were not working #630
    • Fix flaky plutus-merkle-tree test #642
    • Refactor NetworkSpec to improve legilibility.
    • Fix benchmark cost for abortTx #631
    • Adapt nix.conf to the recent hydra-ci nix cache migration.

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation.
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Get Cicero (new CI) working.
    • Use reference inputs to reduce the cost of the commitTx.
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-12-09-ledger + + 2022-12-09T00:00:00.000Z + + High level summary

    The Plutus tools team at IOG has started helping the ledger team to build out a user friendly +cardano-ledger-api package! +A GitHub project +will be filled out in the days ahead, +people interested in the API can use it to follow along and join in on the conversations.

    The ledger team has started using +architectural decision records +to leave a record of important decisions that the team makes. +We will retroactively go back through past decisions and make ADRs for them.

    The logic to track individual deposits is now nearly in place. +We are prioritizing correctness with our first pull request, and will follow up with +performance optimizations and general cleanup next.

    Pointer addresses are being deprecated with the Cardano major protocol version 8. +See CPS-0002 +for more context.

    Lower level summary

    Cardano ledger API

    The Plutus tools team has taken our minimal cardano-ledger-api package and started filling it +out and adding much needed documentation. +They have also added doctests! +In the days to come, the Plutus tools team will map out a lot more work for the API and record +it in this +GitHub project.

    See

    Architectural Decision Records (ADRs)

    We are now providing more context and leaving a record of important decisions that are made +in the ledger. The first ADR explains the very lightweight process.

    See

    Tracking individual deposits

    See ADR-3 +for background. +We now have the logic in place to track individual deposits, and a host of property tests +to make sure that the logic is correct. +The current implementation uses more memory than it needs to, and we will address that next, +with our hope being to only use one word (8 bytes) per registered stake credential. +There is a fair amount of other cleanup needed for general maintainability.

    See

    Removing pointer addresses

    Pointer addresses, which have never seen any real use +(there are something like eleven on mainnet), are being deprecated starting at Cardano major +version 9. +CPS-0002 gives the context. +We are disabling them by first preventing transaction outputs containing them +from being serialized by the node at the moment we switch to version 9. +At the hard fork after that, we will translate the existing few pointer addresses +to enterprise addresses.

    See

    Technical debt

    • pull-3162 - Sometimes we have to put safeguards in place for hard forks which may never +be exercised. After we have passed the given hardfork, we are able to clean up the code +and simplify our logic. We removed all of the ones that we are currently easily able to.
    • pull-3165 - We improved the type safety of our code while also discovering and fixing +a serialization bug.
    • pull-3172 - We removed dead code.
    • pull-3175 - The Allegra and the Mary code used to be coupled in a particular way the we grew to +dislike. We made these two ledger eras now uniform with the rest of our code base.
    • pull-3184 - We organized our property testing code.
    • pull-3200 - The Plutus tools teams fixed an outstanding bug in the translation from the +ledger state to the Plutus script context.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-12-02-hydra + + 2022-12-02T00:00:00.000Z + + High-level summary

    This week, the Hydra team has worked on cleaning up several things in progress +after last week's summit. They have extended their model-based testing (MBT) +approach with transaction creation & observation +#410, solved +AcquirePointTooOld problems of the hydra-node with by changing the wallet +initialization #439. +Also, the Hydra researchers updated the security proofs of the Coordinated Hydra +Head, which are bound to be included in the Hydra HeadV1 specification.

    What did the team achieve this week

    • Monthly review & report - will also be published on our website #644
    • Extended the model-based testing (MBT) with transaction creation/observation #410
    • Solve AcquirePointTooOld problems with new wallet initialization #439
    • Fixed our hydraw deployments (EC2 instances)
    • Created & discussed ADR21 within tx validity work
    • Received & discussed security proofs of Coordinated Hydra Head (requires more work)

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation
    • Complete review & integrate the Hydra tutorial
    • Review latest hydra-pay work
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec
    • Get Cicero (new CI) working
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[DB sync Team Update]]> + 2022-12-01-db-sync + + 2022-12-01T00:00:00.000Z + + High level summary

    The DB Sync team prepared a release 13.1.0.0-rc2 which includes many improvements for db-sync, +it makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces +migrations. This release finalises the objectives that were set for db-sync for the previous +3 months period and part of the syncing speed objective set for the next period +Changelog

    Lower level summary

    • Branch release/13.1.0.x +includes all the improvements related to the release. The release is passing through the testing +phase and a number of bugs and issues have been fixed, like +#1312 +#1311. +Also many new unit tests have been added.

    • Part of the release branch is cherry-picked back into master, in a way that it respects the new +release and development process, so that it takes into account migrations +release process

    • The DB Sync team has also tagged release 13.0.6 which better supports preview and preprod for +docker.

    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Mithril Team Update]]> + 2022-12-01-mithril + + 2022-12-01T00:00:00.000Z + + High level overview

    The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes.

    Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer.

    Low level overview

    • Implemented custom Mithril SPOs on testing/pre-release networks #563
    • Deprecated Signer Declarative Pool Id registration mode #585
    • Completed the second stage of the store automatic migration process #600
    • Completed the deployment pipelines to crates.io registry #588
    • Completed automatic generation of nodes/libraries versions manifest in releases notes #599
    • Completed CI/CD handling of PR from forks #597
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #586
    • Worked on signing the artifacts released in the distributions by the CI/CD #587
    • Worked on multi-platforms end to end test #601
    • Worked on the refactorizaton of the aggregator multi-signer engine #398
    ]]>
    + + Jean-Philippe Raynaud + https://github.com/jpraynaud + + +
    + + <![CDATA[System Test Team Update]]> + 2022-12-01-system-test + + 2022-12-01T00:00:00.000Z + + High level summary

    During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the P2P Single +Relay functionality, and also tested some DB-Sync tags.

    Workstreams

    Framework improvements:

    • moved the System Test CLI Pipelines from BuildKite to Github Actions
    • improved the reporting tools to support the rerun of the failled tests and update of the reports
    • added support for Github API in report-aggregator, so reports will be generated from the GitHub nightly jobs from now on
    • added support for mixed topology - P2P, legacy, mixed topologies
    • planned the P2P Single Relay system test activities
    • added support to start regression tests with PV8 + better selection of tests

    DB-Sync:

    • confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)
    • tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2
    ]]>
    + + Dorin Solomon + https://github.com/dorin100 + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-11-30-consensus + + 2022-11-30T00:00:00.000Z + + High level summary

    During the past two weeks, the consensus team merged improvements to the monadic +cursor API that was needed to implement LMDB range reads, which is in turn +required for the implementation of the UTxO HD feature. We added tables to +several tests in for the UTxO HD feature, which increases our confidence in the +correctness of the prototype. The mempool property tests are close to being +completed. Also, we finished the LSM tree tuning algorithm.

    On the Genesis front we started simplifying the BlockFetch logic with +CSJ-specific workloads in mind.

    We are also documenting the Block Diffusion Pipelining feature, and added a +high-level overview of consensus to the top level documentation of +ouroboros-network.

    Workstreams

    UTxO HD prototype

    We merged the implementation of a monadic cursor API (#1)) which was +needed to solve a bug with LMDB range-reads. After this PR was merged, we focused on +bridging the gap between the lmdb-simple interface and consensus by facilitating +using lmdb-simple's cursor API without Serialise constraints (#3).

    We refactored the backing store property tests to use quickcheck-lockstep +(#4081).

    We added tables to the mock ledger in the UTxO-HD feature branch +(#4184). Every test that used to run with SimpleBlocks now uses +tables. This will enable us to exercise the UTxO HD mempool integration by +leveraging the existing mempool property-tests. The new state-machine +property-tests are still needed for testing the parallel behaviour of the +mempool.

    Our work on the mempool state-machine tests revealed the need for improvements +in the quickcheck-state-machine library. Parallel testing assumed that the +state machine did not have access to mutable references. However, the mempool +tests require the use of such mutable references for mocking the ledger +interface. As a result, our parallel tests were failing with rather obscure +messages. @Jasagredo submitted a pull request (#12) that allows for +new mutable references to be created at each run of the state machine.

    Backing store property tests

    LSM tree implementation

    We finished the LSM Tree tuning algorithm. We are currently tidying up the code +and gathering results (i.e., plots and their interpretation).

    CSJ prototype

    We started simplifying the BlockFetch logic with CSJ-specific workloads in mind.

    New VRF and KES crypto integration

    Started working on supporting new version of StandardCrypto which uses compact +KES and batched VRF (#4151).

    Technical debt

    We reviewed the existing state of the Block Diffusion Pipelining document. We +are now working on the "Implementation" section (#4020).

    Fostering collaboration

    We cleared up our understanding of the error dynamics of forecasting +(#4146 and #4174).

    We submitted a pull request that adds an overview of consensus to the top level +documentation of +ouroboros-network (#4197). This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    https://github.com/input-output-hk/ouroboros-network/pull/4197

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-11-30-node-cli-api + + 2022-11-30T00:00:00.000Z + + 2022-11-30 - 2022-12-13

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Performance & tracing update]]> + 2022-11-30-performance-and-tracing + + 2022-11-30T00:00:00.000Z + + High level summary
    1. Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release.
    2. SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench.
    3. The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks.
    4. Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started.
    5. Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.

    Performance

    We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release.

    Tracing

    For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them. +The idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time.

    To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics.

    Infrastructure

    Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation.

    In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model.

    The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged. +We are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration.

    We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability.

    We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP.

    As usual, a number of smaller workbench, data analysis & reporting improvements have been made.

    ]]>
    + + Serge Kosyrev + https://github.com/deepfire + + +
    + + <![CDATA[Network Team Update]]> + 2022-11-28-network + + 2022-11-28T00:00:00.000Z + + Stake-Driven Data Diffusion Release for Relays

    IOG networking team decided to release the Stake-Driven Data Diffusion with +Robust Optimised Peer Selection also more commonly known as P2P. In the +last update, we informed about a performance regression, but it turns out it +only affects block producers, and thus we highly advise against running it on +such nodes. Further investigation is required to find the cause of it.

    On IOG's benchmarking cluster we have seen quite a good performance improvement +on block propagation itself. The cluster is running a static topology with +valency 6 (each node is connected to 6 other nodes). In which every of the 50 +nodes are block producers. The setup of this network is the same as mainnet. +We've seen 40-50% performance improvement on block propagation comparing to the +same cluster deployed with the same topology but using non-P2P nodes. We think +this performance improvement is caused by using full duplex connections. Quite +likely the transaction traffic floating in both directions on the same TCP +connection helps to keep the TCP window open. Note that in a cluster of 50 +nodes with valency 6 the probability of having at least one duplex connection +is more than 50%. We don't expect the same improvement on mainnet because the +network is much wider and the transaction traffic is not as large.

    Just before the release we squashed two small bugs:

    • issue #4163 - top level integration bug in keep-alive;
    • issue #4177 - a bug in outbound-governor;
    • PR #4165 - a fix cardano-ping support of NodeToNodeV_10.

    Peer Sharing

    We were carrying a review of peer sharing PR.

    DeltaQ

    Neil Davies was invited to give a guest lecture entitled Avoiding System Catastrophes at UCLouvain.

    What have we achieve last sprint

    • issue #4163: we found out that a control message is not passed to the +keep-alive mini-protocol, this results in every demotion executing demotion +timeout rather than a graceful termination. With the fix the node will no longer log:

      { "kind": "PeerStatusChangeFailure"
      , "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"
      , "reason": "TimeoutError"
      }
    • issue #4177: we fixed an assertion failure in the outbound-governor; now +we don't try demoted peers which are being demoted already.

    • PR #4155: we refactored ouroboros-network packages. There's a top level +ouroboros-consensus-diffusion package which integrates network +& consensus code. We also introduced:

      • ouroboros-network-api package which contains the API shared between +network & conensus;
      • ouroboros-network-mock package which contains mock API used for testing +(e.g. a mock chain & chain producer, etc.)
      • ouroboros-network-protocols package which contains implementation of all +(but handshake) mini-protocols, exposes a testlib and contains test +and cddl components.

      This made the dependency tree of network & consensus packages much +cleaner.

    • PR #4169: we described the usage of release branches in CONTRIBUTING.md +doc.

    • PR #4165: we fixed cardano-ping support of NodeToNodeV_10 protocol.

    DeltaQ

    The abstract of the talk:

    An essential step to ensuring that distributed systems are fit for +purpose.

    Distributed systems have become an integral part of our society and +daily lives. We are, both implicitly and explicitly, individually as well as +collectively, placing ever more trust in them.

    Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes +well beyond notions of functional correctness (i.e. never getting the wrong +answer). We need them to deliver the desired outcomes in a timely, robust, +reliable, resilient fashion, at scale and in a sustainable way (both +economically and environmentally).

    This all sounds like a worthy aspiration, but what would be a practical +approach to capturing and reasoning about these issues? How can we ensure that +systems can meet their fit-for-purpose objectives, not just in their design but +as they are deployed, encounter the imperfect world, are scaled to become +economic, and proceed into ongoing maintenance?

    This talk will illustrate how the notions of Outcomes and Quality Attenuation +(as captured by ‘∆Q’) are being used to both frame the necessary notions and +provide a basis for assuring the refinement and reification of such systems, +from initial concept to operational infrastructure.

    You can download the slides from here.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + + +
    + + <![CDATA[Crypto Team Update]]> + 2022-11-25-crypto + + 2022-11-25T00:00:00.000Z + + High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team.
    • Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes
    • cardano-base: The VRF and BLS branchs are still open and in progress
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library PR#31
    • We are introducing a more granular error handling mechanism PR#33
    • We rethought the API and made it more consistent with the underlying secp256k1 library PR#35

    Mithril

    • The mithril crates in general will be published in crates.io, and we adapted the core library's README PR#616
    • We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information PR#620

    cardano-base

    • We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) PR#341
    • SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions PR#344
    • Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus PR#266

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-11-25-hydra + + 2022-11-25T00:00:00.000Z + + High-level summary

    This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a presentation about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas.

    What did the team achieve this week

    What are the goals of next week

    • Monthly report & review meeting
    • Tie up several loose ends / branches.
    • Resolve Tx validity discussions & PRs.
    • Review cicero PR & try it out.
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-11-23-ledger + + 2022-11-23T00:00:00.000Z + + High level summary

    We released CIP-1694, +our proposal for entering the Voltaire phase. +Please come join the discussion, this will be an incredibly exciting transition for +Cardano and we want everyone to participate!

    We now have a sensible way to version all of the serialization schemes used in the ledger. +The draft pull request was polished, reviewed, and merged this week. +This solves many problems that have vexed us since the beginning of the Shelley ledger era.

    Everyone working on the Cardano node is working together to improve our release process, +and the ledger team in particular dedicated one engineer to help with these efforts +for the next release.

    Lower level summary

    The Conway ledger era

    The current proposal in CIP-1694 encompasses two new ledger eras. +The first era will be called Conway, after the English mathematician John Horton Conway. +The community facing aspects of the Conway ledger era will be very minimal, +but it will pave the way for introducing liquid democracy. +The details can be viewed here. +We do not yet have a formal specification for the Conway era. +Our plan is to debut the +formal ledger model. +Briefly, the Conway ledger era will:

    • introduce SPO voting for hard forks (in the spirit of the now abandoned CIP-47)
    • provide an on-chain mechanism for rotating the governance keys
    • re-plumb the ledger rules involving governance to be in line with CIP-1694

    Versioned CBOR

    We now have the ability to easily tie our serialization schemes to the Cardano +major protocol version. +We still aim to preserve backwards compatibility as much as possible, but we now have a principled +plan for resolving problems (see CIP-ledger-cbor). +In particular, we can now address several long standing issues, such as +issue-2444, issue-2965, and issue-3003.

    The final (and massive!) pull request which brought us the versioning is pull-3138.

    Deposit tracking

    The draft pull request which was exploring how best to track individual deposits +is much closer now to being ready to take out of draft (pull-3127). +For background on the issue, see issue-3113. +This is quite an invasive change which effects many of our tests, which we are now addressing.

    Technical debt

    As always, we keep working on technical debt. +We have deduplicated a some things: pull-3129, pull-3162. +We have memoized a problematic computation (though more due diligence is needed before we can +merge): pull-3141.

    Node release

    We have been helping with the node release efforts. See pull-4608.

    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-11-18-hydra + + 2022-11-18T00:00:00.000Z + + High-level summary

    This week, the Hydra team released version 0.8.1, which includes several fixes and a user-wished extension of the persistence introduced by 0.8.0 of replaying server outputs to make clients like the hydra-tui be aware of the latest hydra-node state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from hydra-poc to hydra!

    What did the team achieve this week

    • Implemented replaying of server outputs to address #580
    • Released version 0.8.1 containing this and other fixes Release notes
    • Worked on the bounded tx validity as one of the on-chain script fixes, but couldnt finish it just yet #615
    • Collaborated with the education team on a Hydra tutorial.
    • Discovered and discussed issues with the seen ledger.
    • Renamed the Hydra repository hydra-poc -> hydra

    What are the goals of next week

    • Create and discuss an ADR about handling tx validity correctly.
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
    • Have a team workshop / hackathon after the summit:
      • Retrospective
      • Roadmapping session
      • Hack on something complex or useful
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Mithril Team Update]]> + 2022-11-18-mithril + + 2022-11-18T00:00:00.000Z + + High level overview

    The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks.

    Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer.

    Low level overview

    • Released a new Mithril distribution 2246.1
    • Completed the first stage of the store migrations process #562
    • Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes #565
    • Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage #576
    • Prepared a Daedalus synchronization benchmark video with/without Mithril #606
    • Upgraded the Cardano nodes of the testing Mithril networks to 1.35.4 #594
    • Worked on implementing SPO tests nodes on testing Mithril networks #563
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #588
    • Worked on the refactorizaton of the aggregator multi signer engine #398
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-11-16-consensus + + 2022-11-16T00:00:00.000Z + + High-level summary

    During the past two weeks, the consensus team started documenting the +implementation of the UTxO HD feature and continued developing tests for it. As +part of our work on UTxO HD, we improved the Haskell support for LMDB. We also +spent time working on the LSM tree prototype, and designed a parameter tuning +algorithm for it. Regarding our work on Genesis, our investigation of the +"plateaus" pointed at the TICKF slowdown on era boundaries as culprit. This +led us to developing a caching strategy that will not only remove the +aforementioned "plateaus", but can help alleviating the growing block production +delay on epoch switch. We also helped reviewing the block forge credential +hotswap feature, which is intended for use in the adoption of P2P.

    We also worked on paying technical debt and fostering collaboration. In +particular, we improved the io-sim framework, which is crucial for testing and +simulating Cardano components. We also removed thunks that appeared on era +translations, and improved our diffusion pipelining feature. We are working on a +presentation for explaining Praos and Genesis.

    High-level status report

    • Finish the UTxO HD prototype: in progress.
      • We added documentation for this feature.
      • We developed the second version of the mempool tests.
      • We fixed benchmarks that were inflating the speedup we observed in the +anti-diff implementation of sequences of differences. Speedups are now in the +range of [3.33, 4.75], which remain significant.
      • We continued improving Haskell LMDB support.
      • We finished implementing a "parameter tuning algorithm" for the LSM tree +prototype. This enables us to run experiments to check the correctness of +the algorithm.
    • Genesis: in progress.
      • Work investigating the "plateaus" in the ChainSync jumping prototype +pointed to the TICKF slowdown on era boundaries as culprit.
    • Tech debt:
      • We improved the capabilities of our io-sim library, which is crucial for +testing and simulating Cardano components.
      • We removed thunks from epoch translations in the ledger.
      • We added Linux CI support for lmdb-simple.
      • We got pending diffusion pipelining improvements merged.
    • Fostering collaboration:
      • We are working on a explanation of Praos and Genesis protocols.
    • Support:
      • Investigation of CSJ "plateaus" led us to developing a caching strategy for +TICKF that will not only remove these "plateaus", but can help alleviating +the growing block production delay on epoch switch.
      • We reviewed the block forge credential hotswapping feature which is intended +for use in the adoption of P2P.

    Workstreams

    Finish the UTxO HD prototype

    We merged PR #4060, which adds a report documenting the UTxO HD +feature, and puts emphasis in explaining how the mempool works in combination +with UTxO HD.

    We opened a draft PR with the second iteration of the property tests for the +mempool (#4076).

    We fixed the Arbitrary instances for keys and values in DiffSeq benchmarks +(#4143). The problem was that we were testing with mostly small +values, which artificially boosted the performance gains we saw on benhcmarks. +Speedups are now in the range of [3.33, 4.75] across the different +configurations.

    Backing store property tests

    We focused on incorporating feedback on the monadic cursor API PR (#1). +This required us to make small tweaks to quickcheck-lockstep to test the new +API. We also updated the backing store property tests to use the new version of +the monadic cursor API.

    LSM tree implementation

    We worked on the LSM tree prototype. In particular: finished implementing a +"parameter tuning algorithm" that adapts the LSM tree design based on factors +like:

    • workload
    • machine specs,
    • and characteristics of the data being stored.

    We are now running experiments to gather results and cross-reference them with +existing experimental results from the LSM tree paper to see if the algorithm is +working correctly.

    Benchmarking the CSJ prototype

    We focused on investigating the "plateaus" in the ChainSync tip, which turned +out to be due to the TICKF bug which we previously were only aware of in the +context of the long forging times near epoch boundaries. For the most drastic +patch by @nfrisby to speed up TICKF, full sync is speeding up by 7%.

    The following plot shows that by caching the TICKF the ChainSync tip and the +VolatileDB tip progress at the same rate.

    The plot below shows the speedup observed by caching the TICKF rule wrt the +baseline.

    Technical debt

    After addressing the PR comments, we merged PR #16, which implements +the MonadCatch instance for STM. This extends the capability of our io-sim +library, which is crucial for testing and simulating Cardano components PR #16 +closed #1461. This new feature was published as version 0.4.0.0 +of io-sim.

    We continued with our work fixing the NoThunk errors required for enabling +nightly tests, with the help of TVarInvariant checks in strict-stm and +nothunks libraries. We proposed fixes in cardano-ledger that took care of +thunks that appeared in era translations (#3143). The fixes will be +integrated back into consensus when cardano-ledger approves and publish the +changes introduced in #3143.

    We added CI support for lmdb-simple (#2). We currently test the build on +a Linux environment only.

    We got pending diffusion pipelining PRs (#3857, #3860, +#3856) merged, after rebasing and addressing feedback.

    Fostering collaboration

    @nfrisby finished a visualisation tool and outlined scripts for the Praos and +Genesis explanation presentations. The idea is to produce a video that gives an +overview of these protocols.

    Support

    We started working on caching the computation of the TICKF rule +(#4054), since this was blocking our benchmarking work for +Genesis. In addition, this issue has the Cardano community quite +concerned, so we are hoping the work done in caching the +computation of the TICKF rule can help alleviating the growing block +production delay on epoch switch.

    We reviewed the block forge credential hotswapping PR #3800 from the +networking team, which is intended for use in the adoption of P2P.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-11-16-node-cli-api + + 2022-11-16T00:00:00.000Z + + 2022-11-16 - 2022-11-29

    High level summary

    Completed

    docs

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Performance & tracing update]]> + 2022-11-16-performance-and-tracing + + 2022-11-16T00:00:00.000Z + + High level summary
    1. P2P performance investigation is ongoing, in support of the networking team.
    2. SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support.
    3. Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing.
    4. On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started.
    5. We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.

    Performance

    We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes.

    Tracing

    We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis.

    Infrastructure

    The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends.

    We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing.

    A number of smaller workbench, data analysis & reporting improvements have been made.

    ]]>
    + + Serge Kosyrev + https://github.com/deepfire + + +
    + + <![CDATA[Crypto Team Update]]> + 2022-11-11-crypto + + 2022-11-11T00:00:00.000Z + + High level overview

    The SECP primitives AC has been met, and the test-vectors PR has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool PR has been merged, and we've adapted the KES secure PR to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (PR#). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork.

    Low level overview

    • With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation.
    • We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool.
    • In parallel, we keep progressing on the KES agent
    • VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification.
    • Our libsodium fork now links directly to upstream libsodium.
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-11-11-hydra + + 2022-11-11T00:00:00.000Z + + High-level summary

    This week, the Hydra team published together with Obsidian Systems a light paper +on our "Hydra for Payments" project (Link). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of hydra-node processes.

    What did the team achieve this week

    • Published Hydra for Payments light paper (Link)
    • Have a draft RFP ready for a first review internally
    • Answered the internal auditors questions
    • Fixed a bug with following the chain when starting with persistence (#599)
    • Minor improvements to logging for better observability (#598, #600)
    • Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (#590)

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Close more gaps #452
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-11-11-ledger + + 2022-11-11T00:00:00.000Z + + High level summary

    I am extremely excited to say that we now have a pull request up which introduces our new versioned +CBOR serialization. This was an enormous effort, but it will solve a host of problems that we have +had since the Shelley phase. It will take time to properly review it, and we will +need to put in a lot of effort to integrate it with the downstream components, but this is a huge +milestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction +serialization schemes.

    We also have a draft pull request that reworks how deposits are tracked. Users of the system will +not notice any difference, but it is a necessary change needed to prepare the way for +decentralizing the governance of Cardano.

    Finally, we continued to address technical debt. In particular, we continued to make progress on +bringing coherency and consistency to the code base with a common naming convention, and +improving some error messages.

    Lower level summary

    • We have a pull request up for our new versioned CBOR serialization. +When we encounter a problem with our deserializers, it can be very difficult to implement a fix. +It is difficult because we can only fix such issues during a hard fork, and leading up to the +hard fork we must maintain two serializations for the same type in order to not cause unintended +network splitting (the problematic version must be used before the hard fork, +and the fixed version is used afterwards). +This can be especially tricky with the FromCBOR typeclass, since it is not always easy to +search for where all the problematic uses are located. +The new versioned CBOR serialization allows us to gracefully handle this transition. +See [pull-3138].
    • We proposed a CIP for backwards compatibility of the transaction serialization schemes. +See [pull-372].
    • We have draft for the new deposit tracking. +This draft is not as memory efficient as the final version will be, +but it is a sufficient proof of concept that we can write property tests against, ensuring +that we have not changed the semantics. +We will optimize after we are sure of the correctness. +See [pull-3127].
    • We now provide better support for debugging failed Plutus scripts in an important helper +function, named evaluateTransactionExecutionUnits. +In particular, it now returns all the information needed to rerun the script with exactly the +same arguments. This feature will end up appearing in the CLI and other tools from the Plutus +tools team. +See [pull-3135].
    • We did a lot more renaming to bring coherency and consistency to the code base. +See [pull-3126], [pull-3120], [pull-3118], and [pull-3116].
    • We have added a few things to the ledger repository to make it conform to the +Cardano Engineering Handbook +See [pull-3139].
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Network Team Update]]> + 2022-11-11-network + + 2022-11-11T00:00:00.000Z + + High-level summary

    In last sprint we got a performance report of P2P performance testing cluster +(which consists of 50 nodes). There is a performance regression in the header +notification metric. The P2P cluster is constructed with the same +topology as the non-p2p reference one this indicates some regression which +needs to be further investigated. This poses a risk for releasing P2P.

    We also continued to work on peer sharing: pull #4019.

    We continued working on dynamic block production which is required for P2P +release for BP nodes: pull #3159.

    We simplified the P2P topology format: issue #4559, pull #3888.

    We added a new trace point for asynchronous demotions of local peers with +Warning severity. This trace is important for SPOs.

    Detail description

    Performance regression

    Below we include a graph which shows the performance regression of the P2P code base vs non P2P.

    On the x axis is time in seconds which measures the delay from the start of +the slot to when a header was received. The y axis is the percentile of nodes +that received a header. We are currently investigating possible causes of the +regression.

    New P2P topology form

    The new topology file format is described in this issue #4559.

    Tracing improvements

    • We improved a handshake error reporting, pull #4136
    • We added TraceDemoteLocalAsynchronous rendered as DemoteLocalAsynchronous +in json format, pull #4127. Such demotions should be investigated by the +pool operator. They can indicate a problem in the deployed system, but also +they could indicate a remote problem in arranged connections with other SPOs.

    Open Source Improvements

    We improved documentation of io-sim and typed-protocols for open-source +contributors and/or maintenance tasks: pull #22, pull #45, pull #48.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-11-04-hydra + + 2022-11-04T00:00:00.000Z + + High level summary

    This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun preview network, see 0.8.0 release notes. They also completed implementation of ADR18 and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates #195 and alignment of the specification document with auditors.

    What did the team achieve this week

    • Complete and merge ADR18 #579
    • Re-deploy hydra scripts to respun preview network, see 0.8.0 release notes #595
    • Have first gap of #452 in review.
    • Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot.
    • Engineering meeting to discuss hard forks and protocol parameter updates #195
    • Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions.
    • Drafted project scope for an external audit RFP.

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Answer the internal auditors questions
    • Have a draft RFP ready for a first review internally
    • Close some gaps #452
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Mithril Team Update]]> + 2022-11-04-mithril + + 2022-11-04T00:00:00.000Z + + This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.

    Low level overview

    • We have been moving forward on the implementation of the release process #500:
      • Setup of the new hosted environments for testing-preview, pre-release-preview and release-preprod with their terraform and GitHub environments #542
      • Adapted the CI workflows to work with the new release process #543
      • Publication of an ADR3
      • Publication of a dev blog post about Mithril networks evolution
      • Releasing our first Mithril distribution 2244.0
    • Worked on the API versioning mechanism #565
    • Worked on the implementation of the stores migration process for the signer and aggregator nodes #562
    • Prepared a Mithril devnet video demo #526
    • Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably #484
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Open-Source Team]]> + 2022-10-31-open-source + + 2022-11-04T00:00:00.000Z + + High Level Summary
    • We've been working toward publishing Cardano Backlog, currently its in +review by the IOG communication team.
    • We identified a number of libraries which can be published.
    • We setup and enhanced cardano-updates.

    Detailed description

    I am glad to announce that I was given the role of open-source advocate for +cardano project. In last few weeks we were making steps towards publishing our +backlog. It's currently under review by the communication team, although most +of the issues are already visible across various repositories.

    The open-source initiatives have their own +project. It is set up +to help us track our major open-source activities. Right now there are two +work streams:

    We identifies a number of libraries across all the teams which contribute to +Cardano which we would like publish to publish, see the following +link. Arnauld Bailly recently published +quickcheck-dynamic +library on Hackage. The networking team is slowly progressing towards +publishing io-sim and related packages, checkout the progress +here.

    Thanks to Arnaud Bailly our Cardano Updates website has +a new look & feel! It's using docusaurus.io.

    Christian Taylor carried recently a detailed analysis of our open-source +repositories. He collected many interesting metrics, which allows us to see +where we need to improve as an open-source project to make the Cardano project +and many smaller related libraries which we maintain be more open and available +for open-source contributors.

    The graph below shows which documents the 55 most important Cardano +repositories are missing the most: +Documentation Adoption +You can expect we will improve in these metrics in the coming weeks.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Embedding Quality Workstream]]> + 2022-11-03-embedding-quality + + 2022-11-03T00:00:00.000Z + + High level summary

    We made good progress on most of the Action Items we agreed on Lisbon, like:

    • Cardano System Tests was fully open to public (tools, tests, results) +See cardano-node-tests webpage.
    • We defined an user-facing-functionality template that is used with the cardano-cli team
      • this includes acceptance criteria & user stories, and definition of done
    • We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)
    • We started to apply a labelling convention on cardano-node issues that will be used to generate some visual dashboards with some metrics [TBD]
    • Ziyand Liu started an End-to-End Development and Testing Process for Plutus Features
    ]]>
    + + Dorin Solomon + https://github.com/dorin100 + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-10-02-consensus + + 2022-11-02T00:00:00.000Z + + High-level summary

    During the past two weeks, the consensus team continued its work on testing the +UTxO HD prototype. We completed the era-transition and backing store tests, and +the mempool tests are advancing at a steady pace. Regarding our work in the +Genesis design, we continued our collaboration with the research and networking +teams, and we continue investigating strategies for making the chain-sync +jumping prototype faster.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We worked on state-machine tests for the mempool, and spotted potential bugs +in the implementation. Investigation is ongoing.
      • We have a set of property tests for the backing store. We still need to +incorporate the improvements to the LMDB cursor API that these tests +made possible.
      • We merged the era-transition tests PR.
    • Genesis: on track.
      • Design work around Genesis continues in collaboration with researchers and +the networking team.
      • We continued trying to improve the performance of the chain-sync jumping +prototype. We gained additional insight on which parameters to tweak next. +In spite of the baseline still being faster, the current prototype already +achieves a significant speedup when compared to the naive approach of simply +running full chain-sync with all peers.
    • Tech debt: on track.
      • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    Workstreams

    Finish the UTxO HD prototype

    We continued working on property-tests for the UTxO HD prototype. In particular +we merged the era-transition tests +PR.

    Backing store property tests

    The backing store property tests +PR has been +reviewed. The next steps are:

    • Improve error handling and command generation.
    • Add coverage testing to check that we are not failing to cover interesting +test cases.

    The monadic cursor API +went through its first review round. The API is in a relatively stable state. +This PR also unifies the cborg and serialise-based interfaces to LMDB +operations. The next steps are:

    • Write +quickcheck-dynamic +state-machine tests for this API.
    • Adapt the changes in the serialisation interface in the backing store property +tests. This will involve adding boilerplate code in consensus to make up for +the removal of the cborg-based interface.

    LSM tree implementation

    We worked on the LSM tree +prototype. In +particular, we focused on tuning the LSM tree design to the different workloads +that consensus has (eg syncing, normal node operation, etc).

    Benchmarking the CSJ prototype

    Work on improving the chain-sync jumping performance is ongoing. In particular +we compared the performance of different jump intervals, which, somewhat +surprisingly, do not make a significant difference. In particular, we are seeing +periodic "plateaus" where the chain-sync tip does not progress, but they are +much longer for the prototype. Our hypothesis is that this seem to be due to a +combination of the garbage collector (GC) pauses, and the actual time it takes +the non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo +fragment.

    In the coming weeks we will try to shorten these plateaus via a combination of +tweaking GC options and less synchronisation in the CSJ governor.

    The following plot shows the performance of the chain-sync jumping prototype +using different jumping intervals. It compares the syncing progress by plotting +the slots of adopted blocks against time. The baseline is still faster, however +it is worth noting that the current prototype already achieves a significant +speedup when compared to the naive approach of simply running full chain-sync +with all peers.

    The second plot shows the syncing progress sliced to a chosen ~5min interval, +and includes, in addition to the slots of adopted blocks, the slots of the tip +of the ChainSync fragment. This allows us to see how far ahead of the selected +tip the CS dynamo is, i.e. how much room we have for BlockFetch not to get +stalled. It shows periodic behaviour (due to the forecasting limit), and shows +that the CS fragment tip is not progressing for significant periods +("plateaus").

    Technical debt

    We clarified a +common source of confusion around VRF tie-breaking and cross-era chain +selection. This PR involved correcting potentially misleading names of +VRF-related functions, and providing context for a particular VRF value is +used for tie-breaking.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-11-02-ledger + + 2022-11-02T00:00:00.000Z + + High level summary

    We have made the decision to use the +formal ledger repository +in place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure +to the model. In particular, we now have a lot of support for axiomatic set theory. +While the next ledger era is still in the design phase, most of the team remains working +on technical debt. +In particular, we have moved a lot more code out of the Shelley specific modules and into +a ledger core module, we have finished up our benchmarking around the problematic TICKF +ledger transition (while improving the performance), made conveniences to the development +environment, cleaned up all the recent changes to the cost model, added a lot of documentation, +fixed some flaky tests, and deleted some dead code.

    Lower level summary

    Axiomatic Set Theory

    The formal ledger model now has support for much of the set theory that we make use of in +the formal ledger specifications. See [pull-20].

    Completed Technical Debt

    • We have addressed issues with two of our most problematic and flaky tests. +See [pull-3039] and [pull-3093].
    • We have added more documentation and tests to the Twiddler module. This is a module which +makes our CBOR serialization round-trip tests much more robust, and will also hopefully +help enforce the mandate for downstream libraries to never re-serialize data that needs +to be hashed. See [pull-3073] and [pull-3095] +(we cannot merge 3095 just yet, due to a preference for merging other features).
    • We have finished our long analysis of the problematic TICKF transition. +We now have a lot of benchmarks surrounding this code, and have added performance improvements. +See [pull-3068] and [issue-3035].
    • We have restored support for +ghcid +in our repository. This is a tool for developing with Haskell that many of us find greatly +improves our productivity by providing us with constant feedback from the type checker. +See [pull-3112].
    • After much activity on the cost model, we have done some final clean up of the code. +See [pull-3075] and [pull-3101].
    • We moved a lot of the existing user facing documentation regarding native tokens into the +ledger repository, and cleaned it up +(most of the heavy lifting was done by our amazing technical writers). +See [pull-3091].
    • We removed dead code. See [pull-3089].
    • We moved a lot of code from the Shelley specific libraries to the ledger core library. +See [pull-3109] and [pull-3110].
    • We've removed more of the awkward legacy template Haskell names. +See [pull-3108].
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-11-02-node-cli-api + + 2022-11-02T00:00:00.000Z + + 2022-11-02 - 2022-11-15

    High level summary

    • Documentation improvments
    • Merged community contributions
    • Exposing types from cardano-api requested by the community/other teamss
    • Test output has been improved so diagnosing failures is now easier
    • Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)
    • Refactoring of cardano-testnet making it more useable as a library (ongoing)
    • Release 1.35.4 was merged & released

    Completed

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Node Release Team Update]]> + 2022-11-02-release + + 2022-11-02T00:00:00.000Z + + Node Reelease Update

    2022-10-19 - 2022-11-02

    Executive Summary

    The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset, +a temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8.

    1.35.4 release candidates have been created and are being tested internally and externally.

    Completed

    In Progress

    ]]>
    + + Samuel Leathers + https://github.com/disassembler + + +
    + + <![CDATA[System Test Team Update]]> + 2022-11-02-system-test + + 2022-11-02T00:00:00.000Z + + High level summary

    We have been focused on:

    • Fully opening our test results (on top of the existing tests & tools):
      See cardano-node-tests webpage.
    • Started to test and automate the new functionalities added in the 1.35.4-rc1 node tag
      See test results tracking page.
    • Made some improvements to the automated db-sync sync tests
      See db-sync tests.
    • Multiple cleanups and updates to the cardano-node-tests framework
    • Updated the nightly pipelines for the cardano-node-tests after the Babbage HF
    ]]>
    + + Dorin Solomon + https://github.com/dorin100 + + +
    + + <![CDATA[DB Sync Team Update]]> + 2022-11-01-db-sync + + 2022-11-01T00:00:00.000Z + + High level summary

    The DBSync team is preparing a release which introduces schema simplifications, removes indexes, +unique and foreign keys. It also provides a way to fix older values and migrates without the need to +resync from genesis.

    Lower level summary

    Schema simplifications

    Indexes, Unique and Foreign keys are removed in order to speedup syncing +#1295 +The same pr also introduces a different way to rollback, which doesn't rely on foreign keys and +indexes.

    Performance

    The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A +conservative number of these will be included in the next release and the rest can be found in +performance view.

    Migrations and resyncing

    The next release will be 13.1.0, it will enable a migration without the need to resync. It will also +introduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases +#1294

    Release

    The release has been mostly cherry-picked from master +#1294 and its scope can be seen +release view

    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-10-28-hydra + + 2022-10-28T00:00:00.000Z + + High level summary

    This week, the hydra team completed several user experience improvements to the +hydra-tui and hydra-node, and delivered a first version of persisted head +states by publishing release version +0.8.0. +Besides this, they met with researchers on topic of the HeadV1 specification and +kicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation.

    What did the team achieve this week

    • Completed the UX improvements on the hydra-tui
    • Released version 0.8.0, which delivers a first version of persisted head states
    • Met with researchers on the HeadV1 specification
    • Started work on the RFP for our external audit

    What are the goals of next week

    • Complete ADR18 implementation and get it merged
    • Start work on event-sourced persistence #580
    • Have a first plutus script gap closed #452
    • Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Network Team Update]]> + 2022-10-28-network + + 2022-10-28T00:00:00.000Z + + High-level summary

    The team has focused on debuging & fixing bugs for the P2P single relay release, which included

    • diagnosing, fixing and writing tests for a bug in peer-state-actions which +fortunately hasn't been released;
    • diagnosing & preventing misconfiguration of DNS

    We also focused on developing peer sharing. We also held a session with +the scientists on eclipse evasion.

    Detailed description

    P2P Network Stack

    During the past two weeks the team focused on p2p single relay release and peer +sharing. We found and fixed an important bug recently introduced in one of the +components of p2p networking stack (fortunately never released). Together with +a fix, we designed a unit test diffusion simulation as well as quickcheck +property test (both could reproduce it). We also changed the code in a way that +if such a bug is reintroduced in the future, it will be obvious to diagnose. +For more see:

    Initial benchmarking run of the P2P code was executed. The results where +unlike what we see on the mainnet. We found a possible misconfiguration of the +cluster (caused by 0 TTL on domain names), which could be the direct cause of +it. We wrote a PR which rules out such misconfiguration. We are awaiting on +the next benchmarking results. See more at:

    ouroboros-network#4106

    We also started working on P2P single relay release. The PR +ouroboros-network#4120 +includes 108 patches cherry-picked from the master branch. We started +working toward integration these changes against the release branch of +cardano-node. Early next week we ought to be able to have an early version +of cardano-node with non experimental P2P support!

    For more detailed release plan please see P2P - Single +Relay +issue.

    Consensus

    We identified and fixed missing error reporting in consensus +initialisation phase. See more at +ouroboros-network#4015

    Cardano Node

    We also made changes in cardano-node in order to give better experience for +node operators. This includes updating severities of some of the traces as +well as implementing new format of the p2p topology file. For more see:

    Peer Sharing

    We continued working on implementation of peer sharing. We have an early +implementation which will be reviewed and analysed in next weeks. We started +working on cardano-node integration. We need +PR #4392 to be merged +before such integration will be able to land in cardano-node, although this +is not blocking us currently. See more at:

    Eclipse Evasion

    We held a session which included Alexander Russel, Sandro Coretti-Drayton and +Nick Frisby from the consensus team. We discussed high lever design of the +eclipse evasion scheme, which is important for the design and implementation of +ouroboros-genesis. We got a positive feedback from the researchers.

    IO-Sim

    In this period we made little progress towards releasing IO-Sim on Hackage. +A single PR which added +a few missing instances of the STM monad.

    Open Source

    We made sure the CI runs for PRs which comes from forks (which is important to +accept contributions from 3rd parties).

    Mithril Cardano Integration

    We held initial discussions with Arnaud Bailly about possible path to integrate +mithril to cardano-node and take advantage of the ouroboros-network +diffusion layer.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Performance & Tracing Team Update]]> + 2022-10-28-performance-and-tracing + + 2022-10-28T00:00:00.000Z + + High level summary

    On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline.

    On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario.

    Executive summary

    • The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale.
    • The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment.
    • The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.
    ]]>
    + + Serge Kosyrev + https://github.com/deepfire + + +
    + + <![CDATA[SRE Team Update]]> + 2022-08-12-sre + + 2022-10-28T00:00:00.000Z + + High level summary

    The SRE team is heavily working on the Equinix Metal migration, replacing Hydra +with Cicero, and a new version of Spongix.

    Lower level summary

    OpenZiti

    • Work is ongoing on our OpenZiti integration into Bitte in [bitte-zt].
    • CI-World deployment of Darwin CI Ziti service in [ci-world-commit-d40f4d].
    • Multiple issues filed, and a lot of discussion with the OpenZiti developers, +we're making pretty rapid progress thanks to them.
    • Work on getting Equinix baremetal machines integrated into AWS World Bitte +clusters utilizing a Ziti ZTNA network overlay to bridge the networking of +the two environments and get IAM extension to Equinix machine for Nomad +client onboarding.
    • A Nix Flake for most of our OpenZiti dependencies including the Console, +Controller, Edge Tunnel, and Router is now at [openziti-bins].
    • The Flake also includes a WiP NixOS modules for these components.
    • Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with +no issues seen so far
    • Moved the console to traefik routing service (zac.$DOMAIN) and +controller/edge router stay at zt.$DOMAIN, but have registered consul +services

    Cicero & Tullia Integrations

    Cicero & Tullia Features

    • Improvements to Tullia task aggregation to make [cardano-addresses] build +correctly.
    • Better tullia CUE lib default for tags [tullia-commit-4df3c5d].
    • Put cache.nixos.org back in cache.iog.io's upstreams. This is now +considered a public cache again, and without it some Cicero evaluations had +to build huge packages.
    • Started working on a flake-parts module for Tullia.
    • Started working on cutting down Tullia task build time by putting facts in +JSON files.
    • Fixed running into kernel arg limit by reading tullia's DAG from a file
    • Merged [tullia-pull-9] that fixes several issues related to error reporting. +and escaping.
    • Added Mac builders in Cicero on CI-World.
    • Started work on Tullia invocation caching.

    Spongix

    • A lot of progress on an SQlite backed version of Spongix, it already supports +the full HTTP binary cache protocol but still lacks comprehensive testing and +some tuning, as well as recursive lookups.
    • First steps in the implementation of the nix-daemon ssh-ng protocol so +Spongix can be used via SSH and we can get rid of basic auth.

    Bugs

    • Discovered Cicero bug where Nomad reschedules cause the Github commit status +to get stuck in pending
    • Discovered Cicero race condition bug around concurrent transactions for +codependent actions.
    • Fixed tullia task order bug in [cardano-addresses]
    • Diagnose Cicero action not triggered in [abcirdc]
    • Fixed meta/description of the Tullia package in [tullia-pull-7]
    • Add Vault token loop alerts in [bitte-cells-pull-40]
    • Ongoing investigation on recurring Patroni and nomad-follower issues related +to token rotation.
    ]]>
    + + Michael Fellinger + https://github.com/manveru + + +
    + + <![CDATA[Crypto Team Update]]> + 2022-10-27-crypto + + 2022-10-27T00:00:00.000Z + + High level overview

    The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to +meeting the acceptance criteria in cardano-base, +which lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and +we are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution, +but also progressing on the implementation.

    Low level overview

    SECP built-ins

    • (missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in PR 313
    • CIP-0049 was addressed in the editors meeting, and PR 250 was merged
    • The unit-tests PR 320 is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.

    KES agent

    • We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them.
    • We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).
    ]]>
    + + Iñigo Querejeta Azurmendi + https://github.com/iquerejeta + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-10-21-hydra + + 2022-10-21T00:00:00.000Z + + High level summary

    This week, the hydra team reviewed and addressed several open comments on the +new HeadV1 specification, completing a list the of identified gaps between +specification and implementation while doing so. In the wake of the recent +demonstration of SundaeSwap running their DEX in a Hydra Head, they met with +them to capture feature ideas & incorporate their feedback on the roadmap, as +well as potential research avenues.

    What did the team achieve this week

    What are the goals of next week

    • Complete the last two items required for a version 0.8.0.
    • Cut the next release, version 0.8.0
    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Have the CI build macos artifacts
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-10-19-node-cli-api + + 2022-10-19T00:00:00.000Z + + 2022-10-19 - 2022-11-01

    High level summary

    This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:

    • Ask the node about the current mempool's capacity and sizes
    • Request the next transaction from the mempool's current list
    • Query if a particular transaction exists in the mempool

    Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric tx_submit_fail_count has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:

    • Documentation improvments
    • Release 1.35.4 was merged & released
    • Exported various types from cardano-api that were requested by community members

    Completed

    cardano-cli

    cardano-api

    cardano-submit-api

    cardano-node

    cardano-testnet

    • None

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-10-18-consensus + + 2022-10-18T00:00:00.000Z + + High-level summary

    During the past two weeks, the consensus team worked on adding property test for +different aspects of the UTxO HD prototype: era transitions, mempool, and +backing store. Thanks to these tests we were able to uncover a bug in the +prototype. On the Genesis front, we benchmarked a different version of the +ChainSync jumping prototype to try to improve its performance, but this did not +result in any noticeable speedup.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We focused on increasing test coverage for the UTxO-HD prototype:
        • We started implementing Cadano-eras transition property-tests.
        • We started implementing state-machine property-tests for the mempool.
        • We merged the mempool rewrite.
        • We started working on state-machine tests for the backing store. This +uncovered a bug in the range-read implementation of the LMDB backing +store.
    • Genesis: on track.
      • We benchmarked a version of the Genesis ChainSync Jumping prototype that +spreads out the ChainSync updates over a longer period of time. This did not +result in any noticeable speedup.
      • We investigated the overhead introduced by non-ChainSync components, but no +conclusions could be drawn from the benchmarks we ran.

    Workstreams

    Finish the UTxO HD prototype

    We focused on increasing test coverage for the UTxO HD prototype. We also merged +the mempool +rewrite.

    Era transition property tests

    We started implementing Cardano era transition property +tests, +which are needed for making sure that the ledger tables get updated in the +right way when we move from one era to the next. There are at the moment two +important transitions.

    • Byron to Shelley: where all the UTxO is transferred from in-memory Byron +state (which has no tables) to the ledger tables of the Shelley state.
    • Shelley to Allegra: where the AVVM addresses must be deleted.

    We have tests for the Byron to Shelley transitions. We are working on adding +the remaining ones.

    Mempool state-machine tests

    We started implementing state-machine property tests for the +mempool. +The mempool is currently tested via pure property tests, and use a ledger +state without tables. With the introduction of UTxO HD, testing the concurrent +behavior of the mempool became of crucial importance (eg now we have to +acquire locks to flush the backing store). In addition, we need to test a +ledger state with tables. These needs led to the creation of a new set of +property tests. In particular we aim to run parallel state-machine tests that +exercise the mempool in a way similar to how the node would make use of it.

    Backing store property tests

    We started working on state-machine tests for the backing +store that UTxO +HD uses. The property tests uncovered errors in the range-reads implementation +of the LMDB backing store. To facilitate fixing this bug, we made +changes to the Haskell +LMDB bindings.

    Benchmarking the CSJ prototype

    Prompted by previous benchmarks showing significant improvements in sync time by +using more capabilities, we implemented a way to spread out the ChainSync +updates over a larger period instead of firing them all at the same time. This +didn't result in a noticeable speedup.

    We also benchmarked the prototype with CSJ disabled (such that just the dynamo +peer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule +out/confirm overhead by non-ChainSync (mainly BlockFetch) related components. +This results in era-specific behavior (speed is like the prototype in Byron, but +like the baseline in Shelley). This deserves a closer look in the future.

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    • Red: baseline
    • Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps.
    • Blue: like Green, jumps are spread out.
    • Orange: variant with no jumping, to measure unrelated overhead.

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Hydra Team Update]]> + 2022-10-14-hydra + + 2022-10-14T00:00:00.000Z + + High level summary

    This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the hydra-node over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks "past the opening of a Head". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.

    What did the team achieve this week

    • Last week we thought we were done with ADR18, but were not ...
    • ... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence.
    • Implemented a first version for persistence #187 in response.
    • Enhanced CI to publish test results on our website
    • Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!
    • Pulled static executable feature #200 into scope, implemented it and merged it!
    • Received and read through a project proposal by a vendor (building a Hydra platform).

    What are the goals of next week

    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Cut the next release, version 0.8.0
    • Address open comments on specification document & complete the list of identified gaps between specification and implementation #452
    • Have the CI build macos artifacts
    ]]>
    + + Sebastian Nagel + https://github.com/ch1bo + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-10-14-ledger + + 2022-10-14T00:00:00.000Z + + High level summary

    The ledger team is still primarily focused on addressing +technical +debt. +We now have the infrastructure for versioning our serialization schemes, +which we continue to put into action. +We have made first steps towards getting proper support for the +formal ledger repository +(in particular, we've added nix builds and +continuous integration support). +We are wrapping up an investigation of the performance of a critical +function used by the consensus layer for leader checks. +Finally, we are improving the packaging and versioning of our code.

    Lower level summary

    Completed Technical Debt

    • Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of +our code lives in the cardano-ledger-shelley package, though with hindsight we can say that +much of it should live in cardano-ledger-core. +We continue to move things to cardano-ledger-core, and have much more to come. [pull-3059]
    • We now have the infrastructure to support versioned serialization schemes. +The inability to do this has caused us a lot difficulties, +such as [issue-3003], [issue-2965] and [issue-2444]. +We are still in the process of switching to the versioned serialization scheme +(such as [pull-3078]), +but the infrastructure was completed in [pull-3063].
    • We now have proper nix and CI support for the formal ledger project. [pull-19]
    • A separate team is helping bring support for +CHaP +to all the cardano-node repositories. +We have been helping out with this effort.
    • A separate team continues working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. +We have been helping out with this effort.

    In-progress Technical Debt

    We also have several fairly large pull-requests in review +that we are working on.

    • In an on-going attempt to build out a more user-friendly API, +we continue to remove HasField instances in place of using micro-lenses. +The protocol parameters, in particular, are being worked on. [pull-3045]
    • We are also renaming record fields to be consistent across the repository. [pull-3062]
    • We are now cleaning up all the work we did to understand the performance +of the TICKF transition. We have some improvements to the computatation +as well. [pull-3068]
    • We are adding more documentation, in particular to our Twiddler functionality. [pull-3073]
    • The formal ledger is adding support for finite set theory. [pull-20]
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-10-05-consensus + + 2022-10-05T00:00:00.000Z + + High level summary

    During the past two weeks, the consensus team worked on improving the +performance of the ChainSync jumping logic, which is needed for Genesis. We also +rewrote the implementation of the mempool in the UTxO HD prototype which solved +the issues that prevented us from running system level benchmarks. Also on the +UTxO HD front, we have an improved implementation of the sequence-of-differences +(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for +the UTxO HD feature.

    Executive summary

    • With the latest implementation of ChainSync jumping we are closer to the +baseline performance. In particular, the prototype seems to benefit from the +extra concurrency provided by additional capabilities.
    • We rewrote the implementation of the mempool in the UTxO HD prototype. This +rewrite was required due to performance problems we observed when running the +workbench. +These performance problems prevented us from running system level benchmarks. +The rewrite solved these issues. After the UTxO-HD: mempool +rewrite PR is +merged, we will contact the Benchmarking team so that they run the system +level benchmarks.
    • The implementation of sequences of differences based on anti-diffs was +integrated into the UTxO HD prototype. It is pending +review and +we also need to run replay and syncing benchmarks to confirm that this will +deliver a performance improvement, as observed in our micro-benchmarks.
    • The UTxO HD prototype +inspection +resulted in a list of +tests +needed for consensus to consider the UTxO HD prototype as fully tested.

    Additional information

    Genesis

    Benchmarking setup: 50MBit/s, 50ms latency

    • Red: baseline
    • Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.

    As ChainSync Jumping involves many concurrent network operations at every jump, +we tried to run the node with 6 instead of the default 2 capabilties.

    • Orange: baseline with 6 capabilities
    • Blue: CSJ prototype with 6 capabilities

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    Further work includes whether we can tune the prototype to better handle few +capabilities, or to adapt the default number of capabilities (potentially just +while syncing).

    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[DB Sync Team Update]]> + 2022-10-04-db-sync + + 2022-10-04T00:00:00.000Z + + DBSync Update

    Fast restarts

    We fixed a long overdue issue in db-sync which caused long delays on restarts +1266. This has been +one of db-sync main objectives for this period. Restarts are now very fast, +because db-sync deletes almost nothing from the db, it just replays the ledger rules until it +reaches the tip of the db. The fix also improves reconnection speed, in cases where the node +restarts or the connection is temporarily lost. It also speeds up even more in cases where due to a +deployment mess up a very old snapshot or no snapshot at all is used.

    Property based testing

    We added stateful property based testing, using quickcheck-state-machine +1269. These tests use empty or +almost empty blocks to test the new behaviour of restarts and rollbacks.

    These tests generate arbitrarily a list of symbolic commands from these:

    RollForward Int
    RollBack BlockNo
    StopDBSync
    StartDBSync
    RestartNode
    AssertBlockNo BlockNo

    The commands are translated into real commands. For example RollForward Int will forge a new block +that fits on the current chain. These real commands are executed against db-sync using the mock +chain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync +which looks like this:

      Model
    { serverTip :: BlockNo
    , dbSyncTip :: BlockNo
    , dbSynsIsOn :: Bool
    , dbSynsHasSynced :: Bool
    }

    Finally a number of postconditions are checked, related to the eventual block number of db-sync.

    Tech Debt

    We handled a number of tech debt in +1275 +This improves the code format of db-sync, deletes many queries that were never used and groups the +others. This tech debt resolution not only improves the experience of working in db-sync, but can +facilitate some of our other objectives, as it makes it very explicit which queries are used +during syncing and which indexes are necessary.

    Smash

    We worked on fixing an issue related to fetching pool metadata +1276. +The issue which is described in +1270

    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-10-04-node-cli-api + + 2022-10-04T00:00:00.000Z + + Node-Api-Cli Update

    2022-10-04 - 2022-10-18

    Executive Summary

    The majority of the team's time was spent between getting 1.34.4 ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to cardano-cli.

    Completed

    cardano-cli

    cardano-api

    cardano-node

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-09-30-ledger + + 2022-09-30T00:00:00.000Z + + Ledger Update

    We have continued focusing nearly entirely on addressing technical debt. +A lot of design work has begun for the next ledger era, +but we do not yet have anything concrete to share.

    Technical debt issues completed

    • [issue-1676][pull-2992] We have finally removed the ledger dependency on the +cardano-prelude package. It was barely used in the ledger repository, and it added a dependency +that we did not want to maintain. It was a bit difficult to remove, and we had +to coordinate removing it from cardano-base. +A lot ended up going into pull-2992, due to the coordination effort, and we ended +up updating Plutus as well. +This means that we've now also made a lot of progress on the problematic cost model serialization +issues described in issue-2902. +In particular, after we resolve issue-3014, we will not have to wait an epoch before +releasing a cost model for a new version of Plutus, as we had to do for the Vasil HF.
    • [issue-3046][pull-3055] We moved a module that is now only used in Byron to a Byron package.
    • [issue-3047][pull-3054] We improved the interface to the Value (multi-asset) type.
    • [pull-3044] We debugged and fixed a tricky compilation issue. Certain kinds of field updates +were adding approximately 20 minutes to our compile time!
    • [issue-2932][pull-3036] As a part of our ongoing re-organization of the codebase, we +have added a Cardano.Ledger.[Era].Core module to each ledger era that has a TxBody class. +Most classes defined in the era should go in this new module. +We also re-export the Cardno.Ledger.Core module and the previous Cardano.Ledger.[Era].Core +modules from each era.

    Technical debt in progress

    • [issue-3034][issue-3035][node-issue-4421] We are continuing to write benchmarks to understand exactly where +all the time is being spent on executing the TICKF transition. +The consolidation of the per-stake-credential stake distribution to the per-stake-pool +distribution does seem to account for a large amount of time (near a second as written, which we +have down to about half a second with some optimizations), +but this does not account for everything. +Applying the reward update may also be a big contributing factor.
    • [pull-3033][pull-3038][pull-3041] A separate team is working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort.
    • The nix scripts used to build our new +formal ledger model +do not work consistently for everyone, and we have been working on fixing these issues.
    • [issue-3014] We are still working on adding a versioning scheme to all of the ledger +serializers.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Network Team Update]]> + 2022-09-27-network + + 2022-09-27T00:00:00.000Z + + Network Update

    Ouroboros Network

    Ouroboros Consensus

    • Recently we found out that the consensus does not log exceptions thrown during +intiialisation. This was fixed in +PR input-output-hk/ouroboros-network#4015 +As part of this pull request we also changed that all exceptions rethrown by +the connection handler thread are wrapped in ExceptionInHandler.

    Some older items, which were not announced

    • We identified and fixed an issue related to socket activation (socket options +where not set for sockets passed through socket activation). +PR input-output-hk/cardano-node#3979 +This fix will be released in the next cardano-node release.

    Cardano Node

    • We extended the NixOs service module so that one can modify socketPath, +runtimeDir, databasePath, traceSocketPathAccept, +traceSocketPathConnect and stateDir options. +PR input-output-hk/cardano-node#4196

    IO-Sim

    We resolved a number of issues before release of io-sim on hackage:

    See PR #24.

    We also improved experience for contributors of io-sim and typed-protocols by adding issue templates:

    Typed Protocols

    Input Endorsers Simulation

    New features include:

    • Histograms of block arrival frequency, for both network (inbound) and CPU +(block validation). This is interesting to check that we're not overloading +the CPU block validation capacity, or network link capacity. Or alternatively +to observe the behaviour in an overload situation if we set the block +generation rate high enough.

    • Pie chart of utilisation of TCP links. This shows how small a fraction of +links are being used at any one time, and shows that once the system "warms +up" and is operating stably, most block delivery is ballistic.

    • Showing off the new screen layout combinators, that let us put multiple +charts, titles etc on screen at once and scale them to whatever screen or +video resolution we like without having to tweak numbers (this example is +scaled to fit 1080HD video resolution).

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-09-20-consensus + + 2022-09-20T00:00:00.000Z + +
  • We proposed a fix for the performance degradation observed when running +distributed multi-node benchmarks in the UTxO HD feature branch. While this +fixed the problems observed when running local benchmarks, it broke the +ThreadNet tests due to concurrency issues. Therefore, we think it is wise to +start redesigning the UTxO HD mempool integration.
  • We did several rounds of code review on the alternative implementation of +diff-sequences required by the UTxO HD feature based on the idea of +anti-diffs. This alternative implementation is close to being merged, and the +next step is to integrate this to the UTxO HD branch, so that we can run +ad-hoc replaying and syncing from scratch benchmarks and compare these with +the baseline. The micro-benchmarks we elaborated for the alternative +implementation show speedups of up to 4x, so we are optimistic about the +performance of replaying and syncing from scratch benchmarks, however it is +important to notice that due to the nature of UTxO HD we will still be +slower than the baseline.
  • The final draft of the Genesis implementation specification is ready for +review.
  • We implemented a prototype for the happy path of Genesis' ChainSync Jumping +(CSJ). The prototype is slower than the baseline, however it is not the latest +version of the prototype and the jump interval is very small.
  • Work on integrating Conway has stopped since +priorities have changed.
  • We started work on benchmarking epoch-boundaries and epoch overhead +pr-4014. To this end, we made use of a modified version of our +db-analyser tool. We ran the new benchmarking setup using the Cardano +mainnet chain, and we can see that block tick and application take +substantially longer at epoch boundaries, although there are a couple of slots +during an epoch in which these computations take more than normal. We notified +the ledger team about these findings. We will use this modified version of +db-analyser to investigate the epoch overhead.
  • Workstreams

    UTxO HD

    • Spent quite some time investigating the root cause of the degradation in +performance observed in the benchmarks. We run the make forge-stress +benchmarks locally in order to debug this behavior.

      • Transaction batching doesn't make a notable difference in the outcome +(considering we are using the in-memory backend).

      • The mempool batching implementation required asynchronous transaction +validation which is a violation of the LocalTxSubmission protocol +contract and therefore if we continued on that route, the impact would +have been quite big.

      • The STM logic we implemented by using a TMVar for the mempool internal +state was buggy and under certain circumstances it seemed to lock. +Reverting the mempool internal state to be stored in a TVar seems to +solve this problem.

      • The results we get after this change look almost identical to the ones +from the baseline.

    • The anti-diff prototype (PR +#3997) has +been reviewed and is close to being merged.

      • A follow-up issue (issue +#4010) +to integrate the anti-diff prototype in the various consensus packages +was created. A first version of the integration exists, and all tests +pass. A next step is to get some indication of the "real" performance gain +by profiling db-analyser (or cardano-node).

    Genesis

    • Final draft of the Genesis implementation specification, now up for review.

    • Local benchmark setup for parameter tuning via the happy path ChainSync +Jumping (CSJ) prototype (Issue 3987).

      • Context: Our Genesis design requires us to check in with a large (~20) +number of servers periodically while syncing. These servers are offered +jump requests via the ChainSync protocol (hence the name), which they can +accept or decline. If a peer declines, the Genesis rule allows us to +determine whether a node actually has a better chain.

      • The "happy path" is when no peer declines a jump. We want this to have +close to no overhead compared to status quo, i.e. syncing without Genesis.

      • We implemented a prototype for this happy path, and are now starting to +test in various configurations (number of peers, latency, bandwidth) to +tune the performance of ChainSync jumping, i.e. how complicated our logic +of choosing when to jump needs to be.

        Example:

      • Simulated connection: 50 MBit/s, 50ms latency

      • Jump interval: 3000 slots (on the low end, could be increased to up to +3k/f)

      • Red: baseline (1.35.3), one peer in topology file

      • Blue: Preliminary version of our prototype, with 10 peers.

        It is slower by about ~30%, but it is not the latest version of the +prototype, and the jump interval is very small, making CSJ more of a +bottleneck.

    Technical debt

    • Fix flakiness in ChainDB QSM tests (PR 3990).
    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[DB Sync Team Update]]> + 2022-09-19-db-sync + + 2022-09-19T00:00:00.000Z + + DBSync Update

    New Tag

    We created a new db-sync tag 13.0.5 which addresses shortcomings of the last +release 13.0.4. It is currently under testing. +The Changelog is +here and in more details:

    • We fixed fees for tx with phase 2 failure that didn't include a total collateral field. +1248

    • We fixed an issue that could cause db-sync to crash if a specific rollback occured. +1247

    • DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but +could result in the wrong CBOR encoding being inserted. +1217

    • All the fixes above come with unit tests which validates the fix.

    • Added support for preprod and preview from docker. DBSync no longer needs to include the configs +for different networks, these are directly fetched from the cardano world. +1254

    • We added better support from docker for the new disable options and the overall documentation. +1260

    All the above were also backported to the master branch

    Open source

    We made the db-sync board public, so +everyone can have access on the issues we prioritise. +We also added new tasks to the board, some of them could be approachable to newcomers or people who +want to contribute.

    Progress on tech debt and new features

    • 1223 was merged, which removes the +foreign keys from the db schema. This opens the road to a number of optimizations.

    • An additional fix on top of the previous work was added +1250

    • An initial version where DBSync does not rollback on restart is done here +1266. +This allows db-sync to restart much faster, without the need to delete data and reinsert them. In +the future it can also facilitate migrations in cases where the ledger snapshots have a breaking +change, without the need to resync everything from genesis.

    ]]>
    + + Kostas Dermentzis + https://github.com/kderme + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-09-16-ledger + + 2022-09-16T00:00:00.000Z + + Ledger Update

    We have been focused nearly entirely on addressing technical debt.

    • We introduced more consistent naming across eras, this time for the auxiliary data. +See 3032.
    • We made clear how the consumed functions differs between eras (which was a previous source of +confusion), and added some related support to the fledgling ledger API. +See 3016.
    • We added clarity and organizational consistency to the main ledger era type synonyms. +See 3017.
    • We removed code duplication related to the input data hashes. +See 3018.
    • We split up a large module into smaller components. The large module was actually causing our +CI to time out. +See 3020.
    • We cleaned up stale information in our cabal files, and upgraded cabal 3.8. +See 3023, +3031, +and 3028.
    • We made consistent, standalone TxOut (transaction output) modules for every era. +See 3024.
    • We brought consistency to a maddening inconsistent use of type variables indicating the specific +choice of cryptographic primitives. In particular, all uses of crypto have been renamed to c. +See 3027.
    • We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric +types that will compose better in the future and which simplifies the constraints. +See 3029.
    • We consolidated some existing fragmented logic regarding how we gather the scripts needed for a +given transaction. This is a much needed cleanup to prevent future mistakes. +See 3019.
    • We fixed a problem with our generators that was causing a fair number of our property tests to +fail in CI. +See 3039.
    • We have started the work to update Plutus. This will bring support for SECP in the next major +protocol version, and also address a +problem +that we current have evolving the cost models. +See 3030.
    • We addressed a small issue that came up when integrating the conway era downstream, namely +the lack of some serialization instances. +See 3022.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-09-01-ledger + + 2022-09-01T00:00:00.000Z + + Ledger Update

    Since finishing up support for the Vasil Hardfork, the ledger team has been +focused on two main things: a new ledger era and technical debt.

    New minimal ledger era

    We have implemented a new ledger era named conway which is nearly identical +to the babbage era. This has been the first time that we have been able to see +what a minimal ledger era looks like. We have finished this task, modulo any +integration issues that might come up. The only thing that the conway era +does differently from the babbage era is provide support for rotating +the master keys using the hardfork combinator's state translation. +We may end up adding features to the conway era, but it is a nice exercise +seeing what it looks like to get a minimal ledger era supported in all the +downstream components.

    Addressing technical debt

    We have been addressing technical debt, mostly in an effort to make the +repository a more friendly code base to work in.

    • We have begun work on a ledger API, called cardano-ledger-api.
    • We have done a big re-design of the major type classes used in the ledger. +With hindsight on our side, we now have something much more organized and +easier to use.
    • We have done a lot of re-naming. The names across eras are now much more +uniform, avoid certain confusions that plagued us, and are clearer in where +they are from.
    • We have reduced a lot of code duplication that could lead to bugs if you +do not have the whole code base in your head.
    • We have added a handful of performance improvements.
    • We added type safety in a number of locations. In particular, the type of +values that can be minted in a transaction no longer allow for Lovelace +in the type, and some functions which used to handle both timelock scripts +and plutus script now correctly enoforce at the type level that only one of +them can be used.
    • We made our generators so that they now produce a much richer set of +valid serializations. There is room within CBOR to serialize the same +data structure in multiple ways, and it is helpful to have the generators +use a wide variety.
    • We have begun re-organizing our test suites.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Consensus Team Update]]> + 2022-08-31-consensus + + 2022-08-31T00:00:00.000Z + + Executive summary
    • We did most of the heavy lifting required to integrate the Conway era.
    • We have property tests for the UTxO HD backing store API implementations. A +possible bug was identified. Work is ongoing to make sure the property-tests +cover all the relevant cases.
    • We implemented and benchmarked the "anti-diff" prototype to speed up the UTxO +HD functionality. Results show a rough speedup of 4x to 5.5x across +several scenarios. Note that: "Data reported by tasty-bench is only of +indicative and comparative significance.". +We are investigating additional performance improvements. The "anti-diff" +prototype and benchmarks are still pending code review.
    • We elaborated a draft specification for the Genesis implementation and +ChainSync jumping optimization.

    Workstreams

    Conway

    • Integration PR of the minimal Conway era (Issue #3963, PR +#3971).
    • Discussions with Ledger revealed possible sources of confusion about which +data should be changed in the Conway era. As a result, a new technical debt +issue was raised, which does not block the integration of the Conway era +(Issue #3976).

    UTxO HD

    • Issue #3954, branch: The functionality of a +backing store, which is the interface to the on-disk part of ledger state in +UTxO-HD, is tested at a high level through the OnDisk tests. However, some +functionalities remain untested, e.g., reads of ranges of keys. As such, we +have implemented quickcheck-state-machine tests that exercise backing stores +directly. The tests are reusable for different backing store implementations +because the tests are implementation-agnostic: Any backing store that conforms +to the backing store interface can be plugged into the tests. Work is still +ongoing to label/monitor the tests, such that we can verify that interesting +cases are being tested. Furthermore, a possible bug has been identified in the +LMDB backing store with respect to range reads, though the bug has not been +resolved yet.

    • Issue #3946, branch, PR #3882: The +"anti-diff" prototype proposes an alternative approach to keeping track of +sequences (more specifically, FingerTrees) of diffs. These diff sequences +are a component of the in-memory parts of the ledger state in UTxO-HD. Since +the consensus code often requires the cumulative diff of a sequence of diffs, +the current implementation "caches" cumulative diffs of each subtree in the +diff sequence. This caching allows relatively fast reconstruction of the total +cumulative diff, but this caching proved to incur a non-negligible cost: when +we manipulate diff sequences through splits and appends, we force re-computing +a logarithmic number of caches. This is problematic, since we often split and +append in consensus: we split when we flush diffs to a backing store or when +we roll back blocks, and we append when pushing blocks. The new approach +should reduce the overhead of this caching.

      We implemented micro-benchmarks for the "anti-diff" prototype: we +first generate a sequence of commands (Forward, Push, Flush, or +Rollback) through a simulation, after which we measure the performance of +applying the commands to a diff sequence. In this context, Forward means +forwarding of values through a diff, whereas Rollback means switching to +a different fork by rolling back diffs/blocks and pushing new ones. +Moreover, we compare the performance for the two implementations: the +"legacy" approach, and the anti-diff approach.

      Some preliminary results were positive, but we needed to revisit the +benchmark's configuration to obtain more definitive results. After a +discussion with @dcoutts and the consensus team about this configuration +(e.g., number of commands generated, choice of the security parameter k), +the benchmarks should now be closer to the realistic setting. The following +configuration specifies the default configuration that is used in the +benchmarking code:

      • Number of commands generated: 10_000
      • Security parameter k: 2160
      • Number of initial backing values: 100
      • Number of key-value pairs deleted by a push: 50
      • Number of key-value pairs inserted by a push: 50
      • Number of key-value pairs forwarded by a forward: 50
      • Probability of a large (in the range [1000, 2000]) rollback: 0.05
      • Probability of a small (in the range [1, 10]) rollback: 0.95
      • Order of commands:
        • An equal number of forward and pushes.
        • 1 flush every 10 pushes.
        • 1 rollback every 100 pushes

      Moreover, we run four benchmark scenarios:

      • Default configuration
      • Without rollbacks
      • With only small rollbacks
      • Without rollbacks, larger flushes (1 flush every 100 pushes)

      How to read results

      Note: this section uses documentation from the +tasty-bench package to +explain how to read the results of running our benchmarks.

      Running a benchmark scenario gives us the following (curated) output:

      ...
      AntiDiff: OK (18.27s)
      2.527 s ± 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x
      LegacyDiff: OK (32.73s)
      10.829 s ± 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory
      ...

      The output says that the first benchmark, which exercises the anti-diff +prototype, was repeatedly executed for 18.27 seconds (wall-clock time), +its predicted mean CPU time was 2.527 seconds and means of individual +samples do not often diverge from it further than ± 47 milliseconds +(double standard deviation). We also configure the RTS to collect GC +statistics, which enables tasty-bench to estimate and report memory usage. +This data is reported as per RTSStats fields: allocated_bytes, +copied_bytes and max_mem_in_use_bytes. So, the output of the first +benchmark says that a total of 2.1 GB of memory was allocated, that a +total of 544 MB of memory were copied, and that the peak memory in usage +was 2.2 GB. We read the output for the second benchmark in the same way.

      Furthermore, the benchmark compares the mean CPU times for +both the anti-diff and legacy approaches: In this case, the mean CPU time +for the anti-diff approach is ~0.23x the mean CPU time for the legacy +approach. Conversely, the mean CPU time for the legacy approach is +1 / 0.23 ~= 4.35x the mean CPU time for the anti-diff approach. We will +call 0.23x the improvement factor. We will call 4.35x the speedup.

      Note that these improvement factors (and reported results) are subject to +noise, randomness, the specific configuration parameters, and the whims +of statistics. Data reported by tasty-bench is only of indicative and +comparative significance.

      Results

      For each of the 4 scenarios, we list the results of running the anti-diff and +legacy approaches 5 times. We run the benchmarks 5 times to get an indication +of whether the results are similar across multiple runs. Furthermore, we +calculate the accompanying ranges (if applicable) of improvement factors and +speedups.

      Note also the decrease in total bytes allocated and total bytes copied for +the anti-diff approach compared to the legacy approach.

      Default configuration

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff2.533 s (0.23x)4.7 ms2.1 GB557 MB2.4 GB
      Run 1: LegacyDiff10.792 s162 ms6.8 GB2.3 GB2.4 GB
      Run 2: AntiDiff2.508 s (0.23x)245 ms2.1 GB515 MB2.2 GB
      Run 2: LegacyDiff10.850 s30 ms6.9 GB2.3 GB2.2 GB
      Run 3: AntiDiff2.562 s (0.23x)5.0 ms2.1 GB552 MB2.2 GB
      Run 3: LegacyDiff10.993 s149 ms6.9 GB2.3 GB2.2 GB
      Run 4: AntiDiff2.168 s (0.22x)5.3 ms1.8 GB434 MB2.0 GB
      Run 4: LegacyDiff9.976 s39 ms6.3 GB2.0 GB2.0 GB
      Run 5: AntiDiff2.527 s (0.23x)47 ms2.1 GB544 MB2.2 GB
      Run 5: LegacyDiff10.829 s148 ms6.8 GB2.3 GB2.2 GB
      • Improvement factor: [0.22, 0.23]
      • Speedup : [1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]

      No rollbacks

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.638 s (0.19x)36 ms1.4 GB181 MB2.4 GB
      Run 1: LegacyDiff8.656 s207 ms5.7 GB1.5 GB2.4 GB
      Run 2: AntiDiff1.638 s (0.19x)75 ms1.4 GB181 MB2.2 GB
      Run 2: LegacyDiff8.654 s322 ms5.7 GB1.5 GB2.2 GB
      Run 3: AntiDiff1.663 s (0.19x)74 ms1.4 GB181 MB2.2 GB
      Run 3: LegacyDiff8.799 s216 ms5.7 GB1.5 GB2.2 GB
      Run 4: AntiDiff1.645 s (0.19x)51 ms1.4 GB181 MB2.0 GB
      Run 4: LegacyDiff8.732 s261 ms5.7 GB1.5 GB2.0 GB
      Run 5: AntiDiff1.639 s (0.19x)19 ms1.4 GB181 MB2.2 GB
      Run 5: LegacyDiff8.653 s234 ms5.7 GB1.5 GB2.2 GB
      • Improvement factor: 0.19
      • Speedup : 1 / 0.19 ~= 5.25

    Only small rollbacks

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff1.833 s (0.18x)36 ms1.5 GB185 MB2.4 GB
    Run 1: LegacyDiff10.362 s867 ms5.8 GB1.6 GB2.4 GB
    Run 2: AntiDiff1.696 s (0.19x)30 ms1.5 GB185 MB2.2 GB
    Run 2: LegacyDiff8.822 s106 ms5.8 GB1.5 GB2.2 GB
    Run 3: AntiDiff1.702 s (0.19x)44 ms1.5 GB186 MB2.2 GB
    Run 3: LegacyDiff8.906 s147 ms5.8 GB1.5 GB2.2 GB
    Run 4: AntiDiff1.701 s (0.19x)47 ms1.5 GB185 MB2.0 GB
    Run 4: LegacyDiff8.949 s197 ms5.8 GB1.5 GB2.0 GB
    Run 5: AntiDiff1.677 s (0.19x)55 ms1.5 GB186 MB2.2 GB
    Run 5: LegacyDiff8.856 s177 ms5.8 GB1.5 GB2.2 GB
    • Improvement factor: [0.18, 0.19]

    • Speedup : [1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]

      No rollbacks, larger flushes (every 100 pushes)

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.643 s (0.25x)21 ms1.5 GB196 MB2.4 GB
      Run 1: LegacyDiff6.591 s351 ms4.0 GB1.4 GB2.4 GB
      Run 2: AntiDiff1.616 s (0.25x)47 ms1.5 GB196 MB2.2 GB
      Run 2: LegacyDiff6.520 s232 ms4.0 GB1.4 GB2.2 GB
      Run 3: AntiDiff1.640 s (0.25x)34 ms1.5 GB196 MB2.2 GB
      Run 3: LegacyDiff6.540 s150 ms4.0 GB1.4 GB2.2 GB
      Run 4: AntiDiff1.635 s (0.25x)76 ms1.5 GB196 MB2.0 GB
      Run 4: LegacyDiff6.589 s131 ms4.0 GB1.4 GB2.0 GB
      Run 5: AntiDiff1.628 s (0.25x)19 ms1.5 GB196 MB2.2 GB
      Run 5: LegacyDiff6.490 s5.9 ms4.0 GB1.4 GB2.2 GB
    • Improvement factor: 0.25

    • Speedup : 1 / 0.25 ~= 4

    Genesis

    • We elaborated a draft of the specification of the Genesis implementation and +the ChainSync Jumping optimization. In particular, this includes a proof +sketch that the latter preserves liveness and safety in all cases (Issue +3964).
      • @nfrisby's main realization during this sprint was that he had been +focusing so far on the case where the selected chain is an extension of +the intersection of our peers' ChainSync candidates.
      • This is the main case, ie an "absorbing" state, but it's not the only +case.
      • The new proof sketch begins by case splitting on that predicate, and +that made the sketch quite a bit easier to follow.
    • We continued working on the "happy path" ChainSync Jumping prototype (Issue +3960).

    Technical debt

    • We started working on the issues required to re-enable nightly CI runs.. +Nightly CI runs have far more lax time constraints, which gives the option to +run significantly more property tests than in our regular CI. To this end, we +merged a PR to easily adapt the number of tests globally (PR +#3947).
    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Network Team Update]]> + 2022-08-12-network + + 2022-08-12T00:00:00.000Z + + The networking team took an active part in the project iteration (PI) planning +session, see cardano-node backlog for detailed +outcomes.

    • We started working on a detailed design / implementation plan for gossip.

    • We merged input-output-hk/ouroboros-network#3859 which +sets the ouroboros-network repository for the single relay release.

    • We identified a bug in the network simulator, which is fixed in the +input-output-hk/ouroboros-network#3852. +The above PR was reviewed.

    • We set the tracing configuration for nodes which we deploy and fixed and +identified some deployment hiccups. We identified some bugs in the RT view +which were registered by the maintainers. +input-output-hk/ouroboros-network-ops#4

    • We fixed typos in network-mux library: +input-output-hk/ouroboros-network#3921

    • For easy of debugging we renamed a trace point: +input-output-hk/ouroboros-network#3922

    • Duncan iterated on his simulation / visualisation. He also was able to +identify and fix a bug in the simulator. The simulation contains 50 nodes. +Dashed lines indicate and established connection, while solid lines indicate +a TCP connection with fully open TCP window.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + \ No newline at end of file diff --git a/docs/category/tutorial---basics/index.html b/docs/category/tutorial---basics/index.html new file mode 100644 index 00000000000..32163d6cabe --- /dev/null +++ b/docs/category/tutorial---basics/index.html @@ -0,0 +1,24 @@ + + + + + +Tutorial - Basics | Cardano Development Updates + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/tutorial---extras/index.html b/docs/category/tutorial---extras/index.html new file mode 100644 index 00000000000..2cc858a7f42 --- /dev/null +++ b/docs/category/tutorial---extras/index.html @@ -0,0 +1,24 @@ + + + + + +Tutorial - Extras | Cardano Development Updates + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/intro/index.html b/docs/intro/index.html new file mode 100644 index 00000000000..bdb55319ee5 --- /dev/null +++ b/docs/intro/index.html @@ -0,0 +1,24 @@ + + + + + +Tutorial Intro | Cardano Development Updates + + + + + + + + + + + + +
    +

    Tutorial Intro

    Let's discover Docusaurus in less than 5 minutes.

    Getting Started

    Get started by creating a new site.

    Or try Docusaurus immediately with docusaurus.new.

    What you'll need

    • Node.js version 16.14 or above:
      • When installing Node.js, you are recommended to check all checkboxes related to dependencies.

    Generate a new site

    Generate a new Docusaurus site using the classic template.

    The classic template will automatically be added to your project after you run the command:

    npm init docusaurus@latest my-website classic

    You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.

    The command also installs all necessary dependencies you need to run Docusaurus.

    Start your site

    Run the development server:

    cd my-website
    npm run start

    The cd command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.

    The npm run start command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.

    Open docs/intro.md (this page) and edit some lines: the site reloads automatically and displays your changes.

    + + + + \ No newline at end of file diff --git a/docs/tutorial-basics/congratulations/index.html b/docs/tutorial-basics/congratulations/index.html new file mode 100644 index 00000000000..e24d3f70e29 --- /dev/null +++ b/docs/tutorial-basics/congratulations/index.html @@ -0,0 +1,24 @@ + + + + + +Congratulations! | Cardano Development Updates + + + + + + + + + + + + +
    +

    Congratulations!

    You have just learned the basics of Docusaurus and made some changes to the initial template.

    Docusaurus has much more to offer!

    Have 5 more minutes? Take a look at versioning and i18n.

    Anything unclear or buggy in this tutorial? Please report it!

    What's next?

    + + + + \ No newline at end of file diff --git a/docs/tutorial-basics/create-a-blog-post/index.html b/docs/tutorial-basics/create-a-blog-post/index.html new file mode 100644 index 00000000000..3dc5ceb4039 --- /dev/null +++ b/docs/tutorial-basics/create-a-blog-post/index.html @@ -0,0 +1,24 @@ + + + + + +Create a Blog Post | Cardano Development Updates + + + + + + + + + + + + +
    +

    Create a Blog Post

    Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...

    Create your first Post

    Create a file at blog/2021-02-28-greetings.md:

    blog/2021-02-28-greetings.md
    ---
    slug: greetings
    title: Greetings!
    authors:
    - name: Joel Marcey
    title: Co-creator of Docusaurus 1
    url: https://github.com/JoelMarcey
    image_url: https://github.com/JoelMarcey.png
    - name: Sébastien Lorber
    title: Docusaurus maintainer
    url: https://sebastienlorber.com
    image_url: https://github.com/slorber.png
    tags: [greetings]
    ---

    Congratulations, you have made your first post!

    Feel free to play around and edit this post as much you like.

    A new blog post is now available at http://localhost:3000/blog/greetings.

    + + + + \ No newline at end of file diff --git a/docs/tutorial-basics/create-a-document/index.html b/docs/tutorial-basics/create-a-document/index.html new file mode 100644 index 00000000000..8d076109567 --- /dev/null +++ b/docs/tutorial-basics/create-a-document/index.html @@ -0,0 +1,24 @@ + + + + + +Create a Document | Cardano Development Updates + + + + + + + + + + + + +
    +

    Create a Document

    Documents are groups of pages connected through:

    • a sidebar
    • previous/next navigation
    • versioning

    Create your first Doc

    Create a Markdown file at docs/hello.md:

    docs/hello.md
    # Hello

    This is my **first Docusaurus document**!

    A new document is now available at http://localhost:3000/docs/hello.

    Configure the Sidebar

    Docusaurus automatically creates a sidebar from the docs folder.

    Add metadata to customize the sidebar label and position:

    docs/hello.md
    ---
    sidebar_label: 'Hi!'
    sidebar_position: 3
    ---

    # Hello

    This is my **first Docusaurus document**!

    It is also possible to create your sidebar explicitly in sidebars.js:

    sidebars.js
    module.exports = {
    tutorialSidebar: [
    'intro',
    'hello',
    {
    type: 'category',
    label: 'Tutorial',
    items: ['tutorial-basics/create-a-document'],
    },
    ],
    };
    + + + + \ No newline at end of file diff --git a/docs/tutorial-basics/create-a-page/index.html b/docs/tutorial-basics/create-a-page/index.html new file mode 100644 index 00000000000..cae824af627 --- /dev/null +++ b/docs/tutorial-basics/create-a-page/index.html @@ -0,0 +1,24 @@ + + + + + +Create a Page | Cardano Development Updates + + + + + + + + + + + + +
    +

    Create a Page

    Add Markdown or React files to src/pages to create a standalone page:

    • src/pages/index.jslocalhost:3000/
    • src/pages/foo.mdlocalhost:3000/foo
    • src/pages/foo/bar.jslocalhost:3000/foo/bar

    Create your first React Page

    Create a file at src/pages/my-react-page.js:

    src/pages/my-react-page.js
    import React from 'react';
    import Layout from '@theme/Layout';

    export default function MyReactPage() {
    return (
    <Layout>
    <h1>My React page</h1>
    <p>This is a React page</p>
    </Layout>
    );
    }

    A new page is now available at http://localhost:3000/my-react-page.

    Create your first Markdown Page

    Create a file at src/pages/my-markdown-page.md:

    src/pages/my-markdown-page.md
    # My Markdown page

    This is a Markdown page

    A new page is now available at http://localhost:3000/my-markdown-page.

    + + + + \ No newline at end of file diff --git a/docs/tutorial-basics/deploy-your-site/index.html b/docs/tutorial-basics/deploy-your-site/index.html new file mode 100644 index 00000000000..b421bebeb25 --- /dev/null +++ b/docs/tutorial-basics/deploy-your-site/index.html @@ -0,0 +1,24 @@ + + + + + +Deploy your site | Cardano Development Updates + + + + + + + + + + + + +
    +

    Deploy your site

    Docusaurus is a static-site-generator (also called Jamstack).

    It builds your site as simple static HTML, JavaScript and CSS files.

    Build your site

    Build your site for production:

    npm run build

    The static files are generated in the build folder.

    Deploy your site

    Test your production build locally:

    npm run serve

    The build folder is now served at http://localhost:3000/.

    You can now deploy the build folder almost anywhere easily, for free or very small cost (read the Deployment Guide).

    + + + + \ No newline at end of file diff --git a/docs/tutorial-basics/markdown-features/index.html b/docs/tutorial-basics/markdown-features/index.html new file mode 100644 index 00000000000..21139e3489c --- /dev/null +++ b/docs/tutorial-basics/markdown-features/index.html @@ -0,0 +1,24 @@ + + + + + +Markdown Features | Cardano Development Updates + + + + + + + + + + + + +
    +

    Markdown Features

    Docusaurus supports Markdown and a few additional features.

    Front Matter

    Markdown documents have metadata at the top called Front Matter:

    my-doc.md
    ---
    id: my-doc-id
    title: My document title
    description: My document description
    slug: /my-custom-url
    ---

    ## Markdown heading

    Markdown text with [links](./hello.md)

    Regular Markdown links are supported, using url paths or relative file paths.

    Let's see how to [Create a page](/create-a-page).
    Let's see how to [Create a page](./create-a-page.md).

    Result: Let's see how to Create a page.

    Images

    Regular Markdown images are supported.

    You can use absolute paths to reference images in the static directory (static/img/docusaurus.png):

    ![Docusaurus logo](/img/docusaurus.png)

    Docusaurus logo

    You can reference images relative to the current file as well, as shown in the extra guides.

    Code Blocks

    Markdown code blocks are supported with Syntax highlighting.

    ```jsx title="src/components/HelloDocusaurus.js"
    function HelloDocusaurus() {
    return (
    <h1>Hello, Docusaurus!</h1>
    )
    }
    ```
    src/components/HelloDocusaurus.js
    function HelloDocusaurus() {
    return <h1>Hello, Docusaurus!</h1>;
    }

    Admonitions

    Docusaurus has a special syntax to create admonitions and callouts:

    :::tip My tip

    Use this awesome feature option

    :::

    :::danger Take care

    This action is dangerous

    :::
    My tip

    Use this awesome feature option

    Take care

    This action is dangerous

    MDX and React Components

    MDX can make your documentation more interactive and allows using any React components inside Markdown:

    export const Highlight = ({children, color}) => (
    <span
    style={{
    backgroundColor: color,
    borderRadius: '20px',
    color: '#fff',
    padding: '10px',
    cursor: 'pointer',
    }}
    onClick={() => {
    alert(`You clicked the color ${color} with label ${children}`)
    }}>
    {children}
    </span>
    );

    This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !

    This is <Highlight color="#1877F2">Facebook blue</Highlight> !

    This is Docusaurus green !

    This is Facebook blue !

    + + + + \ No newline at end of file diff --git a/docs/tutorial-extras/manage-docs-versions/index.html b/docs/tutorial-extras/manage-docs-versions/index.html new file mode 100644 index 00000000000..b801999d3e0 --- /dev/null +++ b/docs/tutorial-extras/manage-docs-versions/index.html @@ -0,0 +1,24 @@ + + + + + +Manage Docs Versions | Cardano Development Updates + + + + + + + + + + + + +
    +

    Manage Docs Versions

    Docusaurus can manage multiple versions of your docs.

    Create a docs version

    Release a version 1.0 of your project:

    npm run docusaurus docs:version 1.0

    The docs folder is copied into versioned_docs/version-1.0 and versions.json is created.

    Your docs now have 2 versions:

    • 1.0 at http://localhost:3000/docs/ for the version 1.0 docs
    • current at http://localhost:3000/docs/next/ for the upcoming, unreleased docs

    Add a Version Dropdown

    To navigate seamlessly across versions, add a version dropdown.

    Modify the docusaurus.config.js file:

    docusaurus.config.js
    module.exports = {
    themeConfig: {
    navbar: {
    items: [
    {
    type: 'docsVersionDropdown',
    },
    ],
    },
    },
    };

    The docs version dropdown appears in your navbar:

    Docs Version Dropdown

    Update an existing version

    It is possible to edit versioned docs in their respective folder:

    • versioned_docs/version-1.0/hello.md updates http://localhost:3000/docs/hello
    • docs/hello.md updates http://localhost:3000/docs/next/hello
    + + + + \ No newline at end of file diff --git a/docs/tutorial-extras/translate-your-site/index.html b/docs/tutorial-extras/translate-your-site/index.html new file mode 100644 index 00000000000..8a234c4d98e --- /dev/null +++ b/docs/tutorial-extras/translate-your-site/index.html @@ -0,0 +1,24 @@ + + + + + +Translate your site | Cardano Development Updates + + + + + + + + + + + + +
    +

    Translate your site

    Let's translate docs/intro.md to French.

    Configure i18n

    Modify docusaurus.config.js to add support for the fr locale:

    docusaurus.config.js
    module.exports = {
    i18n: {
    defaultLocale: 'en',
    locales: ['en', 'fr'],
    },
    };

    Translate a doc

    Copy the docs/intro.md file to the i18n/fr folder:

    mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/

    cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md

    Translate i18n/fr/docusaurus-plugin-content-docs/current/intro.md in French.

    Start your localized site

    Start your site on the French locale:

    npm run start -- --locale fr

    Your localized site is accessible at http://localhost:3000/fr/ and the Getting Started page is translated.

    caution

    In development, you can only use one locale at a same time.

    Add a Locale Dropdown

    To navigate seamlessly across languages, add a locale dropdown.

    Modify the docusaurus.config.js file:

    docusaurus.config.js
    module.exports = {
    themeConfig: {
    navbar: {
    items: [
    {
    type: 'localeDropdown',
    },
    ],
    },
    },
    };

    The locale dropdown now appears in your navbar:

    Locale Dropdown

    Build your localized site

    Build your site for a specific locale:

    npm run build -- --locale fr

    Or build your site to include all the locales at once:

    npm run build
    + + + + \ No newline at end of file diff --git a/feed.json b/feed.json new file mode 100644 index 00000000000..89c27065a89 --- /dev/null +++ b/feed.json @@ -0,0 +1,4558 @@ +{ + "version": "https://jsonfeed.org/version/1", + "title": "Cardano Updates Feed", + "home_page_url": "https://input-output-hk.github.io/cardano-updates/", + "description": "Regular updates from Cardano Development Teams", + "items": [ + { + "id": "2023-12-06-ledger", + "content_html": "

    High level summary

    This period we reached a major milestone, namely we now have an initial version of Conway\nconformance testing working. We are now able to generate random valid data with the help\nof constraint based testing framework, apply that data to Conway Ledger rules and verify\nthat the output matches to the one produced by the executable version of the Formal Ledger\nSpecification, when it is applied to the same random data.

    We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get\nConstitutional Committee query is complete and tested. Various improvements to the\ntesting tools. Addition of more test cases.

    Low level summary

    Conway

    • pull-3888 - Add checks for valid ProtVer when a proposal is a HardFork
    • pull-3902 - Fix pvCanFollow usage in Conway and improve clarity in Shelley
    • pull-3855 - Remove unreachable proposals
    • pull-3903 - Add lenient decoder for Addr
    • pull-3878 - Committee query - implement next epoch change

    Testing

    • pull-3893 - Move tree-diff dependency to tests together with all instances
    • pull-3896 - Fix Brute force failure
    • pull-3904 - New ListWhere Pred added to the Constrained Solver.
    • pull-3907 - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file
    • pull-3883 - Committee QuerySpec Imp Test
    • pull-3909 - Make impAnn a bit more useful, by making the logs scoped by impAnn
    • pull-3908 - Use upstream testing instances for very basic types
    • pull-3912 - Removed call to tail, and the 'watchPulser' test
    • pull-3852 - Added constrained generators to conformance tests - Part 1

    Improvements and releasing

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-12-06-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-12-06T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-12-06-mithril", + "content_html": "

    High level overview

    This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking.

    Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io.

    Low level overview

    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Create a test network on Sanchonet #1173
    • Worked on the issue Upgrade breaking changes crates #1357
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Completed the issue Enhance aggregator REST API performances #1327
    • Completed the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Make mithril-client examples full crates #1385
    • Completed the issue Manual publication to crates.io with GitHub action #1380
    • Completed the issue Remove sqlite dependency from mithril-client crate #1390
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-12-06-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-12-06T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-12-04-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: Release benchmarking for node 8.7.0. Also, we performed the first-ever Conway benchmarks.
    • Development: Conway capability of our workload generator has been implemented and merged to master.
    • Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data.
    • Tracing: Quality-of-life improvements to tracing output and addition of a test suite.
    • Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.

    Low level overview

    Benchmarking

    A full set of benchmarks for node 8.7.0 has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of 8.7.0 over 8.6.0, and can confirm no regressions have been introduced.

    Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version.\nOnly Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty.

    Development

    Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era.\nCurrently, we're looking into adding Conway-exclusive features, such as DRep registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining DRep sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying.

    Infrastructure

    As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've\nimproved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data.

    Tracing

    The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages.\nAdditionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system.

    Nomad backend

    We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-12-04-performance-and-tracing", + "title": "Performance & Tracing Update", + "summary": "High level summary", + "date_modified": "2023-12-04T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-12-01-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team conducted a packed Monthly Review meeting,\nfeaturing demonstrations and the preparation of the monthly report. They\naddressed flakiness in tests and enhanced the logs json schema,\nimproving overall test reliability. Additionally, the team successfully\nbuilt MacOS ARM64 (aarch64-darwin) binaries in CI, expanding platform\nsupport. They further improved the network configuration by detecting\nincompatible persisted states, contributing to overall system\nrobustness. Finally, the team released version 0.14.0, highlighting\ntheir commitment to delivering regular updates and improvements.

    What did the team achieve this week

    • Monthly Review\nmeeting\npacked with demonstrations and prepared monthly report\n#1189
    • Fixed several flaky tests and improved the logs json schema\n#1188#1190#1192
    • Built MacOS ARM64 (aarch64-darwin) binaries in CI\n#1182
    • Improved network configuration by detecting incompatible persisted\nstates #1174
    • Released version 0.14.0

    What are the goals of next week

    • Start work on incremental decommit
    • Continue shepherding contributed PRs to completion
    • Finish stateless-observation work
    • Open a head on a Conway network
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-12-01-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-12-01T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-11-29-consensus", + "content_html": "

    High level summary

    The Consensus team implemented and tested a patch that does not propagate future headers.\nIt is under review, and we expect it can be released in the next Cardano node version.\nOn the UTxO-HD front, we finished prototyping the LedgerDB and BackingStore redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend.\nWith this prototype finished we can start integrating the rest of the code.\nWe investigated the unexpected performance degradation observed when acquiring the block context.\nWe also released Cardano node 8.7.0 and moved tree-diff outside cardano-ledger libraries.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-29-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-11-29T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-11-29-mithril", + "content_html": "

    High level overview

    This week, the Mithril team released the initial version of the Mithril client library, enabling developers to integrate core Mithril features into their applications. They also released a new distribution, 2347.0, which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements.

    The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance.

    Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users.

    Low level overview

    • Release of the mithril-client library crate
    • Publication of a dev blog post about the released Mithril library
    • Released the new distribution 2347.0
    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Support P2P relay in infrastructure #1361
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue mithril-client verbosity not following usage menu #1325
    • Completed the issue Error message for mithril-client snapshot download #1375
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-29-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-11-29T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-11-24-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team spent significant time opening a head among\nthemselves on mainnet using the release candidate, revealing and\naddressing lurking bugs such as\n#1174. Also\nrequired was this change to dynamically calculate the min utxo value\n#1176, a\nnecessary adjustment following the switch to inline datums. The team\nengaged with cardano-cli / cardano-api maintainers to discuss recent\nchanges and collaborated on drafting feature ideas, including providing\nConway support\nfor the Hydra roadmap. As part of ongoing improvements, they\nexperimented with writing the specification in markdown instead of\nLaTex.

    What did the team achieve this week

    • Opened head among us on mainnet and uncovered a few lurking bugs like\n#1174 in the\nrelease candidate
    • Calculate the min utxo value instead of hard-coding it\n#1176, which is\nneeded since we switched to inline datums.
    • Met with the cardano-cli / cardano-api maintainers to discuss\nrecent changes and way forward
    • Drafted features ideas to provide Conway\nsupport on the\nHydra roadmap
    • Experimented in writing the specification in markdown instead of LaTex

    What are the goals of next week

    • Have the Monthly review meeting with several demos
    • Release version 0.14.0 with this\nscope
    • Complete tidying up chain layer via stateless observation changes in\nhydra-node\n#1096
    • Update dependencies to prepare for Conway\n#1114
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-24-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-11-24T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-11-24-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • The cardano-node nixos service now supports SIGHUP p2p topology reloading when the useSystemdReload option is enabled

    Lower level summary

    Capkgs

    • Update cardano-db-sync and offchain-metadata-tools package paths and/or references: capkgs-compare

    Cardano-node

    • Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: cardano-node-pull-5537
      • Creates a useSystemdReload bool option for the cardano-node nixos service
      • This will move the topology file(s) to /etc/cardano-node/topology-$i.yaml and inject systemd reload hooks for p2p configured cardano-node instances
      • Moving topology files to /etc also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired

    Cardano-parts

    • Adds a metadata server profile and a number of other features and improvements: cardano-parts-pull-20
      • Adds a new metadata-service profile
      • Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile
      • Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish
      • Adds extra node list producers and public producers for cardano-node-topology profile
      • Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch
      • Adds select systemd metrics reporting to grafana-agent profile
      • Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS
      • Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation
      • Adds support for grafana recording rules in the template files
      • Improves cardano-group profile handling of producers with respect to multiple instance nodes
      • Improves grafana-agent profile metrics handling for multi-instance cardano-node servers
      • Improves smash service preStart handling while waiting for a node socket
      • Updates Justfile for ERA_CMD demo support
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Defaults cardano-postgres profile psqlrc use to false

    Cardano-playground

    • Adds a new testnet metadata server, cluster webserver, and other improvements: cardano-playground-pull-6
      • Adds a new metadata server
      • Adds a new webserver for the cluster's static virtualhost needs
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds systemd metrics monitoring to the cluster
      • Resizes sanchonet machines to support the growing chain
      • Completes migration of preprod from world
      • Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes
      • Updates Justfile for ERA_CMD demo support
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Migrates book static code to playground from world, with refactor, cleanup and updates
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules

    Offchain-metadata-tools

    • Adds db password option with obfuscation plus misc improvements: offchain-metadata-tools-pull-61
      • Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services
      • Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile
      • Moves from std use in the nix flake to standard flake schema
      • Fixes hydra CI failures
      • Builds update-docs in hydra to avoid long local build times
      • Removes deprecated tullia
      • Removes deprecated check-hydra from pkgs
      • Removes deprecated bors files and references
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-24-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-11-24T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-11-22-ledger", + "content_html": "

    High level summary

    Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of\nCDDL specification. Important bugfixes include:

    • Fix deserialization of ValueNotConservedUTxO predicate failure that could not\npreviously report zero ADA.
    • Fix deserialization of CostModels in the PParamsUpdate. Invalid CostModels are no\nlonger allowed, only CostModels for unrecognized Plutus versions are allowed starting\nwith Conway
    • Fix returning of Deposits for ProposalProcedures

    Testing tooling has been improved and new tests have been implemented for Conway era.

    Low level summary

    Conway

    • pull-3858 - Restructure computing Refunds and Deposits in a TxBody across all eras
    • pull-3860 - Removed mock/crypto.cddl, added optional tag to sets
    • pull-3864 - Fix Proposal deposits and add deposit tests to imp tests
    • pull-3859 - Rename ProposalsSnapshot to Proposals
    • pull-3867 - MaryValue fixes
    • pull-3869 - Indicate that tag 258 is optional for OSet. Fix rational CDDL
    • pull-3863 - Improve deposits refunds re-usability
    • pull-3861 - Fail PParamsUpdate deserialization for invalid costmodels in Conway
    • pull-3875 - Fix cddl spec for CostModels in Conway
    • pull-3876 - Change 4 PParam fields from EpochNo to EpochInterval
    • pull-3884 - Relax requirement on the Set tag 258 to be enforced in the next era

    Testing

    • pull-3868 - Improvements to support property tests on Traces with simple Tx with DRep related Certs
    • pull-3792 - RATIFY and GOV constraint tests
    • pull-3885 - Added a test for genTxAndNewEpoch
    • pull-3886 - QuickCheck Imp integration

    Improvements and releasing

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-22-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-11-22T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-11-22-mithril", + "content_html": "

    High level overview

    This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer.

    Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release.

    Low level overview

    • Completed the issue Prototype a P2P relay with libp2p #1326
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Worked on the issue Support P2P relay in infrastructure #1361
    • Completed the issue mithril-client fails to extract archive #1352
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-22-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-11-22T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-11-20-cip1694", + "content_html": "

    High level summary

    We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

    Initial CIP-1694 Security Analysis and Responses

    Section: The constitutional committee


    • “For example, if we consider the hypothetical Constitution rule \"The Cardano network must always be able to produce new blocks\" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

    There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


    Section: Size of the constitutional committee


    • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

    Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


    Section: Terms


    • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

    Thanks. Yes, that suggestion is a bit easier to read.


    Section: Registered DReps


    • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

    Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


    Section: Ratification


    • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

    These correspond exactly to the groups that are administered by the Parameter Committee.


    • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

    Yes, it’s not about harming the system, since Info\nactions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

    Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


    Section: Content


    • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

    Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


    Section: Protocol Parameter groups


    • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

    These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


    • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

    All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


    Section: Votes


    • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

    They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


    Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


    • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

    There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


    Section: Changes post Edinburgh workshop (July 2023)


    • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

    It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


    Section: Reduced deposits for some government actions


    • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

    Indeed. We have no plans for this at the moment.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-20-cip1694", + "title": "Initial CIP 1694 Security Analysis and Responses", + "summary": "High level summary", + "date_modified": "2023-11-20T00:00:00.000Z", + "author": { + "name": "Kevin Hammond", + "url": "https://github.com/kevinhammond" + }, + "tags": [ + "ledger", + "cip1694", + "security" + ] + }, + { + "id": "2023-11-17-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team made several impactful updates. They addressed\nmisleading errors regarding collect com transactions, resolved a security\nadvisory (CVE-2023-42806), and simplified the Hydra Head protocol by using\ninline datums. The team also tackled minor inconsistencies in specifications and\nimplementation, documented reasons for potentially dropped close transactions by\nthe cardano-node, and collaborated with SundaeLabs on an offline mode for\nhydra-node. Additionally, they engaged in discussions with researchers about\nincremental de-/commits.

    What did the team achieve this week

    • Removed misleading errors about collect com transactions #839
    • Addressed security advisory CVE-2023-42806 in PR #1161
    • Changed the head protocol to use inline datums, simplifying things in the hydra-node #1162
    • Addressed minor inconsistencies in spec and implementation #1104
    • Documented why close transacations might be dropped by the cardano-node (cant fix) #1039
    • Tidy up a few things here and there
    • Worked with SundaeLabs on the offline mode for hydra-node
    • Discussed incremental de-/commits with researchers

    What are the goals of next week

    • Start work on incremental decommits protocol specification #1057
    • Provide support to Hypix
    • Address all open bugs
    • Release version 0.14.0 with this scope
    • Update dependencies to prepare for Conway #1114
    • Shepherd off-line mode PR over the finish line
    • Complete tidying up chain layer via stateless observation changes in hydra-node #1096
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-17-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-11-17T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-11-17-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: Release benchmarking for node 8.6.0 as well as benchmarks scrutinizing GHC versions and the new tracing system.
    • Development: PlutusV3 capability of our workload generator has been implemented.
    • Tracing: First round of optimization of the cardano-tracer service has completed, awaiting validation.
    • Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.
    • Workbench: Configurable remote environments and improvements to run documentation have been merged to master.

    Low level overview

    Benchmarking

    We've performed and analyzed a full set of benchmarks for node 8.6.0, both in comparison to recent release tags\nand mainnet version 8.1.2. A lot of development work has entered the system since then, so it is crucial\nwe can rule out any potential performance risks for the next mainnet release.

    Additionally, we've been benchmarking GHC9.6.3 builds of cardano-node. Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform.

    A last set of benchmarks was dedicated to the new tracing system with node 8.6.0. We were able to show that\nthere is no performance risk to enabling the new system, even when forwarding all trace messages to a cardano-tracer\nservice on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.

    Development

    For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes\nto the execution budgets by developing specialized workloads.

    Tracing

    The cardano-tracer service has received its first batch of optimizations. Profiling output is promising; to measure\nperformance for a long service run time, we're currently equipping the service binary with the same capability to\nemit regular resource traces as cardano-node. Analysis of those will be the basis for validating this and possible future optimization efforts.

    Nomad backend

    Many improvements for the nomad backend have been implemented and merged to master. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service,\nmore detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables\nour team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.

    Workbench

    Our performance workbench has seen upgrades in documenting and reporting cardano-node builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler.\nWhen alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential.

    Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-17-performance-and-tracing", + "title": "Performance & Tracing Update", + "summary": "High level summary", + "date_modified": "2023-11-17T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-11-16-network", + "content_html": "

    High-level overview of sprint 48

    Bootstrap Peers

    We continued reviewing bootstrap peers, ouroboros-network#4555.

    IOClasses / IOSim

    We prepared slides for a Haskell meetup were we presented a talk on IOSimPOR.\nThe recording will be availble on YouTube.

    We also used the opportunity to do some refactoring of the IOSim code base: io-sim#117.\nWe released io-sim-1.3.0.0 on Hackage: io-sim#119.

    We also added forkFinally to MonadFork (not included in 1.3.0.0 release): io-sim#123.

    Tech debt

    We refactored Resource used by the DNS subsystem: ouroboros-network#4707.\nWe continued reviewing the ouroboros-network#4625 PR, which refactors\nRootPeersDNS module.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-16-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 48", + "date_modified": "2023-11-16T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-11-15-consensus", + "content_html": "

    High level summary

    Over the last two weeks, we managed to run a UTxO-HD capable node in legacy mode, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does).\nThis legacy mode could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not.\nHowever, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter.\nOn the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node.\nTherefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.

    On the Genesis front, we reviewed the peer simulator for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.

    We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.

    Javier Sagredo continues his cycle as release engineer, and he is working on version 8.7 of Cardano node.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-15-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-11-15T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-11-15-mithril", + "content_html": "

    High level overview

    This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Completed the issue Light Wallet: Release mithril-client library #1311
    • Completed the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Completed the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Fix certificate hashes re-computation in aggregator #1343
    • Completed the issue Remove unstable tag in unstable release #1235
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-15-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-11-15T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-11-14-node-cli-api", + "content_html": "

    2023-11-01 - 2023-11-14

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Improve golden tests
    • Clean-up of conway era commands

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-14-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-11-14T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-11-10-hydra", + "content_html": "

    High-level summary

    The last two weeks, the Hydra team achieved several milestones. They published\nthe monthly report for October, providing updates on project developments. The\nteam delivered a presentation and workshop at the Cardano Summit, contributing\nto community engagement. They implemented a \\\"dirt road\\\" solution for the\n\\\"Ignored init tx\\\" notification and moved the hydra-poll example project to a\ndedicated repository. Additionally, the team built a hydra-chain-observer tool\nfor Hydra Heads, updated the toolchain to GHC 9.6.3, and made various\nimprovements to tooling and code formatting. They addressed specific issues,\nsuch as fixing the gen-hydra-keys command and resolving concerns with the\nrewritten hydra-tui. The team also enhanced the hydra-cluster smoke test\nsuite by fetching network configurations dynamically. Lastly, they actively\nreviewed pull requests and architectural decision records from the community,\nincluding contributions from SundaeSwap. An experiment, the Hydra tally, was\ncompleted and successfully deployed to the mainnet by the Cardano Foundation.

    What did the team achieve this week

    • Published the monthly report for\noctober
    • Given a presentation / workshop at the Cardano summit\n#1109
    • Dirt road implementation for \\\"Ignored init tx\\\" notification\n#529 (without\nstateless observation)
    • Completed and moved hydra-poll example project into a\ndedicated\nrepository
    • Built a first version of a chain observation tool for Hydra Heads\n#1096
    • Switched toolchain to GHC 9.6.3 and various improvements on tooling\nand code formatting\n#1135#1152#1151#1154
    • Fix gen-hydra-keys command to not overwrite existing\nkeys #1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Fetch network configurations instead of packaging them into\nhydra-cluster (smoke) test suite\n#1156
    • Reviewing PRs and ADRs from the community (SundaeSwap)\n#1118#1157
    • Hydra tally experiment (Cardano Foundation) deployed to mainnet

    What are the goals of next week

    • Tackle reported bugs
    • Shepherd contributed off-line mode PR to the main codeline
    • Improve chain observation tool to include more data and refactor\nexisting code towards more stateless observation
    • Start work on incremental decommits
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-10-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-11-10T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-11-10-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the cardano-playground stack

    Lower level summary

    Capkgs

    Cardano-parts

    • General migration support PR for cardano-world to cardano-playground cardano-parts-pull-18
      • Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground
      • Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes
      • Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains
      • The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state
      • The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable
      • Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0
      • For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true
      • Template updates include:
        • Adds optional TF AZ declaration on ec2 resources
        • Adds a cardano node p2p dashboard to the grafana cloud stack
        • Adds a dbsync pool performance analysis query
        • Updates python distribute and delegation scripts from world for playground compatibility
        • Starts a python script lib to reduce shared code among the python scripts
        • Several justfile improvements and new recipes
      • More detail is available in the PR description
    • Update submit action script for 8.6 cardano-parts-pull-19
    • Update scripts for 8.6.0-pre cardano-parts-pull-21
      • Fixes subcommand names based on ERA_CMD
      • Adds deposits to some commands
      • Separates CC cold/hot key generation as host authorization has to occur after action is approved
      • CC voting enabled in vote job

    Cardano-playground

    • Migration PR to largely complete the network migration from cardano-world to cardano-playground: cardano-playground-pull-5
      • Adds re-spun private chain network
      • Migrates shelley-qa chain network from world
      • Justfile improvements and new recipes
      • Improve concurrent environment chain support
      • More detail is available in the PR description

    Iohk-nix

    • Migration to play: iohk-nix-pull-561
      • Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org
      • Remove deprecated cardano-lib p2p network environment
      • Update sanchonet chain with respin changes
      • Update private chain with respin changes
      • Bump private and shelley-qa chains to sanchonet equivalent conway genesis
      • Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing

    Sanchonet-demo

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-10-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-11-10T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-11-09-db-sync", + "content_html": "

    High level summary

    We have created new tag sancho-2-2-0, which integrates missing Conway feautures and some minor fix\ntags sancho-2-1-0, sancho-2-0-1.\nWe have completed the initial implementation for the bootstrap instance objective.

    Lower level summary

    • Add a new --disable-gov flag which disabled Conway ferautures\n#1558
    • Fix of the committee key size\n#1544
    • Workaround a ledger issue with unregistered pools\n#1542
    • Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs\n#1539
    • Rename offline to offchain\n#1533
    • Transfer existing tests to Conway era\n#1529#1547
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-09-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-11-09T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-11-08-ledger", + "content_html": "

    High level summary

    This update contains mostly improvements to quality of Conway era implementation and\ntooling that we use for testing Ledger. Major Conway bugs that were discovered and\nsquashed are:

    • PParamsUpdate proposals will now correctly use DRep thresholds for ratification
    • Treasury withdrawals are now properly enacted.
    • Corrected snapshotting and DRep Stake Distribution Pulser initialization
    • Delegation to non-existent Stake pool is no longer possible

    Other important quality of life improvements are addition of reusable interfaces for an\nordered set OSet and ordered map OMap. Which allowed us to disable duplicate\ncertificates and proposals in a transaction. As a precursor to PlutusV3 integration, a\nserious reorganization of Plutus related functionality was performed.

    Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on\nexpired proposals, addition of Anchor to Constitutional Committee resignation proposals.

    Significant improvements have been made to a specialized \"Imp\" test library that allows us\nwriting concise stateful unit tests for verifying the Ledger logic. Serious progress has\nbeen made on the conformance testing, where we can now interface with Haskell generated\ncode from the Agda specification. Serialization testing has been extended to increase\nbinary conformance coverage.

    Low level summary

    Conway

    • pull-3808 - Enhance CommitteeMembersState query to return quorum and NoConfidence
    • pull-3801 - Fix epoch rule and tests
    • pull-3803 - Fix delegation validation
    • pull-3759 - Reshuffle things to the DRepPulser incorporates some snap shot things
    • pull-3779 - Prevent duplicate certs and proposals
    • pull-3794 - Added anchor to resign certs
    • pull-3797 - Cleanup JSON instances for Conway governance
    • pull-3848 - Plutus modules restructure
    • pull-3840 - Fix anomalies in Deposits in the Conway Era
    • pull-3856 - Add governance related ledger events
    • pull-3825 - Prevent voting on expired GovActions
    • pull-3831 - Treasury withdrawal fix
    • pull-3791 - Use a Data.OMap.Strict to replace ProposalsSnapshot
    • pull-3836 - PParamsUpdate enactment fix
    • pull-3846 - Revert argument order swap.

    Testing

    • pull-3782 - Move ImpTest to Shelley testlib
    • pull-3842 - Imp improvements
    • pull-3844 - Add mappings to Agda types
    • pull-3853 - Fix strange assertion failure, which hides real Block too big problem.
    • pull-3809 - CDDL roundtrip testing
    • pull-3832 - Treasury withdrawals tests
    • pull-3839 - Added cardano-ledger-conformance
    • pull-3841 - Add sha256 to cardano-ledger-executable-spec

    Improvements and releasing

    • pull-3843 - Add ...WithLogs versions of evalScripts and friends
    • pull-3795 - Bump plutus to 1.15
    • pull-3798 - Bump urllib3 from 1.26.17 to 1.26.18 in /doc
    • pull-3799 - Changes needed for 8.6 release
    • pull-3807 - Add invalidBeforeL and invalidHereAfterL functions
    • pull-3819 - Fixups needed for a release
    • pull-3829 - Post release CHANGELOG version bumps
    • pull-3830 - Bump aeson to 2.2
    • pull-3833 - Backport release cardano-ledger-conway-1.10.1.0
    • pull-3828 - Add changelog for node release 8.6
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-08-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-11-08T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-11-08-mithril", + "content_html": "

    High level overview

    This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client Docker package is incorrect #1322
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-08-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-11-08T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-11-01-consensus", + "content_html": "

    High level summary

    This week the Consensus team made progress on two fronts: the question of survivable eclipse duration, which is part of our work supporting Genesis delivery, and how to improve the handling of blocks from the future.\nRegarding the UTxO-HD branch, we managed to run a node with legacy blocks, which is syncing with mainnet, up to including Alonzo.\nWe also investigated a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-01-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-11-01T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-11-01-mithril", + "content_html": "

    High level overview

    This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the release-mainnet aggregator.

    Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Fix devnet Mithril Docker images [#1272](https://github.com/input-output-hk/mithril/issues/1272
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client regressions in snapshot list and download #1321
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-11-01-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-11-01T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-10-27-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team fixed the gen-hydra-keys command to avoid\noverwriting existing keys, and resolved issues related to the rewritten\nhydra-tui. They also worked on a \\\"dirt road\\\" implementation for the\n\\\"Ignored init tx\\\" notification, improving the robustness of the system.

    The team finalized preparations for the Cardano Summit presentation, including\nimplementation of the hydra-poll example DApp.

    If you happen to read this and attend the Summit in Dubai, make sure to check\nout our Masterclass about \\\"Developing Hydra + Mithril for Scaling Cardano\\\" on\nFriday, November 3 at 14:00-15:30 local time in the \\\"Al Dar\\\" room!

    What did the team achieve this week

    • Fix gen-hydra-keys command to not overwrite existing keys\n#1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Finalized cardano summit preparation\n#1109
    • Implemented the hydra-poll example DApp link to\nrepository
    • Dirt road implementation for \\\"Ignored init tx\\\" notification\n#529

    What are the goals of next week

    • Attend cardano summit and deliver presentation
    • Clarify / close user created issues
    • Build aarch64-darwin binaries in CI
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-27-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-10-27T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-10-27-network", + "content_html": "

    High-level overview of sprint 47

    Bootstrap Peers

    We continued to review the process of bootstrap peers, see ouroboros-network#4555

    CI / Tests

    We investigated our CI issues. We found a memory leak in typed-protocols\nfunction used for testing codecs which triggered out of memory manager (OOM) on\nsome platforms (typed-protocols#43); we also found a bug in the connection manager which resulted in CI\ntimeouts (see connection-manager-fix).

    KeepAlive client

    We found two small issues with the keep-alive client, which were addressed\nby Karl Knutsson (Cardano Foundation), ouroboros-network#4689.

    Galois

    We merged two large PRs prepared by Galois:

    Cardano Network Service Assurance (CNSA)

    Galois made the following progress on CNSA:

    • a simple [InfuxDB] database backend has been added;
    • the documentation has been updated;
    • internal improvements to the code;
    • progress on a new \"CSNA analysis\" that provides, for each sampler node, the\nblock download throughput in bytes over time.

    New CHaP Release

    We cut a new release of ouroboros-netowrk packages to CHaP: chap#547

    More details

    CI / Tests

    We improved the memory footprint of some of our tests by analysing a stream of\nIOSim traces without retaining them, see ouroboros-network#4696

    As a safety measure, we introduced an upper bound for heap memory used by test\nartefacts in our nix tests. We use 200MB limit for all tests except for\nnetwork-mux tests which use 350MB limit, see ouroboros-network#4702.

    We refactored one of our tests to use ephemeral ports thus allowing it to\nrun concurrently, see ouroboros-network#4702.

    We merged ouroboros-network#4623 which fixes a bunch of test failures.

    All of them were due to a bug in test logic rather than a bug in production\ncode.

    Release Process

    We updated our release process & associated scripts, see\nouroboros-network#4705.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-27-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 47", + "date_modified": "2023-10-27T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-10-27-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the cardano-playground stack

    Lower level summary

    Capkgs

    • Adds offchain-metadata-tools, dbsync sanchonet updates: capkgs-compare

    Cardano-parts

    • General package updates, modules improvements and template recipes to support network migration from world to playground cardano-parts-pull-17
      • Bumps cardano-db-sync-ng to sancho-2-0-0 tag
      • Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play
      • Adds more machine system bins and devShell bins for scripting and debug purposes
      • Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module
      • Adds profile-cardano-node-topology module for a simplified interface to most common topology needs
      • Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs
      • Adds a topology function to filter self from group machines with an allowList for matching infixes
      • Adds metadata-server and related offchain-metadata-tools bins from capkgs
      • Updates justfile template with:
        • a new query-all recipe for getting status of multiple concurrent running environments
        • a new set-default-cardano-env recipe for fast switching between environments
        • a new start-demo recipe for forking a custom env into conway
        • a new start-node recipe for generic environment start
        • a new stop-node recipe for generic environment stop
        • updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions
        • updated query-tip recipe to a generic query tip compatible with each environment

    Cardano-playground

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-27-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-10-27T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-10-25-mithril", + "content_html": "

    High level overview

    This week, the Mithril team released a new distribution 2342.0. This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes.

    They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files.

    Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the release-mainnet aggregator, and enhanced the Mithril explorer UI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Completed the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Worked on the issue Fix devnet Mithril Docker images #1272
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Worked on the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Display a summary of signers before the full list in explorer #1133
    • Completed the issue Add certificates list in explorer #1184
    • Completed the issue CoreVerifier setup does not compute total_stake correctly #1306
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-25-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-10-25T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-10-24-node-cli-api", + "content_html": "

    2023-10-11 - 2023-10-24

    High level summary

    CARDANO-CLI

    • Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified.
    • stake-address-info now shows deposits balance.
    • Added conway governance action view to allow to inspect governance action files before submitting them on a transaction.
    • build-raw support for --vote-file and --proposal-file

    CARDANO-API

    • Support DRep extended keys
    • Support Plutus V1 in Conway

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-24-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-10-24T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-10-20-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023.

    In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON.\nThis improvement offers users greater flexibility and ease of interaction with the API.

    Finally, the team has followed up on the TUI brick upgrade to version 1.10.\nThis effort has resulted in addressing minor details and enhancing the overall user experience with the TUI.

    What did the team achieve this week

    • Prepare presentation and workshop for Cardano Summit.
    • More TUI fixes and improvements.
    • Upgrade GHC from 9.2.8 -> 9.6.2 #1105
    • Solved user issue related to submitting transactions in cbor format #1111.
    • Fix hydraw connection issue making it more stable #1121.

    What are the goals of next week

    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-20-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-10-20T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-10-18-consensus", + "content_html": "

    High level summary

    During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node.

    UTxO-HD

    • The Plutus workload benchmark for the in-memory backend showed no regressions for the metrics of interest, but it does show an increase in resource usage.
    • We got additional ad-hoc measurements on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB.
    • We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.

    Genesis

    • We produced the first draft for a Survivable Eclipse Duration Model (422).

    Support

    • Esgen finished his cycle as release engineer. Node 8.5.0 has been released.
    • We resumed work on the subpar handling of block from the future (4251).
    • We prepared the integration of new tracing events for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned issue).
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-18-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-10-18T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-10-18-mithril", + "content_html": "

    High level overview

    This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay.

    Finally, they enhanced the CI/CD to publish multiple packages to crates.io and started improving the developer experience with the Mithril devnet.

    Low level overview

    • Published the security advisory Mithril relay could expose Cardano block producer internal IP when updated #GHSA-9m3h-72xj-x2gq
    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Publish multiple packages to crates.io #1298
    • Completed the issue Rename public key published in releases #1292
    • Completed the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Fix devnet Mithril Docker images #1272
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-18-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-10-18T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-10-15-network", + "content_html": "

    High-level overview of sprint 46

    Bootstrap Peers

    We continued reviewing of bootstrap peers, see ouroboros-network#4555.

    Towards Typed Protocols 0.2.0.0

    We diagnosed the performance regression of the new design. The work on\ntyped-protocols will be postponed. For more details see the\ntyped-protocols#3. As an outcome of the performance debugging we prepared\nPR which updates the demo-ping-pong and\ndemo-chain-sync applications.

    Peer Sharing

    We made progress in review of ouroboros-network#4644, which simplifies the\npeer sharing and fixes the ouroboros-network#4642 issue.

    Tech Debt

    We reviewed the ouroboros-network#3836 PR which inspects all the uses of\nerror in ouroboros-network. The PR was prepared by Galois.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-15-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 46", + "date_modified": "2023-10-15T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-10-13-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity.

    They also completed the exploration of potentially moving the Plutus validator scripts to Aiken.

    Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project.

    What did the team achieve this week

    • Network Resilience Persistence (#1101)[https://github.com/input-output-hk/hydra/pull/1101].
    • Upgrade brick on TUI (#1103)[https://github.com/input-output-hk/hydra/pull/1103].
    • Aiken commit validator translation (#1072)[https://github.com/input-output-hk/hydra/pull/1072].
    • Fixed some bugs in our TUI client.

    What are the goals of next week

    • Prepare presentation and workshop for Cardano Summit.
    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-13-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-10-13T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-10-13-ledger", + "content_html": "

    High level summary

    The Ledger team has been shifting focus from implementing Conway related features to\ntesting. For this reason there is a very little amount features that are reported this\ntime aorund. Notable Conway related changes are a specialized ledger query for getting\nConstitutional Committee state and prevention of submitting proposal procedures that have\nno valid path to enactment.

    Testing related work was mainly on a constraint base system as well as on roundtrip\nserialization. As a result of this extra testing a bug in Conway Genesis serialization\nwas eliminated.

    Low level summary

    Conway era

    Integration and releasing

    Testing

    • pull-3769 - Add roundtrip testing by validating FlatTerm
    • pull-3783 - Update TranslationInstance.hs
    • pull-3775 - Refactor and improve constraint based STS tests
    • pull-3793 - Fix sums with negative RHS.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-13-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-10-13T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-10-13-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was updated to 8.5.0-pre.
    • Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring

    Lower level summary

    Capkgs

    • Various improvements and fixes including:
      • Add GHA cron schedule
      • Add nix auto-gc to avoid running out of storage during large package set builds
      • Add new packages to capkgs
      • Reduce runner storage requirement leaving more room for builds
      • Restructure capkgs attribute names to avoid package name collisions
      • Return to non-musl builds for cardano packages to retain journald compatability
      • Update cache usage to from file level to folder level to reduce network and latency overhead
      • Commit diff: capkgs-compare

    Cardano-parts

    • Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: cardano-parts-pull-16
    • Dbsync, smash, faucet and more: cardano-parts-pull-15
      • Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes
      • Adds nginx vhost metrics exporter profile
      • Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down
      • Adds bash *-ng autocompletion compatible wrappers
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds downstream grafana cloud dashboard as templates
      • Adds downstream grafana cloud alerts as templates
      • Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish
      • Updates the basic profile with IOG cache and commonly used bins
      • Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks
      • Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration
      • Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion
      • Updates the colmena template with dbsync, smash, faucet machines profiles and roles
      • Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns
      • Bumps capkgs node-ng to 8.5.0-pre

    Cardano-playground

    • Dbsync, smash, faucet and more: cardano-playground-pull-3
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts
      • Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change
      • Optimizes machine sizes
      • Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion
      • Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration

    Cardano-world

    Sanchonet-demo

    • Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: sanchonet-demo-commit
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-13-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-10-13T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-10-11-mithril", + "content_html": "

    High level overview

    This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on crates.io, the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures.

    Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI.

    Low level overview

    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Update Rust compiler in nix CI #1282
    • Worked on the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-11-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-10-11T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-10-10-node-cli-api", + "content_html": "

    2023-09-27 - 2023-10-10

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Depracated governance query commands and moved all governance related queries to cardano-cli <era> query
    • Drep registration certificates now allow to include an anchor
    • Integrated Drep retirement ceriticates
    • clean up of Drep registration certificates.

    CARDANO-API

    • Add support for committee hot key witnesses
    • Require conway onwards for voting
    • Conway drep registration: expose ledger anchor parameter
    • Add certs to txbody of Conway transactions

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-10-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-10-10T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-10-06-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums.

    The team also delivered the first version of the network resilience layer, significantly increasing head availability.

    Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra.

    Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra.

    What did the team achieve this week

    • Release 0.13.0
    • Published vulnerability reports #1088
    • Merged network resilience work part I #1074
    • Planning for Cardano Summit participation
    • Discussions with funded Catalyst projects wanting to build on Hydra for support
    • Merged typos fix PR from @omahs #1095

    What are the goals of next week

    • Complete Aiken commit validator script #1072
    • Complete Kupo integration #1078
    • Brick upgrade on TUI #1103
    • Clean backlog
    • Prepare and rehearse demo and talk for Cardano Summit
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-06-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-10-06T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-10-06-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system.
    • Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7.
    • Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store.
    • Tracing: The machine-readable tracer configuration has been merged. Optimization of cardano-tracer started.
    • Nomad backend: Ongoing variance analysis and refined cluster topology.

    Low level overview

    Benchmarking

    Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the\nperformance of the in-memory backing store and evaluate possible optimizations (or regressions) for it.

    Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results\nshow all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the cardano-tracer service.

    Consensus QTAs

    The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The\nfeedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype.

    Development

    Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort.

    PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time,\nwe'd like to validate the many improvements that have gone into the Plutus evaluator.

    Tracing

    The focus for further optimization of the new tracing system has shifted to cardano-tracer - the service\nreceiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in cardano-node is\nmore performance critical, the receiving service must still minimize its resource footprint. Moreover, it can\ngenerate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations.

    Nomad backend

    Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated\nthe same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-06-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-10-06T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-10-04-consensus", + "content_html": "

    High level summary

    The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the in-memory backend.

    On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain.\nWe also merged a fix for the Babbage to Conway transition, and released a new version of Consensus.

    Genesis

    • We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (392).

    Support

    • We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (366).
    • We enabled richer tracers in cardano-node that can be useful in future debugging (384).
    • Esgen continues with his release engineer activities, and created a new Consensus release.

    Fostering collaboration

    • We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (369).
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-04-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-10-04T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-10-04-mithril", + "content_html": "

    High level overview

    This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion on implementing Mithril in a light wallet to receive feedback and contributions from the community.

    They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks.

    Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs.

    Low level overview

    • Created the discussion Implement Mithril in a light wallet #1273
    • Completed the issue Run client in browser WASM PoC #1254
    • Completed the issue Benchmark aggregator performances #1220
    • Worked on the issue Add SPO tickers in explorer #1185
    • Completed the issue Add a non 404 status code on the aggregator endpoint #1103
    • Completed the issue Use source attribute in errors #1265
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Completed the issue Configure status page and alerting #1277
    • Completed the issue Upgrade dependencies #1274
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-04-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-10-04T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-10-02-network", + "content_html": "

    High-level overview of sprint 45

    Bootstrap Peers

    We started reviewing the bootstrap peers PR, ouroboros-network#4615.

    Towards Typed Protocols 0.2.0.0

    We discovered a performance regression when using typed-protocols-0.2.0.0, and we\nstarted investigating where it comes from. Currently, we see that\ntyped-protocols-0.2.0.0 can outperform typed-protocols-0.1.0.0 when running\nin isolation with a simple ping-pong protocol, so the regression might be in\nthe new block fetch implementation which comes with typed-protocols-0.2.0.0\nSee typed-protocols#3.

    Tech Debt

    We merged two PRs written by Galois engineers:

    • a pull request which refactors the main entry function for P2P, see ouroboros-network#3834;
    • a pull request which reviews usage of unsafe function in the network code based.

    Galois also made progress with the following two issues:

    IO-Sim

    IOSimPOR

    We found and fixed a bug in IOSimPOR. We'd like to thank Prof. John Hughes\n(Quviq AB) for helping us with debugging the issue.

    We also provided a more uniform API for IOSimPOR, and added ways to make the\ndebugging similar problems in the future easier.

    Technical Details on IOSim refactoring
    We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future.

    IOSim

    To prepare for the next release, we consolidate packages taking advantage of\nthe public sublibraries supported now both by cabal and Hackage. This is\na work in progress, io-sim#114.

    Cardano Newtork Service Assurance

    Galois made the following progress:

    • A test run of spinning up a CNSA instance was done, as a result documentation\nwas updated.
    • Based on the IOG code review of the CNSA code, updates to the CNSA code were\nmade.
    • Galois has started the design for adding a CNSA analysis for \"fetched bytes\nover time while node is syncing\".

    P2P adoption

    In the last two weeks, we've seen increase in P2P adoption.\n\"P2P

    The following graphs show several different versions of relays running on the mainnet. The\ngreen line NodeToNodeVersionV10.True denotes P2P relays.\n\"node

    Open Source

    We upstreamed our FFI bindings to Windows named pipes to Win32 package, the\nPR was accepted and merged.

    We also received an external contribution which enhanced our documentation, see\nouroboros-network#4676.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-10-02-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 45", + "date_modified": "2023-10-02T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-09-29-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    The team is currently formalising mini protocols and testing the\nperformance analysis tool

    Details

    • drafting processs calculus semantics of mini protocol programs

    • testing the new performance modelling tool

    • further work on specification of mini protocols

    • extension of mini protocol framework to support communication of\nprograms with local environments via synchronous channels

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-29-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-09-29T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-09-29-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team mainly focused on having a working new reliability\nnetwork layer; and specified its expected behavior in a new ADR.

    They also revisited the security policy and vulnerability disclosure policy on\nhow to handle security vulnerability within Hydra, and in particular how to\nhandle so-called \"Silent fixes\".

    What did the team achieve this week

    • Updated security policy and vulnerability disclosure policy #1088
    • Adr/network reliability #1082

    What are the goals of next week

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-29-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-09-29T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-09-29-ledger", + "content_html": "

    High level summary

    Few important Conway related features were completed in this two week period:

    • Constitutional Committee was the last missing Conway related entity that has now been\nfully implemented.
    • Treasury withdrawals governance actions have been fixed and now behave as expected.
    • Current treasury amount supplied in the transaction is now enforced by the rules.
    • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no\nproposals to vote on.
    • Semantics of how CostModels are updated with Protocol Parameters have been changed to\nallow for individual Plutus language version updates, rather than requiring a complete\nreplacement of all CostModels

    Besides the new features there were also important performance and testing improvements:

    • In particular stake distribution computation and native script handling received some\noptimizations.
    • New testing DSL has been implemented that drastically simplifies writing unit tests for\nledger rules.
    • Integration tests and benchmarks are now possible for Conway era because of the overhaul\nof functionality for initial funds and staking injection whenever node starts up in\nConway, while bypassing all previous eras.

    Low level summary

    Conway era

    • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
    • pull-3739 - Rename some PParams to be consistent with Agda specification
    • pull-3743 - Move DRepDistr from VState to ConwayGovState
    • pull-3746 - Implement tcTranslationContextL for Shelley
    • pull-3737 - Implement EraTransition
    • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
    • pull-3748 - Apply enacted treasury withdrawals
    • pull-3745 - Constitutional Committee Ratification
    • pull-3763 - Plutus interface improvements
    • pull-3771 - Changed how costmodel updates are applied
    • pull-3766 - Prevent updating protocol version with PParamUpdate

    Performance

    • pull-3765 - Improve native script handling
    • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
    • pull-3758 - Cardano-Perf regression: UMap.size regression fix
    • pull-3754 - Use Alonzo-style TxOut encoder when possible

    Releasing

    • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
    • pull-3744 - Changelog 8.4
    • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
    • pull-3753 - Minor cleanup and changelog entries
    • pull-3760 - Fixup issues for release
    • pull-3764 - Bump plutus deps to 1.13

    Testing

    • pull-3734 - Removed Shaped instance for Rep
    • pull-3735 - Simplify the implementations of hasOrd and hasEq
    • pull-3728 - STS tests based on constraints
    • pull-3714 - Implement the remaining upgradable families
    • pull-3733 - Add some unit tests for Conway features
    • pull-3762 - Update CDDL for praos headers.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-29-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-09-29T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-09-29-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node 8.4.0-pre.
    • The use of cardano-node docker hub will be deprecated in preference of GHCR

    Lower level summary

    Capkgs

    • Refactor parsing scripts, add github action automation, various bugfixes and cleanup: capkgs-compare

    Cardano-parts

    • Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: cardano-parts-pull-8

    Cardano-playground

    • Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: cardano-playground

    Cardano-world

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-29-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-09-29T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-09-27-mithril", + "content_html": "

    High level overview

    The Mithril team has released a new distribution 2337.0, which includes the following enhancements: support for zstandard compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator.

    They also completed the refactoring and standardization of the errors in the Mithril nodes and published an Architectural decision record on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure.

    Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs.

    Low level overview

    • Completed the issue Release new 2337 distribution #1219
    • Completed the issue Errors refactoring #798
    • Completed the issue Client traffic creates performance bottleneck in aggregator #1207
    • Completed the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Worked on the issue Spike: Run client in browser WASM PoC #1254
    • Worked on the issue Benchmark aggregator performances #1220
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-27-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-09-27T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-09-26-node-cli-api", + "content_html": "

    2023-09-13 - 2023-09-26

    High level summary

    • cardano-node 8.4.0-pre release suitable for SanchoNet.
    • CLI continues making progress integrating governance features. During this sprint we integrated the info and new-committee governance actions.
    • The team continued moving to the ERA top-level commands structure. Removed --conway-era flag from the legacy commands making conway era commands only accessible via cardano-cli conway.
    • stake-pool command is now under the ERA top level structure.
    • API continues integration with governance features, it is worth to higlight that now ProposeNewCommitee uses the right key type (cc-cold)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-26-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-09-26T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-09-22-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team conducted the monthly review meeting in\ncollaboration with Mithril, enhancing project coordination.

    The team improved the gen-hydra-key node command for smoother usability\nand identified concrete steps to enhance network resiliency in feature\nitems #188,\n#1080, and\n#1079.\nAdditionally, they contributed the aiken-mode editor integration to the\naiken-lang organization, updated dependencies to utilize cardano-api\n8.20, and published the Hydra security advisory CVE-2023-42806 with a\nworkaround available for users.

    These efforts demonstrate the team\\'s commitment to project improvement,\nsecurity, and open-source community collaboration.

    What did the team achieve this week

    • Conducted the monthly review meeting together with Mithril
    • Improved gen-hydra-key node command\n#1077
    • Established a clear plan to improve resiliency of network and manifested\nfeature items #188,\n#1080 and\n#1079
    • Moved aiken-mode (created by SN)\nto aiken-lang organization
    • Updated dependencies to using cardano-api 8.20\n#1075
    • Published security advisory\nCVE-2023-42806\n(workaround available)

    What are the goals of next week

    • Write-up the monthly report for September
    • Finish \"network resilience to disconnects\"\n#188
    • Finish kupo integration with hydra\n#1078
    • Discuss and decide on using aiken or not
    • Address the published security advisory\nCVE-2023-42806\n(to not require workaround)
    • Ideally, release 0.13.0
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-22-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-09-22T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-09-22-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters.
    • Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time.
    • Tracing: Work on machine-readable tracing of tracer configuration is ongoing.
    • Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster.
    • Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Blöndal!

    Low level overview

    Benchmarking

    As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking\nbackend with means to measure and document network latency for each run. Furthermore we've implemented means to\ncapture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences\nin the behaviour of the underlying networking stack at OS level.

    Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided\nto compare standard deviations instead to validate the measurements from nomad.

    Infrastructure

    Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline\nhave been merged to master. They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis.

    Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for trace-dispatcher and tx-generator we were able to address those issues.

    Tracing

    After various steps in constructing a configuration upon node startup, it is vital to document\nwhich runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML\ntrace message for that purpose.

    This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node.

    Nomad backend

    As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it\nproduces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an\nimpact on our measurements, as we'd be basically using two different instruments to take them.

    Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service\nor the slightly different system architecture of the new cluster.

    New team member

    Baldur Blöndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team.\nSo I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on cardano-tracer, the component receiving, processing and making available node traces and metrics.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-22-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-09-22T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-09-20-consensus", + "content_html": "

    High level summary

    We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks.\nWe are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough.\nOn the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain.\nWe also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway.

    UTxO-HD

    • We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (349). System level benchmark results are pending.
    • Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (344), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run.
    • We also brought the UTxO-HD branch up to date with node version 8.4.0.

    Genesis

    • We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain.\nWe are now drafting the final self-contained argument. (4157)

    Support

    • We debugged a bad parameter update on the Babbage to Conway transition in the SanchoNet testnet (339).\nA superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (340, 354, and 355)\nHowever we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ConsensusProtocol type class and the HardForkBlock combinator (345 and 346). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-20-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-09-20T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-09-20-mithril", + "content_html": "

    High level overview

    This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports.

    Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution.

    Low level overview

    • Completed the issue Add snapshot compression parameters in infrastructure deployments #1200
    • Completed the issue Add Cloudflare protection of infrastructure #986
    • Worked on the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Worked on the issue Error refactoring #798
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    • Worked on the issue Release new 2337 distribution #1219
    • Completed the issue Upgrade dependencies #1238
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-20-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-09-20T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-09-15-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype.

    Details

    • working on collating and open sourcing performance analysis prototype

    • improvements to Ouroboros Praos specification in Isabelle

    • working on formalising chain sync mini-protocol

    • reviewing an alternatice semantics for DeltaQ

    • Seminar talk at U. Bergen on algebraic properties of timeliness

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-15-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-09-15T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-09-15-hydra", + "content_html": "

    High-level summary

    This week, most of the Hydra team was attending a cardano scaling workshop in\nNantes, France. They used this oportunity to meet fellow mithril team and spend\nsome time together to hack on some code and, as always, reflect on the past work\nand find optimal path forward for both projects. They also fixed a bug that\ncaused hydra-node to crash when querying L1, worked on a new network resillience\nproof-of-concept and accepted a new ADR related to stateless transaction\nobservation.

    What did the team achieve this week

    • Cardano scaling workshop with members of hydra and mithril teams
    • Accepted user contribution for possible new use-case #1048
    • Fix for the hydra-node crash related to internal wallet query #1053
    • Collected experimental CI findings #1070
    • Propose first POC for the network resilience #1074

    What are the goals of next week

    • Monthly review meeting & report including updates from Mithril
    • Review POC and discuss our options for the network resilience
    • Update cardano-api to version 8.20
    • Address TODOs on aiken commit validator #1072
    • Complete hydra-support in kupo kupo#117
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-15-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-09-15T00:00:00.000Z", + "author": { + "name": "Sasha Bogicevic", + "url": "https://github.com/v0d1ch" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-09-15-ledger", + "content_html": "

    High level summary

    The Ledger team's focus is still mainly on the Conway era implementation.

    We were able to add ability to specify initial Constitutional Comittee and the initial\nversion of Constitution. Priority in which Governance Action are now enacted matches the\nspecification. DRep's deposits are now properly accounted for. Governance actions that are\nnot allowed to be voted on by Stake Pool operators and Constitutional Committee members\nare prevented by transaction submission failure, rather than simply being ignored. There\nwas a few important CDDL fixes as well as a lot of new round trip serialization\ntests. Constraint based testing framework has also received a lot of improvements.

    Low level summary

    Conway era

    • pull-3681 - Conway Genesis additions
    • pull-3690 - Preserve the order of ProposalProcedures
    • pull-3705 - Removed ProtVer from EnactState
    • pull-3700 - Add conway-specific certs to deposit/refunds
    • pull-3704 - Add comments on deprecating certs to Conway CDDL
    • pull-3698 - Reordering of governance actions
    • pull-3712 - Disallow empty fields in ConwayTxBodyRaw
    • pull-3716 - Abstract threshold calculation
    • pull-3725 - Fix mistaken use of dollar sign in cddl files
    • pull-3718 - Predicate failure for mismatched Voter GovAction
    • pull-3721 - Committee expiration, validation and modification

    Improvements and releasing

    Testing

    • pull-3730 - Implement Show instance for Rep using IsTypeable
    • pull-3697 - Rewrite testEql using Typeable to make it impossible to forget cases
    • pull-3709 - Add many new features to the Constrained modues in cardano-ledger-test
    • pull-3726 - Conway and other eras serialization roundtrip tests
    • pull-3713 - Improve CI resiliency against GitHub issues
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-15-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-09-15T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-09-15-network", + "content_html": "

    High-level overview of sprint 44

    Bootstrap Peers

    In this sprint, we focused on developing bootstrap peers.

    Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we\nidentified a possible improvement to bootstrap peers. A more detailed\ndescription is available here.

    Cardano-Node-8.4.0 Release

    We also were responsible for the cardano-node-8.4.0-pre release. A final\nintegration PR is currently being merged. We published\nnew versions of ouroboros-consensus, cardano-api and cardano-cli.

    Towards Typed Protocols 0.2.0.0

    We also updated the future typed-protocols-0.2.0.0 and its integration with\ncardano-node. This is towards our goal which we planned for the next\nquarter. The identified tasks are to fix breaking tests, and then measure and\naddress possible performance regressions.

    Tech Debt

    Mark Tullsen (Galois) submitted two more PRs: ouroboros-network-#4663,\nouroboros-network-#4664. We provided feedback on their other pull requests: ouroboros-network-#4661 and\nouroboros-network-#4660.

    P2P adoption

    In the last two weeks, there was a regression in P2P adoption concerning\nthe number of SPOs or stakes, although the number of overall P2P relays has\nincreased. Karl Knutsson (Cardano Foundation) is investigating\nthis issue.\n\"P2P

    The following graphs show several different versions of relays running on the mainnet. The\ngreen line NodeToNodeVersionV10.True denotes P2P relays, which slowly\nincrease over time. The V9 and earlier versions of the node-to-node\nthe protocol indicates nodes version 1.35.x or earlier.\n\"node

    Data has been kindly provided by Cardano Foundation and their mainnet\nmonitoring infrastructure.

    Open Source

    We are in the process of upstreaming our ffi to Windows Named Pipes API to the Win32 package, see [win32-220].

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-15-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 44", + "date_modified": "2023-09-15T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-09-15-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet environment was updated to 8.3.0-pre.
    • Cardano-parts now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is here.

    Lower level summary

    Capkgs

    • Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: capkgs-compare

    Cardano-ops

    Cardano-parts

    • Utilize content addressed binaries to significantly improve eval, build and devShell performance: cardano-parts-pull-8
    • Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: cardano-parts-pull-10
    • Fix warns thrown during some builds and devShell usage: cardano-parts-pull-11
    • Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: cardano-parts-pull-12
    • Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: cardano-parts-pull-13

    Cardano-perf

    • Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: cardano-perf-compare

    Cardano-playground

    Cardano-world

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-15-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-09-15T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-09-14-db-sync", + "content_html": "

    High level summary

    We have created a DBSync tag sancho-1-1-0 which can follow sanchonet. Also\nthe team has ran a number of benchmarks and tests for the new options/flavours of DBSync\nand prepared a blogpost which summorises them, for downstream components.

    Lower level summary

    • Integration of node-8.3.x and support for Sanchonet on Conway\n#1498
    • Simplifications of new feautures\n#1496
    • Makes it impossible to restart DBSync with different schema options and adds\ntests for them\n#1466
    • CI fixes\n#1494#1491
    • Prepared a blogpost about different DBSync options\nblog
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-14-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-09-14T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-09-12-node-cli-api", + "content_html": "

    2023-08-30 - 2023-09-12

    High level summary

    Release of Cardano-node 8.3.0-pre for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs.\nThis release completes phase 2 of SanchoNet feature roll out plan

    CLI continues on its migration to a era-based top-level commands. This sprint we moved text-view, key, query, genesis, node, stake-address, transaction and address into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints.

    We are moving the drep delegation-certificate to the stake-address command so delegating to a drep is done via stake-addres vote-delegation-certificate. Along the same lines, we are renaming\nstake-address delegation-certificate (delagating to a stake pool) to stake-address stake-delegation-certificate to distinguish between stake delegation to a pool and votes delegation to a drep. On top\nof that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly stake-address stake-and-vote-delegation-certificate. Note that change is not included on 8.3 but will come on 8.4.\nRemoving --conway-era flag from all the transaction sub-commands.

    Update description fields in delegation certificates from Stake Address Delegation Certificate to respectively (Conway onwards):

    • Stake Delegation Certificate
    • Vote Delegation Certificate
    • Stake and Vote Delegation Certificate

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-12-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-09-12T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-09-08-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team improved the commit process with support for inline\ndatums. They simplified the chain layer by refactoring how the chain state is\npersisted. Updates to the Hydra tutorial were completed, including CI workflows\nto keep it up-to-date. The team engaged in discussions with researchers about\nincremental commits & decommits, and drafted an architectural decision record\nfor a resource-based API. They also explored simpler solutions for the upcoming\nnetwork resilience feature.

    What did the team achieve this week

    • Support InlineScriptDatum in commit\n#1043
    • Refactored chain state persistency\n#1049
    • Completed tutorial updates (by adding CI and some cleanup)\n#997
    • Intersect Open Source committee meeting
    • Experimented with various models to better express the \\\"Network\nresilience problem\\\" to find a KISS solution for\n#188
    • Drafted and discussed incremental de-/commit features within team\nand with researchers\n#199 and\n#1057
    • Created ADR for a resource based overhaul of the API\n#1028

    What are the goals of next week

    • Meetup of Hydra & Mithril contributors in Nantes, France
    • Integrated cardano-api 8.15 to have GHC 9.6 support
    • A clear design for incremental commits (decommits are already\nunderstood)
    • An ADR for improving tx construction & observation to not need chain\nstate
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-08-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-09-08T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-09-07-mithril", + "content_html": "

    High level overview

    The Mithril team has released a new distribution 2335.0 which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information.

    They have also worked on snapshots enhancements: implementation of the zstandard compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes.

    Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client.

    Low level overview

    • Completed the issue Use 'zstandard' compression for snapshot archives #876
    • Completed the issue Design & implement stress test tool for aggregator - phase 2 #1155
    • Completed the issue Provide progress information with '--json' option in Client #1095
    • Completed the issue Make client download and extract the archive simultaneously #1115
    • Completed the issue Add aggregator Cardano node version in snapshot artifact #948
    • Completed the issue Make Cardano node version part of the Mithril network configuration #947
    • Completed the issue Post deployment 'mainnet' infrastructure #1091
    • Worked on the issue Errors refactoring #798
    • Worked on the issue Add Cloudflare protection of infrastructure #986
    • Completed the issue Failed to restore recent snapshot with strange error #1160
    • Completed the issue Update 'ed25519-dalek' to '2.0.0' #1188
    • Completed the issue Add target networks blocks in release notes #1151
    • Completed the issue Fix end to end 'wait_for_the_expected_time' test #1191
    • Completed the issue Fix docs 'git checkout' command #1174
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-07-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-09-07T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-09-07-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack.
    • Infrastructure: Various improvements of our analysis pipeline have been merged to master, supporting safe log truncation.
    • Tracing: Namespace consistency checks have been merged to master along with a curated configuration for benchmarking.
    • Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.

    Low level overview

    Benchmarking

    We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer.

    With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance.

    The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack.

    Infrastructure

    As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation\noperation that keeps the interdependencies of block events intact.

    Truncation might happen at a slightly different point\nin time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time.

    Tracing

    Consistency checking of namespace implementation and configuration when using the new system has been completed.\nThis feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a cardano-node shows inconsistencies with the namespaces the system provides - and hence needs attention.

    Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many\ndetailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable.

    Nomad backend

    The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the\nfirst real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-07-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-09-07T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-09-06-consensus", + "content_html": "

    High level summary

    We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation.\nOn the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers.\nThe Consensus release engineer finished his rotation: version 8.3.0-pre of cardano-node is releasing 2023 September 5.

    UTxO-HD

    • We ran the first successful system-level benchmarks for UTxO-HD (see #203) using the in-memory backend.
      • We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot.
      • After the mempool regression is fixed the benchmarks need to be ran again.
      • System-level UTxO-HD benchmarks with the LMDB are still pending.
    • UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see #344).
    • We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in GetUTxOByAddress (see this comment). Preliminary results are promising.
    • Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (#344), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.

    Tech debt

    • We added tests that Consensus emits valid CBOR (#3099). This helped us detect a couple of serialization bugs. The tests still need to be merged into the main branch (#323).

    Support

    • Nick Frisby finished his release engineer rotation; cardano-node 8.3.0-pre is releasing 2023 September 5.
    • We helped to investigate a protocol version bug in Sanchonet (see #3491).
    • We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see #91.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-06-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-09-06T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-09-01-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype.

    Details

    • finalising a presenting performance analysis internship work to the\nformal methods team

    • developed a new Isabelle mini-protocol framework and examples

    • planning an extended version of the ICE DeltaQ paper

    • working on algebraic rules for properisation of any-to-finish

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-01-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-09-01T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-09-01-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team focused primarily on changes needed in the network\nlayer and have the first draft document related to needed design. They also\nimproved the user experience by allowing a commit using inline datums.\nDiscussed the off-chain governance with researchers and improved internal model\ntests.

    What did the team achieve this week

    • Monthly report published
    • Small changes to hydraw and tutorial in light of the Masterclass
    • Investigated a bug and saw it was solved by recent developments
    • Improved the model tests by fully validating L1 transactions
    • Enhanced the /commit API to also allow commit from scripts with inline datums (user request)
    • Discussed off-chain governance with IOG and CF researchers
    • Drafted a first network specification document in the context of Network resilience

    What are the goals of next week

    • Have a clear understanding of the changes we need for the \"Improve network resiliency\" feature
    • Groomed and agreed plan on incremental commits/decommits
    • Updated tutorials including CI workflows to check consistency
    • Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-01-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-09-01T00:00:00.000Z", + "author": { + "name": "Sasha Bogicevic", + "url": "https://github.com/v0d1ch" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-09-01-ledger", + "content_html": "

    High level summary

    Broadly speaking the Ledger team focused on a few main areas of Conway era:

    • Creation of voting state snapshots in order to correctly delay ratification for one epoch
    • Validation of the Governance Actions sequencing and ordering
    • Proper expiry of DReps and Proposal Procedures
    • Expanding Conway Genesis functionality
    • Utilization of some of the new Protocol Parameters in ledger validation rules

    Low level summary

    Conway era

    • pull-3659 - Validate Network for ProposalProcedure and TreasuryWithdrawal
    • pull-3637 - Avoid using sequence of tuples, by adding GovActionId to GovActionState
    • pull-3651 - Inactive DReps
    • pull-3664 - Track proposal expiry
    • pull-3668 - Add min committee size predicate to NewCommittee
    • pull-3669 - Add Proposal deposit check against PParam
    • pull-3676 - Fix inactive PoolStake not counting as Drep Stake
    • pull-3635 - Make snapshots of GovActionsState
    • pull-3670 - Validate previously enacted govAction
    • pull-3694 - Improve error reporting on the positive coin decoder
    • pull-3674 - Added RATIFY thresholds
    • pull-3684 - Add proposal delaying, remove predicate failure from ENACT
    • pull-3688 - DRep Refunds and update evalTransactionBalance

    Improvements and releasing

    • pull-3677 - Minor patch that fixes the DRep distribution computation
    • pull-3686 - Post patch release fixup
    • pull-3695 - Changelog for cardano-node-8.3 release
    • pull-3683 - Add two new bench mark programs

    Testing

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-01-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-09-01T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-09-01-network", + "content_html": "

    High-level overview of sprint 43

    In this sprint, we received contributions from CF & Galois. Karl Knutsson\n(CF) has addressed various issues regarding peer churning in P2P, timeouts\nand our WireShark dissector. While the Galois developers focused on\naddressing issues from their review last year. See below for more details.

    We continued working on bootstrap peers ouroboros-network-#4661.

    We refactored our test suites: they are split into io-tests which require to\nbe run natively on all platforms (these tests mostly contain tests that\nrequire IO system calls) and sim-tests which are platform independent. We\nrun io-tests on all supported platforms (e.g. x86_64-linux,\nx86-64-darwin, aarch64-darwin and x86_64-w64-mingw32 (Windows)) natively.\nThe sim-tests are not executed on Windows due to memory limitations on\nGitHub Actions runners. ouroboros-network-#4653

    We also started rebasing typed-protocols refactoring branches.

    Marcin was appointed as the cardano-node release engineer for the 8.4.0-pre\nversion. So far he integrated cardano-ledger-conway-1.8 and\nouroboros-network-0.9.1.0 to ouroboros-consensus, cardano-cli and\ncardano-api. Once we will have an integration branch for cardano-node,\ncardano-ledger-conway-1.8 and ouroboros-consensus packages can be released\nto CHaP and PRs can be merged once they go through review & CI.

    We also fixed some smaller issues regarding peer sharing (both were discovered\nby Karl from CF). More details are included below.

    Progress on P2P addoption

    SPO relays

    There are currently ~2000 relays running P2P\nenabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On\n16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil\nAda.

    \"P2P

    The following graphs show several different versions of relays running on the mainnet. The\ngreen line NodeToNodeVersionV10.True denotes P2P relays, which slowly\nincrease over time. The V9 and earlier versions of the node-to-node\nthe protocol indicates nodes version 1.35.x or earlier.\n\"node

    Data has been kindly provided by CF and their mainnet monitoring\ninfrastructure.

    IOG relays

    As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all\nIOG relays will be running P2P.

    Detailed description

    In this sprint, we got a few contributions from CF:

    • Karl made peer churning mechanism less aggressive ouroboros-network-#4656; and
    • he added timeouts for idle states in ChainSync & KeepAlive\nminiprotocols. These timeouts help a node remove idle connections from the\nresponder (server) side ouroboros-network-#4648.
    • he improved the WireShark dissector by adding support for the peer-sharing mini-protocol ouroboros-network-#4656.

    Galois has been making progress in addressing some of the issues they raised in their review (last year):

    Peer Sharing

    • Light peer sharing is only enabled when peer sharing is turned on ouroboros-network-#4652;
    • Handshake incorrectly reports peer sharing value. It's supposed to relay the\nremote value, but instead, it returns the local value. ouroboros-network-#4642 (in review).

    Async Demotion Test Fix

    • We fixed an async demotion test failure which turned out to be a weakness of\nthe test itself rather than a bug in the connection manager. ouroboros-network-#4655
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-01-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 43", + "date_modified": "2023-09-01T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-09-01-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes
    • Work on a new capkgs repository started -- \"Content Addressed Packages\"
      • This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output
      • These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do
      • Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers

    Lower level summary

    Capkgs

    • Content addressed packages -- new repo: capkgs

    Cardano-ops

    • Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: cardano-ops-compare

    Cardano-parts

    Cardano-perf

    Cardano-world

    Sanchonet-demo

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-09-01-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-09-01T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-08-29-node-cli-api", + "content_html": "

    2023-08-16 - 2023-08-29

    High level summary

    CLI is making progress towards phases 3 and 4 of SanchoNet.

    • Ability to create info, no-confidence and new committee governance actions.

    • Voting as DREP is possible now on the CLI

    • API is now using Ledger's PParams and VotingProcedures

    • Expose following queries from consensus:

      - GetGovState
      - GetDRepState
      - GetDRepStakeDistr
      - GetCommitteeState
      - GetConstitution

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-29-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-08-29T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-08-28-mithril", + "content_html": "

    High level overview

    The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of zstandard compression of the snapshot archive, and streaming its download and decompression in the client.

    Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer.

    Low level overview

    • Completed the issue Create explorer page with registered signers #1097
    • Completed the issue Simplify logs on the Signer/Aggregator #1106
    • Completed the issue Refactor (de)serialization of crypto entities #668
    • Completed the issue Mithril client last snapshot download #1078
    • Completed the issue Use the '/signers/registered' route to verify if a signer is registered #1152
    • Worked on the issue Provide progress information with '--json' option in Client #1095
    • Worked on the issue Use 'zstandard' compression for snapshot archives #876
    • Worked on the issue Make client download and extract the archive simultaneously #1115
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-28-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-08-28T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-08-25-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team conducted the monthly review meeting for Agust,which\ncontinously ensures transparent communication and project evaluation.

    In terms of community engagement, the Hydra team gave a Hydra master-class at\nRareEvo workshop as an educational initiative for the community.\nAdditionally, the team updated the Hydra demo and tutorial to include Mithril\nand latest release changes.

    They also focused on exploring the Hydra network resiliance in order to improve\nhydra-node availability, as it becomes stuck very easily and that leads to a\nbad user experience.

    What did the team achieve this week

    • Hydra master-class at RareEvo workshop!
    • Monthly report & review meeting
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Groomed network resilience and explorer features #188
    • New ADR for “Resourced based API” #1028

    What are the goals of next week

    • Have a poc on network resilience working #188
    • Fix issue #931: “Chain state in head state not updated on replayed observation”
    • Fix issue #1039: \"Close transaction dropped from cardano-node\"
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-25-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-08-25T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-08-24-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: Benchmarking node version 8.2.1 has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD.
    • Infrastructure: Our analysis pipeline has received improvements reducing memory footprint.
    • Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing.
    • Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.

    Low level overview

    Benchmarking

    We've performed and analysed the benchmarks for the 8.2.1 version of cardano-node as part of our release benchmarking cycle.

    Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths.

    Infrastructure

    As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held\nin memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline.

    Tracing

    The next portion of optimizations has been completed and merged to master, getting rid of Haskell's native String representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by cardano-node.

    The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup.

    Nomad backend

    The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster\nand porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-24-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-08-24T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-08-23-consensus", + "content_html": "

    High level summary

    On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests.\nOn the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base.

    UTxO-HD

    • We addressed the issues that came from the benchmarking and testing phase (see #314).
      • We fixed the operational-certificate update exception (#305).

    Tech debt

    • We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see this branch).
    • We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see this branch).
    • We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see #275).
    • We decreased the flakiness for our test suite (#284).
    • We incorporated and merged the pull-request on query versioning (#273).
    • We started working on new performance-based regression tests for mempool operations.

    Support

    • Nick Frisby continues with his engineer responsibilities. Notably getting the Consensus release out for node pre-release 8.3. Nick also began integrating it into downstream branches (cardano{-api,-cli,-node}). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-23-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-08-23T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-08-18-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    The team is currently formalising mini protocols and also further\ndeveloping the performance modelling prototype.

    Details

    • Development of an automated prover for showing conformance of\nprograms to state machines (as part of the mini-protocol framework)

    • Completion of the documentation of the (current state of the)\nmini-protocol framework

    • Discussion about two DeltaQ lectures with two practical sessions as part\nof 4th year masters course on distributed systemsby colleagues at UC\nLouvain in the Autumn

    • Discussion about four DeltaQ lectures by colleagues at U. Bergen as part\nof a 5th year Masters course in the Autumn

    • Adapted original DeltaQ implementation to the new typeclasses and\nwrote property tests for its algebraic laws

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-18-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-08-18T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-08-18-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team released version 0.12.0, a significant update that\nbrings support for cardano-node 8.1.2, along with performance enhancements and\nvarious API improvements. Additionally, the team successfully onboarded a new\ncontributor who is now actively participating in operating a Hydra Head. They\ntook part in a meeting of the Intersect open source committee and prepared the\nHydra master-class for RareEvo, an educational initiative for the community.

    If you happen to be at RareEvo, register for the Hydra master-class using this\nform.\nWe hope to make it possible to follow along on-line as well and will announce\ndetails on the Hydra announcements channel on the IOG discord\nserver.

    What did the team achieve this week

    • Released version 0.12.0 which adds support for cardano-node 8.1.2, performance\nand several API improvements. Release notes
    • Replaced commit via websocket with external draft + submit. #954
    • Onboarded new contributor to the point where he actively participates in operating a Head now.
    • Joined a first meeting of the Intersect open source committee
    • Prepared the Hydra master-class for RareEvo.

    What are the goals of next week

    • Monthly review meeting
    • Run the Hydra master-class at RareEvo!
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Clear out red bin items (technical debt)
    • Groom network resilience and explorer features
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-18-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-08-18T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-08-18-ledger", + "content_html": "

    High level summary

    The ledger team made great progress in advancing Conway era forward. In particular, voting\nfor DRep and Stake Pool Operators is now at the state that can be used by downstream\ncomponents. Addition of new ledger state queries makes it possible to verify changes to\nthe governance state, such as placement of votes, submission of governance proposals,\ninspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the\nability to enact all of the governance actions, except for the hard fork initiation.

    Low level summary

    Conway progress

    • pull-3577 - Move PParams to GovState
    • pull-3609 - Adjust thresholds for sanchonet
    • pull-3604 - README: update CIP-1694 link
    • pull-3616 - Switch TreasuryWithdrawals to use RewardAcnt
    • pull-3599 - Add governance action well-formedness check
    • pull-3607 - Rename governance to gov
    • pull-3601 - Added DRep anchors
    • pull-3615 - Add optional previous GovActionId in some ProposalProcedures
    • pull-3596 - Upgradeable families
    • pull-3625 - Change constitution to use Anchor
    • pull-3592 - Added pulsing incremental computation of the DRep distribution
    • pull-3523 - Treasury donations
    • pull-3633 - Prevent state changes on phase2 failure
    • pull-3634 - Disable serialization of protocolVersion param update
    • pull-3630 - Implemented DRep refreshing
    • pull-3640 - Remove crypto parameterization from AnchorData
    • pull-3636 - Implement DRep ratification with an \"always passing\"; threshold
    • pull-3648 - Governance queries
    • pull-3650 - Change environment for ShelleyPOOLREAP rule
    • pull-3658 - Set DRep ratify threshold to 51%
    • pull-3628 - DELEG, POOL, GOVCERT conformance with Spec v0.8

    Testing

    Improvements and releasing

    • pull-3660 - Fix bounds and versions
    • pull-3661 - Adjust versions, bounds and CHANGELOGs to account for the latest release
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-18-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-08-18T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-08-18-network", + "content_html": "

    High-level overview of sprint 42

    Eclipse Evasion

    We merged and released a new version of the ouroboros-network package (version\n0.9.0.0) which includes big ledger peers feature.\nThis is the primary peer selection mechanism to defend against eclipses. We\nalso prepared a PR to updated ouroboros-cosnensus\nand ekg-forward packages.

    CDDL specs for protocol codecs

    We made the cddl spec for network codec more inline with the implementation\nwhich is highly polymorphic. cddl doesn't have the notion of polymorphism,\nbut has any which can generate any valid cbor term. We matched it with an\nAny type on the Haskell side and made all remaining tests & specs use it.\nThis simplified the specifications and made it easier to understand which parts\nare defined in the spec, and which parts are left unspecified. See\nouroboros-network#4595.

    Ouroboros-Network-Framework API changes

    We also released ouroboros-network-framework and other network components.\nThe ouroboros-network-framework package contains a redesign of API exposed to\nouroboros-consensus. We consolidated, cleaned it and made it easier to\nextend in the future if there will be new arguments that need to be passed to\nmini-protocol initiator and responders which comes from the low-level network\nlayer.

    Nix setup (CI)

    We also made a major review of our nix setup. With help from our DevX team\nwe ended up with a clean flake.nix file which can:

    • compile & test the code on x86_64-linux, x86_64-darwin and aarch64-darwin
    • cross-compile to Windows on x86_64-linux

    And provides a shell which contains all the build tools, including ghc-9.6,\nhls, cddl, and more. See ouroboros-network#4640,\nouroboros-network#4643.

    Other contributions

    Cardano Network Service Assurance

    • The work and writeup in finishing up the CNSA, first stage (first\ncontract).
    • Getting Sam Cowger (Galois Inc) up to speed.
    • The IOG Networking team carried a reivew of CNSA project progress: a limitted\ncode & design review.

    Galois Review

    Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues

    scoping, requirements, and getting started.

    CI

    We added a nightly run for GitHub actions and made the GitHub actions test be\nexecuted with extra concurrency ouroboros-network#4637, ouroboros-network#4649.

    We also added GitHub's dependabot ouroboros-network#4650.

    Bootstrap Peers

    We settled on implementation design of bootstrap peers which is being\nimplemented, ouroboros-network#4615.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-18-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 42", + "date_modified": "2023-08-18T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-08-18-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet and shelley-qa environments were updated to 8.2.1-pre.
    • Work on two new repos utilizing flake parts for cardano cluster generation, automation and operation.

    Lower level summary

    Cardano-ops

    Cardano-parts

    Cardano-perf

    Cardano-playground

    Cardano-world

    Inputs-check

    • A flake parts module to check input closure sizes recursively for optimization considerations: inputs-check
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-18-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-08-18T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-08-17-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Include MuSig2 description in cryptography handbook
    • kes_agent: Finilising test and CI. Working on KES binary

    Low level summary

    Mithril

    • Full Node Verifier merged #939.

    MuSig2

    • Started describing MuSig2 to include it as part of the cryptography handbook

    Sidechains

    • Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in this fork.

    KES agent

    • KES agent is ready:
      • CI ready #19
      • Receipt confirmation message #20
      • KES agent binary ready #21
      • Control client implemented #11
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-17-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-08-17T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-08-17-db-sync", + "content_html": "

    High level summary

    We have integrated many new Conway feutures and allow db-sync to sync sanchonet.\nWe also continued testing and improving the new db-sync options.

    Lower level summary

    • Conway integration\n#1484
    • Support for Sanchonet\n#1476
    • Stake distribution is computed earlier\n#1484
    • Deposit ledger events are now used. This reduces the db queries and makes syncing faster\n#1484
    • Testing new db-sync options\n#1466
    • Added support for ghc-9.6\n#1479
    • Tech debt: improve exceptions\n#1471
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-17-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-08-17T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-08-17-secp-issue", + "content_html": "

    Security Issue Report: SECP256k1 bug

    Date Occurred: July 15, 2022\nSeverity: Potentially Very High if exploited on Mainnet\nAuthors: Iñigo Querejeta Azurmendi

    Date of Report: August 17, 2023

    Summary of Issue

    Criticality Level

    Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet\nContext

    New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains.\nHow was the Issue Detected

    The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there.

    What Action was Taken

    The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod).\nFixes were applied to prevent the use of the primitives.\nA full security audit was carried out on the bindings.\nThe rollout of the primitives was postponed to a new hard fork (Valentine)

    Potential Effect

    The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction.

    Actual Effect

    • Delay to the Vasil hard-fork
    • Temporary removal of SECP256k1 primitives
    • Additional hard-fork to introduce SECP256k1 primitives

    Ongoing Mitigations Needed, if any

    None

    Responsibility for Mitigations

    Core team

    Detailed description of Incident

    New Plutus secp256k1 cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet.

    The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing.

    • This is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an expected structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely.
    • The same happened with the Schnorr verification function. It takes as input a SECP256k1_xonly_pubkey, which is again an opaque structure that holds a parsed and valid public key.

    The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated.

    The fix was addressed in this PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts.

    Recommendations

    • Check all new Plutus bindings for correct use.
    • Audit all new Plutus built-in bindings.
    • Continue to develop specific End-to-End tests for all new Plutus features.
    • Do not assume that any existing library functions are \"safe\". Treat all external calls circumspectly.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-17-secp-issue", + "title": "SECP bindings Security Issue Report", + "summary": "Security Issue Report: SECP256k1 bug", + "date_modified": "2023-08-17T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-08-15-node-cli-api", + "content_html": "

    2023-08-02 - 2023-08-15

    High level summary

    • cardano-node 8.2.1 (pre-release) to SanchoNet
    • Continue moving CLI into era-based top level command structure
    • Wire-up DREP key generation,
    • Fix DREP deregistration certificates
    • Implement Constitutional Committee Key generation on the CLI
    • Introducing era-based protocol parameters on the API
    • Removing depracated functions and types on the API

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    Fix broken links in docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-15-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-08-15T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-08-11-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team updated hydra-node to support cardano-node version\n8.1.2, ensuring compatibility with the latest mainnet release. The team also\nparticipated in discussions about a \"cardanonical\" JSON schema and added it as a\nsubmodule to the project, contributing to improved data modeling and\ninteroperability.

    In terms of community engagement, the team successfully onboarded a new\ncontributor, also participated in a RareEvo Twitter space, and continued\npreparations for the Hydra master-class.

    What did the team achieve this week

    • Updated dependencies to support cardano-node 8.1.2 #1007
    • Engaged in discussions about a cardanonical json schema and\nadd it as submodule to the project\n#1013
    • Onboarded a new contributor to the hydra project (@locallycompact)
    • Joined RareEvo twitter space and continued preparation of hydra master-class

    What are the goals of next week

    • Update & streamline tutorial to work with latest version of hydra-node
    • Remove the internal commit functionality #954
    • Release 0.12.0
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-11-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-08-11T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-08-11-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We've concluded benchmarking node version 8.2.0.
    • Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration.
    • Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.

    Low level overview

    Benchmarking

    As part of our release benchmarking cycle, we've completed and analysed the runs for the 8.2.0 version of cardano-node. In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version.

    Tracing

    A significant amount of optimizations for the new tracing system has finally been merged to master. At the moment,\nwe're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding\ninsight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward.

    Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing.

    Nomad backend

    The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent\nand reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were\nable to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks.

    A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to master.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-11-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-08-11T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-08-10-mithril", + "content_html": "

    High level overview

    The Mithril team completed the Mithril protocol’s mainnet beta launch: the release-mainnet network is now consistently producing new certificates and snapshots! The team has released a new distribution 2331.1 which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the mainnet infrastructure.

    Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network.

    Low level overview

    • Released the new distribution 2331.1
    • Completed the epic Release 'mainnet' Mithril network #918
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Completed the issue Design & implement basic stress test tool for aggregator - phase 1 #991
    • Worked on the epic Post deployment 'mainnet' infrastructure #1091:
      • Completed the issue Create Production Infrastructure Runbook #1085
      • Completed the issue Ingest 'mainnet' metrics/logs in Grafana #1122
    • Worked on optimizations:
      • Completed the issue Add a 'clean' file to extracted database in client #1131
      • Worked on the issue Create explorer page with registered signers #1097
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on bugs:
      • Completed the issue Client fails to unpack some snapshot archive #1137
      • Completed the issue The 'release-preprod' network stopped producing certificates #1114
      • Completed the issue The 'release-mainnet' network does not show up in the explorer #1111
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.2' #1090
    • Worked on troubleshooting:
      • Completed the issue Signer can't sign with 'Invalid signature for party' error #1125
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-10-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-08-10T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-08-09-consensus", + "content_html": "

    High level summary

    This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of fs-sim and fs-api, and released strict-checked-vars.

    UTxO-HD

    • Rebased UTxO-HD on top of node 8.2 (issue)
    • Address new Maybe translations for UTxOs in Conway 1.6. (PR).
    • Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory.
    • Fixed an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully.
    • Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running QueryUTxOByAddress (PR).
    • Measured the speed of QueryUTxOByAddress under different queryBatchSize values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution.
    • Refactored and implemented ledgertable-related classes for the general HardforkBlock.

    Genesis

    • Frisby and Esgen continue to engage with the Researchers on grinding against the Genesis design.

    Fostering collaboration

    • Drafted a document explaining versioning of local state queries #273.

    Support

    • Frisby is the release engineer this cycle.
    • Successfully created work-in-progress ouroboros-consensus and cardano-api commits that integrate the 2023 Aug 7 tip of cardano-ledger. This will require a release of ouroboros-consensus, which hasn't happened yet.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-09-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-08-09T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-08-04-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Finalised the missing fuzz tests
    • kes_agent: engineer on PTO. Work halted

    Low level summary

    Mithril

    • Work on a mithril flaky test #1105
    • Keep working on Full Node Verifier #939.\nShould be merged in the coming week.

    MuSig2

    • Finalised the fuzz tests #43

    Sidechains

    • Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-04-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-08-04T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-08-04-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    The team is formalising mini protocols and also further developing the\nperformance modelling prototype.

    Details

    • Developing new framework for specification and verification of\nmini-protocols which is closer to the Haskell implementation.

    • Developed a new internal representation for the DeltaQ algebra that\nallows for more modularity in backend implementations

    • Discussions regarding the Cardano networking specification

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-04-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-08-04T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-08-04-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team achieved notable progress in various aspects of the\nproject. The team updated the use case section for auctions on the /unstable\nbranch of the website, improving the understanding of Hydras applicability.

    From the development side, the team successfully completed event-sourced\npersistence, a key enhancement in the projects architecture which improves\noff-chain transaction processing performance. They also added a\nsubmit-transaction endpoint to the API.

    In addition to project-related progress, the team actively engaged in community\nreviews for several catalyst proposals related to Hydra and Mithril,\ncontributing to the wider Cardano ecosystem.

    Finally, the full report for the month of July was also published here.

    What did the team achieve this week

    • Published the monthly report for July
    • Updated the use case section for auctions (published on /unstable branch)
    • Completed event sourced persistence #913
    • Added a submit-transaction endpoint to the API #966
    • Community reviews for several catalyst proposals related to Hydra and Mithril
    • Created a network testing tool (hydra-net) #1006

    What are the goals of next week

    • Update hydra-node to work with cardano-node version 8.x
    • Remove the internal commit functionality
    • Release version 0.12.0
    • Update & streamline tutorial to work with latest version of hydra-node
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-04-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-08-04T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-08-04-ledger", + "content_html": "

    High level summary

    The ledger team was working almost exclusively on the Conway era implementation. In\nparticular, the main focus was directed towards solidifying transaction related types and\ntheir binary representation. We also directed some effort into unblocking Plutus team with\nrespect to PlutusV3 integration.

    Low level summary

    Conway progress

    • pull-3552 - Allow Constitutional Committee Hot Key to be ScriptHash
    • pull-3581 - Make Constitutional Committee Cold Key to be ScriptHash
    • pull-3571 - Implement a portion of the TICKF rule.
    • pull-3556 - Add Script to Constitution
    • pull-3576 - Add optional Anchor to ConwayRegDRep certificate
    • pull-3495 - Implement refund logic for Proposal deposits
    • pull-3579 - Change voting procedure in the transaction to a nested Map
    • pull-3585 - Rename CommitteeCert into a GovCert
    • pull-3587 - Remove DelegStakeTxCert from the COMPLETE pragma for TxCert
    • pull-3586 - Add CurrentTreasuryValue to TxBody
    • pull-3588 - Rename key roles
    • pull-3557 - Update NewCommittee action to use RewardAcnt and add more info
    • pull-3595 - Add ConwayUpdateDRep constructor to ConwayTxCertGov type
    • pull-3600 - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway
    • pull-3597 - Update ProposalProcedure return address to be a RewardAcnt

    Testing

    • pull-3374 - New features for generation subject to constraints
    • pull-3519 - Basic Conway features test

    Bugfixes

    Plutus integration

    • issue-3538 - A fairly complete specification was created for the PlutusV3 context
    • pull-3593 - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality

    Improvements and releasing

    • pull-3574 - Improve clarity and performance of collateral Non-ADA validation:
    • pull-3573 - Update top-level CHANGELOG.md with cardano-node relevant changes
    • pull-3555 - Bump pygments from 2.12.0 to 2.15.0 in /doc
    • pull-3575 - Bump certifi from 2022.12.7 to 2023.7.22 in /doc
    • pull-3567 - Backport mint field translation bugfix
    • pull-3568 - Fixed typo in byron ledger spec
    • pull-3572 - Release/backport tickf bugfix
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-04-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-08-04T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-08-04-network", + "content_html": "

    High-level overview of sprint 41

    24th July - 6th August 2023

    We started the implementation of bootstrap peers. Bootstrap peers are designed\nto provide a safety guarantee for nodes joining the network while still taking\nadvantage of the distributed network for nodes that are synced. This will be\nan intermediate step before Genesis which will allow for further distribute the\nsystem. The bootstrap peers will be run by some trusted partners like CF,\nEmurgo or IOG. They are primarily designed for leaf nodes (e.g. full node\nwallets), which often end up syncing and require access to the honest chain. See\nouroboros-network#4615 for a more detailed implementation plan.

    Other contributions

    We started to use nothunks library to discover if we have any unevaluated\nthunks which can lead to memory leaks ouroboros-network#4633. We found\na small one in the peer metric component of the P2P networking stack. Fixing\nit put us on a small detour of fixing the API of the strict-checked-vars\npackage: cardano-base#431, cardano-base#432, as well as adding NFData\ninstance to io-classes. We also improved nothunks\nlibrary to make debugging easier and we provided a NoThunks instance for\nThreadId which we will need in the future (see nothunks#33).

    We released a new version of io-classes (version 1.2.0.0) and related\npackages to Hackage.

    We addressed all review comments on the eclipse evasion PR which introduces big\nledger peers, ouroboros-network#3886.

    We fixed how SIGHUP signal handlers are registered, so it's not possible to\nshutdown a node which was starting while trying to update network topology,\nsee cardano-node#5421.

    I didn't mention that in the previous update, so here it goes: in the previous\nsprint we released ouroboros-network-0.8.2.0 and\nouroboros-network-framework-0.7.0.0.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-04-network", + "title": "Network Team Update", + "summary": "High-level overview of sprint 41", + "date_modified": "2023-08-04T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-08-04-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version 8.2.0.
    • Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing.
    • Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6.
    • Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.

    Low level overview

    Benchmarking

    The 8.2.0 version of cardano-node required adjustment of some of the sanity checks that are part of our benchmarking\ncluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version.

    Tracing

    The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint\nwhen using it as default for a running node.

    A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any\ninconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node.\nThis feature adds another layer of robustness to the whole system.

    Infrastructure

    A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler\nversions. We've future-proofed our benchmarking code.

    Nomad backend

    The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend\naccordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant.

    The validation phase is ongoing. We were able to perform successful runs and analyses for various 8.x node versions, including 8.2.0-pre. With parallel runs on the current cluster, we hope to measure the same effects we've observed with the\nnomad backend - which will be a big step towards production use.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-04-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-08-04T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-08-04-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Preprod and preview envionments were updated to 8.1.2.
    • Sanchonet and shelley-qa environments were updated to 8.2.0-pre.
    • Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.

    Lower level summary

    Cardano-ops

    Cardano-perf

    Cardano-world

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-04-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-08-04T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-08-01-node-cli-api", + "content_html": "

    2023-07-19 - 2023-08-01

    High level summary

    • Release of Node 8.2.0
      • Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694.
      • This release is phase 1 of the SanchoNet roll out
      • Allows SPOs to vote on changes to the on-chain constitution.
      • Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag.
      • Updates to the networking packages prepare the road for peer sharing.
    • cardano-cli and cardano-api continue to integrate Conway era features
    • Continue refactoring of cardano-testnet

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-08-01-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-08-01T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-07-31-network", + "content_html": "

    Network Update (Sprints 39 & 40)

    The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away.\nIt was great to see and talk to so many of the community members.

    Sprint 39 (Jun 26 - Jul 09)

    Major changes

    Now the following list of traces will be turned on by default:

    node-to-client protocol
    • LocalConnectionManagerTracer
    • LocalInboundGovernor
    • LocalHandshake
    • LocalServer
    node-to-node protocol
    • Server

    See cardano-node#5353. This will be released in node-8.2.0.

    We made sure that cardano-client-0.1.0.x library (which is db-sync) is not using the experimental node-to-client protocol.\nThe cardano-client-0.2.0.0 was not affected.\nSee ouroboros-network#4612.

    We merged the dynamic block production feature to ouroboros-consensus (also available in the cardano-node-8.2.0 release).\nDynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes.\nSee ouroboros-network#3159, [ouroboros-consensu#140].

    We continued to review the implementation of big ledger peers for eclipse evasion, see ouroboros-network#4462.

    Minor changes

    Sprint 40 (Jul 09 - Jul 23)

    Major changes

    We integrated ouroboros-network-0.8.2.0 with the master branch of cardano-node for the 8.2.0 release (the version match between ouroboros-network and cardano-node is purely accidental).\nThis includes:

    • integration with dynamic block production feature.\nThis feature is documented in the following PR.
    • Warm valency for local root peers (see below).

    For the full list of features included in the 8.2.0 release from the network side, please take a look at the pre-release nodes.

    We improved the memory footprint of peer metrics measured by the P2P stack.\nPeer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation).\nSee ouroboros-network#4620.\nThe improvement will be available in cardano-node-8.2.0.

    We added an optional explicit warm valency to local root peers of the P2P topology file.\nPreviously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to.\nThe hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones.\nWarm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses.\nSee ouroboros-network#4575, cardano-node#5409.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-31-network", + "title": "Network Team Update", + "summary": "Network Update (Sprints 39 & 40)", + "date_modified": "2023-07-31T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-07-28-hydra", + "content_html": "

    High-level summary

    During this week, the Hydra team achieved significant progress in various areas.\nThey conducted the monthly review meeting for July, which continously ensures\ntransparent communication and project evaluation. The team migrated the core\nlogic of the node to an event-sourced architecture and incremental writes of\nevents to persistence, enhancing the projects performance and maintainability.\nFurthermore, the team added the ability to read protocol parameters via the API\nand fixed the CI workflows to support pull requests from forks of external\ncontributors, streamlining the development process for community involvement.

    What did the team achieve this week

    • Held the monthly review meeting for July (recording)
    • Migrate the core logic of the node to an event-sourced architecture #999
    • Updated persistence to faster incremental writes of events #1000
    • Added ability to read protocol parameters via API #735
    • Fix CI workflows to support pull requests from forks of external contributors #993
    • Updated to GHC 9.2.8 #1005
    • Prepared an updated use cases section on https://hydra.family (published with next release)

    What are the goals of next week

    • Publish monthly report
    • Complete user transaction submission work #966
    • Remove commit from internal wallet (deprecated) #954
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-28-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-07-28T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-07-27-mithril", + "content_html": "

    High level overview

    The Mithril team launched Mithril protocol’s mainnet beta: the release-mainnet network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch.

    They have released a new distribution 2329.0, which is running on the release-mainnet network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator.

    Finally, they have worked on enhancing the documentation for onboarding SPOs and setting up a Mithril signer, and fixing installation bugs of the binary artifacts produced in the CI.

    Low level overview

    • Created the dev blog post Mithril Protocol’s Mainnet Beta Launch
    • Released the new distribution 2329.0
    • Closed the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Deploy 'mainnet' infrastructure #988
      • Completed the issue Handle Secrets management #989
    • Worked on the epic Release 'mainnet' Mithril network #918
      • Completed the issue Prepare SPO on-boarding guide #1049
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Enhance the configuration of Mithril relay #1080
      • Completed the issue Remove legacy store adapters from aggregator #1053
      • Completed the issue Add a 'sign' sub-command to 'genesis' command in aggregator #1081
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on documentation:
      • Completed the issue Enhance 'Run a Mithril Signer node (SPO)' guide #1055
    • Worked on bugs:
      • Completed the issue Shared library error in CI binaries #1073
      • Completed the issue Debian package does not install cleanly on older ubuntu versions #834
      • Completed the issue Aggregator panics with new (de)serialization of 'ProtocolVerificationKey' #1083
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-27-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-07-27T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-07-26-consensus", + "content_html": "

    High level summary

    The db-sync team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now.\nWe also focused on completing tracing support for UTxO-HD in cardano-node.\nCurrently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further.

    The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ChainSync client as part of the onboarding efforts for the team that will implement Genesis.

    The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team.

    Genesis liaising

    Improvements to the ChainSync client:

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-26-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-07-26T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-07-21-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team updated the specification to align with recent\noff-chain protocol changes, completed refactoring the snapshot emission\nin preparation for event-sourced protocol logic, and updated to GHC\n9.2.7, resulting in improved compile times and slightly smaller Plutus\nscripts.

    What did the team achieve this week

    • Updated the specification to match the recent off-chain protocol\nchanges to complete\n#728
    • Refactored the snapshot emission logic in preparation for event\nsourced protocol logic.
    • Updated to GHC 9.2.7, which led to improved compile times and\nslightly smaller plutus scripts.

    What are the goals of next week

    • Monthly review meeting next wednesday and July report
    • Reflect latest information onto our roadmap.
    • Actual implemention of event-sourced persistence\n#913.
    • Update the use cases section on https://hydra.family
    • Remove deprecated internal commit\n#954.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-21-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-07-21T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-07-21-ledger", + "content_html": "

    High level summary

    Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet.\nAll members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era.\nWe also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release).\nAdditionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available.\nWe also made progress on the constraint-based generators, which can now generate valid transactions and ledger states.

    What we achieved

    • [pull-3521] [pull-3554] Improved Governance model (GovernanceProcedures, ProposalProcedure)
    • [pull-3520] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert )
    • [pull-3531] Refactored and simplified code interacting with Plutus
    • [pull-3558] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix.
    • [pull-3550] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed.
    • [pull-3551] [pull-3546] [pull-3472] Updated tools and added some small improvements
    • [issue-3146] [pull-3498] Introduced Conway protocol parameters
    • [issue-2948] [pull-3499] Implemented ConwayGenesis with the new protocol parameters

    What is currently in progress

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-21-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-07-21T00:00:00.000Z", + "author": { + "name": "Alexey Kuleshevich", + "url": "https://github.com/lehins" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-07-21-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent improvements include:

    • Re-spin sanchonet for testing a new node version followed by fork to Conway
    • Deploying a sanchonet compatible faucet to sanchonet
    • Migrate shelley qa legacy environment to cardano-world

    Lower level summary

    Cardano-node

    Cardano-ops

    • Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: cardano-ops-compare

    Cardano-world

    Iohk-nix

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-21-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-07-21T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-07-20-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    The team is working on formalising mini protocols, the performance\nmodelling prototype and also finishing off their ICE papers.

    Details

    • Formalization of the chain synchronization mini-protocol in the\nthorn calculus

    • Final pre-publication steps for ICE 2023 papers

    • Developing approach for specification and verification of\nmini-protocols

    • Started work on porting the DeltaQ framework to a new, more concrete\nbackend based on piecewise-polynomials

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-20-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-07-20T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-07-18-node-cli-api", + "content_html": "

    2023-07-05 - 2023-07-18

    High level summary

    • Integrate Conway certificates in cardano-api
    • Prepare cardano-cli and cardano-api for cardano-node 8.1.2
    • Tagged cardano-cli 8.3.0.0
      • Query for the hash of the constitution (Conway)
      • Ability to create votes and governance actions
    • Tagged cardano-cli 8.3.1.0
      • Make it build with ghc-9.6
    • Upgrade to optparse-applicative-fork-0.18.1.0 for parsing command line options

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-18-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-07-18T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-07-14-hydra", + "content_html": "

    High-level summary

    This week the team focused on exploring the event sourced persistence in order\nto improve hydra-node performance. Because of this work the team noticed we\nneed to refactor the emit snapshot emission logic and update the spec in the\nlight of new changes. They also took the time to revisit their goals and product\nplans for the next quarter as well as doing some security fixes related to\nmultisignatures.

    What did the team achieve this week

    • Finished spike about performance improvements of event sourced persistence #963.
    • Refactor snapshot emission in protocol logic.
    • Revisited our roadmap and goals.
    • Prepared and conducated a learning session on lean-waste.
    • Improve security of multi-signature checks, see this Github security advisory.
    • Implemented a cache friendly way to version our binaries #962.

    What are the goals of next week

    • Implement Event sourced persistence #913.
    • Remove deprecated internal commit #954 and close #728.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-14-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-07-14T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-07-13-mithril", + "content_html": "

    High level overview

    The Mithril team created a new 2327.0 distribution. They focused on preparing the beta launch on the mainnet: they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the mainnet infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library.

    Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs.

    Low level overview

    • Released the new distribution 2327.0
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Add infrastructure monitoring #987
      • Worked on the issue Deploy 'mainnet' infrastructure #988
      • Worked on the issue Handle Secrets management #989
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Remove certificate hash from Artifact #932
      • Completed the issue Check vulnerabilities in CI #1037
      • Completed the issue Add 'created_at' in Mithril Stake Distribution messages #1030
      • Completed the issue Add a 'run-only' option in end to end test #1048
    • Worked on refactoring:
      • Completed the issue Factorize protocol crypto operations #669
      • Completed the issue Refactor aggregator dependency injection and services #1058
      • Completed the issue Build static binaries in CI #874
    • Worked on documentation:
      • Completed the issue Prepare SPO on-boarding guide #1049
      • Completed the issue Add instructions to set firewall using iptables #1040
      • Completed the issue Update ufw command to set firewall on Mithril Signer installation instructions #1041
    • Worked on bugs:
      • Completed the issue Aggregator does not detect certificate chain epoch gap #952
      • Completed the issue 'testing-preview' network does not create certificates #1015
      • Completed the issue SQLite compatibility in aggregator #837
      • Completed the issue Q&A followup fixes #1035
      • Completed the issue E2E tests are flaky in CI #1023
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-13-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-07-13T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-07-12-consensus", + "content_html": "

    High level summary

    This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a proposed fix. The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine.

    The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility.

    On the support front, the team drafted an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-12-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-07-12T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-07-12-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed.
    • Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends.
    • Tracing: Optimization of the new tracing system is ongoing and yielding good performance results.
    • Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.

    Low level overview

    Benchmarking

    Our analysis of the GHC9 build of cardano-node has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation.

    In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into cardano-node. This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle.

    Infrastructure

    We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in master.

    Tracing

    Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance.

    Nomad backend

    For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run.

    Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to master.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-12-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-07-12T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-07-07-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: First version of snark-based ATMS
    • mithril: Full node verifier
    • kes_agent: Keep progress, and prepare CIP and CPS
    • CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP

    Low level summary

    kes_agent

    Mithril

    • Final review of the implementation of Full Node Verifier #939.\nIncluded benchmarks and further tests.

    Sidechains

    • Schnorr signature implemented
    • ATMS signature implemented
    • First benchmarks show that for the committe size we expect, we need 2^21 constraints.

    CIPs and community

    • Addressed some review comments in #PR506
    • Worked with the communityt on #PR524 to include Keccak as part of the next Plutus release.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-07-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-07-07T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-07-07-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the teams have been working on finalising their ICE papers\nfor publication in EPTCS, formalising concensus, and investigating chain\nsync.

    Details

    • Preparing final versions of ICE papers

    • Reviewing the chain sync design and documentation

    • Refactoring the thorn calculus

    • First draft of Praos specification

    • Developing bounding factors on timeouts

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-07-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-07-07T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-07-07-hydra", + "content_html": "

    High-level summary

    This week the Hydra team accomplished some nice progress. They secured the\nnetwork layer further by implementing authentication of the messages between the\npeers in the Head protocol. In the process they also managed to separate\nHeartBeat messages from the protocol ones which somewhat improved the quality of\ncode in Hydra. The team also finished work related to sending only transaction\nids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark\npublishing on the website.

    What did the team achieve this week

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Add new endpoint for submitting client transactions
    • Remove commit from internal wallet
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-07-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-07-07T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-07-07-sre", + "content_html": "

    High level summary

    The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance.

    Some notable recent improvements include:

    • Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment
    • Explorer component updates
    • Spongix caching server rewrite for R2 Cloudflare support and various performance improvements

    Lower level summary

    Cardano-node

    Cardano-ogmios

    Cardano-ops

    • Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: cardano-ops-compare

    Cardano-rosetta

    Cardano-world

    Spongix

    • Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: spongix-simple-branch
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-07-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-07-07T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-07-06-developer-experience", + "content_html": "

    High level summary

    The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements.

    Lower level summary

    build support & maintainance

    The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions.

    compiler upgrades

    Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests.

    Hydra Tools

    Our repository, input-output-hk/actions, has seen quite some improvements to facility the hydra <-> github integration.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of preliminary GHC 9.8 support.

    devx

    The devx repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our actions/devx GitHub Actions, we have a consistent set of tooling for

    • nix develop shells
    • GitHub CodeSpaces integration
    • VSCode DevContainer support
    • GitHub Actions integration

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-06-developer-experience", + "title": "Developer Experience Update", + "summary": "High level summary", + "date_modified": "2023-07-06T00:00:00.000Z", + "author": { + "name": "Moritz Angermann", + "url": "https://github.com/angerman" + }, + "tags": [ + "devx" + ] + }, + { + "id": "2023-07-04-db-sync", + "content_html": "

    High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested
    • Many devx issues resolved

    Lower level summary

    • We have improved and validated the design for the Conway integration in db-sync
    • Improved the initial integration of the UTxO-HD feauture branches which are under test
    • Prepared a new release 13.1.1.3 which supports node 8.1.1\n#1455.
    • This also fixes a bug\n#1451
    • Added new tests to the new tx_out options\n#1429
    • Fixed a chronic issue in db-sync related to exception handling and concurrency\nThis fixes many other issues and simplifies the logic in db-sync\n#1447
    • A number of fixes and improvements in ci, docker, devx, docs\n#1436#1442#1448#1452
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-04-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-07-04T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-07-04-node-cli-api", + "content_html": "

    2023-06-21 - 2023-07-04

    High level summary

    • Started integration of conway era into the cardano-api,
    • Pre-release of cardano-cli 8.2.1 which enables creating goveranance \"Update constitution\" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.
    • Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities.
    • Continue refactoring cardano-testnet
    • CI and docs house keeping on the new cardnao-cli and cardano-api repositories

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-07-04-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-07-04T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-06-30-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team wrote and published the monthly report for June,\nimplemented the end-to-end functionality for external commits, and tested it on\nthe preview environment. They also listed Hydra as a tool on the Cardano\ndeveloper portal, providing more visibility for the project. The team clarified\nthe path forward for L2 protocol improvements and explored an alternative CI\napproach using cabal instead of nix. Additionally, they released version 0.11.0,\nmarking another milestone in the projects development.

    What did the team achieve this week

    • Written and published the monthly report for June
    • Implemented external commits end-to-end incl. tested it on preview #215
    • Listed Hydra as a tool on cardano developer portal
    • Cleared up path forward on L2 protocol improvements #728
    • Established an alternative CI using more cabal tools #923
    • Release version 0.11.0

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Complete ReqSn only sends transaction ids #728
    • Groom and plan last items for 0.12.0 (remove internal commit)
    • Improve reliability of benchmarks
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-30-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-06-30T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-06-29-mithril", + "content_html": "

    High level overview

    The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano mainnet infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator.

    Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1.

    Low level overview

    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Add infrastructure monitoring #987
    • Completed the epic Prepare Mithril Signer deployment model for SPO #862:
      • Completed the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
      • Completed the issue Adapt infrastructure to use Mithril Relay #1018
      • Completed the issue Announce the new signer deployment model in a dev blog post #1017
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on bugs:
      • Completed the issue Aggregator does not exit on critical error #993
      • Completed the issue Computation of master certificate of an epoch is incorrect #1006
      • Completed the issue End to end tests are flaky #954
      • Worked on the issue 'testing-preview' network does not create certificates #1015
    • Worked on optimizations:
      • Completed the issue Dates format is not standardized #946
      • Completed the issue Add 'recompute-certificates-hash' command to aggregator #1001
      • Completed the issue Add a retry mechanism for artifact creation in aggregator #984
      • Completed the issue Log node version at startup in Aggregator/Signer #944
      • Completed the issue Reactivate Publish Results job in CI #978
      • Completed the issue Clean 'pending_snapshot' directory of aggregator #983
      • Completed the issue Update OpenAPI spec examples #1000
    • Worked on refactoring:
      • Completed the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Refactoring client #982
      • Completed the issue Refactor download code in client #1010
      • Worked on the issue Factorize protocol crypto operations #669
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.1' #973
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-29-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-06-29T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-06-28-consensus", + "content_html": "

    High level summary

    During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team.

    The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components.

    Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node.

    Genesis

    • We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.

    • We decided on an approach of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team.

    UTxO-HD

    • We merged the last of the PRs that were part of UTxO-HD improvements for version 0.1: expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size.
    • We added a new \"legacy\" cardano block in a new ouroboros-consensus-cardano-legacy-block package that should ease the transition for some downstream packages to UTxO-HD, like db-sync. This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block.
    • We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-28-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-06-28T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-06-28-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9.
    • Infrastructure: The first batch of refactoring and documentation for our tx-generator has been merged to master.
    • Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown.
    • Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.

    Low level overview

    Benchmarking

    The compiler switch to GHC9 as the default build platform for cardano-node and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard.

    Using the forge-stress approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node.

    Infrastructure

    The tx-generator is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to master. Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base.

    Tracing

    The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue.

    Nomad backend

    With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress.

    Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-28-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-06-28T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-06-23-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the teams presented two papers at ICE 2023.

    Details

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-23-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-06-23T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-06-23-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team shared progress updates during the monthly review\nmeeting (monthly report and video recording available soon) and started\nexperimenting on preview network with the new commit from external wallet\nfeature.

    What did the team achieve this week

    • Monthly report & review meeting, demonstrating commit from external\nwallet
    • Published regular benchmarks for\nHydra
    • Moved forward the journey for external commits using multiple script UTxOs\n#903
    • Changed the API to only put transaction id in snapshots, instead of the full\ntransactions #922 -> this\nis now evolved into fully addressing #728
    • Fuel marking is now optional as one can now commit from an external wallet\n#924
    • Add flag option to display node version on tui\n#934

    What are the goals of next week

    • Complete external commits using multiple script UTxOs #903
    • New release 0.11.0
    • Dirtroad solution of improved persistence performance #913
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-23-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-06-23T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-06-23-network", + "content_html": "

    Network Update

    Key contributions

    We held a series of session to review the implementation of big ledger peers\n(eclipse evasion). See #4462.

    We get a request from a 3rd party to clarify an inconsistency between CDDL spec\nand protocol implementation. We worked out a nice solution which takes\nadvantage of the any notion available in CDDL. On the Haskell side we\nprovide Any type which gen generate almost any CBOR term (some are excluded\nonly because they are not decoded back to the same form, and we relay on that\nproperty). See #4580.

    We fixed a bunch of problems of the cardano-cli ping command. It also now has\na limited support of node-to-client mini-protocol (the -c option is\nignored, as it cannot be supported by node-to-client protocol). Note that\nthe format of messages has changed, timestamps are printed in ISO8601 format.\nSee #4601, #5326, #5313, #30

    In order to provide a new flag in the topology file which enables ledger peers\nwhen the chain is close to the tip, we continued to work on #4530. This is\ncurrently in review, the consensus team will need to provide us with the new\napi. This feature is useful for two reasons: makes it easier to maintain\na topology file, it will also limit the traffic on public roots generated by\nfor example full node wallets and distribute it to ledger peers.

    We also continued to work on a blog post which describes the journey of design\n& implementation of the dynamic P2P network layer. Too be announced soon :).

    Other smaller changes

    We limit the concurrency of resolving dns names. Up to 8 root peers or ledger\npeers DNS names are resolved concurrently, and at most 2 local root peer DNS\nnames. See #4596.

    We fixed handshake query timeout in #4603.

    We renamed one of the block-fetch decision constructors as requested by the\nconsensus team, see #4608.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-23-network", + "title": "Network Team Update", + "summary": "Network Update", + "date_modified": "2023-06-23T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-06-23-sre", + "content_html": "

    High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:

    • A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality
    • Cardano Sanchonet environment was stood up to test Conway era functionality
    • Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case
    • Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments

    Lower level summary

    Cardano-node

    • Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: cardano-node-pull-5318

    Cardano-ops

    Cardano-world

    Ci-ops

    Ci-world

    • Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ci-world-compare

    Devx-ci

    • A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: devx-ci-repo

    Iohk-nix

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-23-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-06-23T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-06-16-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team focused their efforts on continuing to investigate and\nexperiment operating a head on mainnet. They collected several bugs and issues\nand worked on fixing them. Now the team is soon to release a new version,\n0.11.0, which comes with a lot of improvements and bug fixes.

    What did the team achieve this week

    • Restored and fixed a bug which stalled our head on mainnet #927
    • Solved one user issue #914
    • Reduced significantly local state size and logs by removing the full scripts from it #928
    • (pending review) Reduced snapshot size in the API, by only including tx ids #922

    What are the goals of next week

    • New release 0.11.0
    • Monthly report & review meeting.
    • Fix some minor bugs discovered when operating our head on mainnet
    • Complete journey for external commits using multiple script UTxOs #903
    • Publish benchmarks and provide regular benchmarks for Hydra #186
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-16-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-06-16T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-06-15-mithril", + "content_html": "

    High level overview

    The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client’s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet.

    Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI.

    Low level overview

    • Completed on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Create the sub-command for 'Mithril Stake Distribution' in client #896
      • Completed the issue Adapt end to end tests to handle new types of data #899
      • Completed the issue Update client documentation #897
      • Completed the issue Update architecture documentations for new types of data #898
      • Completed the issue Refactoring client #960
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Enhance terraform infrastructure #930
    • Completed the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Check performance impact of new stake distribution command on the 'mainnet' #962
    • Worked on the epic Prepare Mithril Signer deployment model for SPO #862:
      • Worked on the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
    • Worked on bugs and optimizations:
      • Completed the issue Aggregator does not always detect new immutable file #953
      • Completed the issue CI tests fail with Rust '1.70.0' #958
      • Worked on the issue End to end tests are flaky #954
      • Worked on the issue Certificate dates in metadata are not on the same timezone #946
      • Worked on the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Fix 'Mithril Client multi-platform test' with new client interface #956
      • Completed the issue Enhance 'ImmutableDigesterError::NotEnoughImmutable' error #969
      • Completed the issue Client 'snapshot download' command fails with option '--download-dir' #979
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-15-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-06-15T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-06-14-consensus", + "content_html": "

    High level summary

    The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the Byron and TPraos eras do not need to be checkpointed for an MVP.\nThere is one remaining question (which applies also to the Praos era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated \"Limit on Patience\" timeout sufficiently bounds how long the adversary can inflate a victim's overall sync time.

    On the UTxO-HD front, the prototype branch was rebased on top of the latest ouroboros-consensus main branch and integrated on top of cardano-node 8.1.1-pre. As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD.\nWe managed to run a node again with UTxO-HD enabled.\nWe also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for cardano-node, which uncovered a performance regression on the Network component when using GHC-9.2/9.4. This is being addressed.

    Regarding our support activities, we Released fs-sim-0.2.0.0 and are in the process of preparing the 8.2 release of cardano-node. We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-14-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-06-14T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-06-14-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We've continued release benchmarking and established a new baseline for 8.0.0.
    • New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined.
    • Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.

    Low level overview

    Benchmarking

    In our release benchmarking cycle, we established a new performance baseline for 8.0.0. Additionally, we've measured\nperformance under various workloads for 8.1.1-pre; the results look promising and validate the optimization efforts\ndone on several system components.

    In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for\nbenchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper.

    Tracing

    The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be\nmeaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific\ntrace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles.

    Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD.

    Nomad backend

    As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs.

    This means the backend is entering validation phase, where we systematically compare all metrics taken from the new\ninfrastructure to the existing ones, including determining reproducibility and variance.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-14-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-06-14T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-06-12-network", + "content_html": "

    Network Update

    Key contributions and advances

    We merged light peer sharing feature, which allows to include inbound peers\ninto outbound governor known peers. This is the primary way for new\nunregistered nodes to enter the network, which then can be shared using peer\nsharing. Note that peer sharing is an experimental feature which is disabled\nuntil genesis & eclipse evasion as fully implemented. See #3596.

    We are making progress reviewing eclipse evasion, #3886.

    We fixed another bug in local root peers. We found out that if the local roots\nwhere ignored until the first domain name was resolved, see #4583. The bug\nfix was backported and released in ouroboros-network-0.8.1.1.

    We re-started working on dynamically enabling block forging to address issue\n#3159, which will enable us to release P2P on block producing nodes. See #140.

    New cardano-ping / cardano-cli ping release

    We prepared a new release of cardano-ping library which supports the new\nquery feature (query supported versions). See #4589, #4593 and #5313.\nThe new version of cardano-cli ping will use ISO8601 formatted\ntimestamps; also the formatting of ping results is slightly improved, and it\nwill introduce the new --query-versions (-Q) switch. If the remote site\nsupports the query parameter, the command will print:

    redacted-ip:port network rtt: 0.064
    redacted-ip:port handshake rtt: 0.064010896s
    redacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat
    orAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]

    otherwise it will print the negotiation results

    redacted-ip:port network rtt: 0.045
    redacted-ip:port handshake rtt: 0.101867615s
    redacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder

    Note that in that case cardano-cli ping offers InitiatorAndResponder, which\nallows us to detect whether the remote side is an InitiatorOnly or\nInitiatorAndResponder. Also cardano-cli ping will no longer announce\nitself as InitiatorAndResponder, except for the case mentioned above.

    Other smaller contributions

    On a request from the Marlow Team, we published haddocks of typed-protocols,\nwhich are now available here (#40, #41).

    We made a new release of strict-stm-1.1.0.1 on Hackage, which fixed a bug in\npackage description file, #101 .

    We also helped to debug a deadlock when using named pipes on Windows in the new\nRawBearer API. The API is being used to store secret keys only in memory.\nThe PR #4395 is under review.

    We also have two more PRs which are under review:

    • #4530: enabling ledger peers on a fixed number of slots before the tip of the chain;
    • #4580: a PR which fixes inconsistencies in one of our cddl specs.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-12-network", + "title": "Network Team Update", + "summary": "Network Update", + "date_modified": "2023-06-12T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-06-09-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: E2E tests for BLS bindings and KES agent
    • Sidechains: Implement ECC chip and Rescue hash primitives for ATMS
    • mithril: Full node verifier

    Low level summary

    cardano-base

    • RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); blocked due to issue with windows' localSnocket. Trying to resolve.
    • Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors #317.
    • Above, blocked by the simplification of typeclasses #404.
    • Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings

    Mithril

    • Implementation of Full Node Verifier #939

    Sidechains

    • ECC chip implemented for JubJub over BLS12-381
    • Rescue chip implemented for hashing.
    • Currently working on Schnorr signature (which uses the above constraints)
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-09-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-06-09T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-06-09-developer-experience", + "content_html": "

    High level summary

    The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements.

    Lower level summary

    build support & maintainance

    Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure LoadDLL errors to blst integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like cardano-base experiencing significant reductions in CI complexity.

    compiler upgrades

    After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility.

    CHaP (cardano-haskell-packages)

    We relocated the underlying tooling, (foliage), for CHaP into the IOG organization. Furthermore, we have introduced improved tooling to quickly add constraints to packages, better error reporting for add-revision and better hackage url compatibility to facilitate easer usage of CHaP.

    GitHub Actions

    Our repository, input-output-hk/actions, now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the base and haskell install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking cabal.

    iohk-nix

    The iohk-nix repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, sodium, blst, and secp256k1, are also fixed to certain revisions within the iohk-nix repository.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to gmp.

    devx

    The relatively new devx repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The devx repository's readme has been updated to reflect its purpose and usage guidelines.

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-09-developer-experience", + "title": "Developer Experience Update", + "summary": "High level summary", + "date_modified": "2023-06-09T00:00:00.000Z", + "author": { + "name": "Moritz Angermann", + "url": "https://github.com/angerman" + }, + "tags": [ + "devx" + ] + }, + { + "id": "2023-06-09-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team worked on multiple fronts. They finished the\ninvestigation about the broken head on mainnet and re-opened their persistent\nhead instance. The team also fixed the monthly report publication on their\nwebsite and started sketching ideas and further improvements. Also, they are on\nthe last mile to deliver a new feature which will allow parties to commit funds\nfrom extern wallets. Finally the team started to work on optimizing the\nperformance on their benchmarks.

    What did the team achieve this week

    • Finished investigation on broken head on mainnet #897 and re-opened it.
    • Added support for externally committing regular utxo #887
    • Fix monthly report publication on docs website and published the monthly report. Odd problems when publishing monthly report:
      • Make us think about if we should change something about the website #908
      • Open issue to docusaurus #9036
    • Fixed a bug in the benchmark process #910
    • Explored performance of the hydra-node{.verbatim} and identified a\nbottleneck.
    • Timed transaction feature is being used by the auction project 🎉

    What are the goals of next week

    • Complete performance analysis and start/plan improvements and provide\nregular benchmarks for Hydra #186
    • Add hydra as tool to developer platform #872.
    • Authenticate network messages #727.
    • Complete journey for external commits using multiple script UTxOs #903
    • Start implementing Option B for external commits #215.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-09-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-06-09T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-06-08-db-sync", + "content_html": "

    High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2
    • A new hire will help us with devx issues.

    Lower level summary

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-08-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-06-08T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-06-08-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has been working on giving and preparing public\ntalks, also on preparing final versions of their ICE 2023 papers, and\non analysing chain selection.

    This sprint the team has been working on final revisions for the\npre-proceedings versions of two ICE 2023 papers.

    Details

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-08-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-06-08T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-06-08-sre", + "content_html": "

    High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer.

    Lower level summary

    Bitte

    • Equinix bare metal capability was added to bitte: bitte-pull-194
    • Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: bitte-pull-201

    Bitte-cells

    Cardano-graphql

    Cardano-node

    Cardano-ops

    Cardano-world

    Ci-ops

    • Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ci-ops-pull-108

    Ci-world

    Cicero

    • Implement a cicero webhook backoff with exponential decay plus jitter: cicero-pull-79

    Iohk-nix

    Openziti

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-08-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-06-08T00:00:00.000Z", + "author": { + "name": "John Lotoski", + "url": "https://github.com/johnalotoski" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-06-08-system-test", + "content_html": "

    High level summary

    Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.7 and 8.0.0 releases.

    Workstreams

    Full list of closed PRs

    Framework improvements:

    • Make cardano-submit-api REST API service available and run corresponding regression tests by default
    • Update cabal build testing for 8.0.0
    • Add support for testing governance SPO poll
    • Use Poetry for Python dependency management
    • Check status of known GH issues during tests runtime and finish the test accordingly
    • Generate topology files with both IP addresses and DNS names
    • Log issues like failure to start a cluster instance and report errors during tests runtime

    Testing improvements

    • Add rollback testing:
      1. global consensus is reached after rollback, in situation where less than securityParam blocks were produced since cluster split
      2. global consensus is not reached when more than securityParam blocks were produced, and the result is permanent fork
    • Add tests to governance SPO poll commands

    Node:

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-08-system-test", + "title": "System Test Team Update", + "summary": "High level summary", + "date_modified": "2023-06-08T00:00:00.000Z", + "author": { + "name": "Martin Kourim", + "url": "https://github.com/mkoura" + }, + "tags": [ + "system-test" + ] + }, + { + "id": "2023-06-07-node-cli-api", + "content_html": "

    2023-06-07 - 2023-06-20

    High level summary

    • Completed cardano-cli migration to input-output-hk/cardano-cli
    • cardano-cli ping now uses cardano-ping-0.2.0.5
    • New queries on API:
      • queryCurrentEpochState
      • queryDebugLedgerState
      • queryGenesisParameters
      • queryPoolDistribution
      • queryPoolState
      • queryProtocolParameters
      • queryProtocolParametersUpdate
      • queryProtocolState
      • queryStakeAddresses
      • queryStakeDistribution
      • queryStakePoolParameters
      • queryStakeSnapshot
    • Deprecate:
      • queryPparams
    • Export query API as functions
      • genFeatureValueInEra
      • featureInShelleyBasedEra
      • isFeatureValue
      • valueOrDefault
      • asFeatureValue
      • asFeatureValueInShelleyBasedEra
      • queryEpoch
      • requireShelleyBasedEra
    • Restructure cardano-testnet (WIP)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-07-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-06-07T00:00:00.000Z", + "author": { + "name": "Carlos LopezDeLara", + "url": "https://github.com/CarlosLopezDeLara" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-06-02-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team has put their effort on finding solutions on many\ndifferent problems, such as our broken head on mainnet\n#897, our fragile monthly\nreport publications on the website and implementing Option A for\nexternal commits #215.\nAlthough most of these items are still open, huge progress has been made. To\naccelerate the investigation, they improved their logging to give more precise\nerrors when a transition requirement fails, and to reduce duplication on effets\nlogged content. Last but not least, the team is exploring formal methods and\nattended a workshop on formalizing cryptographic protocols in Agda.

    What did the team achieve this week

    • Continued investigating broken head and opened an issue to keep track #897.

      As part of this issue, improvements were made to the node logs:

      • Give a precise error when a transition requirement fails #895.

      • Reduce duplication for effects logged content by using sequential eventId and effectId pair #896.

    • Fixed references in the hydra specification #893.

    • Attended a workshop on formal methods and crypto in Agda.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete journey for external commits implementing Option A and start implementing Option B #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.
    • Fix monthly report publication on docs website.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-02-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-06-02T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-06-01-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2321.1 distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots.

    Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks.

    Low level overview

    • Released the new distribution 2321.1
    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Enhance MessageAdapter for Artifact in aggregator REST API #925
      • Completed the issue Create the sub-command for 'Cardano Immutable Files Full' in client #895
      • Completed the issue Enhance state machines Aggregator/Signer #933
      • Completed the issue Adapt the aggregator REST API to list certificates #892
      • Worked on the issue Adapt end to end tests to handle new types of data #899
      • Worked on the issue Update client documentation #897
      • Worked on the issue Update architecture documentations for new types of data #898
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Enhance terraform infrastructure #930
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Upgrade Cardano node to '8.0.0' #920
    • Completed the issue Add export path in Client CLI #512
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-06-01-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-06-01T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-05-31-consensus", + "content_html": "

    High level summary

    During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see this issue). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain.

    On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano.

    UTxO-HD

    • We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking SOP classes like HPure and HAp . In short, we implement generalised versions of important classes like Applicative and Traversable.

    Support

    • fs-sim-0.1.0.2 and fs-api-0.1.0.2 were released, which makes them now compatible with GHC up to 9.6.
    • ouroboros-consensus-0.7.0.0 was released for cardano-node 8.1, including query serialization fixes for backwards compatibility.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-31-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-05-31T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-05-31-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster.
    • New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism.
    • Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.

    Low level overview

    Benchmarking

    The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build\nconfiguration: As it stands, the ghc-bignum package is using the Haskell native-backend as a default. We strive\nto benchmark a build with the gmp-backend next.

    A variant of our forge-stress local benchmark has been set up to serve as an early indicator for the resource usage profile\nwe'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way\nshorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great\nsupport when evaluating different compiler versions or RTS flags incrementally.

    Tracing

    The hub of the new tracing system cardano-tracer is designed with a fixed output behaviour, which is limited to various\nlogging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to\ndirectly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all.

    Nomad backend

    We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with\njob definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing\nbenchmarking run required us to fine-tune communications with the nomad server.

    Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible\nand offers more detailed insight than the previous iteration in cardano-ops. The backend will enable you to formulate\nvery specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-31-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-05-31T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-05-26-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has been working on final revisions for the\npre-proceedings versions of two ICE 2023 papers.

    Details

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-26-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-05-26T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-05-26-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team accomplished several important tasks. They held their\nmonthly review meeting and drafted the report for May. They made progress on\nimplementing the first end-to-end journey for external commits using \"Option A\"\nfor normal UTxOs, while still considering \"Option B\". The team also integrated a\nSpanish translation contributed by the community, created micro-benchmarks for\ntransaction validation and deserialization, and made improvements to\nhydra-node's version reporting. Last but not least, they implemented the ability\nto commit multiple UTxOs to a head at once.

    What did the team achieve this week

    • Held the monthly review meeting (recording + slides) & drafted the report for May.
    • Have a first end-to-end journey for external commits implementing Option A\nfor normal UTxOs #887 (still considering Option B).
    • Integrated the spanish translation #866.
    • Created micro-benchmarks for transaction validation and deserialization #884.
    • Improve hydra-node version reporting on non-released builds #849
    • Some minor CI improvements following up last weeks changes.
    • Allow commit transactions with multiple UTxO #774.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete external commits with script UTxOs #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-26-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-05-26T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-05-26-ledger", + "content_html": "

    High level summary

    The ledger team made progress on the conway ledger era. In particular, the design and implementation\nof the new certificates is near complete, we refactored some of our data structures\nto be able to support DReps, we cleaned up the serialization format, and renamed things to make\nclearer the differences with Shelley.

    The team also completed integration work for the next node release, namely 8.1.0.\nAnd, as always, we continue to address technical debt.

    Low level summary

    Conway progress

    • pull-3408 - Improve conway delegation certificates
    • pull-3428 - Get rid of Constitutional in favor of Genesis and Committee
    • pull-3426 - Add DRep to internal data struture (UMap)
    • pull-3425 - Improve witness logic needed for conway
    • pull-3423 - Rename ShelleyDelegCerts constructors to distinguish them from Conway
    • pull-3421 - Rename DCert -> TxCert
    • pull-3454 - conway CDDL minor fixes

    Improve testing

    • pull-3403 - Add Plutus script context golden tests

    Integration work

    • pull-3410 - Update chaps index
    • pull-3416 - Bump cardano-ledger-alonzo-test version
    • pull-3414 - Bump cardano-ledger-shelley-test minor version
    • pull-3420 - Bump cardano-ledger-shelley-ma-test version
    • pull-3441 - Release cardano-ledger-[alonzo|babbage]-1.2.1

    Technical debt

    • pull-3409 - Unit test - no such thing as a reference datum
    • pull-3407 - Fixup release process documentation
    • pull-3404 - Create TotalDeposits events during all eras
    • pull-3402 - Fix broken references in the Shelley spec
    • pull-3424 - Remove no longer used cardano-ledger-shelley-ma package
    • pull-3432 - Add an example on how to bump up versions in the changelog
    • pull-3440 - Revert back to the group serialization for ProtVer for PParams
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-26-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-05-26T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-05-26-network", + "content_html": "

    High level summary

    We continued working on eclipse-evasion. We also analysed and fixed a bug\nwhen using DNS names in local root peers. We continued working on engineering\nblog post about P2P. We released a new version of packages for\ncardano-node-8.1.0 release.

    We improved our CI, removed obsolete scripts add extra validation which checks\nif CHANGELOG.md files were updated.

    We also improved release scripts.

    Detailed summary

    • Eclipse evasion: #4462
    • Local root peers bug fix: #4559
    • Release to CHaP: #4573
    • CI improvements: #4572
    • Release script improvements: #4573
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-26-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2023-05-26T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-05-24-node-cli-api", + "content_html": "

    2023-05-24 - 2023-06-06

    High level summary

    • The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released.
    • We provided assitance where needed in the release
    • An integration repository https://github.com/input-output-hk/fusion-flamingo was created to enable my team to more easily work on cardano-cli and cardano-api

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-24-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-05-24T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-05-19-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the \"Coding Standards\" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.

    What did the team achieve this week

    • Complete validation of timed transactions feature #196.
    • Write ops instructions and troubleshooting #569 and improve logs.
    • Remove --ledger-genesis argument to hydra-node options #863.
    • Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows #877.
    • Use nix to build test binaries to increase CI speed #867.
    • Updated our Coding Standards.

    What are the goals of next week

    • Monthly report & review meeting.
    • Have a first end-to-end journey for external commits implementing \"Option A\" #215.
    • Integrate spanish translation #866.
    • Improve and provide regular benchmarks for Hydra #186.
    • Allow commit transactions with multiple UTxO #774.
    • Explored stateless observation and refined hydra explorer ticket #696.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-19-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-05-19T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-05-17-consensus", + "content_html": "

    High level summary

    During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the [Genesis][#genesis] section for more details.

    Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our main branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain.

    We improved our tooling by releasing an immutable DB server, which can be used for testing and benchmarking purposes, and a db-truncater program, which can be used in disaster recovery and benchmarking scenarios.

    Genesis

    The consensus team working on Genesis:

    • Improved the genesis selection rule as a result of our interaction with IO Research.
    • Studied how the hard-fork combinator handles forecasting at era transitions, and improved our documentation.
    • Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP.
    • Elaborated concrete proposal for the Genesis State Machine.
    • Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).

    The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-17-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-05-17T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-05-17-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2318.0 distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types.

    Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node 8.0.0 (along with the backward compatibility for previous 1.35.x versions).

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the handling of multiple types of signed entity in the aggregator runtime #907
      • Completed the adaptation of the signer runtime to use the signable builder service #854
      • Completed the adaptation of the aggregator runtime to use the artifact builder service #869
      • Completed the appending of the next AVK to all protocol messages #888
      • Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced #893
      • Completed the adaptation of the explorer to handle new artifact routes of the aggregator #927
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the implementation of the new stake distribution computation in the chain observer #919
      • Worked on upgrading the Cardano node to 8.0.0 #920
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-17-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-05-17T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-05-17-performance-and-tracing", + "content_html": "

    High level summary

    • Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes.
    • New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due.
    • Analysis pipeline: First steps on implementing incremental analysis have been untertaken.
    • Open Sourcing: Exhaustive dataflow charts for both our analysis tool locli and our workbanch have been merged to master
    • Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster.
    • P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland.
    • Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.

    Low level overview

    Benchmarking

    As a compiler switch to GHC 9.2.7 for cardano-node's default build environment is around the corner, we're setting up our benchmarking cluster to\nhandle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This\nalso involves choosing a reliable baseline as reference point for inter-version comparisons.

    Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet,\nwe strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to\nbe balanced against resource demand for all our cluster's nodes.

    Tracing

    For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some\nquality-of-life details that have changed required us to revision the system documentation.

    Analysis

    As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been\nnormally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a\nhuge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken.

    Open Sourcing

    A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking\ncopmonents more accessible. As a result, detailed charts for both our LogObject CLI locli and our workbench have been merged to master.

    Nomad backend

    While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting\nthose profiles of our workbench that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality\nof the nomad cloud backend.

    Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster.

    Performance & Tracing Meetup

    We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive\ndays together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future.\nAlso, it was a great opportunity to finally meet in person.

    Offboarding

    Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation\nof team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-17-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-05-17T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-05-12-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: Include final tests for BLS signature. Further adaptations for KES agent.
    • Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.

    Low level summary

    cardano-base

    Sidechains

    • Opened PR in halo2curves to include BLS12-381 and JubJub, #38
    • Addition constraint over JubJub merged #10
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-12-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-05-12T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-05-12-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team had two paper accepted for ICE 2023\n(https://www.discotec.org/2023/ice). The event will be held in Lisbon\non 19th June 2023. The papers will be published in EPTCS.

    Details

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-12-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-05-12T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-05-12-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team achieved a number of milestones, including the release\nof the first mainnet compatible version. Besides this they also addressed\ninconsistencies in rollback handling, added an architecture page to the website,\nreducing the size of logs using event IDs. They also had productive discussions\nwith researchers on plans for incremental commits/decommits and had a whiteboard\nsession on DeFi and lending protocols. The goals for next week include\ncompleting the validation of the timed transactions feature, exploring stateless\nobservation, refining the Hydra explorer ticket, writing ops instructions and\ntroubleshooting, and implementing the first end-to-end journey for external\ncommits.

    What did the team achieve this week

    • Released first mainnnet compatible version 0.10.0
    • Addressed inconsist handling of rollbacks #784
    • Added architecture page and fixed haddock links on our website #838
    • Opened a new hydra head on mainnet
    • Talked with researchers on initial plan for incremental commits/decommits
    • Had a Whiteboard session on DeFi and lending protocols
    • Reduced size of logs using event ids #859
    • Published the monthly report for April

    What are the goals of next week

    • Complete validation of timed transactions feature #196
    • Explored stateless observation and refined hydra explorer ticket #696
    • Write ops instructions and troubleshooting #569 and improve logs
    • Have a first end-to-end journey for external commits implemented #215
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-12-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-05-12T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-05-12-network", + "content_html": "

    High level summary

    We started working on a new way to switch between root & ledger peers (see\nbelow). We continued to work on eclipse-evasion. We merged changes to\nHandshake contributed by Galois Inc. We made improvements to our tests (fixed\na flaky test, added cddl specs for NodeToNodeVersionData and\nNodeToClientVersionData). We improved our CI and automated the process of\nreleasing new package version to CHaP.

    Detailed summary

    We continued to work on testing eclipse-evasion.

    We came up with an idea to limit how full node wallets relay on root peers\n(currently operated by IOG, in future also CF and Emurgo). We designed\na switch to use ledger peers if the node tip is close enough to the current\ntime. For more details see #4530.

    We merged changes to the handshake mini-protocol which allow one to query\nserver's node-to-node / node-to-client parameters. We are grateful to\nGalois Inc. for implementing it, #4256 and #4538. We published new version\nof packages to CHaP chap-#253.

    We added DiffusionError wrapper. Thanks to it, ouroboros-consensus will\nnot duplicate diffusion errors messages in the log, #4537.

    We fixed an issue which caused one of our tests to be flaky, #4515.

    We added cddl tests for NodeToNodeVersionData and NodeToClientVersionData:\n#4540, #4544 (in review).

    We wrote scripts which will help us release packages as well as verify that we\nreleased all the package necessary to build the newest set of packages,\n#4542.

    We renamed the consensus startup tracer and make sure it doesn't log\nExitSuccess exceptions, consensus-#71.

    We reviewed PR which adds RawBearer API, #4395.

    We made series of improvements to our CI:

    • #4539: we don't need to install cryptographic libraries in CI;
    • #4545: Javier Sagredo (consensus) cleaned up CI after consensus moved\nto a new repo;
    • #4546: we switched to use GitHub merge queues;
    • #4549: we made it possible to trigger building haddocks manually;
    • #4553: we fixed and enhanced caching of building dependencies.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-12-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2023-05-12T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-05-05-ledger", + "content_html": "

    High level summary

    The ledger team focused mainly on the conway ledger era and node integration.\nFor conway, we completed a large structural change that now allows\nfor delegation certificates to be parameterized by era, and introducing\nnew certificates for the first time since Shelley.\nWe also continue to build out our contraint based generators that we will\nuse to property test the conway era.\nIn particular, we can now generate an entire ledger state and a\ntransaction which is balanced with respect to the ledger state.

    Low level summary

    Conway certificates

    Certificiates are now abstracted as a type family in the ledger codebase.\nMoreover, there are new certificates in the Conway era to support CIP-1694,\nand MIR certificates have been removed.

    Constraint based testing

    Our plan for property testing in the conway era is to no longer use the trace generators,\nbut instead generate ledger states and transactions based on constraints.\nWe hit a milestone this week, namely the ability to generate a balanced transaction in the context\nof a ledger state, all based on our ever growing constaint language.

    Integration work

    Technical debt

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-05-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-05-05T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-05-05-node-cli-api", + "content_html": "

    2023-05-05 - 2023-05-23

    High level summary

    • Golden tests for cardano-cli command help output were added.
    • Documentation was updated with new libsodium installation instructions.
    • There were several updates for the cardano-cli:
      • Deletion of the deprecated shelley command group.
      • Addition of golden tests for CLI help.
      • An improvement to avoid bare IO in tests, allowing better error reporting in failed tests.
      • Generation of UTCTime test values without leap seconds (avoids erroneous test failures)
      • Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32.
    • The cardano-api underwent multiple refinements:
      • Implementing deposit handling when balancing transactions (necessary for Conway)
      • Cleaning up socket file path code.
    • Several changes were made to the cardano-testnet:
      • Adding golden tests for cardano-testnet help.
      • Removing all hardcoded yaml files in cardano-testnet
      • Improving cardano-testnet help output.
      • Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-05-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-05-05T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-05-04-mithril", + "content_html": "

    High level overview

    The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version 1.35.7.

    Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain.

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the implementation of the Certifier service in the aggregator #850
      • Completed the implementation of the signable builder for the Mithril Stake Distribution #851
      • Completed the implementation of the artifact builder for the Mithril Stake Distribution #870
      • Completed the implementation of the signable builder for the Full Immutables Snapshot #852
      • Completed the implementation of the artifact builder for the Full Immutables Snapshot #871
      • Completed the adaptation of the aggregator runtime to use the signable builder service #853
      • Worked on the adaptation of the signer runtime to use the signable builder service #854
      • Completed the definition of the entity service interface for verification/restoration #868
      • Completed the refactoring of the OpenMessage type #878
    • Completed the epic that simplifies the multi-signer in the aggregator #398:
      • Completed the extraction of the single signature registration from the multi-signer #643
    • Completed the upgrade of the Cardano node to version 1.35.7 #881
    • Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators #873
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-04-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-05-04T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-05-03-consensus", + "content_html": "

    High level summary

    During the past two weeks we made some important progress in the Genesis design.\nIt seems the BlockFetch logic need not be modified for Genesis, although this\nneeds to be confirmed. We started a DoS mitigation handbook and updated our\nconceptual component diagram to guide the Genesis design. We engaged with the\nIOG researchers to work on the Limit on Patience attack vector, work in this\narea is still ongoing. We sketched a design to decouple the CPU load of the node\nfrom its responsiveness to the socket. Finally, we discussed with Networking our\napproach to lower the performance impact of the BlockFetch decision logic, and\ngot green light from them.

    We migrated the consensus code to a new\nrepository, splitting\nit from the ouroboros-network repository, and released version 0.6 of\nConsensus.

    We also merged the mempool fairness improvement to main branch.

    Another significant enhancement to our documentation was the addition of an\nexplanation of the hardfork combinator forecast horizon.

    See the sections below for more details.

    Genesis

    We reviewed the BlockFetch design documentation, and added some source-code\ncomments that emphasize certain properties of the decisions the BlockFetch\nlogic makes that are helping us confirm that Genesis does not require any\nchanges to BlockFetch. We are waiting on input from our former system\narchitect to verify this.

    We migrated and updated the conceptual component diagram in the ouroboros-consensus\nrepository which helps us situate the Genesis design and argument.

    We engaged with the IOG researchers about the Genesis design. We sketched out a\nway to address the concern that the Limit on Patiente (LoP) attack vector duty\ncycle is indeed low, but it's still non-trivial to ultimately conclude it's\nsufficiently low.

    We also sketched a design to decouple the CPU load of the node from its\nresponsiveness to the socket, since the LoP is a relatively tight timeout, and\nnode performance bugs inducing seconds-worth of latency are unfortunately\nfamiliar phenomena.

    Fostering collaboration

    We added an\nexplanation of\na question that we had to explain many times about the exact behavior of the\nhardfork combinator forecast horizon.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-03-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-05-03T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-05-03-performance-and-tracing", + "content_html": "
    • Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.
    • New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint.
    • Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on.
    • Infrastructure: The plutus-apps flake input for cardano-node has finally been removed.
    • Nomad backend: A PR implementing placement of benchmarking clusters has been merged.

    Benchmarking

    The performance investigations on the 8.0 release branch have lead to pinpointing and addressing incosistent behaviour. For that,\nwe created yet another local reproduction with the workbench's forge-stress benchmark.

    Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into 8.0 and\nsubsequent releases.

    Additionally, we've refined the trace-bench family of profiles that target benchmarking our own new tracing system.

    Tracing

    Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally\nintended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant\nconversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system.

    Infrastructure & Analysis

    Dataflow documentation

    The LogObject CLI locli is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate\nfurther development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting.

    Remove redundant Plutus flake input

    This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input,\nwe simplify the dependency graph for cardano-node, as well as enable immediate feedback when developing Plutus benchmarks.

    Nomad backend

    Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking.\nThis capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along\nwith various quality-of-life improvements, has been merged to master.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-03-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "* Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.", + "date_modified": "2023-05-03T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-05-01-db-sync", + "content_html": "

    High level summary

    Lower level summary

    • Prepared a schema change which is expected to speed up queries and help clients\n#1389.
    • Ran a big number of benchmarks on the above to evaluate if this change is reasonable.
    • Performance optimization related to rewards\n#1382
    • Using the cache in more places to reduce recourses usage\n#1380
    • Evaluated risks related to UTXO-HD integration
    • Worked on a feauture request to split the tx_out to an address table\n#1396
    • Worked on another feauture request to prune the consumed entries from the tx_out table\n#1398
    • Prepared for CIP-1694 integration
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-05-01-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-05-01T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-04-28-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library.
    • KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction.
    • Sidechains: Started implementing ECC chip of JubJub over BLS12-381.

    Low level summary

    cardano-base

    • #255 finally merged 🎉
    • Additional tests for BLS bindings #384
    • Open PR for including test vectors created with zkscrypto's library, PR#397

    KES agent

    • Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period PR#389.
    • Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) #317.
    • Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim
    • Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes
    • Refactor MonadSodium into MonadMLock PR#388.

    Sidechains

    • Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)
    • Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-28-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-04-28T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-04-28-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    The team is working on porting an existing formalisation of Ouroboros\nPraos to a newer foundation.

    Details

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-28-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-04-28T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-04-28-network", + "content_html": "

    High level summary

    The networking team has released the following packages to Hackage:

    We published an announcement blog post. We made progress\nalso on another blog post which will describes the design of the P2P networking\nlayer.

    After moving ouroboros-consensus to its own repository, we made\nouroboros-network compatible with GHC 9.4 and 9.6.

    We made cardano-client library independent of\nouroboros-consensus-diffusion.

    We prepared release of network packages for cardano-node-8.0.

    Detailed log

    Ouroboros-Network

    IO-Sim

    • io-classes-1.0.0.0, and following up releases: 1.0.0.1 (ghc-9.6\nsupport), 1.1.0.0 (documentation fix).
    • Fixed timeouts and delays in io-sim in a series of PRs: io-sim#81,\nio-sim#82, io-sim#86, io-sim#87.
    • Renamed a module: io-sim#88.
    • Fixed a failing registerDelayCancellable test: [io-sim#80].
    • Use GitHub merge queue in io-sim repository.
    • CI: download stylish-haskell: io-sim#83.

    Typed Protocols

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-28-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2023-04-28T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-04-27-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team held their Monthly review meeting and drafted the\nreport which likely is published next week. They put the spec into the\nrepository and website, addressed a user issue and fixed the TUI peer list.\nFurthermore, they updated dependencies, conducted a Twitter space on Auctions\nuse cases, covered the rollback bug with tests and implemented a solution.\nLooking ahead, their goals for next week include releasing 0.10.0, implementing\ntimed transactions support, writing a Query API ADR, and grooming work items\nlike off-chain benchmarks.

    What did the team achieve this week

    • Held the Monthly review meeting and drafted the report (to be published next week)
    • Added the spec into the repository\n#693 and published on\nthe\nwebsite
    • Groom and addressed user issue #823
    • Covered the rollback bug with tests and implemented a solution (to be reviewed) #784
    • Fixed the TUI peer list
    • Updated dependencies to match cardano-node master
    • Conducted a twitter space on Auctions use cases

    What are the goals of next week

    • Release 0.10.0
    • Support timed transactions solution drafted and validated API with users
    • Write Query API ADR and groom a concrete step
    • Groom and solve PostTxOnChainFailed UX problem #832
    • Groom off-chain benchmarks idea #186 and turn it into a feature
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-27-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-04-27T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-04-21-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team worked on several fronts, including fixing state\nmachine continuity on-chain, discussing voting project solutions, exploring\nadding Hydra support to kupo, and improving API navigation with a sidebar. The\nteam also updated dependencies and fixed issues in their test suites. Moving\nforward, the team plans to hold the next monthly review meeting, address a user\nissue, prepare for the 0.10.0 release, and work on a dirt road fix for the\nrollbacks issue with proper test coverage.

    What did the team achieve this week

    • Fixed scripts to enforce state machine continuity on-chain #777.
    • Took part in a twitter space on Scaling Cardano.
    • Joined a CBIA meeting to discuss Cardano network protocols & how to specify them.
    • Discussed potential solutions of ensuring vote uniqueness in the voting project.
    • Updated dependencies to match cardano-node master to prepare for upcoming releases and hard-forks
    • Explored adding Hydra support to kupo, a lightweight Cardano chain indexer - some more work required.
    • Improved navigation of the API Reference with a sidebar, see unstable API version.
    • Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)

    What are the goals of next week

    • Monthly review meeting (join via Discord or AddEvent) & report
    • Dirt road fix for rollbacks #784 properly covered by a test.
    • Groom and ideally address user issue #823.
    • Put the spec into the repo #693 and prepare release 0.10.0.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-21-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-04-21T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-04-21-ledger", + "content_html": "

    High level summary

    We continued to make progress on CIP-1694 and the conway ledger era.\nIn particular, the conway era now supports Plutus V3.\nFinally, we made small improvements to the ledger API and now host\nour Haskell code documentation (haddocks) on github pages.

    Low level summary

    Conway ledger era

    Haddocks hosted on github pages

    Small improvements to the API

    Technical Debt

    • [pull-3367] Fix cost model json instances.
    • [pull-3371] UMap cleanup.
    • [pull-3373] Upgrade to ghc 9.2.7 and cabal 3.10.1.
    • [pull-3375] Sadly, we had to revert the TICKF optimizations. There was a regression we do not yet understand.
    • [pull-3377] Fix cabal warnings.
    • [pull-3383] Fix multi-asset test.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-21-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-04-21T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-04-20-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2315.0 distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures.

    Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network.

    Low level overview

    • Released the new distribution 2315.0
    • Completed the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the signed_entity table #816
      • Completed the creation of the signer table #814
      • Completed the migration/adaptation of the single_signature table #829
    • Worked on the epic that designs and implement generic signing/verification of entity services #780:
      • Completed the definition of the interface of the generic entity service for signing #847
      • Worked on the implementation of the Certifier service in the aggregator #850
      • Completed the extension of the SignedEntityType type #848
      • Completed the implementation of the Tick service in the aggregator #849
      • Worked on implementing the signable builder for the Mithril Stake Distribution #851
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-20-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-04-20T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-04-20-node-cli-api", + "content_html": "

    2023-04-20 - 2023-05-04

    High level summary

    • Various fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-20-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-04-20T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-04-19-consensus", + "content_html": "

    High level summary

    This week the consensus team continued working on the improved DB lock mechanism\nfor UTxO-HD, and modifications to the mempool benchmarks that this prototype\nrequires.

    On the Genesis front we validated that the fragment size calculation in\nBlockFetch is a major performance sink for ChainSync Jumping. By removing it\nwe will get performance that is acceptably close to that of the baseline. We\nalso started investigating a performance fix that does not alter the existing\nbaseline behavior too much. In addition we reviewed our Genesis attack vector\ncalculations.

    On the support front we released Consensus 0.4, and we are working on improving\nour release process, to support the Cardano-wide efforts in this area. We also\nperformed an analysis on the number of file descriptors that consensus use. This\ninformation can be used by the node operators to check if the number of file\ndescriptors they want to support are enough.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-19-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-04-19T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-04-19-performance-and-tracing", + "content_html": "
    • Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.
    • New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois.
    • Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run.
    • Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench.
    • Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.

    Benchmarking

    We have performed various cluster runs targeting the 8.0 release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile epoch-transition for local reproduction of what we observed on the benchmarking cluster.

    Furthermore, we bridged the gap between the run data from the 1.35.x releases to the the new 8.0.x release branch. This included walking the\nmaster branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial\nin locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of\nbenchmarks.

    Tracing

    In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still\nongoing.

    In coordination with Galois, who are developing a system assurance service by observing a number of cardano-nodes, we're working with the implementation\nof data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational\nburden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether cardano-tracer could be extended with a richer\nfeature set to that end.

    Infrastructure & Analysis

    Detailed manifest

    A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with.\nThese dependencies come from different package sources, have different versioning policies, and an identical package version might provide different\nperformance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated\nby making all component bumps visible and accessible.

    GHC profiling inside workbench

    The workbench has been equipped with a new -profnix profile flavour. This enforces a -fprof-auto build for all node-related packages. The type of\nprofiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already\nbeen merged to master.

    Nomad backend

    The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances.\nThis results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-19-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "* Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.", + "date_modified": "2023-04-19T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-04-17-ledger", + "content_html": "

    Incident reporting: Cardano block production temporary outage

    On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a ‘critical’ incident, thus warranting immediate response and investigation by IOG engineers.\nThe investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue – a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite.\nFollowing successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version.\nWith the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue.

    Further Details

    You can read more details on the incident and how it was managed from SundaeSwap’s Pi Lanningham here. Thanks again to all the community for its support in identifying and fixing this bug.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-17-ledger", + "title": "Incident Report", + "summary": "Incident reporting: Cardano block production temporary outage", + "date_modified": "2023-04-17T00:00:00.000Z", + "author": { + "name": "Kevin Hammond", + "url": "https://github.com/kevinhammond" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-04-14-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has submitted two papers for publication, carried\nout consultancy with other teams and has an opening for an intern.

    Details

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-14-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-04-14T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-04-14-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team focused on improving the smoke test, fixing developer\ntooling, and improving the API for voting use cases. They reviewed progress on\nauction, payments, and voting projects and made worked on reproducing a bug with\nhandling rollbacks. Moving forward, the team plans to update dependencies,\nimplement a dirt road fix for the rollbacks bug, and explore adding Hydra\nsupport to kupo.

    What did the team achieve this week

    • Reviewed progress on auction, payments and voting projects
    • Improved smoke tests so they can run on mainnet
    • Fixed a regression in the development environment and updated cardano-node\nused in tests
    • Improved API with more configurability to unblock voting use case
      • Exclude utxo in SnapshotConfirmed outputs #808
      • Addressed a user request by only sending Greetings once #813
    • Reproduced the rollback bug by improving our model-based test suite #784

    What are the goals of next week

    • Update dependencies to match cardano-node master
    • Dirt road fix for rollbacks #784
    • Update Hydraw to maintain state locally
    • Explore adding Hydra support to kupo
    • Put disclaimer texts and closing mainnet compatibility feature #713
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-14-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-04-14T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-04-07-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team published the monthly report for March, created\nseparate links for different versions of documentation, and clarified potential\nsolutions for the Rollbacks bug. The team also discussed Query API requests for\nthe Hydra Voting project and met with community members to answer questions\nabout Hydra. Moving forward, the team plans to integrate the specification into\nthe repository, implement a short-term fix for the Rollbacks issue, and draft a\nQuery API ADR.

    What did the team achieve this week

    • Published monthly reports on website
    • Separate last released and latest versions of docs (e.g. normal released vs. /unstable)
    • Discussed Query API concerns from Hydra Voting project (link)
    • Clarified rollbacks bug and defined possible solutions (short and long term) #784
    • Met with community members to answer questions about Hydra

    What are the goals of next week

    • Finally get the docs integrated into the repository #693
    • Dirt road fix for rollbacks #784
    • Disclaimer text and detail known issues about mainnet compatibility\n#713
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-07-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-04-07T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-04-06-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2313.0 distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages.

    Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to 1.35.6.

    Low level overview

    • Released the new distribution 2313.0
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the epoch_settings table #813
      • Completed the migration/adaptation of the signed-entity-type table #815
      • Completed the migration/adaptation of the certificate table #817
      • Completed the migration/adaptation of the open_message table #827
      • Completed the migration/adaptation of the signer_registration table #828
    • Completed the refactoring of the dependency injection of the aggregator #823
    • Completed the cleanup of the multi-signer of the aggregator #824
    • Completed the upgrade of the Cardano node to 1.35.6 #843
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-06-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-04-06T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-04-05-consensus", + "content_html": "

    High level summary

    This week the consensus team finished the UTxO-HD prototype refactoring. We are\nnow working on improving the DB lock mechanism to improve performance. We also\nintroduced several improvements to the file system abstraction and simulation\nlayer (fs-sim), which culminated in the release of fs-sim-0.1.0.0 and\nfs-api-0.1.0.0 to CHaP.

    On the Genesis front we distributed the updated Genesis design document,\nsoliciting feedback from Networking Team and IOG Researchers. We also opened up\na PR for the adversarial leader schedule QuickCheck generator, which is being\nreviewed.

    On the support front, we got a new Consensus version that can use different\nfundamental VRF crypto primitives for Babbage and Conway eras.

    On the tech debt front we fixed an bug in the followers logic, which was\ndiscovered by our QuickCheck property tests.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-05-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-04-05T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-04-05-node-cli-api", + "content_html": "

    2023-04-05 - 2023-04-19

    High level summary

    • Introduce new governance commands create, answer and verify. This allows us to have onchain polls.
    • Begin making changes in cardano-api to accomodate for CIP-1694
    • Rename TestEnableDevelopmentHardForkEras to ExperimentalHardForksEnabled and TestEnableDevelopmentNetworkProtocols to ExperimentalProtocolsEnabled
    • Various bug fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-05-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-04-05T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-04-05-performance-and-tracing", + "content_html": "
    • Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.
    • New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput.
    • Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged.
    • Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added.
    • Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.

    Benchmarking

    We have adapted our benchmarking cluster to the requirements of the 8.0 release branch. Testing runs of a very early feature branch for 8.0\nhelped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for 8.0 soon.

    Tracing

    Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very\ndetailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing\nthe highest possible throughput of data for forwarding to cardano-tracer.

    Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions\nfor tunneling trace forwarding from a node to cardano-tracer via an easy to manage system service, which will match the production setup of most users.

    Infrastructure & Analysis

    General

    Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance\nanalysis can be fed back and serve as an additional point of comparison.

    Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations.

    Plutus library

    We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles.\nThis will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile.\nIt is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit.

    Nomad backend

    The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is\nbeing improved to minimize any friction for the backend user.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-04-05-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "* Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.", + "date_modified": "2023-04-05T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-03-31-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Started looking into full-node verifier
    • cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties.
    • KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent.
    • Sidechains: Included BLS12-381 & JubJub to halo2curves
    • MuSig2: Final modifs to C version.

    Low level summary

    Mithril

    • Started designing how a full-node verifier would work. Issue comming in the next couple of weeks.

    cardano-base

    • BLS12-381 branch merged PR#266.
    • Testing strategy for BLS bindings:
      • Test-vectors for Groth16, and simple BLS signatures ready.
      • Test-vectors with different library, and created by different engineer.

    KES agent

    • Resolved issues of circular dependency
    • Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same.
    • Opened a PR for raw bearer branch in ouroboros network PR4395
    • Resolved a bug where the agent node did not properly closed connections
    • Updated version of IOSim allowed us to finish a first version of KES agent.

    Sidechains

    • Included BLS12-381 curve to our branch of halo2curves
    • Included JubJub to our branch of halo2curves

    MuSig2

    • Minor reorg PR#42
    • Started including fuzz testing for deserialisation PR#
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-31-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-03-31T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-03-31-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has been working on final drafts of two papers\nfor internal review and planning next steps of analysis of consensus\ndesign refiniments.

    Details

    • Preparing final draft of DeltaQSD algebra paper for internal review

    • Preparing final draft of verifying design refinements for\ndistributed system design for internal review

    • Planning next phase of consensus design refinement analysis

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-31-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-03-31T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-03-31-hydra", + "content_html": "

    High-level summary

    This week, the Hydra continued work on finishing mainnet compatibility. The\nsemi-automated smoke tests and some missing documentation is still preventing\nfrom calling that fully done. They fixed smaller issues and made a step in the\nHead protocol more robust. Besides development, they met with interested people\nfrom the community who want to get started collaborating on communication and\nmarketing materials.

    What did the team achieve this week

    • Groomed and followed-up on GetUTxO user request discussion #797
    • Fixed hydra-node crashes after forks #560
    • Made collectCom more robust and aligned with spec #786
    • Completed configurable API feature #380
    • Met potential contributors about Hydra communication and marketing materials
    • Versioned documentation: we have a unstable bleeding edge version available as well now, seperate from the last released version

    What are the goals of next week

    • Follow-up backlog and roadmap clean-up
    • Complete mainnet compatibility feature #713 (documentation updates)
    • Integrate Hydra specification into repository #693
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-31-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-03-31T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-03-31-ledger", + "content_html": "

    High level summary

    We are still heavily involved in work related to preparing the next release.\nThe other main thing we have worked on is experimentation about how we will\nhandle the DRep stake distribution for CIP-1694 in the conway ledger era.\nLastly, we merged a fix for\nnode-4826\ninto our main branch (there will be a post-mortem shortly).

    Low level summary

    Support for the next release

    • pull-3363 - Fix problems relating to Arbitrary instances used by consensus.
    • pull-3361 - Remove the alonze genesis from the conway genesis.
    • pull-3360 - Translate bad pointer addresses to valid ones in conway.
    • pull-3357 - Fix a bug relating to zero valued ADA in the script context.
    • pull-3356 - Added needed instances (Arbitrary and Serialization) for conway integration.
    • pull-3345 - Added helper functions for the CLI.
    • pull-3342 - Fix a bug with a CLI helper function (having to do with deposit tracking).

    Experiments for DRep stake distribution

    Adding another stake distribution to the ledger state presents some new challenges.\nWe would like to be able to use the current stake distribution at the epoch boundary\nfor DRep voting so that people can always vote themselves in time for any proposal.\nTo this end, we have a prototype of an incremental computation based on the incremental\nlambda calculus, together with tests and benchmarks (which are very promising).\nSee pull-3344.

    Additionally, more of the ledger state is going to need to be rearranged to accomodate\nthe new incremental computations.\nWe have two draft PRs up for possibles solution.\nSee pull-3353 and pull-3364.

    Technical debt and bug fixes

    Documentation changes

    • pull-3354 - Rename \"optional datums\" with \"supplemental datums\" in the alonzo spec.
    • pull-3352 - Add a section to the Shelly errata about the individual deposit tracking.
    • pull-3351 - Further clarify the details regarding the script integrity hash.
    • pull-3350 - Some cleanup of the Babbage spec.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-31-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-03-31T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-03-27-system-test", + "content_html": "

    High level summary

    Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.5 and 1.35.6 releases (and their predecessing release candidates) and ran tests on branch with the UTxO-HD functionality.

    Workstreams

    Framework improvements:

    • improvements in searching for unexpected error messages in log files during test run
    • added support for UTxO-HD testing
    • added support for the new P2P topology format
    • added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)
    • added preliminary support for the Conway era
    • added support for running tests on the Preview testnet

    Full list of closed PRs

    Node:

    • ran tests on node branch with the UTxO-HD functionality
    • tested the 1.35.5 release
    • tested the 1.35.6 release

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-27-system-test", + "title": "System Test Team Update", + "summary": "High level summary", + "date_modified": "2023-03-27T00:00:00.000Z", + "author": { + "name": "Martin Kourim", + "url": "https://github.com/mkoura" + }, + "tags": [ + "system-test" + ] + }, + { + "id": "2023-03-24-hydra", + "content_html": "

    High-level summary

    This week, the Hydra had a team workshop and conducted the monthly review\nmeeting for March. They demonstrated a Hydra Head on mainnet, which was running\nthe hydraw demo application. While this marks an important milestone, they also\nemphasized that more features are still to be added as needed for applications\nto run on Hydra. Besides this, the roadmap is getting cleaned up to encourage\ndiscussions and provide more space for user requests.

    What did the team achieve this week

    • Monthly review meeting slides/recording, full report of March next week
      • Opened a head on mainnet with hydraw demonstration
      • Hydra pay updates
    • Team workshop in Austria
      • Hydra presentation at the Cardano Foundation in Zurich
      • In-person grooming session, marked many items as candidates to be rather :idea: dicussions
      • Improved head protocol #786 and investigated a potential bug in rollback handling #784
      • Team building and retrospective

    What are the goals of next week

    • Follow-up on backlog and roadmap clean-up
    • Complete mainnet compatibility feature (documentation updates)
    • Make API more configurable #380
    • Integrate Hydra specification into repository #693
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-24-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-03-24T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-03-23-db-sync", + "content_html": "

    High level summary

    The DBSync team worked in performance enhancements issues, on providing new db-sync options and on\ntechnical debt and bug fixing. The DBSync team also on boarded a new member.

    Low level summary

    • Worked on an issue which causes ada_pots tables to include the values related not only to an\nepoch, but also the first epoch of the last epoch.\n#1367
    • Fixed an issue where the epoch table didn't rollback and caused wrong values\n#1370
    • Fixed an issue were users with disable-ledger option had to provide the state dir option, even\nthough it was never used. Also refactored the no ledger part of the codebase.\n#1378
    • Improved the perforance by using the cache more. Also provided many new options which enables or\ndisables parts of db-sync. In addition a new --turbo mode is enables which allows db-sync to sync\nmainnet in hours.\n#1379
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-23-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-03-23T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-03-23-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2310.0 distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images.

    Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano mainnet and they have fixed some bugs.

    Low level overview

    • Completed the epic that implements eras behavior switch #707:
      • Completed handling the API version switch at era transition #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed on the migration/adaptation of the stake_pool table #787
      • Worked on the migration/adaptation of the epoch_settings table #813
      • Worked on the migration/adaptation of the signed-entity-type table #815
      • Completed the creation of a stake distribution service #799
    • Completed the testing of Mithril with Cardano mainnet network #777
    • Completed qualifying the computation of the stake distribution #810
    • Completed the testing of the Docker client in the Mithril Client multi-platform test workflow #794
    • Worked on bugs and optimizations:
      • Fixed a bug that made computation of the stake distribution occur multiple times during an epoch #804
      • Fixed a bug that created deadlocks on the SQLite connection #807
      • Optimized the error message and the behavior of the signer node when KES keys have expired #820
      • Upgraded the infrastructure of the testing-preview and pre-release-preview networks #801
      • Re-genesis of the testing-preview network #803
      • Re-genesis of the pre-release-preview network #818
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-23-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-03-23T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-03-22-consensus", + "content_html": "

    High level summary

    This week the consensus team continued working on the refactoring of the UTxO HD\nprototype, and design and testing of Genesis. We also extracted the fs-sim\npackage, which provides a file-system abstraction layer that can be used for\ntesting and simulation. This makes the Consensus code base smaller, while\nproviding a package that the community can reuse and contribute to. We also\nfixed a failing property test related to iterators. We are also working on\nmempool and VRF improvements.

    Low-level details

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-22-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-03-22T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-03-22-node-cli-api", + "content_html": "

    2023-03-22 - 2023-04-05

    High level summary

    • Added new cardano-cli ping command which allows users to ping remote cardano-nodes.
    • The transaction build command now can automatically balance multiassets
    • New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-22-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-03-22T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-03-22-performance-and-tracing", + "content_html": "
    • Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.
    • New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users.
    • Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery.
    • Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks.
    • Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing.
    • Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.

    Performance

    New tracing

    The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe\na slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use.

    GHC RTS parametrization

    We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies\non different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use.

    Open Sourcing

    Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases.

    Tracing

    For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well\nas a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points\nfor users of the new system, depending on their wants and needs.

    Infrastructure & Analysis

    General

    Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will\nincrease confidence in specific metrics.

    Nomad backend

    We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis\nis patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-22-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "* Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.", + "date_modified": "2023-03-22T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-03-21-network", + "content_html": "

    High level summary

    In the last spring we released cardano-node-1.35.6 with dynamic P2P\nfunctionality.

    We received reports from some SPOs who encountered problems with their non\nP2P block producing nodes not being able to connect to their P2P relay. Karl\nKnutsson (from Cardano Foundation) reproduced this issue between two nodes (a\nnon P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed\nit and found a bug in the legacy non p2p code. The bug is only possible to\ntrigger with a P2P node which is binding its outbound connection port to\na fixed IP address and port (default in p2p). A possible solution was found.\nFor more information see #4465.

    We released cardano-ping-0.1.0.0 package to CHaP. cardano-ping is no\nlonger available as a standalone binary, but instead it will become part of\ncardano-cli (see #4664)

    We are testing cardano-node with peer sharing functionality (#4019).

    We are working on eclipse evasion. We added new class of peers: big ledger\npeers to the outbound governor, implemented tests and fixed found issues\n(#4462). We also made the information if a given peer plays the role of\na big ledger peer to the mini-protocols. This will allow to modify\nmini-protocol applications for such peers. As part of this functionality we\nrefactored some core types in the network code which simplifies exposed API.

    Together with Moritz Angerman we started to update io-sim to ghc-9.6.1 (see\n#73).

    We merged a fix of configuration of accepted connections limit in\ncardano-node (see #4902).

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-21-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2023-03-21T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-03-17-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: RFP finished. Code ready for audit.
    • cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams.
    • KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing.
    • Sidechains: Preparing proving system to use the curves needed for main-net PoC.

    Low level summary

    Mithril

    • Merged PR#783
    • RFP for crypto audit ready.

    cardano-base

    • BLS12-381 branch approved PR#266. Blocker is Windown's CI. Working on it
    • Testing strategy for BLS bindings:
      • Preparing test-vectors for Groth16, and simple BLS signatures
      • Finding community projects to help write their use cases
      • Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)
    • Wrote blogpost on how using the same key for ed25519 and VRF completely breaks the security of both systems

    KES agent

    • Started integration of sockets interface used in consensus
    • Use that for de/ser
    • Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim
    • Results in having to parametrise for IOSim in KES and DSIGN for testing

    Sidechains

    • Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages.
    • Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS.
    • EdDSA over JubJub ready
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-17-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-03-17T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-03-17-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team has continued work on the mainnet compatibility of the\nhydra-node. They added a golden test suite for hydra-plutus scripts, added\nsome detection of hydra-node misconfiguration, established a limit of 100 ADA\nper commit and other smaller tasks to prepare for a mainnet beta release.

    Next week there will be a small team workshop to push for demonstrating a Hydra\nHead on the Cardano mainnet, ideally just in time for the monthly review\nmeeting. See the hydra channels on the IOG Technical Community discord server\nfor details.

    What did the team achieve this week

    • Implement a 100 ADA hard-coded commit limit in the hydra-node\n#763
    • Pay back funds to faucet after smoke-test run\n#773
    • Setup custom github runner for smoke-tests on mainnet\n#775
    • Created golden tests to assure the script hash stays the same between\nchanges #772
    • Removed hardcoded error codes in plutus scripts\n#768
    • Detect misconfiguration of a hydra-node given persistent state\n#767
    • Met with potential users for hydra-pay
    • Prepared hydra workshop

    What are the goals of next week

    • Hydra monthly meeting
    • Open a multi-party head on mainnet
    • Complete mainnet compatibility feature
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-17-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-03-17T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-03-17-ledger", + "content_html": "

    High level summary

    We made further progress on the conway ledger era.\nIn particular, we expanded the ledger API significantly, including lots of governance features.\nWe also made progress on the specification and corresponding work in the Haskell implementation.

    We also continued to integrate the latest ledger packages into cardano node and addressed\ntechnical debt.

    Low level summary

    Expanded ledger API

    The ledger API was significantly expanded to include:

    • a lot of protocol parameter support
    • versioning support (type level ledger eras and protocol versions)
    • auxiliary data support
    • many new lenses
    • support for witnesses
    • support for conway governance

    See pull-3328.

    Conway ledger rules

    We have made progress on the formal ledger specification for the Conway era.\nMoreover, the corresponding Haskell updates were also completed:

    Incremental SPO/DRep stake distribution computation

    We have a working (and correct) proof of concept for how to use the incremental lambda calculus\nto maintain several of the stake distributions incrementally.\nFor the per-SPO distribution, this is a performance improvement.\nFor the (conway) per-DRep distribution, this is will allow those who have delegated their votes\nto a DRep to have time to react to any votes that they disapprove of.\n(Sorry, no code to share just yet, more to come.)

    Technical debt

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-17-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-03-17T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-03-16-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has been working on drafts of two papers\nimproving the deltaQ tutorial, consulting on performance design, and\nthe final version of the Djed paper.

    Details

    • Preparing draft of DeltaQSD algebra paper for ICE 2023

    • Successful outcome of Marlowe consultancy leading to substantial\nimprovement in performance

    • Preparing sections on the communication language and bisimulation\nproofs for draft paper about verifying design refinements for\ndistributed system design

    • Camera ready version of Djed paper under preparation

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-16-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-03-16T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-03-10-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team addressed issues with committing complex UTxOs into a\nHydra Head, prepared the hydra-node to be run on mainnet (soon) and improved\nthe test suite of the hydra-plutus scripts. The specification is constantly\ngetting improved upon reviewer feedback on overleaf - this week the graphical\nnotation was refined to be more transaction-focused.

    What did the team achieve this week

    • Clarified bug of committing UTxOs with reference scripts to a Hydra head #737
    • Prepare usage of hydra-node on mainnet by updating command line options #715
    • Improved our mutation test suite to all expected errors #705
    • Re-opened our persistent hydraw demo head on preprod using version 0.9.0
    • Updated on-chain graphs to be more transaction-focused in the specification

    What are the goals of next week

    • Complete mainnet compatibility feature
    • Prepare the Hydra workshop
    • Address all todo’s in the Hydra specification
    • Unblock the auctions project with commit from script a solution
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-10-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-03-10T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-03-09-mithril", + "content_html": "

    High level overview

    The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano mainnet and computes the stake distribution with the optimized unreleased Cardano CLI command.

    Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup.

    Low level overview

    • Worked on the epic that implements eras behavior switch #707:
      • Completed the deployment of the era behavior switch to the test networks #752
      • Completed the enhancement of datum generation for era markers #786
      • Worked on handling the API version with an era switch #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Worked on the migration/adaptation of the stake_pool table #787
    • Completed the refactoring of errors in the signer and aggregator state machines #665
    • Worked on testing Mithril with a mainnet Cardano network #777
    • Worked on fixing bugs with the Docker client image:
      • Fixed a bug that made the Docker client container crash at startup #769
      • Fixed a bug that prevented the restoration of a snapshot with a Docker client #791
      • Worked on testing the Docker client in the Mithril Client multi-platform test workflow #794
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-09-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-03-09T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-03-08-consensus", + "content_html": "

    High level summary

    The Consensus team continued working on refactoring and improving the UTxO-HD\nprototype, and introducing improvements to the lmdb related packages. In\nparticular we identified an opportunity to gain performance by handling locks in\na more optimal way.

    On the Genesis front, we sketched a mitigation for an issue that PNSol and\nResearchers caught. We also came op with a road map for not only testing the\nGenesis prototypes, but also for enriching the tests we already have.

    Regarding technical debt, next to some minor improvements, we created\ncomponent-level micro-benchmarks for adding transactions to the mempool. The\nresults of these benchmarks will be published in the ouroboros-consensus web\npage.

    We also finished moving the Consensus documentation to the ouroboros-consensus\nrepository, released ouroboros-consensus 0.3.0.0, and reduced the time\nGitHub actions take in ouroboros-network.

    Workstreams

    UTxO HD Prototype

    We continued working on refactoring and improving the UTxO-HD prototype. As a\nresult of the first round of sytem-level benchmarks, we identified an\nopportunity to optimise the way we handle locks to improve performance\n(#4393).

    Also, we introduced several improvements to the lmdb related packages:

    Genesis

    We sketched out a mitigation of the issue that PNSol and Researchers caught in\nthe Genesis design.

    We came up with a road map for testing the Genesis prototypes, including early\nmilestones that are applicable to today's master branch, ie tests that are\nuseful before Genesis, and that will be nicely enriched when we do add Genesis.

    We developed the aforementioned tests, specifically a QuickCheck generator for\nthe Honest leader schedule and one as-aggressive-as-possible Adversarial\nleader schedule that together satisfy the Praos properties that the Consensus\ndesign takes as invariants.

    We investigated why the improved ChainDB queueing implementation behaves\ndifferently in the baseline compared to the prototype, and we are close to\nhaving a full picture of how the Consensus components interact during bulk sync.

    Technical debt

    We created component-level micro-benchmarks for adding transactions\nto the mempool. We plan on extending this to more mempool actions and different\ntypes of blocks. We store the benchmark data to make it available\nto the GitHub action that publishes the benchmarks results.

    Other minor improvements include:

    • Removal of Test.Util.Classify in favour of Test.StateMachine.Labelling.
    • Addition of -Wunused-packages to the default ghc-options for Consensus\npackages.

    Fostering collaboration

    We finished moving the Consensus documentation from\nouroboros-network to ouroboros-consensus, in preparation for\nmigrating the code to the latter repository.

    Support

    We released ouroboros-consensus 0.3.0.0.

    We reduced the load in the ouroboros-network GitHub actions,\nthereby reducing the time CI jobs take.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-08-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-03-08T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-03-08-node-cli-api", + "content_html": "

    2023-03-08 - 2023-03-21

    High level summary

    General bug fixes and some refactoring

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-08-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-03-08T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-03-08-performance-and-tracing", + "content_html": "
    • Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.
    • New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.
    • Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.
    • Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.
    • Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.

    Performance

    1.35.6 release

    Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.

    Analysis pipeline

    Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better\ndifferentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance.\nAdditionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking\ndata more easily accessible.

    Open Sourcing

    As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable\nthird parties to make use of that data much more easily, by having reliable guidelines and a working example.

    Tracing

    The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make\nthe switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.

    Infrastructure

    Nomad backend

    The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-08-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "* Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.", + "date_modified": "2023-03-08T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-03-03-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.
    • cardano-base: BLS branch is now ready for review. We are workign forward its merge.
    • KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.
    • Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs

    Low level summary

    Mithril

    • Bumped to version 0.2.0 the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using mlock.
    • Opened PR#783 to update dependency
    • Improved testing for batch opening of mtree, PR#773
    • Improved testing for batch verification of STM sigs PR#774
    • RFP for crypto audit almost ready.

    cardano-base

    • BLS12-381 branch finally ready for review PR#266

    KES agent

    Team off for one week. Other progress:

    • Learning about raw direct-bearer abstraction. An interface for sockets in consensus.
    • use that for direct ser/deser
    • written those syntaxes for ouroboros (coming PR)
    • the kes agent will depend on that. \t

    Sidechains

    Progress with familiarisation of Halo2 library to write circuits.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-03-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-03-03T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-03-03-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one\ntechnical report, improving the deltaQ tutorial, consulting on\nperformance design, and the Djed paper has been accepted for\npublication.

    Details

    • Preparing draft of DeltaQSD algebra paper for FORTE 2023

    • Extending the technical report on which the above paper is based

    • Consulting with an external company on performance engineering of Plutus contracts

    • Planning improvements and collecting material for the deltaQ\ntutorial based on experience with systems that manage risk at\nmultiple timescales

    • Preparing sections on the communication language and idempontency\nlaws for draft paper about verifying design refinements for\ndistributed system design

    • Studying Cardano chain sync protocol

    • \"Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin\nProtocol\" has been accepted for publication at IEEE ICBC 2023

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-03-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-03-03T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-03-03-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team released version\n0.9.0 - a version\nof the hydra-node with fully specified behavior of on-chain scripts and\noff-chain head-logic, decreased costs for opening/closing a Head and scalable\ncontestation deadline semantics. Check out the full release notes for details.

    Furthermore, they published the monthly\nreport of the Hydra project\nand conducted a review meeting with an increasingly wider audience. The team\nplans to extend invitations through the new Hydra\n#announcements discord channel for the next\nmonths, stay tuned!

    What did the team achieve this week

    • Monthly review meeting with report published on website
    • Fixed smoke tests #726
    • Reduced the cost of opening/closing a Head (error codes #748 + head reference script #701)
    • Released version 0.9.0
    • Conducted a first experiment on mainnet compatibility #713
    • New discord category with #announcements channel
    • Received a demo about the Hydra for Voting project
    • Lightning talk on mutation-based testing (to be shared)
    • New themes view in on our roadmap and some rearranging as we align it with high-level objectives
    • Clarified things with researchers, but mostly identified action items for them

    What are the goals of next week

    • Redraw transaction graphs and address TODOs specification
    • Run hydraw with 0.9.0 on preprod
    • Make smoke tests on mainnet possible
    • Groom the explorer item
    • Unblock the auctions projecth with commit from script a solution
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-03-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-03-03T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-03-03-ledger", + "content_html": "

    High level summary

    We have focused the last two weeks on CIP-1694, integration of the last several months of ledger\nwork into consensus and node, and testing infrastrutcture that we will use in the conway ledger era.

    Low level summary

    Conway rules

    We made a major update to the conway era so that the implementation is now in sync with the spec\nwith respect to the ratification and enactment logic.

    See the notes in pull-3291 for more details.

    Constraint based generators

    This week we hit a major milestone in our efforts to build out better property based testing\nsupport for the main ledger properties.\nThe new constraint based generators can now generate full ledger states with what is probably\nvery close to the real constraints (if anything, it is under constrained).\nNext we will work on generating a transaction in the context of a ledger state, which would allow\nus to actually start using these generators for real tests.

    See pull-3219.

    Preparing a release, now with proper versioning

    After quite some time, we are ready to release a version of ledger that will work with a new\nversion of consensus, using CHaPs.

    See pull-3308.

    Technical debt

    • We cleaned up the redeemer serialization code (to prevent future mistakes). See pull-3269.
    • We added a note to the Alonzo spec, specifying that the transaction inputs are\nlexicographically ordered in the Plutus script context. See pull-3306.
    • We fixed a problem with the address deserialiazation\n(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway).\nSee pull-3307.
    • We fixed a problem with our nix build. See pull-3311.
    • We fixed a problem with our NoThunks tests. See pull-3310.
    • We improved our nightly tests. See pull-3316.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-03-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-03-03T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-03-02-network", + "content_html": "

    High level summary

    In the current sprint the networking team focused on fixing bugs and pushing\nforward implementation of eclipse evasion. We also found a bug in our\nsimulation testing setup (in integration of test node). We also overviewed the\nwork on extending handshake protocol which is delivered by Galois Inc.

    We published ouroboros-network-0.4.0.1 and\nouroboros-network-protocols-0.3.0.0 to CHaP.

    We also fixed a bug in cardano-node which results in not being able to\nconfigure inbound connection limits, see PR #4902.

    Together with Karl Knutsson (CF) we realised an issue in cardano-cli: it's\nvalidation of DNS names, IP address & ports when registering a stake pool\nshould be more strict to protect against common mistakes which we identified on\nthe chain. See issue #4929.

    Detailed work log

    In PR #4385 we fixed two bugs in peer state actions. First one results in\na busy loop if demotion from hot to warm times outs. This busy loop is\neventually exited when mux exits (we reported this in our previous report).\nThis fix made it to 1.35.6 release as well.

    In addition the PR #4385 also fixes another bug which results in hot -> warm\n-> hot demotion / promotion busy loop.

    The PR #4385 also fixed a bug in a node only used in simulation which\nresulted in not using chain-sync or block-fetch mini-protocols. In the\nreview process, we realised that the header-body split in the simulated node\nrequires further work (see PR #4419, which is under review).

    The PR #4385 also extend our generators, which together with the above fix,\ncover the hot -> warm -> hot demotion / promotion busy loop.

    In PR #4419 we introduce a ChainDB for our simulation node, which plays\nsimilar role to ChainDB in the ouroboros-consensus: a persistent (across\nsimulated restarts) store of blocks which does chain selection. This ensures\nthat the simulated node is using block-fetch to download blocks announced by\nchain-sync mini-protocol.

    We also made progress with reviewing PR #4019 - peer sharing.

    We also fixed issue #4370 - a connection manager test failure, see PR #4384.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-03-02-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2023-03-02T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-02-24-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team continue closing many gaps and aligning the\nimplementation with the specification. More over, they have groomed a plan to\nmake Hydra Mainnet compatible. Also, they continue moving forward with the\ninternal auditing and have published some auditing guidelines to receive\ncontributions from the community.

    What did the team achieve this week

    • Completed #452 (what is\nremaining in there)
    • Aligned the Head protocol logic implementation with the specification
    • Completed full minting policy implementation and spec\n#720
    • Clarified message authentication with researchers
    • Groomed what is left to do for Mainnet compatibility\n#713 and drafted a\n0.10.0 version
    • Added a tutorial by @perturbing to the\nwebsite LINK
    • Published auditing guidelines\nLINK
    • Made hydra-node work for macos\n#746 and added support\nfor building on aarch64\n#673
    • Met with a potential customer of Hydra for Payments

    What are the goals of next week

    • Have the monthly review meeting incl. the report
    • Have smoke tests fixed and running regularly
    • Release 0.9.0 with updated scripts
    • Redraw transaction graphs for specification
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-24-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-02-24T00:00:00.000Z", + "author": { + "name": "Franco Testagrossa", + "url": "https://github.com/ffakenz" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-02-23-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2306.0 distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes’ CLI that allows generating and signing an era marker’s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI.

    Low level overview

    • Released the new distribution 2306.0
    • Completed the epic that implements signer versions deployment monitoring #718:
      • Completed the implementation an event producer/consumer via channel #738
      • Completed the creation of a database and its configuration to save the events on the consumer side #740
      • Completed the creation of events and sending them on the channel on the producer side #741
      • Completed the creation of the signer registration event #742
      • Completed the creation a query to extract the node versions stakes distribution #743
    • Worked on the epic that implements eras behavior switch #707:
      • Completed the loading of era reader adapters from config in the signer and the aggregator #732
      • Completed the implementation of an era cli command in the aggregator #755
      • Completed the implementation of a dynamic matrix of cases in CI end to end tests #760
    • Fixed some bugs:
      • Fixed the unsupported unixepoch() function #757
      • Fixed the problem that prevented some signers from signing on the testing-preview network #730
      • Update SQLite version to 3.40 in aggregator infrastructure #765
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-23-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-02-23T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-02-23-performance-and-tracing", + "content_html": "
    • SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.
    • Release benchmarking: we performed a round of benchmarks for the 1.35.6 release.
    • UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup.
    • New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities.
    • Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure.
    • Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.

    Performance

    SECP

    1. For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead.
    2. The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run.
    3. The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking.

    UTxO-HD

    1. After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop.
    2. We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.

    1.35.6 release

    Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health.

    Tracing

    Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible.

    Infrastructure

    Nomad backend

    1. Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients.
    2. Locality assumptions were removed and job monitoring was refactored.
    3. To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster.
    4. We're currently evaluating different options for genesis distribution in said cluster.

    NixOps backend

    The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-23-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "* SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.", + "date_modified": "2023-02-23T00:00:00.000Z", + "author": { + "name": "Michael Karg", + "url": "https://github.com/mgmeier" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-02-22-consensus", + "content_html": "

    High level summary

    During the past two weeks we got the results from the system level benchmarks\nfor UTxO HD. They showed a substantial performance regression, so we spent some\ntime analyzing the results. We found out the frequency at which ledger snapshots\nwere taken was too high, so we requested the benchmarking team a new run with a\nmore realistic snapshotting policy. We continued refactoring and improving the\nprototype, and we released UTxO-HD related packages to CHaP.

    We met with IOG researchers and networking specialists to discuss the Genesis\ndesign, which was well received. We continued working on testing and\nbenchmarking different Genesis prototypes.

    We are also working on solving a test failure related to iterators. This work\nderived in several improvements such as better documentation, a framework for\nwriting unit (and regression) tests, and the possibility of debugging\nQuickCheck counter examples in the REPL.

    Finally, we released ouroboros-consensus 0.2.0.0 and\nouroboros-consensus-cardano 0.3.0.0 to CHaP

    Workstreams

    UTxO HD Prototype

    We got the results of the first system level benchmarks for UTxO HD. They seemed\nto indicate a significant regression in performance. After looking into the\nbenchmark logs we found that the benchmark runs took ledger state snapshots too\noften, due to the default snapshotting policy depending on k, and k being so\nsmall in the benchmark runs. Therefore, the next step is to re-run the\nbenchmarks with a snapshotting policy that more closely resembles the one from\nmainnet.

    At the same time, we continued refactoring and cleaning up the prototype.

    Also, we prepared the anti-diff packages (fingertree-rm, diff-containers,\nsimple-semigroupoids) and the lmdb related packages (cardano-lmdb and\ncardano-lmdb-simple) to CHaP.

    Genesis

    The Genesis design was presented to the IOG researchers and Peter Thompson from\nNSol. It was well received. They pointed out one blindspot, but we think it'll\nbe relatively simple to mitigate.

    In parallel, we continued developing test and benchmarks for the Genesis\nprototypes. I particular we tested and implemented a potential fix for\nincreased ChainDB dequeue timings, which partly\nbehaved as we expected, but still needs further investigation. Also we obtained\nnew benchmarking data for the prototype.

    Technical debt

    Related to #4183, we developed a DSL for specifying\nChainDB unit tests. This will allow us to better understand the\ncounter-examples returned by QuickCheck tests, and to write regression\ntests for them. Also, we added a module to enable\nQuickCheck counter-examples to be run on the REPL, allowing for faster debugging\nfeedback. Also, we improved the documentation related to followers\n(#4372).

    We are also working on a design for optimizing the way we handle blocks from the\nfuture.

    Support

    We released ouroboros-consensus 0.2.0.0 and ouroboros-consensus-cardano\n0.3.0.0 to CHaP. Remember that we decided to split the packages related to\nConsensus into two bundles, one with the core functionality, Cardano-agnostic\ncode, and another bundle with instantiations specific to Cardano.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-22-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-02-22T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-02-22-node-cli-api", + "content_html": "

    2023-02-22 - 2023-03-07

    High level summary

    General bug fixes

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    Documentation

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-22-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-02-22T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-02-21-db-sync", + "content_html": "

    High level summary

    The db-sync team created a new tag 13.1.0.2 which is ready to release.\nWe also investigated and had the first working UTxO-HD integration which is one\nof the potential future risks for db-sync.

    Low level summary

    • Integrated the UTxO-HD feauture branch in kderme/utxo-hd-1. This doesn't\nuse the full on disk storage but keeps things in memory and the plan is to keep\nit this way for the first iteration. The integration still has some performance\nissues which we investigate
    • Created tag 13.1.0.2 which upgrades the dependencies of db-sync
    • Fixed an issue related to errors appearing in SMASH\n#1353
    • Continued with ghc-9.2 integration\n#1339
    • Worked on an new fixing procedure for\n#1348.\nWe try to make these procedures work also on older schema version, without the\nneed to migrate to newer schema, which can be very useful for fixing existing\nsnapshots.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-21-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-02-21T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-02-17-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration.
    • cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: started implementation in rust.

    Low level summary

    Mithril

    • Transmute helpers merged PR#722
    • We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope.
    • We are working in a modification of KES to require caller to allocate the secret key buffer.
    • Proposed a solution for signer registration of Mithril.

    cardano-base

    • Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 proof.
      • Results are promising, with using only 23% of the execution budget to verify a realistic proof.
      • Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril.
    • KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this.
    • Conversion finally merged PR#344.

    KES agent

    • Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation
    • Figuring out how to go from fake file descriptor to write the raw bytes

    MuSig2

    • Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-17-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-02-17T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-02-17-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one\ntechnical report, distributivity properties of deltaQ, and consulting\non performance design with the Marlowe team.

    Details

    • Processing reviews on performance engineering paper and planning\npaper revisions accordingly

    • Investigating distributivity properties of DeltaQ

    • Preparing sections on the thorn calculus and idempotency laws for\ndraft paper about verifying design refinements for distributed\nsystem design

    • Consulting on performance design with Marlowe team

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-17-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-02-17T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-02-17-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team completed work on dealing differently with contests\nduring the contestation period. These will now always push out the deadline and\nhence contestation periods are easier to pick (depending on the network a Head\nruns on). Furthermore, they added an important acceptance test and completed\ninternal refactoring of the protocol logic making future changes easier.

    What did the team achieve this week

    • Push contestation deadline on each contest #716
    • Wrote an acceptance (property) test can always close/fanout when collect is successful
    • Internal refactoring of our HeadLogic
    • Groomed remaining things from #452 into dedicated features

    What are the goals of next week

    • Complete full minting policy #720
    • Release 0.9.0 with updated scripts
    • Plan mainnet milestone and a 0.10.0 version
    • Redraw transaction graphs for specification (upon feedback)
    • Have smoke tests fixed and running regularly
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-17-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-02-17T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-02-17-ledger", + "content_html": "

    High level summary

    This past two weeks saw many months worth of ledger changes integrated with the cardano-base\nand ouroboros-network repositories.\nThe vast majority of the effort involved all the changes to the ledger serialization libraries\n(and the interplay with cardano-base) which now support proper versioning.\nSupporting the conway ledger era, and in particular allowing the ledger state to transition\nto a whole new system of governance, also played a noticeable part in the integration.

    Besides the integration work, the team continues to address technical debt, improve the\ndocumentation, make our testing infrastructure better (such as experimenting with better\nnightly tests), and formally specifying more parts of CIP-1694.

    Lower level summary

    Integration work

    Below is all the integration work completed, which will enable a release to node from\nthe current ledger master. Many thanks to\nAlexey for this colossal undertaking!

    Technical debt

    Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted\nin the CBOR specification. See pull-3241.

    We now have our .cabal files being checked for a consistent formatting given by\ncabal format in our CI. See pull-3286.

    We are still experimenting with better nightly tests for our long running\nproperty based tests. See pull-3276 and pull-3296.

    Small documentation improvements

    The hand proofs of the preservation ADA property have been added back to the\nShelley ledger specification. See pull-3295.

    We have clarified how the script integrity hash is computed in the CDDL description.\nSee pull-3290.

    Specifying CIP-1694

    Our new formal specifications backed by Agda have seen a lot of progress!\nUpgrading to Agda 2.6.3 fixed our main build infrastructure problems,\nand we no longer have to rely on our custom fork. See pull-50.

    Our progress on formally specifying CIP-1694 can be followed here:

    Constraint based testing

    We are still actively working on our new constraint based property testing framework.\nWe have nearly all of the constraints for an entire ledger state\nhooked into generators, and tests that the generators do indeed obey the constraints.\nThe variable count in the constraints is over 100!\nThere is still much work to do on shrinking, making the generators faster,\nand writing actual property tests for the ledger, but the approach still seems viable and\nwe are hopeful that it could replace our trace generators.\nThe WIP can be followed here: pull-3219.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-17-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-02-17T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-02-17-network", + "content_html": "

    High level summary

    Recently QA found a bug in P2P code, which results in busy loops. We added one\nfix to 1.35.6 release, another one will likely be part of next release. The\nfirst one is already included in ouroboros-network-0.3.0.1 release. These\nbugs could only affect nodes which are out of sync and thus should not impose\nrisk on well maintained nodes on mainnet. We also advertise to deploy at most\none of the relays as a P2P node, which shields from possible consequences.

    We recently finished design phase of eclipse evasion and we started\nimplementing it (see issue #3886 for progress).

    Galois finished implementing Handshake extension which will allow to query\nnetwork protocol versions (see pr #4256).

    We also recently released a newer set of network packages to be integrated with\ncardano-node master branch, this includes:

    * monoidal-synchronisation-0.1.0.2
    * cardano-client-0.1.0.2
    * network-mux-0.3.0.0
    * ouroboros-network-api-0.1.0.0
    * ouroboros-network-protocols-0.2.0.0
    * ouroboros-network-testing-0.2.0.1
    * ouroboros-network-mock-0.1.0.0
    * ouroboros-network-framework-0.3.0.0
    * ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
    in `0.3.0.1`)
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-17-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2023-02-17T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2023-02-10-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team closed several gaps to align the Hydra scripts\nimplementation further with the specification. This also resulted in a slight\nimprovement on Hydra script size and costs. They consequently analysed the\nasymptotic complexity of collect and fanout and how they relate. Also plutus-tx\nprofiling toolchain was evaluated and set up for future improvements on Hydra\non-chain performance. In discussions with researchers and internal auditors,\nthey also uncovered next steps on further securing the Head protocl using a\n\"full\" minting policy.

    What did the team achieve this week

    • Closed several gaps to align script implementation with specification #452
      • Allow contest only once #680
      • Optimization through head output at index 0 #700
      • Value is preserved #702 + optimized exact value equality #709
    • Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to #721
    • Fixed our tooling around the Haskell language server
    • Discussed full minting policy with researchers
    • Started grooming “what we need for mainnet” on this idea ticket and milestone

    What are the goals of next week

    • Implement full minting policy
    • All remaining protocol discrepancies are implemented or groomed as individual features
    • Ideally release 0.9.0 with updated scripts
    • Discuss what we need for mainnet (milestone planning)
    • Redraw transaction graphs for specification (upon feedback)
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-10-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-02-10T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-02-09-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2304.1 distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.

    Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version 1.35.5 on their devnet and infrastructure.

    Low level overview

    • Released the new distribution 2304.1
    • Fixed a bug that prevented some signers to sign with 2304.0-prerelease #716
    • Completed the implementation of an EraChecker that checks if an era is active #708
    • Completed the implementation of an EraReader that gathers era activation data #709
    • Completed the implementation of an EraReader adapter with on chain transaction as source #710
    • Completed the relational design of the aggregator store #476
    • Completed adding a new SPO on the testing-preview network #729
    • Completed the upgrade of the Cardano node to 1.35.5 #725
    • Fixed flakiness in the CI #734
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-09-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-02-09T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-02-08-consensus", + "content_html": "

    High level summary

    We continue refactoring the UTxO HD prototype while we wait for the system level\nbenchmarks. We have created a new repository that contains the anti-diff\npackages used in this prototype.

    On the Genesis front, we are preparing another meeting with the researchers to\naudit the implementation design, and we continued working on basic tests and\nsimplifications.

    During the past two weeks we also introduced two new tools. One for dumping CBOR\nencoded blocks to JSON, and another to serve a local immutable DB.

    Workstreams

    UTxO HD Prototype

    We are in the process of refactoring the UTxO HD prototype, while we wait for\nthe system level benchmarks to confirm if the performance of the prototype is\nsatisfactory.

    We also set up a repository for the anti-diff package, which\nrequired us to refactor the code, write documentation, and prepare a release to\nCHaP.

    Genesis

    We worked on basic tests for the Limit on Eagerness property of\nGenesis. We also introduced further robustness and simplifications in the\nGenesis Density governor. Finally, we developed a presentation to engage again\nwith the researchers on our Genesis implementation design.

    Technical debt

    Fostering collaboration

    We are in the process of polishing the ouroboros-consensus\ndocumentation site, which we will use a the entry point for Consensus related\ndocumentation. The first version will not be complete, but we plan on\nsystematically improving it.

    Support

    We added a tool to ouroboros-consensus-cardano-tools which allows\nto dump the Chain DB blocks or any given CBOR encoded blocks as JSON.

    We also added another tool that serves an existing immutable DB via\nBlockFetch and ChainSync. This tool can help in assisting our local benchmarking\nefforts (for instance Genesis' ChainSync jumping prototype).

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-08-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-02-08T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-02-08-node-cli-api", + "content_html": "

    2023-02-08 - 2023-02-21

    High level summary

    More maintenance and resolving raised issues.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-08-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-02-08T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-02-08-performance-and-tracing", + "content_html": "

    High level summary

    1. SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions.
    2. Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks.
    3. New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node.
    4. New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide.
    5. Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live.
    6. Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on.
    7. Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.

    Performance

    We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:

    • we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,
    • after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,
    • finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.

    In addition, we started benchmarks of the 1.35.6 release.

    Tracing

    A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way.

    Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting.

    Infrastructure

    On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders.

    The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment.

    The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-08-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-02-08T00:00:00.000Z", + "author": { + "name": "Serge Kosyrev", + "url": "https://github.com/deepfire" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-02-03-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril.
    • cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.

    Low level summary

    Mithril

    • Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing PR#722
    • We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper.
    • We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.

    cardano-base

    • There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381.
    • The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner.
    • The update VRF PR#341 is finally merged, and we are ready to merge PR#344, which implements conversion functions from the compatible types between Praos and PraosBatchCompat.

    KES agent

    • Use of snockets to send the data directly from the socket to secure memory.
    • We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives
    • Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.

    MuSig2

    The GitHub Action linelint is used to check the files.

    • A new job for linting is added to the file /.github/workflows/ci.yml. The rules are configured in the file /.github/workflows/.linelint.yml. Some files from the configuration of libsecp were failing, so in the rules in .linelint.yml the failing files are denoted to be ignored by the linter.
    • Folders are reorganized. We created a folder to handle the example. This folder includes the examplemusig2.c, a distinct config.h, and helper.c. The example is enhanced by implementing the functions in the helper for the configuration given in config.h. The number of messages is different than the tests. The example is made more generic to run with a loop.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-03-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-02-03T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-02-03-goedel", + "content_html": "

    The team works on applied research and consulting in formal methods\nthat is directly applicable to evidence based engineering in Core Tech\nand beyond.

    High level summary

    This sprint the team has been preparing several papers for peer review\nand knowledge sharing and consulting within IO and the community.

    Details

    • R&D Seminar on experience participating in a member based organisation
    • Full day tutorial on performance engineering presented at HiPEAC\n2023 conference
    • Finished preparing and submitted a paper on performance engineering\nto an ACM workshop
    • Preparing a draft paper for future submission about verifying design\nrefinements for distributed system design
    • Consulting on performance design of other IO projects
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-03-goedel", + "title": "Goedel Team Update", + "summary": "The team works on applied research and consulting in formal methods", + "date_modified": "2023-02-03T00:00:00.000Z", + "author": { + "name": "James Chapman", + "url": "https://github.com/jmchapman" + }, + "tags": [ + "goedel" + ] + }, + { + "id": "2023-02-03-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team completed the Hydra specification with a section about\nrollbacks and updated graphs\n(#448). In a next step,\nthe specification will be made more approachable and an open standard. They\nimproved their hydra-cluster tool to launch a local --devnet sandbox\nenvironment and continued aligning the hydra-plutus scripts with the\nspecification by hardening the checks on close and contest transactions.

    What did the team achieve this week

    • Completed the specification with a section about rollbacks and updated graphs\n#448, with a follow-up on making it more approachable and an open standard.
    • Continued spec review with internal auditor and incorporated changes.
    • Talked to TxPipe about how Demeter and Hydra could work together
    • The hydra-cluster executable can be used to launch a local --devnet sandbox environment.
    • Reproduced the “head being stuck on network outage” bug
      • relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed.
    • Progressed with higher velocity by addressing more and more gaps #677

    What are the goals of next week

    • Upstream our JSON instances to the ledger
    • Close all transaction security related on-chain gaps
    • Ideally release 0.9.0 with updated scripts
    • Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-03-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-02-03T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-02-02-ledger", + "content_html": "

    High level summary

    Much of the work the past two weeks involved integration efforts,\ncleaning up and debugging some serialization issues,\nadding tests, and work on large projects that are still ongoing.\nWe also released a CIP this week that aims to make the ledger\na registered CIP category.

    Lower level summary

    Ledger evolution CIP

    We published a\nCIP\nthat will make the Cardano ledger a registered category of the CIP process.

    Serialization issues

    We had previously thought that we had found a serialization problem with the redeemers,\nbut it turned out to just be particularly confusing code.\nWe have now clarified the issue for the future.

    See pull-3263, pull-3269, and pull-3268.

    Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps.

    See pull-3277.

    New tests

    We added a new property test suite for some of our custom containers.

    See pull-3270.

    Progress on a better cost model serialization situation.

    We are still working our way through issue-2902.\nTowards this end, we are now properly gating the new flexible encoders\nuntil version 9.

    See pull-3274.

    Nightly tests

    We are still experimenting with moving more CI actions to GitHub actions.

    See pull-3276.

    Constraint based generators

    We continue to add to our proof of concept for constraint based generators.\nSee the previous ledger update for more information about this project.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-02-02-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-02-02T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-01-27-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team had a monthly review meeting with their stakeholders,\ncontributors and interested people from the community. The monthly repot for\nJanuary 2023 is a digest\nof the things presented and also includes a summary of the meeting. The Hydra\nspecification was getting discussed and the team is incorporating suggested\nchanges of reviewers. Last but not least, they compute and publish script\ninformation on every PR and also on the\nwebsite\nnow.

    What did the team achieve this week

    • Had the monthly review meeting with a broader audience
    • Published the monthly report for January 2023
    • Reviewed the spec and discussed individual aborts with researchers
    • Compute and publish script information along benchmarks on every PR and website

    What are the goals of next week

    • Add rollback section to Hydra spec, update pictures and publish it as part of repository
    • Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository.
    • Groom & plan actions required for a maintainable Head explorer + break down align gaps feature.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-27-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-01-27T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-01-26-mithril", + "content_html": "

    High level overview

    The Mithril team released a new 2302.0 distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes.

    Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node.

    Low level overview

    • Released the new distribution 2302.0
    • Implemented a backward/forward compatibility mechanism for API messages #688:
      • Implement the mechanism for the signer registration #689
      • Implement the mechanism for the signature registration #693
      • Implement the mechanism for epoch settings #695
      • Implement the mechanism for certificate pending #696
      • Implement the mechanism for certificate #697
      • Implement the mechanism for snapshots list #698
      • Implement the mechanism for snapshot #699
      • Update enforcement of API version with Semver #705
    • Completed the PoC implementation of backward compatibility with protobuf #677
    • Completed the PoC implementation of backward compatibility with avro #678
    • Completed the PoC to Read/Write transaction on chain for Era activations #672
    • Completed the upgrade Cardano devnet to 1.35.4 #523
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-26-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-01-26T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-01-25-consensus", + "content_html": "

    High level summary

    During the past two weeks, the consensus team finished the testing activities\naround the UTxO-HD prototype. This is a very important milestone which will\nenable us to run system-level tests and benchmarks, as well as start refactoring\nand cleaning the prototype. Regarding our Genesis workstream, we elaborated a\nroadmap that gives an indication of the remaining work. We also continued our\nwork on benchmarking chain-sync-jumping. We also continued working on improving\nthe way we handle blocks from the future, and advancing the integration of the\nnew VRF and KES crypto.

    Workstreams

    UTxO HD Prototype

    As the prototype is nearing its completion, it was important to have enough\nconfidence that we will be able to move additional parts of the ledger state\nonto disk. We worked together with the Ledger team to elaborate a\nsketch on how the UTxO-HD design would accommodate the migration of\nadditional data from memory to disk. This gave us enough confidence that the\ncurrent architecture will be extensible in the future.

    On the testing front, we added property-based tests for the UTxO-HD\ntype classes.

    We also enabled disabled components, and addressed several\ntechnical debt issues:

    • Implement splitSized anti-diff split (#4269), and integrate it\ninto consensus (#4273).
    • Renaming of peekVal to peekMDBVal (#7).

    We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We\nfound a race condition in the LMDB backing store, which we fixed.\nAfter the fix we were able to successfully run these benchmarks. The results\nwere published by this pull request.

    We used our db-analyser tool to benchmark the cost of reading keys and\nflushing values to disk. The following plot shows the duration of these disk\noperation in relation to the main ledger operations, where we can see that the\ncost of the former are comparatively low. The spike at the beginning of the\ngraph is when, at the start of the Shelley era, the entire UTxO set is flushed\nto disk.

    \"UTxO-HD

    After months of hard work adding tests for the prototype, we are ready to run\nend-to-end tests on the node, and system level benchmarks. This signals a very\nimportant milestone for the UTxO-HD workstream 🎉.

    Genesis

    We elaborated a high-level decomposition of the remaining\nwork for Genesis. We also continued benchmarking the chain-sync-jumping\nhappy-path.

    Technical debt

    We continued working on improving the way we handle blocks from the future.

    Support

    We completed the mapping of Crypto to HeaderCrypto and body Crypto.\nHeaderCrypto is moved to cardano-protocol-tpraos. We created a draft pull\nrequest to facilitate compiling consensus.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-25-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-01-25T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-01-25-node-cli-api", + "content_html": "

    2023-01-25 - 2023-02-07

    High level summary

    General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the cardano-cli query stake-snapshot command.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-25-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2023-01-25T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2023-01-20-crypto", + "content_html": "

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We explored whether some uses of transmute could be removed, but it resulted in considerable regression.
    • cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision.
    • KES agent: An inconsistency between contra-tracer available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the contra-tracer used by consensus.

    Low level summary

    Mithril

    • We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average PR#675. We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing.
    • We are writing a RFP for the audit of the core library.

    cardano-base

    • A problem with Nix is blocking merge of PR#341
    • Plutus team ran benchmarks of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution.
    • Team is fully digesting the Plonk paper.
    • There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used.

    KES agent

    • A little unforseen delay has been caused by a mismatch in the use of contra-tracer. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are doing the change, but still the CI is not happy.
    • The same was needed for the KES agents prerequisites PR#317.
    • We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-20-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-01-20T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-01-20-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1\nspecification. Of which a first version has been aggregated and is currently\nunder review. They aligned the on-chain scripts of reimbursing funds on abort\nlike defined in the specification, improved the mutation test framework to have\nmore control when testing plutus scripts. The added HeadId in the API and the\nTUI example client make hydra-node easier to use and a first experiment of a\nHydra Head explorer was showing the utility of this - see what Heads exist on\nthe preview network here.

    What did the team achieve this week

    • HeadId to API and display in the TUI #678
    • Experiment of creating a hydra explorer, first result hosted here
    • Improved mutation framework allowing to fail for the right reason #679
    • Correctly reimburse funds in abort (matching the spec) #670
    • Finished a first write-up of the Hydra HeadV1 spec: Read it on overleaf (Communication channels for feedback)

    What are the goals of next week

    • Monthly review meeting with a broader audience
    • Groom & plan actions required for a maintainable Head explorer
    • Break “align gaps” feature into smaller chunks (at least on- /off-chain) and groom it
    • Review the spec & discuss individual aborts with researchers (a bigger open question)
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-20-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-01-20T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-01-20-network", + "content_html": "

    High level summary

    We have been working towards cardano-node-1.35.5 release. QA & benchmarking\nteams gave a green light for the release, and we made decent progress with some\nCI problem which we encountered on the way (PR #4612). We are also working on\npeer sharing, making improvements in our testing infrastructure, reducing\ntechnical debt and making progress towards io-sim-1.0.0.0. Galois is making\nprogress on Handshake improvements.

    Low level summary

    Our diffusion simulation network now includes a mixed network of initiator\nonly and initiator and responder nodes. issue #4222

    We are now reviewing the peer sharing pull request.

    We are also reviewing pull request which introduces handshake query flag. PR #4256

    We fixed a bug in our network simulator. The bug was triggered when a node\ndied when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

    We also refactored Snocket interface and removed the bearer construction from\nits methods. PR #4260

    We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes\nreviewing two PRs: PR #57 and PR #60 as well as writing an announcement\nblog post.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-20-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2023-01-20T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network", + "release" + ] + }, + { + "id": "2023-01-20-sre", + "content_html": "

    High level summary

    The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing\nsupport for cardano-world.

    Lower level summary

    Cicero

    • Fixed various race conditions around transformers.
    • Brought our CI up to date.
    • Migrated to the Nomad exec driver with Nix support for many actions.
    • Moved Nix builds to the Nomad clients for much better cache locality.
    • Ongoing work on vastly improving the action matching and evaluation speed.

    Tullia

    • Made it easier to support cloning from a PR's fork
    • Update to latest std
    • Add workaround for cgroup issue: nomad#12877
    • github preset: add github.ci.remote and (read|get)Repository functions
    • Fix various issues around CUE handling

    Bitte

    • Upgrade to NixOS 22.11
    • Prototype usage of Colmena for deploys instead of deploy-rs
    • Finalized work on Equinix Metal support
    • Prototype better secrets management with ragenix instead of sops-nix
    • Improve CI and bring it up to date

    cardano-world

    • Fixd various OOM issues on preview and preprod
    • Rotated KES keys on preview and preprod
    • Optimize mainnet db-sync to cope with higher load
    • Fix an issue where PostgreSQL would fail after a reboot

    bitte-world

    • Updated to NixOS 22.11

    ci-world

    • Updated to NixOS 22.11
    • Added Equnix cluster
    • Improve caching of Nix builds
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-20-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2023-01-20T00:00:00.000Z", + "author": { + "name": "Michael Fellinger", + "url": "https://github.com/manveru" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2023-01-19-ledger", + "content_html": "

    High level summary

    The ledger team completed some preliminary ground work in preparation for CIP-1694\n(restructuring the ledger state),\nfixed the PDF hosting problem (mostly the formal specs),\nbuilt out more of the new user-friendly ledger API,\nfinished a proof of concept for constraint-based generators for property tests\n(with the hopes of being able to replace our trace generators one day),\nand addressed technical debt.

    Lower level summary

    Restructuring the ledger state

    The existing governance structures will be replace in the conway ledger era,\nas described in CIP-1694.\nIn particular, the ledger rules will be restructured as follows:

       BBODY
    |
    |-------------------------------|
    v v
    TICK LEDGERS
    | |
    |---------| |
    v v v
    RUPD ~NEWEPOCH~ ~LEDGER~
    | |
    |----------| |--------|-------------------|-----------|
    v v v v v
    ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+
    | | |
    |---------|------------| v |
    v v v DELPL v
    SNAP POOLREAP -UPEC- | UTXO
    |--------| |
    v v v
    POOL DELEG ~UTXOS~

    -..- Removed
    +..+ Added
    ~..~ Modified

    Moreover, the ledger state will also be restructured in accordance with the new rules.\nIn the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT.\nWe have also adapted all the data structures in the ledger state.

    See:

    PDF hosting

    We now build all of our PDFs using a GitHub action which is triggered by pushing a tag\nwith a specific form, cardano-ledger-spec-YYYY-MM-DD.\nThe action creates a GitHub release containing the PDFs.\nThe links in the main ledger README now point to the PDFs in the latest release.

    See:

    Powering the new ledger API

    We have now removed all the HasField instances from the protocol parameter data types,\nand replaced them with lenses.\nThis is probably the last major restructuring that the ledger team will do on the code base\nfor the API for a while\n(the Plutus tools team will be working on it next, see here).\nWe also added a new helpful function ensureMinCoinTxOut.

    See:

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks\nwhich span several epochs, mimicking a real network.\nThese tests are, in theory, excellent for checking properties.\nThey are, however, very difficult to maintain and are not as random as we would like\n(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We would like to switch to tests which instead generate a random ledger state representative\nof not just an initial state, generate a single random valid block, and then test our properties.\nThe hope is that these will be much more random and easier to maintain.

    We have finished a proof of concept are encouraged that this approach could work!

    See:

    Technical debt

    • pull-3244 massive CI speedup
    • pull-3249 better types for fees in the protocol parameters
    • pull-3264 move our annotator code to the cardano-ledger-binary package where it belongs
    • pull-3239 move the Wdrls type to the Core module.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-19-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-01-19T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2023-01-14-db-sync", + "content_html": "

    High level summary

    After spending the last months on improving DBSync and releasing 13.1.0.0 the DBSync team focused\nthe last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the\nnew leger core and ghc-9.2.4

    Lower level summary

    • Integrate CHaP\n#1331
    • Integrate new ledger core 0.1.1.1 and ghc-9.2\n#1332
    • Technical debt: Add code formatter fourmolu\n#1334
    • Preparing and tracking Conway and UTxO integration
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-14-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2023-01-14T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2023-01-13-hydra", + "content_html": "

    High-level summary

    Since last weekly update before christmas, the Hydra team worked on the\ntechnical specification, closed gaps in hydra-plutus scripts, made the unique\nheadId available to Hydra clients through the API, allow the hydra-node to\nexplicitly synchronize from genesis (if configured), and fixed smaller log and\nbuild issues reported by new users.

    Besides this, a retrospective blog\npost\nwas published by Matthias Benkort (CF) on Hydra, summarizing our progress made\nin 2022 also an outlook where Hydra is headed for in 2023. Also, the team had\nsome first sessions on the voting project with Catalyst and the CF.

    A full digest monthly digest for December 2022 can be found on the hydra\nwebsite.

    What did the team achieve this week

    • Had some first sessions on the voting project with Catalyst and CF
    • Published retrospective blog\npost\nby Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also\nan outlook where Hydra is headed for in 2023.
    • Worked on the LaTeX spec for HydraHeadV1, not final or published yet - latest\nversion in this repository.
    • Add unique headId to API and hence make it available to clients.
    • Allow hydra-node to explicitly synchronize from genesis using --start-chain-from 0.
    • Closed gaps in hydra-plutus scripts
      • bounded transaction validity (ADR21)
      • enforcing contract continuity via state token in output
    • Fixed JSON for some logs and smaller build issues reported by new users.

    What are the goals of next week

    • Reach out to have hydra-tutorial integrated.
    • Plan the next couple of months.
    • Complete checking reimbursing of commits in head validator.
    • Align plutus scripts to spec and simplify them (identified some simplifications)
    • Improve mutation framework to be sure we fail tests for the right reasons
    • Complete the spec except the open points (<5) and also discuss them with researchers.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-13-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2023-01-13T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2023-01-13-release", + "content_html": "

    Node Reelease Update

    2022-11-02 - 2023-01-13

    Executive Summary

    A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on\nrelease/1.35 branch and does not bump cardano-ledger.

    The team successfully integrated an interim release bump of ledger and consensus into cardano-node master.\nThis work will not be released in a node version, but will be continued by the current dependency bump in progress.

    We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again.

    The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress.

    Completed

    In Progress

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-13-release", + "title": "Node Release Team Update", + "summary": "Node Reelease Update", + "date_modified": "2023-01-13T00:00:00.000Z", + "author": { + "name": "Samuel Leathers", + "url": "https://github.com/disassembler" + }, + "tags": [ + "release" + ] + }, + { + "id": "2023-01-13-system-test", + "content_html": "

    High level summary

    During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the P2P Single\nRelay functionality.

    We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level.

    Workstreams

    Framework improvements:

    • extended the cardano-node-tests with the ability for anybody to fork the repo and run all our System Tests on GitHub Actions
    • added 2 new nightly pipelines - nightly-mixed and nightly-p2p - details here
    • some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;

    === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) ===\n to\n === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===

    Node:

    • ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled
    • started the preparations for testing the next tag - details here

    DB-Sync:

    • some improvements on db-sync sync tests
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-13-system-test", + "title": "System Test Team Update", + "summary": "High level summary", + "date_modified": "2023-01-13T00:00:00.000Z", + "author": { + "name": "Dorin Solomon", + "url": "https://github.com/dorin100" + }, + "tags": [ + "system-test" + ] + }, + { + "id": "2023-01-12-mithril", + "content_html": "

    High level overview

    The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ADR. They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible.

    Finally, they have worked on upgrading the devnet and fixing some flakiness in the end to end tests of the CI.

    Low level overview

    • Implemented the redaction of an ADR for handling graceful updates of the Mithril Network #671
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with protobuf #677
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with avro #678
    • Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction #672
    • Worked on upgrading the Cardano node of the Mithril devnet, as well as fixing flakiness of the CI #523
    • Prepared and tested the new 2302 distribution pre-release 2302.0-prerelease
    • Updated the documentation for SPO to build a signer node in order to better reflect the new release process #681
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-12-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2023-01-12T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2023-01-11-consensus", + "content_html": "

    High level summary

    The consensus team is resuming its activities after the Christmas break. During\nthese weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and\ndiscussing with the Ledger team the changes that might be required for the next\niterations. The pull request that adds the Conway era is waiting for a second\nreview round and we hope to merge it soon. On the technical debt side we are\nlooking into a property-test failure found in the iterators. We are\ninvestigating if this is an error in the model or in the implementation. We also\nimproved the documentation of our testing code.

    Workstreams

    UTxO HD Prototype

    We worked with the Ledger team to start preparing the next versions of UTxO-HD.\nThe Ledger team is concerned that for the remaining maps we might need the full\nledger state on epoch boundaries. Since the main consumer of the ledger rules is\nConsensus, the code that requires access to a full state could be moved from the\nledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take\nplace in such bridge, instead of querying the ledger for the values that are\nrequired in the epoch-transition computations.

    We relocated some UTxO-HD definitions, in preparation for merging\nthe prototype into master.

    We also completed updated local benchmarks comparing the replay time and memory\nconsumption of:

    • the baseline node (f2fc76ef45647275c98634da1718290b976ff364)
    • the UTxO-HD node with the in-memory backend
    • the UTxO-HD node with the LMDB backend

    The following plot shows the results: we can see that the LMDB node barely\nreaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The\nin-memory backend is about 30 minutes faster, but still slower than the baseline\nversion. We are aware of this phenomenon and it is inherent to the problem of\nmaintaining sequences of differences of the last k ledger states that allows\nus to perform rollback and roll-forward. We are in the process of measuring\nsyncing from scratch times.

    We also added StaticEither accessors that helped us to simplify\nthe UTxO-HD prototype.

    New Conway era

    We incorporated the feedback of the pull request, and rebased this\nbranch on top of master. The PR is pending a second review round and we hope\nto merge this soon.

    Technical debt

    We are investigating a property-testing failure involving\niterators. Solving this requires understanding the expected behavior of\niterators in the counterexample found by QuickCheck to determine if the error\nis in the model or in the implementation.

    Fostering collaboration

    We moved the contents of docs/Testing.md closer to the code, so that the\nexplanations about the tests are easier to find in the relevant modules, and the\ndocumentation is easier to keep up to date.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-11-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2023-01-11T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2023-01-11-performance-and-tracing", + "content_html": "

    High level summary

    Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:

    1. SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress.
    2. The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over.
    3. Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks.
    4. New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs.
    5. Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench.
    6. Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.

    Performance

    The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on.

    Tracing

    The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done.

    Infrastructure

    Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components.

    On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters.\nWe now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes.

    We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development.\nOnce this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-11-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2023-01-11T00:00:00.000Z", + "author": { + "name": "Serge Kosyrev", + "url": "https://github.com/deepfire" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2023-01-06-crypto", + "content_html": "

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: The API features (error handling) has been merged.
    • Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI.
    • KES agent: We keep progressing with KES secure forgetting implementation.

    We also started working in the cryptography engineering handbook, which will be a cross team effort.

    Low level summary

    MuSig2

    • Merged the more granular error handling mechanism PR#33

    Mithril

    • Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in Version 0.1.1, which was published in crates.io.
    • Updated new KES format to mithril library PR 674
    • We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync PR 531
    • We keep progressing on reducing the use of transmute in mithril-stm.

    cardano-base

    • Nothing new to report. Still working in merging these PRs. We are only missing nix merge of PR#520 and the updates on VRF will be merged.

    KES agent

    • We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests PR#255.

    Cryptography handbook

    We have made available the (temporary) cryptography handbook https://input-output-hk.github.io/cryptography_spec/, and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-06-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2023-01-06T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2023-01-05-ledger", + "content_html": "

    High level summary

    The ledger team finished up the remaining work for tracking individual depots,\nbuilt out the new Conway era transaction body (in line with CIP-1694),\ngreatly reduce some problematically large calculations on the epoch boundary,\nand addressed technical debt.

    Lower level summary

    Finishing the deposit tracking

    The initial work on the individual deposit tracking project focused only on correctness.\nAs this is a large data structure\n(since its size is linear with respect to the number of registered stake credentials),\nit is very important that we also reduce the memory overhead as much as possible.\nFortunately, we were able to add very little overhead for the deposits by using existing\nefficient data structures. The extra tracking now only incurs one word (8 bytes)\nper registered stake credential.

    See:

    New Conway era transaction

    We implemented the Conway era transaction body, which is in line with CIP-1694.\nNote that the Conway era implements, losing speaking, the parts of CIP-1694 that are not\nrelated to the liquid democracy (the \"DReps\").\nThe new transaction body adds the new governance actions and votes,\nwhile also deprecating the old governance structures\n(i.e. the old protocol parameter updates and MIR certificates).

    We also now have the wire specification (CDDL file) and serialization code in place.\nThe wire specification is still subject to change while we work on the Conway era,\nbut it is now usable and has proper testing support\n(so that, for example, the serialization round-trips, etc).

    See:

    Optimizing the TICKF transition

    Every since the release of the Shelley era, we have been working to reduce the computational load\nplaced on the node by the ledger at the epoch boundary.\nWhile still not perfect, we believe that we have removed one of the final problematically long\nepoch boundary computations that exacerbate situations like\nthis.\nIn particular, the problem involved the way in which the consensus layer obtains a view of the\nledger for the purposes of checking the leadership schedule in a new epoch.\nWe implemented a stopgap measure which now only incurs a single multi-second cost once per epoch\ninstead of potentially several multi-second costs while the networks waits for the first block\nof a new epoch to be minted.

    See:

    Technical debt

    We closed the year out with a lot of reduction to the technical debt!

    Improved ledger event

    • pull-3212 - The ledger events are not guaranteed to appear in any given order within a block.\nFor this reason, motivated by the use case in db-sync, the TotalDeposits event now\nincludes a transaction ID and emits the change in deposits instead of the value.

    Improved type saftey

    • pull-3208 - We replaced NominalDiffTime with a newtype wrapper. The problem was that our CBOR\nencoders and decoders were using the wrong level of precision, having to due with with\nthe Shelley genesis file. We removed the potential problem with a newtype wrapper.
    • pull-3167 - We now use a GADT to ensure consistency of the Plutus language in the types\nfor TransactionScriptFailure and PlutusDebug.

    Code/Module organization

    • pull-3175 - The Allegra and Mary eras had an unusual relationship in our codebase,\ndue to the uncertainly of release dates while we were implementing them.\nIn particular, they were coupled in way that is different from the rest of the code base.\nWith hindsight on our side, we split the combined shelley-ma Haskell package into two\nseparate ledger era packages, which is now consistent with the rest of the repository\nand module structure.
    • pull-3184 - We created a core test sub-library, cleaning up a lot of our property test\ngenerator code.
    • pull-3210 - We moved the KeyPair type to the test library. Outside of testing,\nthe ledger does not need to deal with signing keys, and since this is a topic that\ndeserves the utmost care, it is best to make it clear that our use of signing keys\nis only for testing.
    • pull-3229 - We split the Cardano.Ledger.Alonzo.Data module, which is more consistent with the rest\nof the codebase.

    Revert pointer address deprecation

    Thanks to one of our excellent internal auditors,\n@jmhrpr,\nwe now have a better plan for deprecating pointer addresses.\nThis meant that we had to revert the previous work to deprecate them.

    See:

    Miscellaneous

    • pull-3205 - We removed deprecated type synonyms.
    • pull-3218 - We cleaned up the address deserialization.
    • pull-3223 - We fixed faulty address deserialization tests.
    • pull-3222 - We switched to a general type family TxOut from concrete ones,\nreducing many constraints.
    • pull-3224 - ShelleyGenesis is now parameterized by crypto instead of by era.
    • pull-3170 - We set the cabal-version to 3.0 in our projects.
    • pull-3172 - We removed the now useless EncodeMint/DecodeMint classes.
    • pull-3225 - We switch from ormolu to\nfourmolu.\nThe reason was to be able to finally have more diff friendly code!
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2023-01-05-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2023-01-05T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-12-28-node-cli-api", + "content_html": "

    2022-12-28 - 2023-01-10

    High level summary

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-28-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2022-12-28T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2022-12-16-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on the website and reduced the cost for commit transactions by ~30% with the help of reference scripts.

    The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.

    What did the team achieve this week

    • Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.
    • Reduce commit transaction costs by ~30% with reference scripts.
    • Prepared an RFP for external audit of the Hydra Head solution.
    • Fixed transaction cost benchmarks for abort tx #631.
    • Recorded decision to use model-based testing (ADR22) and improved Model documentation.
      • Concluding the first increment on Validate coordinated Head protocol #194.
      • Formulated next step / follow-up on testing the Soundness property of our protocol #656.
    • Switched to using nix flakes for development setup and CI build #646.

    What are the goals of next week

    • Push ADR21 & tx validity gap over the finish line (smoke tests missing).
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Close & recap on the year with another monthly report (+ blog post).
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-16-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2022-12-16T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-12-15-mithril", + "content_html": "

    High level overview

    The Mithril team has released the new distribution 2248.1 of their nodes. They have published the first version of the Mithril cryptographic library on crates.io, the Rust community’s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.

    Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities.

    Low level overview

    • Implemented removing verification key and stake from single signatures #619
    • Completed the extraction of the signer registration from the multi-signer #642
    • Completed the extraction of the certificate creation from the multi-signer #638
    • Implemented a workflow to test client binaries (Linux / MacOS / Windows) #601
    • Completed the signature of the artifacts produced by the CI #587
    • Fixed the protocol parameters transition #627
    • Worked on optimizing the snapshot digest computation #510
    • Worked on enforcing the API protocol versions in the client and signer #633
    • Worked on deactivating the non certified signer registration mode #621
    • Worked on the re-genesis of the test networks #651
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-15-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2022-12-15T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2022-12-14-consensus", + "content_html": "

    High level summary

    During the past two weeks, the Consensus team finalized the QSM tests for the\nbacking store and Mempool on the UTxO-HD branch with important discoveries\nregarding parallel QSM testing. We also worked with the Ledger team to envisage\nthe modifications that are required in Ledger and Consensus to accommodate the\nchanges in the crypto VRF and KES. The db-analyser now supports bechmarking\nthe ledger operations, which will allow us to identify, debug, and profile\npotential performance problems. We drafted a document that defines how to manage\nthe versions of Consensus-related packages. The top level documentation of\nouroboros-network now features a description of the consensus components and\nprovides a hyperlinked map to the modules documentation.

    Workstreams

    UTxO HD prototype

    Whereas we had passing sequential state-machine tests for the mempool, the\nparallel case proved to be more challenging than we thought. The operation of\nadding a list of transactions to the mempool is not atomic and, as a result,\nwhen adding a list of transactions, transactions from other processes can be\nadded in between. The mempool implementation handles this correctly, however\nthis required us to redesign the parallel model we had to take\nthe lack of atomicity into account.

    Backing store property tests

    We finished refactoring the backing store property tests. The second review\nround is ongoing.

    LSM tree implementation

    We are working on benchmarking (in terms of time and number of IO operations)\nfetching/looking up data from disk.

    Genesis

    We worked on the design of a mechanism to prevent a DoS attack on our Genesis\ndesign related to rollbacks. This was arguably the biggest outstanding question.

    During the discussions around Genesis, we noticed a design boundary that nicely\ndelineates a fundamental component. We almost have a full Haskell prototype of\nit. It will be very nicely self-contained, perhaps even usable in the ultimate\nimplementation!

    New VRF and KES crypto integration

    We collaborated with the Ledger team on preparing the ledger state and crypto\ntypes to avoid huge allocation on the epoch boundary when changing aspects of\nthe crypto that will only manifest in headers, not in the ledger states.

    Technical debt

    We merged the pull-request that adds a support to db-analyser for\nbenchmarking ledger operations. This will allow us to identify, debug, and\nprofile potential performance problems. The benchmark focus on the main 5 ledger\noperations that are involved in chain syncing, block forging, and block\nvalidation, namely:

    1. Forecast.
    2. Header tick.
    3. Header application.
    4. Block tick.
    5. Block application.

    The following figure shows a plot of the benchmarking results for the first 65\nmillion blocks (approximately) of the Cardano chain. The thin yellow lines under\nthe x-axis show the epoch boundaries, whereas the thick yellow lines correspond\nto the era transitions.

    As we can see in this figure, era and epoch boundaries require more computation\ntime. The ledger team are aware of this problem, and we are working to improve\nthis situation.

    Fostering collaboration

    We drafted a document motivating and defining how Consensus (and\npossibly other core teams) will/should manage our package versions. This\npull-request garnered many great discussions from our team members and other\nteams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et\nal. We want to thank you all for your input, and we found this discussion very\nenlightening!

    We merged the pull request that adds an overview of consensus to\nthe top level\ndocumentation of\nouroboros-network. This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-14-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2022-12-14T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-12-14-db-sync", + "content_html": "

    High level summary

    The DBSync team continued testing release 13.1.0.0. The QA team has reported that no issues have\nbeen found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.

    Lower level summary

    • Release is cherry-picked back to master, which uses the new rollback mechanism which uses\nreverse indexes, same as the release\n#1320\nThis also fixes a bug number of issues on master.
    • Depenencies upgrade and CHaP integration\n#1324
    • AdaPots fix #1323. This\nfixes an issue where the per epoch AdaPots didn't match the epoch boundary, but\nthey also included changes from the first block of the epoch.
    • Deposits Event fix #3212. This pr\nadjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the\nnumber of queries that db-sync does during syncing an make syncing faster.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-14-db-sync", + "title": "DB-sync Team Update", + "summary": "High level summary", + "date_modified": "2022-12-14T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2022-12-14-node-cli-api", + "content_html": "

    2022-12-14 - 2022-12-27

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-14-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2022-12-14T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2022-12-14-performance-and-tracing", + "content_html": "

    High level summary

    1. SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment.
    2. A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery.
    3. The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals.
    4. Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started.
    5. Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.

    Performance

    The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload.

    We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling.

    Tracing

    After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical.

    To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:

    1. We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration.
    2. The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.

    All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further.

    In addition, we're still pursuing our performance-enhancing rework of the new tracing internals.

    Infrastructure

    After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends.

    Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it.\nThis means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis.\nThis will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports.

    A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches.\nPreviously we only had automation for two aspects separately, so we only could either:

    • compare individual runs (used for different node configurations / versions)
    • collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version)\nNaturally, combining these two capabilities was a long-desired feature of our analysis pipeline.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-14-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2022-12-14T00:00:00.000Z", + "author": { + "name": "Serge Kosyrev", + "url": "https://github.com/deepfire" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2022-12-12-network", + "content_html": "

    High level summary

    In last sprint the team focused on preparations for the conference talk at\nOPODIS 2022. We also worked on preparations to publish io-sim and related\npackages on Hackage (PR #57, PR #60).

    We also started reviewing:

    • ouroboros-network
    • cardano-node
    • cardano-ledger\nrepositories for open-source readiness (PR #4128).

    We prepared a PR which changes how node-to-node and node-to-client protocol\nversiones are serialised in cardano-node log (PR #4691).

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-12-network", + "title": "Network Team Update", + "summary": "High level summary", + "date_modified": "2022-12-12T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network", + "release" + ] + }, + { + "id": "2022-12-09-crypto", + "content_html": "

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency.
    • Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack.
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • [Still in progress] We are introducing a more granular error handling mechanism PR#33
    • We merged the API redesig PR#35
    • We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future PR#36

    Mithril

    • We merged the individual signature PR#620
    • We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (kes repo)

    cardano-base

    • Nothing new to report. Still working in merging these PRs.
    • We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a bug in GHC

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Fixed a 'use-after-free' bug in the KES agent.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-09-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2022-12-09T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2022-12-09-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team has worked on completing to \"Validate coordinated head protocol against formal model\", this is a huge step to verify the implementation is secure. They also worked on implementing ADR21 related to bounded tx validity which is now under review. HydraPay project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of issues they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced.

    What did the team achieve this week

    • Document model based testing #194 & #641
    • Got ADR21, reducing gaps between implementation and specification, under review.
    • Complete review on hydra-tutorial.
    • Complete first round of review on HydraPay work #634
    • Meeting with Director of CyberSecurity frio IOG to unblock \"the RFP prepared for the external audit\" #606
    • Remove vasil-dev and testnet from smoke-test because they were not working #630
    • Fix flaky plutus-merkle-tree test #642
    • Refactor NetworkSpec to improve legilibility.
    • Fix benchmark cost for abortTx #631
    • Adapt nix.conf to the recent hydra-ci nix cache migration.

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation.
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Get Cicero (new CI) working.
    • Use reference inputs to reduce the cost of the commitTx.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-09-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2022-12-09T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-12-09-ledger", + "content_html": "

    High level summary

    The Plutus tools team at IOG has started helping the ledger team to build out a user friendly\ncardano-ledger-api package!\nA GitHub project\nwill be filled out in the days ahead,\npeople interested in the API can use it to follow along and join in on the conversations.

    The ledger team has started using\narchitectural decision records\nto leave a record of important decisions that the team makes.\nWe will retroactively go back through past decisions and make ADRs for them.

    The logic to track individual deposits is now nearly in place.\nWe are prioritizing correctness with our first pull request, and will follow up with\nperformance optimizations and general cleanup next.

    Pointer addresses are being deprecated with the Cardano major protocol version 8.\nSee CPS-0002\nfor more context.

    Lower level summary

    Cardano ledger API

    The Plutus tools team has taken our minimal cardano-ledger-api package and started filling it\nout and adding much needed documentation.\nThey have also added doctests!\nIn the days to come, the Plutus tools team will map out a lot more work for the API and record\nit in this\nGitHub project.

    See

    Architectural Decision Records (ADRs)

    We are now providing more context and leaving a record of important decisions that are made\nin the ledger. The first ADR explains the very lightweight process.

    See

    Tracking individual deposits

    See ADR-3\nfor background.\nWe now have the logic in place to track individual deposits, and a host of property tests\nto make sure that the logic is correct.\nThe current implementation uses more memory than it needs to, and we will address that next,\nwith our hope being to only use one word (8 bytes) per registered stake credential.\nThere is a fair amount of other cleanup needed for general maintainability.

    See

    Removing pointer addresses

    Pointer addresses, which have never seen any real use\n(there are something like eleven on mainnet), are being deprecated starting at Cardano major\nversion 9.\nCPS-0002 gives the context.\nWe are disabling them by first preventing transaction outputs containing them\nfrom being serialized by the node at the moment we switch to version 9.\nAt the hard fork after that, we will translate the existing few pointer addresses\nto enterprise addresses.

    See

    Technical debt

    • pull-3162 - Sometimes we have to put safeguards in place for hard forks which may never\nbe exercised. After we have passed the given hardfork, we are able to clean up the code\nand simplify our logic. We removed all of the ones that we are currently easily able to.
    • pull-3165 - We improved the type safety of our code while also discovering and fixing\na serialization bug.
    • pull-3172 - We removed dead code.
    • pull-3175 - The Allegra and the Mary code used to be coupled in a particular way the we grew to\ndislike. We made these two ledger eras now uniform with the rest of our code base.
    • pull-3184 - We organized our property testing code.
    • pull-3200 - The Plutus tools teams fixed an outstanding bug in the translation from the\nledger state to the Plutus script context.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-09-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2022-12-09T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-12-02-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team has worked on cleaning up several things in progress\nafter last week's summit. They have extended their model-based testing (MBT)\napproach with transaction creation & observation\n#410, solved\nAcquirePointTooOld problems of the hydra-node with by changing the wallet\ninitialization #439.\nAlso, the Hydra researchers updated the security proofs of the Coordinated Hydra\nHead, which are bound to be included in the Hydra HeadV1 specification.

    What did the team achieve this week

    • Monthly review & report - will also be published on our website #644
    • Extended the model-based testing (MBT) with transaction creation/observation #410
    • Solve AcquirePointTooOld problems with new wallet initialization #439
    • Fixed our hydraw deployments (EC2 instances)
    • Created & discussed ADR21 within tx validity work
    • Received & discussed security proofs of Coordinated Hydra Head (requires more work)

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation
    • Complete review & integrate the Hydra tutorial
    • Review latest hydra-pay work
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec
    • Get Cicero (new CI) working
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-02-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2022-12-02T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-12-01-db-sync", + "content_html": "

    High level summary

    The DB Sync team prepared a release 13.1.0.0-rc2 which includes many improvements for db-sync,\nit makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces\nmigrations. This release finalises the objectives that were set for db-sync for the previous\n3 months period and part of the syncing speed objective set for the next period\nChangelog

    Lower level summary

    • Branch release/13.1.0.x\nincludes all the improvements related to the release. The release is passing through the testing\nphase and a number of bugs and issues have been fixed, like\n#1312\n#1311.\nAlso many new unit tests have been added.

    • Part of the release branch is cherry-picked back into master, in a way that it respects the new\nrelease and development process, so that it takes into account migrations\nrelease process

    • The DB Sync team has also tagged release 13.0.6 which better supports preview and preprod for\ndocker.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-01-db-sync", + "title": "DB sync Team Update", + "summary": "High level summary", + "date_modified": "2022-12-01T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2022-12-01-mithril", + "content_html": "

    High level overview

    The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes.

    Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer.

    Low level overview

    • Implemented custom Mithril SPOs on testing/pre-release networks #563
    • Deprecated Signer Declarative Pool Id registration mode #585
    • Completed the second stage of the store automatic migration process #600
    • Completed the deployment pipelines to crates.io registry #588
    • Completed automatic generation of nodes/libraries versions manifest in releases notes #599
    • Completed CI/CD handling of PR from forks #597
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #586
    • Worked on signing the artifacts released in the distributions by the CI/CD #587
    • Worked on multi-platforms end to end test #601
    • Worked on the refactorizaton of the aggregator multi-signer engine #398
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-01-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2022-12-01T00:00:00.000Z", + "author": { + "name": "Jean-Philippe Raynaud", + "url": "https://github.com/jpraynaud" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2022-12-01-system-test", + "content_html": "

    High level summary

    During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the P2P Single\nRelay functionality, and also tested some DB-Sync tags.

    Workstreams

    Framework improvements:

    • moved the System Test CLI Pipelines from BuildKite to Github Actions
    • improved the reporting tools to support the rerun of the failled tests and update of the reports
    • added support for Github API in report-aggregator, so reports will be generated from the GitHub nightly jobs from now on
    • added support for mixed topology - P2P, legacy, mixed topologies
    • planned the P2P Single Relay system test activities
    • added support to start regression tests with PV8 + better selection of tests

    DB-Sync:

    • confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)
    • tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-12-01-system-test", + "title": "System Test Team Update", + "summary": "High level summary", + "date_modified": "2022-12-01T00:00:00.000Z", + "author": { + "name": "Dorin Solomon", + "url": "https://github.com/dorin100" + }, + "tags": [ + "system-test" + ] + }, + { + "id": "2022-11-30-consensus", + "content_html": "

    High level summary

    During the past two weeks, the consensus team merged improvements to the monadic\ncursor API that was needed to implement LMDB range reads, which is in turn\nrequired for the implementation of the UTxO HD feature. We added tables to\nseveral tests in for the UTxO HD feature, which increases our confidence in the\ncorrectness of the prototype. The mempool property tests are close to being\ncompleted. Also, we finished the LSM tree tuning algorithm.

    On the Genesis front we started simplifying the BlockFetch logic with\nCSJ-specific workloads in mind.

    We are also documenting the Block Diffusion Pipelining feature, and added a\nhigh-level overview of consensus to the top level documentation of\nouroboros-network.

    Workstreams

    UTxO HD prototype

    We merged the implementation of a monadic cursor API (#1)) which was\nneeded to solve a bug with LMDB range-reads. After this PR was merged, we focused on\nbridging the gap between the lmdb-simple interface and consensus by facilitating\nusing lmdb-simple's cursor API without Serialise constraints (#3).

    We refactored the backing store property tests to use quickcheck-lockstep\n(#4081).

    We added tables to the mock ledger in the UTxO-HD feature branch\n(#4184). Every test that used to run with SimpleBlocks now uses\ntables. This will enable us to exercise the UTxO HD mempool integration by\nleveraging the existing mempool property-tests. The new state-machine\nproperty-tests are still needed for testing the parallel behaviour of the\nmempool.

    Our work on the mempool state-machine tests revealed the need for improvements\nin the quickcheck-state-machine library. Parallel testing assumed that the\nstate machine did not have access to mutable references. However, the mempool\ntests require the use of such mutable references for mocking the ledger\ninterface. As a result, our parallel tests were failing with rather obscure\nmessages. @Jasagredo submitted a pull request (#12) that allows for\nnew mutable references to be created at each run of the state machine.

    Backing store property tests

    LSM tree implementation

    We finished the LSM Tree tuning algorithm. We are currently tidying up the code\nand gathering results (i.e., plots and their interpretation).

    CSJ prototype

    We started simplifying the BlockFetch logic with CSJ-specific workloads in mind.

    New VRF and KES crypto integration

    Started working on supporting new version of StandardCrypto which uses compact\nKES and batched VRF (#4151).

    Technical debt

    We reviewed the existing state of the Block Diffusion Pipelining document. We\nare now working on the \"Implementation\" section (#4020).

    Fostering collaboration

    We cleared up our understanding of the error dynamics of forecasting\n(#4146 and #4174).

    We submitted a pull request that adds an overview of consensus to the top level\ndocumentation of\nouroboros-network (#4197). This overview describes the consensus components and adds a\nhyperlinked map to the modules documentation.

    https://github.com/input-output-hk/ouroboros-network/pull/4197

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-30-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2022-11-30T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-11-30-node-cli-api", + "content_html": "

    2022-11-30 - 2022-12-13

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-30-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2022-11-30T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2022-11-30-performance-and-tracing", + "content_html": "

    High level summary

    1. Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release.
    2. SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench.
    3. The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks.
    4. Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started.
    5. Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.

    Performance

    We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release.

    Tracing

    For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them.\nThe idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time.

    To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics.

    Infrastructure

    Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation.

    In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model.

    The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged.\nWe are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration.

    We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability.

    We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP.

    As usual, a number of smaller workbench, data analysis & reporting improvements have been made.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-30-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2022-11-30T00:00:00.000Z", + "author": { + "name": "Serge Kosyrev", + "url": "https://github.com/deepfire" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2022-11-28-network", + "content_html": "

    Stake-Driven Data Diffusion Release for Relays

    IOG networking team decided to release the Stake-Driven Data Diffusion with\nRobust Optimised Peer Selection also more commonly known as P2P. In the\nlast update, we informed about a performance regression, but it turns out it\nonly affects block producers, and thus we highly advise against running it on\nsuch nodes. Further investigation is required to find the cause of it.

    On IOG's benchmarking cluster we have seen quite a good performance improvement\non block propagation itself. The cluster is running a static topology with\nvalency 6 (each node is connected to 6 other nodes). In which every of the 50\nnodes are block producers. The setup of this network is the same as mainnet.\nWe've seen 40-50% performance improvement on block propagation comparing to the\nsame cluster deployed with the same topology but using non-P2P nodes. We think\nthis performance improvement is caused by using full duplex connections. Quite\nlikely the transaction traffic floating in both directions on the same TCP\nconnection helps to keep the TCP window open. Note that in a cluster of 50\nnodes with valency 6 the probability of having at least one duplex connection\nis more than 50%. We don't expect the same improvement on mainnet because the\nnetwork is much wider and the transaction traffic is not as large.

    Just before the release we squashed two small bugs:

    • issue #4163 - top level integration bug in keep-alive;
    • issue #4177 - a bug in outbound-governor;
    • PR #4165 - a fix cardano-ping support of NodeToNodeV_10.

    Peer Sharing

    We were carrying a review of peer sharing PR.

    DeltaQ

    Neil Davies was invited to give a guest lecture entitled Avoiding System Catastrophes at UCLouvain.

    What have we achieve last sprint

    • issue #4163: we found out that a control message is not passed to the\nkeep-alive mini-protocol, this results in every demotion executing demotion\ntimeout rather than a graceful termination. With the fix the node will no longer log:

      { \"kind\": \"PeerStatusChangeFailure\"
      , \"peerStatusChangeType\": \"WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})\"
      , \"reason\": \"TimeoutError\"
      }
    • issue #4177: we fixed an assertion failure in the outbound-governor; now\nwe don't try demoted peers which are being demoted already.

    • PR #4155: we refactored ouroboros-network packages. There's a top level\nouroboros-consensus-diffusion package which integrates network\n& consensus code. We also introduced:

      • ouroboros-network-api package which contains the API shared between\nnetwork & conensus;
      • ouroboros-network-mock package which contains mock API used for testing\n(e.g. a mock chain & chain producer, etc.)
      • ouroboros-network-protocols package which contains implementation of all\n(but handshake) mini-protocols, exposes a testlib and contains test\nand cddl components.

      This made the dependency tree of network & consensus packages much\ncleaner.

    • PR #4169: we described the usage of release branches in CONTRIBUTING.md\ndoc.

    • PR #4165: we fixed cardano-ping support of NodeToNodeV_10 protocol.

    DeltaQ

    The abstract of the talk:

    An essential step to ensuring that distributed systems are fit for\npurpose.

    Distributed systems have become an integral part of our society and\ndaily lives. We are, both implicitly and explicitly, individually as well as\ncollectively, placing ever more trust in them.

    Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes\nwell beyond notions of functional correctness (i.e. never getting the wrong\nanswer). We need them to deliver the desired outcomes in a timely, robust,\nreliable, resilient fashion, at scale and in a sustainable way (both\neconomically and environmentally).

    This all sounds like a worthy aspiration, but what would be a practical\napproach to capturing and reasoning about these issues? How can we ensure that\nsystems can meet their fit-for-purpose objectives, not just in their design but\nas they are deployed, encounter the imperfect world, are scaled to become\neconomic, and proceed into ongoing maintenance?

    This talk will illustrate how the notions of Outcomes and Quality Attenuation\n(as captured by ‘∆Q’) are being used to both frame the necessary notions and\nprovide a basis for assuring the refinement and reification of such systems,\nfrom initial concept to operational infrastructure.

    You can download the slides from here.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-28-network", + "title": "Network Team Update", + "summary": "Stake-Driven Data Diffusion Release for Relays", + "date_modified": "2022-11-28T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network", + "release" + ] + }, + { + "id": "2022-11-25-crypto", + "content_html": "

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team.
    • Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes
    • cardano-base: The VRF and BLS branchs are still open and in progress
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library PR#31
    • We are introducing a more granular error handling mechanism PR#33
    • We rethought the API and made it more consistent with the underlying secp256k1 library PR#35

    Mithril

    • The mithril crates in general will be published in crates.io, and we adapted the core library's README PR#616
    • We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information PR#620

    cardano-base

    • We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) PR#341
    • SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions PR#344
    • Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus PR#266

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-25-crypto", + "title": "Crypto Team Update", + "summary": "High level summary", + "date_modified": "2022-11-25T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2022-11-25-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a presentation about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas.

    What did the team achieve this week

    What are the goals of next week

    • Monthly report & review meeting
    • Tie up several loose ends / branches.
    • Resolve Tx validity discussions & PRs.
    • Review cicero PR & try it out.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-25-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2022-11-25T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-11-23-ledger", + "content_html": "

    High level summary

    We released CIP-1694,\nour proposal for entering the Voltaire phase.\nPlease come join the discussion, this will be an incredibly exciting transition for\nCardano and we want everyone to participate!

    We now have a sensible way to version all of the serialization schemes used in the ledger.\nThe draft pull request was polished, reviewed, and merged this week.\nThis solves many problems that have vexed us since the beginning of the Shelley ledger era.

    Everyone working on the Cardano node is working together to improve our release process,\nand the ledger team in particular dedicated one engineer to help with these efforts\nfor the next release.

    Lower level summary

    The Conway ledger era

    The current proposal in CIP-1694 encompasses two new ledger eras.\nThe first era will be called Conway, after the English mathematician John Horton Conway.\nThe community facing aspects of the Conway ledger era will be very minimal,\nbut it will pave the way for introducing liquid democracy.\nThe details can be viewed here.\nWe do not yet have a formal specification for the Conway era.\nOur plan is to debut the\nformal ledger model.\nBriefly, the Conway ledger era will:

    • introduce SPO voting for hard forks (in the spirit of the now abandoned CIP-47)
    • provide an on-chain mechanism for rotating the governance keys
    • re-plumb the ledger rules involving governance to be in line with CIP-1694

    Versioned CBOR

    We now have the ability to easily tie our serialization schemes to the Cardano\nmajor protocol version.\nWe still aim to preserve backwards compatibility as much as possible, but we now have a principled\nplan for resolving problems (see CIP-ledger-cbor).\nIn particular, we can now address several long standing issues, such as\nissue-2444, issue-2965, and issue-3003.

    The final (and massive!) pull request which brought us the versioning is pull-3138.

    Deposit tracking

    The draft pull request which was exploring how best to track individual deposits\nis much closer now to being ready to take out of draft (pull-3127).\nFor background on the issue, see issue-3113.\nThis is quite an invasive change which effects many of our tests, which we are now addressing.

    Technical debt

    As always, we keep working on technical debt.\nWe have deduplicated a some things: pull-3129, pull-3162.\nWe have memoized a problematic computation (though more due diligence is needed before we can\nmerge): pull-3141.

    Node release

    We have been helping with the node release efforts. See pull-4608.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-23-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2022-11-23T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-11-18-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team released version 0.8.1, which includes several fixes and a user-wished extension of the persistence introduced by 0.8.0 of replaying server outputs to make clients like the hydra-tui be aware of the latest hydra-node state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from hydra-poc to hydra!

    What did the team achieve this week

    • Implemented replaying of server outputs to address #580
    • Released version 0.8.1 containing this and other fixes Release notes
    • Worked on the bounded tx validity as one of the on-chain script fixes, but couldnt finish it just yet #615
    • Collaborated with the education team on a Hydra tutorial.
    • Discovered and discussed issues with the seen ledger.
    • Renamed the Hydra repository hydra-poc -> hydra

    What are the goals of next week

    • Create and discuss an ADR about handling tx validity correctly.
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: \"Developing Hydra\" on Day 2, Nov 21st, 13:50 CET
    • Have a team workshop / hackathon after the summit:
      • Retrospective
      • Roadmapping session
      • Hack on something complex or useful
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-18-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2022-11-18T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-11-18-mithril", + "content_html": "

    High level overview

    The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks.

    Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer.

    Low level overview

    • Released a new Mithril distribution 2246.1
    • Completed the first stage of the store migrations process #562
    • Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes #565
    • Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage #576
    • Prepared a Daedalus synchronization benchmark video with/without Mithril #606
    • Upgraded the Cardano nodes of the testing Mithril networks to 1.35.4 #594
    • Worked on implementing SPO tests nodes on testing Mithril networks #563
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #588
    • Worked on the refactorizaton of the aggregator multi signer engine #398
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-18-mithril", + "title": "Mithril Team Update", + "summary": "High level overview", + "date_modified": "2022-11-18T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2022-11-16-consensus", + "content_html": "

    High-level summary

    During the past two weeks, the consensus team started documenting the\nimplementation of the UTxO HD feature and continued developing tests for it. As\npart of our work on UTxO HD, we improved the Haskell support for LMDB. We also\nspent time working on the LSM tree prototype, and designed a parameter tuning\nalgorithm for it. Regarding our work on Genesis, our investigation of the\n\"plateaus\" pointed at the TICKF slowdown on era boundaries as culprit. This\nled us to developing a caching strategy that will not only remove the\naforementioned \"plateaus\", but can help alleviating the growing block production\ndelay on epoch switch. We also helped reviewing the block forge credential\nhotswap feature, which is intended for use in the adoption of P2P.

    We also worked on paying technical debt and fostering collaboration. In\nparticular, we improved the io-sim framework, which is crucial for testing and\nsimulating Cardano components. We also removed thunks that appeared on era\ntranslations, and improved our diffusion pipelining feature. We are working on a\npresentation for explaining Praos and Genesis.

    High-level status report

    • Finish the UTxO HD prototype: in progress.
      • We added documentation for this feature.
      • We developed the second version of the mempool tests.
      • We fixed benchmarks that were inflating the speedup we observed in the\nanti-diff implementation of sequences of differences. Speedups are now in the\nrange of [3.33, 4.75], which remain significant.
      • We continued improving Haskell LMDB support.
      • We finished implementing a \"parameter tuning algorithm\" for the LSM tree\nprototype. This enables us to run experiments to check the correctness of\nthe algorithm.
    • Genesis: in progress.
      • Work investigating the \"plateaus\" in the ChainSync jumping prototype\npointed to the TICKF slowdown on era boundaries as culprit.
    • Tech debt:
      • We improved the capabilities of our io-sim library, which is crucial for\ntesting and simulating Cardano components.
      • We removed thunks from epoch translations in the ledger.
      • We added Linux CI support for lmdb-simple.
      • We got pending diffusion pipelining improvements merged.
    • Fostering collaboration:
      • We are working on a explanation of Praos and Genesis protocols.
    • Support:
      • Investigation of CSJ \"plateaus\" led us to developing a caching strategy for\nTICKF that will not only remove these \"plateaus\", but can help alleviating\nthe growing block production delay on epoch switch.
      • We reviewed the block forge credential hotswapping feature which is intended\nfor use in the adoption of P2P.

    Workstreams

    Finish the UTxO HD prototype

    We merged PR #4060, which adds a report documenting the UTxO HD\nfeature, and puts emphasis in explaining how the mempool works in combination\nwith UTxO HD.

    We opened a draft PR with the second iteration of the property tests for the\nmempool (#4076).

    We fixed the Arbitrary instances for keys and values in DiffSeq benchmarks\n(#4143). The problem was that we were testing with mostly small\nvalues, which artificially boosted the performance gains we saw on benhcmarks.\nSpeedups are now in the range of [3.33, 4.75] across the different\nconfigurations.

    Backing store property tests

    We focused on incorporating feedback on the monadic cursor API PR (#1).\nThis required us to make small tweaks to quickcheck-lockstep to test the new\nAPI. We also updated the backing store property tests to use the new version of\nthe monadic cursor API.

    LSM tree implementation

    We worked on the LSM tree prototype. In particular: finished implementing a\n\"parameter tuning algorithm\" that adapts the LSM tree design based on factors\nlike:

    • workload
    • machine specs,
    • and characteristics of the data being stored.

    We are now running experiments to gather results and cross-reference them with\nexisting experimental results from the LSM tree paper to see if the algorithm is\nworking correctly.

    Benchmarking the CSJ prototype

    We focused on investigating the \"plateaus\" in the ChainSync tip, which turned\nout to be due to the TICKF bug which we previously were only aware of in the\ncontext of the long forging times near epoch boundaries. For the most drastic\npatch by @nfrisby to speed up TICKF, full sync is speeding up by 7%.

    The following plot shows that by caching the TICKF the ChainSync tip and the\nVolatileDB tip progress at the same rate.

    The plot below shows the speedup observed by caching the TICKF rule wrt the\nbaseline.

    Technical debt

    After addressing the PR comments, we merged PR #16, which implements\nthe MonadCatch instance for STM. This extends the capability of our io-sim\nlibrary, which is crucial for testing and simulating Cardano components PR #16\nclosed #1461. This new feature was published as version 0.4.0.0\nof io-sim.

    We continued with our work fixing the NoThunk errors required for enabling\nnightly tests, with the help of TVarInvariant checks in strict-stm and\nnothunks libraries. We proposed fixes in cardano-ledger that took care of\nthunks that appeared in era translations (#3143). The fixes will be\nintegrated back into consensus when cardano-ledger approves and publish the\nchanges introduced in #3143.

    We added CI support for lmdb-simple (#2). We currently test the build on\na Linux environment only.

    We got pending diffusion pipelining PRs (#3857, #3860,\n#3856) merged, after rebasing and addressing feedback.

    Fostering collaboration

    @nfrisby finished a visualisation tool and outlined scripts for the Praos and\nGenesis explanation presentations. The idea is to produce a video that gives an\noverview of these protocols.

    Support

    We started working on caching the computation of the TICKF rule\n(#4054), since this was blocking our benchmarking work for\nGenesis. In addition, this issue has the Cardano community quite\nconcerned, so we are hoping the work done in caching the\ncomputation of the TICKF rule can help alleviating the growing block\nproduction delay on epoch switch.

    We reviewed the block forge credential hotswapping PR #3800 from the\nnetworking team, which is intended for use in the adoption of P2P.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-16-consensus", + "title": "Consensus Team Update", + "summary": "High-level summary", + "date_modified": "2022-11-16T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-11-16-node-cli-api", + "content_html": "

    2022-11-16 - 2022-11-29

    High level summary

    Completed

    docs

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-16-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2022-11-16T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2022-11-16-performance-and-tracing", + "content_html": "

    High level summary

    1. P2P performance investigation is ongoing, in support of the networking team.
    2. SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support.
    3. Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing.
    4. On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started.
    5. We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.

    Performance

    We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes.

    Tracing

    We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis.

    Infrastructure

    The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends.

    We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing.

    A number of smaller workbench, data analysis & reporting improvements have been made.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-16-performance-and-tracing", + "title": "Performance & tracing update", + "summary": "High level summary", + "date_modified": "2022-11-16T00:00:00.000Z", + "author": { + "name": "Serge Kosyrev", + "url": "https://github.com/deepfire" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2022-11-11-crypto", + "content_html": "

    High level overview

    The SECP primitives AC has been met, and the test-vectors PR has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool PR has been merged, and we've adapted the KES secure PR to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (PR#). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork.

    Low level overview

    • With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation.
    • We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool.
    • In parallel, we keep progressing on the KES agent
    • VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification.
    • Our libsodium fork now links directly to upstream libsodium.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-11-crypto", + "title": "Crypto Team Update", + "summary": "High level overview", + "date_modified": "2022-11-11T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2022-11-11-hydra", + "content_html": "

    High-level summary

    This week, the Hydra team published together with Obsidian Systems a light paper\non our \"Hydra for Payments\" project (Link). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of hydra-node processes.

    What did the team achieve this week

    • Published Hydra for Payments light paper (Link)
    • Have a draft RFP ready for a first review internally
    • Answered the internal auditors questions
    • Fixed a bug with following the chain when starting with persistence (#599)
    • Minor improvements to logging for better observability (#598, #600)
    • Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (#590)

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Close more gaps #452
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: \"Developing Hydra\" on Day 2, Nov 21st, 13:50 CET
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-11-hydra", + "title": "Hydra Team Update", + "summary": "High-level summary", + "date_modified": "2022-11-11T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-11-11-ledger", + "content_html": "

    High level summary

    I am extremely excited to say that we now have a pull request up which introduces our new versioned\nCBOR serialization. This was an enormous effort, but it will solve a host of problems that we have\nhad since the Shelley phase. It will take time to properly review it, and we will\nneed to put in a lot of effort to integrate it with the downstream components, but this is a huge\nmilestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction\nserialization schemes.

    We also have a draft pull request that reworks how deposits are tracked. Users of the system will\nnot notice any difference, but it is a necessary change needed to prepare the way for\ndecentralizing the governance of Cardano.

    Finally, we continued to address technical debt. In particular, we continued to make progress on\nbringing coherency and consistency to the code base with a common naming convention, and\nimproving some error messages.

    Lower level summary

    • We have a pull request up for our new versioned CBOR serialization.\nWhen we encounter a problem with our deserializers, it can be very difficult to implement a fix.\nIt is difficult because we can only fix such issues during a hard fork, and leading up to the\nhard fork we must maintain two serializations for the same type in order to not cause unintended\nnetwork splitting (the problematic version must be used before the hard fork,\nand the fixed version is used afterwards).\nThis can be especially tricky with the FromCBOR typeclass, since it is not always easy to\nsearch for where all the problematic uses are located.\nThe new versioned CBOR serialization allows us to gracefully handle this transition.\nSee [pull-3138].
    • We proposed a CIP for backwards compatibility of the transaction serialization schemes.\nSee [pull-372].
    • We have draft for the new deposit tracking.\nThis draft is not as memory efficient as the final version will be,\nbut it is a sufficient proof of concept that we can write property tests against, ensuring\nthat we have not changed the semantics.\nWe will optimize after we are sure of the correctness.\nSee [pull-3127].
    • We now provide better support for debugging failed Plutus scripts in an important helper\nfunction, named evaluateTransactionExecutionUnits.\nIn particular, it now returns all the information needed to rerun the script with exactly the\nsame arguments. This feature will end up appearing in the CLI and other tools from the Plutus\ntools team.\nSee [pull-3135].
    • We did a lot more renaming to bring coherency and consistency to the code base.\nSee [pull-3126], [pull-3120], [pull-3118], and [pull-3116].
    • We have added a few things to the ledger repository to make it conform to the\nCardano Engineering Handbook\nSee [pull-3139].
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-11-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2022-11-11T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-11-11-network", + "content_html": "

    High-level summary

    In last sprint we got a performance report of P2P performance testing cluster\n(which consists of 50 nodes). There is a performance regression in the header\nnotification metric. The P2P cluster is constructed with the same\ntopology as the non-p2p reference one this indicates some regression which\nneeds to be further investigated. This poses a risk for releasing P2P.

    We also continued to work on peer sharing: pull #4019.

    We continued working on dynamic block production which is required for P2P\nrelease for BP nodes: pull #3159.

    We simplified the P2P topology format: issue #4559, pull #3888.

    We added a new trace point for asynchronous demotions of local peers with\nWarning severity. This trace is important for SPOs.

    Detail description

    Performance regression

    Below we include a graph which shows the performance regression of the P2P code base vs non P2P.

    On the x axis is time in seconds which measures the delay from the start of\nthe slot to when a header was received. The y axis is the percentile of nodes\nthat received a header. We are currently investigating possible causes of the\nregression.

    New P2P topology form

    The new topology file format is described in this issue #4559.

    Tracing improvements

    • We improved a handshake error reporting, pull #4136
    • We added TraceDemoteLocalAsynchronous rendered as DemoteLocalAsynchronous\nin json format, pull #4127. Such demotions should be investigated by the\npool operator. They can indicate a problem in the deployed system, but also\nthey could indicate a remote problem in arranged connections with other SPOs.

    Open Source Improvements

    We improved documentation of io-sim and typed-protocols for open-source\ncontributors and/or maintenance tasks: pull #22, pull #45, pull #48.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-11-network", + "title": "Network Team Update", + "summary": "High-level summary", + "date_modified": "2022-11-11T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2022-11-04-hydra", + "content_html": "

    High level summary

    This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun preview network, see 0.8.0 release notes. They also completed implementation of ADR18 and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates #195 and alignment of the specification document with auditors.

    What did the team achieve this week

    • Complete and merge ADR18 #579
    • Re-deploy hydra scripts to respun preview network, see 0.8.0 release notes #595
    • Have first gap of #452 in review.
    • Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot.
    • Engineering meeting to discuss hard forks and protocol parameter updates #195
    • Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions.
    • Drafted project scope for an external audit RFP.

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Answer the internal auditors questions
    • Have a draft RFP ready for a first review internally
    • Close some gaps #452
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-04-hydra", + "title": "Hydra Team Update", + "summary": "High level summary", + "date_modified": "2022-11-04T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-11-04-mithril", + "content_html": "

    This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.

    Low level overview

    • We have been moving forward on the implementation of the release process #500:
      • Setup of the new hosted environments for testing-preview, pre-release-preview and release-preprod with their terraform and GitHub environments #542
      • Adapted the CI workflows to work with the new release process #543
      • Publication of an ADR3
      • Publication of a dev blog post about Mithril networks evolution
      • Releasing our first Mithril distribution 2244.0
    • Worked on the API versioning mechanism #565
    • Worked on the implementation of the stores migration process for the signer and aggregator nodes #562
    • Prepared a Mithril devnet video demo #526
    • Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably #484
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-04-mithril", + "title": "Mithril Team Update", + "summary": "This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.", + "date_modified": "2022-11-04T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "mithril" + ] + }, + { + "id": "2022-10-31-open-source", + "content_html": "

    High Level Summary

    • We've been working toward publishing Cardano Backlog, currently its in\nreview by the IOG communication team.
    • We identified a number of libraries which can be published.
    • We setup and enhanced cardano-updates.

    Detailed description

    I am glad to announce that I was given the role of open-source advocate for\ncardano project. In last few weeks we were making steps towards publishing our\nbacklog. It's currently under review by the communication team, although most\nof the issues are already visible across various repositories.

    The open-source initiatives have their own\nproject. It is set up\nto help us track our major open-source activities. Right now there are two\nwork streams:

    We identifies a number of libraries across all the teams which contribute to\nCardano which we would like publish to publish, see the following\nlink. Arnauld Bailly recently published\nquickcheck-dynamic\nlibrary on Hackage. The networking team is slowly progressing towards\npublishing io-sim and related packages, checkout the progress\nhere.

    Thanks to Arnaud Bailly our Cardano Updates website has\na new look & feel! It's using docusaurus.io.

    Christian Taylor carried recently a detailed analysis of our open-source\nrepositories. He collected many interesting metrics, which allows us to see\nwhere we need to improve as an open-source project to make the Cardano project\nand many smaller related libraries which we maintain be more open and available\nfor open-source contributors.

    The graph below shows which documents the 55 most important Cardano\nrepositories are missing the most:\n\"Documentation\nYou can expect we will improve in these metrics in the coming weeks.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-31-open-source", + "title": "Open-Source Team", + "summary": "High Level Summary", + "date_modified": "2022-11-04T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "open-source" + ] + }, + { + "id": "2022-11-03-embedding-quality", + "content_html": "

    High level summary

    We made good progress on most of the Action Items we agreed on Lisbon, like:

    • Cardano System Tests was fully open to public (tools, tests, results)\nSee cardano-node-tests webpage.
    • We defined an user-facing-functionality template that is used with the cardano-cli team
      • this includes acceptance criteria & user stories, and definition of done
    • We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)
    • We started to apply a labelling convention on cardano-node issues that will be used to generate some visual dashboards with some metrics [TBD]
    • Ziyand Liu started an End-to-End Development and Testing Process for Plutus Features
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-03-embedding-quality", + "title": "Embedding Quality Workstream", + "summary": "High level summary", + "date_modified": "2022-11-03T00:00:00.000Z", + "author": { + "name": "Dorin Solomon", + "url": "https://github.com/dorin100" + }, + "tags": [ + "embedding-quality" + ] + }, + { + "id": "2022-10-02-consensus", + "content_html": "

    High-level summary

    During the past two weeks, the consensus team continued its work on testing the\nUTxO HD prototype. We completed the era-transition and backing store tests, and\nthe mempool tests are advancing at a steady pace. Regarding our work in the\nGenesis design, we continued our collaboration with the research and networking\nteams, and we continue investigating strategies for making the chain-sync\njumping prototype faster.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We worked on state-machine tests for the mempool, and spotted potential bugs\nin the implementation. Investigation is ongoing.
      • We have a set of property tests for the backing store. We still need to\nincorporate the improvements to the LMDB cursor API that these tests\nmade possible.
      • We merged the era-transition tests PR.
    • Genesis: on track.
      • Design work around Genesis continues in collaboration with researchers and\nthe networking team.
      • We continued trying to improve the performance of the chain-sync jumping\nprototype. We gained additional insight on which parameters to tweak next.\nIn spite of the baseline still being faster, the current prototype already\nachieves a significant speedup when compared to the naive approach of simply\nrunning full chain-sync with all peers.
    • Tech debt: on track.
      • We clarified a common source of confusion around VRF tie-breaking and\ncross-era chain selection.

    Workstreams

    Finish the UTxO HD prototype

    We continued working on property-tests for the UTxO HD prototype. In particular\nwe merged the era-transition tests\nPR.

    Backing store property tests

    The backing store property tests\nPR has been\nreviewed. The next steps are:

    • Improve error handling and command generation.
    • Add coverage testing to check that we are not failing to cover interesting\ntest cases.

    The monadic cursor API\nwent through its first review round. The API is in a relatively stable state.\nThis PR also unifies the cborg and serialise-based interfaces to LMDB\noperations. The next steps are:

    • Write\nquickcheck-dynamic\nstate-machine tests for this API.
    • Adapt the changes in the serialisation interface in the backing store property\ntests. This will involve adding boilerplate code in consensus to make up for\nthe removal of the cborg-based interface.

    LSM tree implementation

    We worked on the LSM tree\nprototype. In\nparticular, we focused on tuning the LSM tree design to the different workloads\nthat consensus has (eg syncing, normal node operation, etc).

    Benchmarking the CSJ prototype

    Work on improving the chain-sync jumping performance is ongoing. In particular\nwe compared the performance of different jump intervals, which, somewhat\nsurprisingly, do not make a significant difference. In particular, we are seeing\nperiodic \"plateaus\" where the chain-sync tip does not progress, but they are\nmuch longer for the prototype. Our hypothesis is that this seem to be due to a\ncombination of the garbage collector (GC) pauses, and the actual time it takes\nthe non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo\nfragment.

    In the coming weeks we will try to shorten these plateaus via a combination of\ntweaking GC options and less synchronisation in the CSJ governor.

    The following plot shows the performance of the chain-sync jumping prototype\nusing different jumping intervals. It compares the syncing progress by plotting\nthe slots of adopted blocks against time. The baseline is still faster, however\nit is worth noting that the current prototype already achieves a significant\nspeedup when compared to the naive approach of simply running full chain-sync\nwith all peers.

    The second plot shows the syncing progress sliced to a chosen ~5min interval,\nand includes, in addition to the slots of adopted blocks, the slots of the tip\nof the ChainSync fragment. This allows us to see how far ahead of the selected\ntip the CS dynamo is, i.e. how much room we have for BlockFetch not to get\nstalled. It shows periodic behaviour (due to the forecasting limit), and shows\nthat the CS fragment tip is not progressing for significant periods\n(\"plateaus\").

    Technical debt

    We clarified a\ncommon source of confusion around VRF tie-breaking and cross-era chain\nselection. This PR involved correcting potentially misleading names of\nVRF-related functions, and providing context for a particular VRF value is\nused for tie-breaking.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-02-consensus", + "title": "Consensus Team Update", + "summary": "High-level summary", + "date_modified": "2022-11-02T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-11-02-ledger", + "content_html": "

    High level summary

    We have made the decision to use the\nformal ledger repository\nin place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure\nto the model. In particular, we now have a lot of support for axiomatic set theory.\nWhile the next ledger era is still in the design phase, most of the team remains working\non technical debt.\nIn particular, we have moved a lot more code out of the Shelley specific modules and into\na ledger core module, we have finished up our benchmarking around the problematic TICKF\nledger transition (while improving the performance), made conveniences to the development\nenvironment, cleaned up all the recent changes to the cost model, added a lot of documentation,\nfixed some flaky tests, and deleted some dead code.

    Lower level summary

    Axiomatic Set Theory

    The formal ledger model now has support for much of the set theory that we make use of in\nthe formal ledger specifications. See [pull-20].

    Completed Technical Debt

    • We have addressed issues with two of our most problematic and flaky tests.\nSee [pull-3039] and [pull-3093].
    • We have added more documentation and tests to the Twiddler module. This is a module which\nmakes our CBOR serialization round-trip tests much more robust, and will also hopefully\nhelp enforce the mandate for downstream libraries to never re-serialize data that needs\nto be hashed. See [pull-3073] and [pull-3095]\n(we cannot merge 3095 just yet, due to a preference for merging other features).
    • We have finished our long analysis of the problematic TICKF transition.\nWe now have a lot of benchmarks surrounding this code, and have added performance improvements.\nSee [pull-3068] and [issue-3035].
    • We have restored support for\nghcid\nin our repository. This is a tool for developing with Haskell that many of us find greatly\nimproves our productivity by providing us with constant feedback from the type checker.\nSee [pull-3112].
    • After much activity on the cost model, we have done some final clean up of the code.\nSee [pull-3075] and [pull-3101].
    • We moved a lot of the existing user facing documentation regarding native tokens into the\nledger repository, and cleaned it up\n(most of the heavy lifting was done by our amazing technical writers).\nSee [pull-3091].
    • We removed dead code. See [pull-3089].
    • We moved a lot of code from the Shelley specific libraries to the ledger core library.\nSee [pull-3109] and [pull-3110].
    • We've removed more of the awkward legacy template Haskell names.\nSee [pull-3108].
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-02-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2022-11-02T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-11-02-node-cli-api", + "content_html": "

    2022-11-02 - 2022-11-15

    High level summary

    • Documentation improvments
    • Merged community contributions
    • Exposing types from cardano-api requested by the community/other teamss
    • Test output has been improved so diagnosing failures is now easier
    • Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)
    • Refactoring of cardano-testnet making it more useable as a library (ongoing)
    • Release 1.35.4 was merged & released

    Completed

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-02-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2022-11-02T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2022-11-02-release", + "content_html": "

    Node Reelease Update

    2022-10-19 - 2022-11-02

    Executive Summary

    The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset,\na temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8.

    1.35.4 release candidates have been created and are being tested internally and externally.

    Completed

    In Progress

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-02-release", + "title": "Node Release Team Update", + "summary": "Node Reelease Update", + "date_modified": "2022-11-02T00:00:00.000Z", + "author": { + "name": "Samuel Leathers", + "url": "https://github.com/disassembler" + }, + "tags": [ + "release" + ] + }, + { + "id": "2022-11-02-system-test", + "content_html": "

    High level summary

    We have been focused on:

    • Fully opening our test results (on top of the existing tests & tools):
      See cardano-node-tests webpage.
    • Started to test and automate the new functionalities added in the 1.35.4-rc1 node tag
      See test results tracking page.
    • Made some improvements to the automated db-sync sync tests
      See db-sync tests.
    • Multiple cleanups and updates to the cardano-node-tests framework
    • Updated the nightly pipelines for the cardano-node-tests after the Babbage HF
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-02-system-test", + "title": "System Test Team Update", + "summary": "High level summary", + "date_modified": "2022-11-02T00:00:00.000Z", + "author": { + "name": "Dorin Solomon", + "url": "https://github.com/dorin100" + }, + "tags": [ + "system-test" + ] + }, + { + "id": "2022-11-01-db-sync", + "content_html": "

    High level summary

    The DBSync team is preparing a release which introduces schema simplifications, removes indexes,\nunique and foreign keys. It also provides a way to fix older values and migrates without the need to\nresync from genesis.

    Lower level summary

    Schema simplifications

    Indexes, Unique and Foreign keys are removed in order to speedup syncing\n#1295\nThe same pr also introduces a different way to rollback, which doesn't rely on foreign keys and\nindexes.

    Performance

    The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A\nconservative number of these will be included in the next release and the rest can be found in\nperformance view.

    Migrations and resyncing

    The next release will be 13.1.0, it will enable a migration without the need to resync. It will also\nintroduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases\n#1294

    Release

    The release has been mostly cherry-picked from master\n#1294 and its scope can be seen\nrelease view

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-11-01-db-sync", + "title": "DB Sync Team Update", + "summary": "High level summary", + "date_modified": "2022-11-01T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2022-10-28-hydra", + "content_html": "

    High level summary

    This week, the hydra team completed several user experience improvements to the\nhydra-tui and hydra-node, and delivered a first version of persisted head\nstates by publishing release version\n0.8.0.\nBesides this, they met with researchers on topic of the HeadV1 specification and\nkicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation.

    What did the team achieve this week

    • Completed the UX improvements on the hydra-tui
    • Released version 0.8.0, which delivers a first version of persisted head states
    • Met with researchers on the HeadV1 specification
    • Started work on the RFP for our external audit

    What are the goals of next week

    • Complete ADR18 implementation and get it merged
    • Start work on event-sourced persistence #580
    • Have a first plutus script gap closed #452
    • Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-28-hydra", + "title": "Hydra Team Update", + "summary": "High level summary", + "date_modified": "2022-10-28T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-10-28-network", + "content_html": "

    High-level summary

    The team has focused on debuging & fixing bugs for the P2P single relay release, which included

    • diagnosing, fixing and writing tests for a bug in peer-state-actions which\nfortunately hasn't been released;
    • diagnosing & preventing misconfiguration of DNS

    We also focused on developing peer sharing. We also held a session with\nthe scientists on eclipse evasion.

    Detailed description

    P2P Network Stack

    During the past two weeks the team focused on p2p single relay release and peer\nsharing. We found and fixed an important bug recently introduced in one of the\ncomponents of p2p networking stack (fortunately never released). Together with\na fix, we designed a unit test diffusion simulation as well as quickcheck\nproperty test (both could reproduce it). We also changed the code in a way that\nif such a bug is reintroduced in the future, it will be obvious to diagnose.\nFor more see:

    Initial benchmarking run of the P2P code was executed. The results where\nunlike what we see on the mainnet. We found a possible misconfiguration of the\ncluster (caused by 0 TTL on domain names), which could be the direct cause of\nit. We wrote a PR which rules out such misconfiguration. We are awaiting on\nthe next benchmarking results. See more at:

    ouroboros-network#4106

    We also started working on P2P single relay release. The PR\nouroboros-network#4120\nincludes 108 patches cherry-picked from the master branch. We started\nworking toward integration these changes against the release branch of\ncardano-node. Early next week we ought to be able to have an early version\nof cardano-node with non experimental P2P support!

    For more detailed release plan please see P2P - Single\nRelay\nissue.

    Consensus

    We identified and fixed missing error reporting in consensus\ninitialisation phase. See more at\nouroboros-network#4015

    Cardano Node

    We also made changes in cardano-node in order to give better experience for\nnode operators. This includes updating severities of some of the traces as\nwell as implementing new format of the p2p topology file. For more see:

    Peer Sharing

    We continued working on implementation of peer sharing. We have an early\nimplementation which will be reviewed and analysed in next weeks. We started\nworking on cardano-node integration. We need\nPR #4392 to be merged\nbefore such integration will be able to land in cardano-node, although this\nis not blocking us currently. See more at:

    Eclipse Evasion

    We held a session which included Alexander Russel, Sandro Coretti-Drayton and\nNick Frisby from the consensus team. We discussed high lever design of the\neclipse evasion scheme, which is important for the design and implementation of\nouroboros-genesis. We got a positive feedback from the researchers.

    IO-Sim

    In this period we made little progress towards releasing IO-Sim on Hackage.\nA single PR which added\na few missing instances of the STM monad.

    Open Source

    We made sure the CI runs for PRs which comes from forks (which is important to\naccept contributions from 3rd parties).

    Mithril Cardano Integration

    We held initial discussions with Arnaud Bailly about possible path to integrate\nmithril to cardano-node and take advantage of the ouroboros-network\ndiffusion layer.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-28-network", + "title": "Network Team Update", + "summary": "High-level summary", + "date_modified": "2022-10-28T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2022-10-28-performance-and-tracing", + "content_html": "

    High level summary

    On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline.

    On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario.

    Executive summary

    • The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale.
    • The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment.
    • The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-28-performance-and-tracing", + "title": "Performance & Tracing Team Update", + "summary": "High level summary", + "date_modified": "2022-10-28T00:00:00.000Z", + "author": { + "name": "Serge Kosyrev", + "url": "https://github.com/deepfire" + }, + "tags": [ + "performance-tracing" + ] + }, + { + "id": "2022-08-12-sre", + "content_html": "

    High level summary

    The SRE team is heavily working on the Equinix Metal migration, replacing Hydra\nwith Cicero, and a new version of Spongix.

    Lower level summary

    OpenZiti

    • Work is ongoing on our OpenZiti integration into Bitte in [bitte-zt].
    • CI-World deployment of Darwin CI Ziti service in [ci-world-commit-d40f4d].
    • Multiple issues filed, and a lot of discussion with the OpenZiti developers,\nwe're making pretty rapid progress thanks to them.
    • Work on getting Equinix baremetal machines integrated into AWS World Bitte\nclusters utilizing a Ziti ZTNA network overlay to bridge the networking of\nthe two environments and get IAM extension to Equinix machine for Nomad\nclient onboarding.
    • A Nix Flake for most of our OpenZiti dependencies including the Console,\nController, Edge Tunnel, and Router is now at [openziti-bins].
    • The Flake also includes a WiP NixOS modules for these components.
    • Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with\nno issues seen so far
    • Moved the console to traefik routing service (zac.$DOMAIN) and\ncontroller/edge router stay at zt.$DOMAIN, but have registered consul\nservices

    Cicero & Tullia Integrations

    Cicero & Tullia Features

    • Improvements to Tullia task aggregation to make [cardano-addresses] build\ncorrectly.
    • Better tullia CUE lib default for tags [tullia-commit-4df3c5d].
    • Put cache.nixos.org back in cache.iog.io's upstreams. This is now\nconsidered a public cache again, and without it some Cicero evaluations had\nto build huge packages.
    • Started working on a flake-parts module for Tullia.
    • Started working on cutting down Tullia task build time by putting facts in\nJSON files.
    • Fixed running into kernel arg limit by reading tullia's DAG from a file
    • Merged [tullia-pull-9] that fixes several issues related to error reporting.\nand escaping.
    • Added Mac builders in Cicero on CI-World.
    • Started work on Tullia invocation caching.

    Spongix

    • A lot of progress on an SQlite backed version of Spongix, it already supports\nthe full HTTP binary cache protocol but still lacks comprehensive testing and\nsome tuning, as well as recursive lookups.
    • First steps in the implementation of the nix-daemon ssh-ng protocol so\nSpongix can be used via SSH and we can get rid of basic auth.

    Bugs

    • Discovered Cicero bug where Nomad reschedules cause the Github commit status\nto get stuck in pending
    • Discovered Cicero race condition bug around concurrent transactions for\ncodependent actions.
    • Fixed tullia task order bug in [cardano-addresses]
    • Diagnose Cicero action not triggered in [abcirdc]
    • Fixed meta/description of the Tullia package in [tullia-pull-7]
    • Add Vault token loop alerts in [bitte-cells-pull-40]
    • Ongoing investigation on recurring Patroni and nomad-follower issues related\nto token rotation.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-08-12-sre", + "title": "SRE Team Update", + "summary": "High level summary", + "date_modified": "2022-10-28T00:00:00.000Z", + "author": { + "name": "Michael Fellinger", + "url": "https://github.com/manveru" + }, + "tags": [ + "sre" + ] + }, + { + "id": "2022-10-27-crypto", + "content_html": "

    High level overview

    The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to\nmeeting the acceptance criteria in cardano-base,\nwhich lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and\nwe are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution,\nbut also progressing on the implementation.

    Low level overview

    SECP built-ins

    • (missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in PR 313
    • CIP-0049 was addressed in the editors meeting, and PR 250 was merged
    • The unit-tests PR 320 is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.

    KES agent

    • We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them.
    • We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-27-crypto", + "title": "Crypto Team Update", + "summary": "High level overview", + "date_modified": "2022-10-27T00:00:00.000Z", + "author": { + "name": "Iñigo Querejeta Azurmendi", + "url": "https://github.com/iquerejeta" + }, + "tags": [ + "crypto" + ] + }, + { + "id": "2022-10-21-hydra", + "content_html": "

    High level summary

    This week, the hydra team reviewed and addressed several open comments on the\nnew HeadV1 specification, completing a list the of identified gaps between\nspecification and implementation while doing so. In the wake of the recent\ndemonstration of SundaeSwap running their DEX in a Hydra Head, they met with\nthem to capture feature ideas & incorporate their feedback on the roadmap, as\nwell as potential research avenues.

    What did the team achieve this week

    What are the goals of next week

    • Complete the last two items required for a version 0.8.0.
    • Cut the next release, version 0.8.0
    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Have the CI build macos artifacts
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-21-hydra", + "title": "Hydra Team Update", + "summary": "High level summary", + "date_modified": "2022-10-21T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-10-19-node-cli-api", + "content_html": "

    2022-10-19 - 2022-11-01

    High level summary

    This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:

    • Ask the node about the current mempool's capacity and sizes
    • Request the next transaction from the mempool's current list
    • Query if a particular transaction exists in the mempool

    Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric tx_submit_fail_count has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:

    • Documentation improvments
    • Release 1.35.4 was merged & released
    • Exported various types from cardano-api that were requested by community members

    Completed

    cardano-cli

    cardano-api

    cardano-submit-api

    cardano-node

    cardano-testnet

    • None

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-19-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "High level summary", + "date_modified": "2022-10-19T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2022-10-18-consensus", + "content_html": "

    High-level summary

    During the past two weeks, the consensus team worked on adding property test for\ndifferent aspects of the UTxO HD prototype: era transitions, mempool, and\nbacking store. Thanks to these tests we were able to uncover a bug in the\nprototype. On the Genesis front, we benchmarked a different version of the\nChainSync jumping prototype to try to improve its performance, but this did not\nresult in any noticeable speedup.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We focused on increasing test coverage for the UTxO-HD prototype:
        • We started implementing Cadano-eras transition property-tests.
        • We started implementing state-machine property-tests for the mempool.
        • We merged the mempool rewrite.
        • We started working on state-machine tests for the backing store. This\nuncovered a bug in the range-read implementation of the LMDB backing\nstore.
    • Genesis: on track.
      • We benchmarked a version of the Genesis ChainSync Jumping prototype that\nspreads out the ChainSync updates over a longer period of time. This did not\nresult in any noticeable speedup.
      • We investigated the overhead introduced by non-ChainSync components, but no\nconclusions could be drawn from the benchmarks we ran.

    Workstreams

    Finish the UTxO HD prototype

    We focused on increasing test coverage for the UTxO HD prototype. We also merged\nthe mempool\nrewrite.

    Era transition property tests

    We started implementing Cardano era transition property\ntests,\nwhich are needed for making sure that the ledger tables get updated in the\nright way when we move from one era to the next. There are at the moment two\nimportant transitions.

    • Byron to Shelley: where all the UTxO is transferred from in-memory Byron\nstate (which has no tables) to the ledger tables of the Shelley state.
    • Shelley to Allegra: where the AVVM addresses must be deleted.

    We have tests for the Byron to Shelley transitions. We are working on adding\nthe remaining ones.

    Mempool state-machine tests

    We started implementing state-machine property tests for the\nmempool.\nThe mempool is currently tested via pure property tests, and use a ledger\nstate without tables. With the introduction of UTxO HD, testing the concurrent\nbehavior of the mempool became of crucial importance (eg now we have to\nacquire locks to flush the backing store). In addition, we need to test a\nledger state with tables. These needs led to the creation of a new set of\nproperty tests. In particular we aim to run parallel state-machine tests that\nexercise the mempool in a way similar to how the node would make use of it.

    Backing store property tests

    We started working on state-machine tests for the backing\nstore that UTxO\nHD uses. The property tests uncovered errors in the range-reads implementation\nof the LMDB backing store. To facilitate fixing this bug, we made\nchanges to the Haskell\nLMDB bindings.

    Benchmarking the CSJ prototype

    Prompted by previous benchmarks showing significant improvements in sync time by\nusing more capabilities, we implemented a way to spread out the ChainSync\nupdates over a larger period instead of firing them all at the same time. This\ndidn't result in a noticeable speedup.

    We also benchmarked the prototype with CSJ disabled (such that just the dynamo\npeer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule\nout/confirm overhead by non-ChainSync (mainly BlockFetch) related components.\nThis results in era-specific behavior (speed is like the prototype in Byron, but\nlike the baseline in Shelley). This deserves a closer look in the future.

    This diagram shows the respective syncing progress, starting at Genesis and\ncontinuing a good part into Shelley (with the dashed line indicating the\nByron-to-Shelley transition).

    • Red: baseline
    • Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps.
    • Blue: like Green, jumps are spread out.
    • Orange: variant with no jumping, to measure unrelated overhead.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-18-consensus", + "title": "Consensus Team Update", + "summary": "High-level summary", + "date_modified": "2022-10-18T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-10-14-hydra", + "content_html": "

    High level summary

    This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the hydra-node over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks \"past the opening of a Head\". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.

    What did the team achieve this week

    • Last week we thought we were done with ADR18, but were not ...
    • ... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence.
    • Implemented a first version for persistence #187 in response.
    • Enhanced CI to publish test results on our website
    • Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!
    • Pulled static executable feature #200 into scope, implemented it and merged it!
    • Received and read through a project proposal by a vendor (building a Hydra platform).

    What are the goals of next week

    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Cut the next release, version 0.8.0
    • Address open comments on specification document & complete the list of identified gaps between specification and implementation #452
    • Have the CI build macos artifacts
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-14-hydra", + "title": "Hydra Team Update", + "summary": "High level summary", + "date_modified": "2022-10-14T00:00:00.000Z", + "author": { + "name": "Sebastian Nagel", + "url": "https://github.com/ch1bo" + }, + "tags": [ + "hydra" + ] + }, + { + "id": "2022-10-14-ledger", + "content_html": "

    High level summary

    The ledger team is still primarily focused on addressing\ntechnical\ndebt.\nWe now have the infrastructure for versioning our serialization schemes,\nwhich we continue to put into action.\nWe have made first steps towards getting proper support for the\nformal ledger repository\n(in particular, we've added nix builds and\ncontinuous integration support).\nWe are wrapping up an investigation of the performance of a critical\nfunction used by the consensus layer for leader checks.\nFinally, we are improving the packaging and versioning of our code.

    Lower level summary

    Completed Technical Debt

    • Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of\nour code lives in the cardano-ledger-shelley package, though with hindsight we can say that\nmuch of it should live in cardano-ledger-core.\nWe continue to move things to cardano-ledger-core, and have much more to come. [pull-3059]
    • We now have the infrastructure to support versioned serialization schemes.\nThe inability to do this has caused us a lot difficulties,\nsuch as [issue-3003], [issue-2965] and [issue-2444].\nWe are still in the process of switching to the versioned serialization scheme\n(such as [pull-3078]),\nbut the infrastructure was completed in [pull-3063].
    • We now have proper nix and CI support for the formal ledger project. [pull-19]
    • A separate team is helping bring support for\nCHaP\nto all the cardano-node repositories.\nWe have been helping out with this effort.
    • A separate team continues working on upgrading all the\ncardano-node repositories to work with ghc 9.2.4.\nWe have been helping out with this effort.

    In-progress Technical Debt

    We also have several fairly large pull-requests in review\nthat we are working on.

    • In an on-going attempt to build out a more user-friendly API,\nwe continue to remove HasField instances in place of using micro-lenses.\nThe protocol parameters, in particular, are being worked on. [pull-3045]
    • We are also renaming record fields to be consistent across the repository. [pull-3062]
    • We are now cleaning up all the work we did to understand the performance\nof the TICKF transition. We have some improvements to the computatation\nas well. [pull-3068]
    • We are adding more documentation, in particular to our Twiddler functionality. [pull-3073]
    • The formal ledger is adding support for finite set theory. [pull-20]
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-14-ledger", + "title": "Ledger Team Update", + "summary": "High level summary", + "date_modified": "2022-10-14T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-10-05-consensus", + "content_html": "

    High level summary

    During the past two weeks, the consensus team worked on improving the\nperformance of the ChainSync jumping logic, which is needed for Genesis. We also\nrewrote the implementation of the mempool in the UTxO HD prototype which solved\nthe issues that prevented us from running system level benchmarks. Also on the\nUTxO HD front, we have an improved implementation of the sequence-of-differences\n(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for\nthe UTxO HD feature.

    Executive summary

    • With the latest implementation of ChainSync jumping we are closer to the\nbaseline performance. In particular, the prototype seems to benefit from the\nextra concurrency provided by additional capabilities.
    • We rewrote the implementation of the mempool in the UTxO HD prototype. This\nrewrite was required due to performance problems we observed when running the\nworkbench.\nThese performance problems prevented us from running system level benchmarks.\nThe rewrite solved these issues. After the UTxO-HD: mempool\nrewrite PR is\nmerged, we will contact the Benchmarking team so that they run the system\nlevel benchmarks.
    • The implementation of sequences of differences based on anti-diffs was\nintegrated into the UTxO HD prototype. It is pending\nreview and\nwe also need to run replay and syncing benchmarks to confirm that this will\ndeliver a performance improvement, as observed in our micro-benchmarks.
    • The UTxO HD prototype\ninspection\nresulted in a list of\ntests\nneeded for consensus to consider the UTxO HD prototype as fully tested.

    Additional information

    Genesis

    Benchmarking setup: 50MBit/s, 50ms latency

    • Red: baseline
    • Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.

    As ChainSync Jumping involves many concurrent network operations at every jump,\nwe tried to run the node with 6 instead of the default 2 capabilties.

    • Orange: baseline with 6 capabilities
    • Blue: CSJ prototype with 6 capabilities

    This diagram shows the respective syncing progress, starting at Genesis and\ncontinuing a good part into Shelley (with the dashed line indicating the\nByron-to-Shelley transition).

    Further work includes whether we can tune the prototype to better handle few\ncapabilities, or to adapt the default number of capabilities (potentially just\nwhile syncing).

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-05-consensus", + "title": "Consensus Team Update", + "summary": "High level summary", + "date_modified": "2022-10-05T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-10-04-db-sync", + "content_html": "

    DBSync Update

    Fast restarts

    We fixed a long overdue issue in db-sync which caused long delays on restarts\n1266. This has been\none of db-sync main objectives for this period. Restarts are now very fast,\nbecause db-sync deletes almost nothing from the db, it just replays the ledger rules until it\nreaches the tip of the db. The fix also improves reconnection speed, in cases where the node\nrestarts or the connection is temporarily lost. It also speeds up even more in cases where due to a\ndeployment mess up a very old snapshot or no snapshot at all is used.

    Property based testing

    We added stateful property based testing, using quickcheck-state-machine\n1269. These tests use empty or\nalmost empty blocks to test the new behaviour of restarts and rollbacks.

    These tests generate arbitrarily a list of symbolic commands from these:

    RollForward Int
    RollBack BlockNo
    StopDBSync
    StartDBSync
    RestartNode
    AssertBlockNo BlockNo

    The commands are translated into real commands. For example RollForward Int will forge a new block\nthat fits on the current chain. These real commands are executed against db-sync using the mock\nchain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync\nwhich looks like this:

      Model
    { serverTip :: BlockNo
    , dbSyncTip :: BlockNo
    , dbSynsIsOn :: Bool
    , dbSynsHasSynced :: Bool
    }

    Finally a number of postconditions are checked, related to the eventual block number of db-sync.

    Tech Debt

    We handled a number of tech debt in\n1275\nThis improves the code format of db-sync, deletes many queries that were never used and groups the\nothers. This tech debt resolution not only improves the experience of working in db-sync, but can\nfacilitate some of our other objectives, as it makes it very explicit which queries are used\nduring syncing and which indexes are necessary.

    Smash

    We worked on fixing an issue related to fetching pool metadata\n1276.\nThe issue which is described in\n1270

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-04-db-sync", + "title": "DB Sync Team Update", + "summary": "DBSync Update", + "date_modified": "2022-10-04T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2022-10-04-node-cli-api", + "content_html": "

    Node-Api-Cli Update

    2022-10-04 - 2022-10-18

    Executive Summary

    The majority of the team's time was spent between getting 1.34.4 ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to cardano-cli.

    Completed

    cardano-cli

    cardano-api

    cardano-node

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-10-04-node-cli-api", + "title": "Node API & CLI Team Update", + "summary": "Node-Api-Cli Update", + "date_modified": "2022-10-04T00:00:00.000Z", + "author": { + "name": "Jordan Millar", + "url": "https://github.com/Jimbo4350" + }, + "tags": [ + "cli-api" + ] + }, + { + "id": "2022-09-30-ledger", + "content_html": "

    Ledger Update

    We have continued focusing nearly entirely on addressing technical debt.\nA lot of design work has begun for the next ledger era,\nbut we do not yet have anything concrete to share.

    Technical debt issues completed

    • [issue-1676][pull-2992] We have finally removed the ledger dependency on the\ncardano-prelude package. It was barely used in the ledger repository, and it added a dependency\nthat we did not want to maintain. It was a bit difficult to remove, and we had\nto coordinate removing it from cardano-base.\nA lot ended up going into pull-2992, due to the coordination effort, and we ended\nup updating Plutus as well.\nThis means that we've now also made a lot of progress on the problematic cost model serialization\nissues described in issue-2902.\nIn particular, after we resolve issue-3014, we will not have to wait an epoch before\nreleasing a cost model for a new version of Plutus, as we had to do for the Vasil HF.
    • [issue-3046][pull-3055] We moved a module that is now only used in Byron to a Byron package.
    • [issue-3047][pull-3054] We improved the interface to the Value (multi-asset) type.
    • [pull-3044] We debugged and fixed a tricky compilation issue. Certain kinds of field updates\nwere adding approximately 20 minutes to our compile time!
    • [issue-2932][pull-3036] As a part of our ongoing re-organization of the codebase, we\nhave added a Cardano.Ledger.[Era].Core module to each ledger era that has a TxBody class.\nMost classes defined in the era should go in this new module.\nWe also re-export the Cardno.Ledger.Core module and the previous Cardano.Ledger.[Era].Core\nmodules from each era.

    Technical debt in progress

    • [issue-3034][issue-3035][node-issue-4421] We are continuing to write benchmarks to understand exactly where\nall the time is being spent on executing the TICKF transition.\nThe consolidation of the per-stake-credential stake distribution to the per-stake-pool\ndistribution does seem to account for a large amount of time (near a second as written, which we\nhave down to about half a second with some optimizations),\nbut this does not account for everything.\nApplying the reward update may also be a big contributing factor.
    • [pull-3033][pull-3038][pull-3041] A separate team is working on upgrading all the\ncardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort.
    • The nix scripts used to build our new\nformal ledger model\ndo not work consistently for everyone, and we have been working on fixing these issues.
    • [issue-3014] We are still working on adding a versioning scheme to all of the ledger\nserializers.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-09-30-ledger", + "title": "Ledger Team Update", + "summary": "Ledger Update", + "date_modified": "2022-09-30T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-09-27-network", + "content_html": "

    Network Update

    Ouroboros Network

    Ouroboros Consensus

    • Recently we found out that the consensus does not log exceptions thrown during\nintiialisation. This was fixed in\nPR input-output-hk/ouroboros-network#4015\nAs part of this pull request we also changed that all exceptions rethrown by\nthe connection handler thread are wrapped in ExceptionInHandler.

    Some older items, which were not announced

    • We identified and fixed an issue related to socket activation (socket options\nwhere not set for sockets passed through socket activation).\nPR input-output-hk/cardano-node#3979\nThis fix will be released in the next cardano-node release.

    Cardano Node

    • We extended the NixOs service module so that one can modify socketPath,\nruntimeDir, databasePath, traceSocketPathAccept,\ntraceSocketPathConnect and stateDir options.\nPR input-output-hk/cardano-node#4196

    IO-Sim

    We resolved a number of issues before release of io-sim on hackage:

    See PR #24.

    We also improved experience for contributors of io-sim and typed-protocols by adding issue templates:

    Typed Protocols

    Input Endorsers Simulation

    New features include:

    • Histograms of block arrival frequency, for both network (inbound) and CPU\n(block validation). This is interesting to check that we're not overloading\nthe CPU block validation capacity, or network link capacity. Or alternatively\nto observe the behaviour in an overload situation if we set the block\ngeneration rate high enough.

    • Pie chart of utilisation of TCP links. This shows how small a fraction of\nlinks are being used at any one time, and shows that once the system \"warms\nup\" and is operating stably, most block delivery is ballistic.

    • Showing off the new screen layout combinators, that let us put multiple\ncharts, titles etc on screen at once and scale them to whatever screen or\nvideo resolution we like without having to tweak numbers (this example is\nscaled to fit 1080HD video resolution).

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-09-27-network", + "title": "Network Team Update", + "summary": "Network Update", + "date_modified": "2022-09-27T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + }, + { + "id": "2022-09-20-consensus", + "content_html": "
    • We proposed a fix for the performance degradation observed when running\ndistributed multi-node benchmarks in the UTxO HD feature branch. While this\nfixed the problems observed when running local benchmarks, it broke the\nThreadNet tests due to concurrency issues. Therefore, we think it is wise to\nstart redesigning the UTxO HD mempool integration.
    • We did several rounds of code review on the alternative implementation of\ndiff-sequences required by the UTxO HD feature based on the idea of\nanti-diffs. This alternative implementation is close to being merged, and the\nnext step is to integrate this to the UTxO HD branch, so that we can run\nad-hoc replaying and syncing from scratch benchmarks and compare these with\nthe baseline. The micro-benchmarks we elaborated for the alternative\nimplementation show speedups of up to 4x, so we are optimistic about the\nperformance of replaying and syncing from scratch benchmarks, however it is\nimportant to notice that due to the nature of UTxO HD we will still be\nslower than the baseline.
    • The final draft of the Genesis implementation specification is ready for\nreview.
    • We implemented a prototype for the happy path of Genesis' ChainSync Jumping\n(CSJ). The prototype is slower than the baseline, however it is not the latest\nversion of the prototype and the jump interval is very small.
    • Work on integrating Conway has stopped since\npriorities have changed.
    • We started work on benchmarking epoch-boundaries and epoch overhead\npr-4014. To this end, we made use of a modified version of our\ndb-analyser tool. We ran the new benchmarking setup using the Cardano\nmainnet chain, and we can see that block tick and application take\nsubstantially longer at epoch boundaries, although there are a couple of slots\nduring an epoch in which these computations take more than normal. We notified\nthe ledger team about these findings. We will use this modified version of\ndb-analyser to investigate the epoch overhead.

    Workstreams

    UTxO HD

    • Spent quite some time investigating the root cause of the degradation in\nperformance observed in the benchmarks. We run the make forge-stress\nbenchmarks locally in order to debug this behavior.

      • Transaction batching doesn't make a notable difference in the outcome\n(considering we are using the in-memory backend).

      • The mempool batching implementation required asynchronous transaction\nvalidation which is a violation of the LocalTxSubmission protocol\ncontract and therefore if we continued on that route, the impact would\nhave been quite big.

      • The STM logic we implemented by using a TMVar for the mempool internal\nstate was buggy and under certain circumstances it seemed to lock.\nReverting the mempool internal state to be stored in a TVar seems to\nsolve this problem.

      • The results we get after this change look almost identical to the ones\nfrom the baseline.

    • The anti-diff prototype (PR\n#3997) has\nbeen reviewed and is close to being merged.

      • A follow-up issue (issue\n#4010)\nto integrate the anti-diff prototype in the various consensus packages\nwas created. A first version of the integration exists, and all tests\npass. A next step is to get some indication of the \"real\" performance gain\nby profiling db-analyser (or cardano-node).

    Genesis

    • Final draft of the Genesis implementation specification, now up for review.

    • Local benchmark setup for parameter tuning via the happy path ChainSync\nJumping (CSJ) prototype (Issue 3987).

      • Context: Our Genesis design requires us to check in with a large (~20)\nnumber of servers periodically while syncing. These servers are offered\njump requests via the ChainSync protocol (hence the name), which they can\naccept or decline. If a peer declines, the Genesis rule allows us to\ndetermine whether a node actually has a better chain.

      • The \"happy path\" is when no peer declines a jump. We want this to have\nclose to no overhead compared to status quo, i.e. syncing without Genesis.

      • We implemented a prototype for this happy path, and are now starting to\ntest in various configurations (number of peers, latency, bandwidth) to\ntune the performance of ChainSync jumping, i.e. how complicated our logic\nof choosing when to jump needs to be.

        Example:

      • Simulated connection: 50 MBit/s, 50ms latency

      • Jump interval: 3000 slots (on the low end, could be increased to up to\n3k/f)

      • Red: baseline (1.35.3), one peer in topology file

      • Blue: Preliminary version of our prototype, with 10 peers.

        It is slower by about ~30%, but it is not the latest version of the\nprototype, and the jump interval is very small, making CSJ more of a\nbottleneck.

    Technical debt

    • Fix flakiness in ChainDB QSM tests (PR 3990).
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-09-20-consensus", + "title": "Consensus Team Update", + "summary": "- We proposed a fix for the performance degradation observed when running", + "date_modified": "2022-09-20T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-09-19-db-sync", + "content_html": "

    DBSync Update

    New Tag

    We created a new db-sync tag 13.0.5 which addresses shortcomings of the last\nrelease 13.0.4. It is currently under testing.\nThe Changelog is\nhere and in more details:

    • We fixed fees for tx with phase 2 failure that didn't include a total collateral field.\n1248

    • We fixed an issue that could cause db-sync to crash if a specific rollback occured.\n1247

    • DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but\ncould result in the wrong CBOR encoding being inserted.\n1217

    • All the fixes above come with unit tests which validates the fix.

    • Added support for preprod and preview from docker. DBSync no longer needs to include the configs\nfor different networks, these are directly fetched from the cardano world.\n1254

    • We added better support from docker for the new disable options and the overall documentation.\n1260

    All the above were also backported to the master branch

    Open source

    We made the db-sync board public, so\neveryone can have access on the issues we prioritise.\nWe also added new tasks to the board, some of them could be approachable to newcomers or people who\nwant to contribute.

    Progress on tech debt and new features

    • 1223 was merged, which removes the\nforeign keys from the db schema. This opens the road to a number of optimizations.

    • An additional fix on top of the previous work was added\n1250

    • An initial version where DBSync does not rollback on restart is done here\n1266.\nThis allows db-sync to restart much faster, without the need to delete data and reinsert them. In\nthe future it can also facilitate migrations in cases where the ledger snapshots have a breaking\nchange, without the need to resync everything from genesis.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-09-19-db-sync", + "title": "DB Sync Team Update", + "summary": "DBSync Update", + "date_modified": "2022-09-19T00:00:00.000Z", + "author": { + "name": "Kostas Dermentzis", + "url": "https://github.com/kderme" + }, + "tags": [ + "db-sync" + ] + }, + { + "id": "2022-09-16-ledger", + "content_html": "

    Ledger Update

    We have been focused nearly entirely on addressing technical debt.

    • We introduced more consistent naming across eras, this time for the auxiliary data.\nSee 3032.
    • We made clear how the consumed functions differs between eras (which was a previous source of\nconfusion), and added some related support to the fledgling ledger API.\nSee 3016.
    • We added clarity and organizational consistency to the main ledger era type synonyms.\nSee 3017.
    • We removed code duplication related to the input data hashes.\nSee 3018.
    • We split up a large module into smaller components. The large module was actually causing our\nCI to time out.\nSee 3020.
    • We cleaned up stale information in our cabal files, and upgraded cabal 3.8.\nSee 3023,\n3031,\nand 3028.
    • We made consistent, standalone TxOut (transaction output) modules for every era.\nSee 3024.
    • We brought consistency to a maddening inconsistent use of type variables indicating the specific\nchoice of cryptographic primitives. In particular, all uses of crypto have been renamed to c.\nSee 3027.
    • We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric\ntypes that will compose better in the future and which simplifies the constraints.\nSee 3029.
    • We consolidated some existing fragmented logic regarding how we gather the scripts needed for a\ngiven transaction. This is a much needed cleanup to prevent future mistakes.\nSee 3019.
    • We fixed a problem with our generators that was causing a fair number of our property tests to\nfail in CI.\nSee 3039.
    • We have started the work to update Plutus. This will bring support for SECP in the next major\nprotocol version, and also address a\nproblem\nthat we current have evolving the cost models.\nSee 3030.
    • We addressed a small issue that came up when integrating the conway era downstream, namely\nthe lack of some serialization instances.\nSee 3022.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-09-16-ledger", + "title": "Ledger Team Update", + "summary": "Ledger Update", + "date_modified": "2022-09-16T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-09-01-ledger", + "content_html": "

    Ledger Update

    Since finishing up support for the Vasil Hardfork, the ledger team has been\nfocused on two main things: a new ledger era and technical debt.

    New minimal ledger era

    We have implemented a new ledger era named conway which is nearly identical\nto the babbage era. This has been the first time that we have been able to see\nwhat a minimal ledger era looks like. We have finished this task, modulo any\nintegration issues that might come up. The only thing that the conway era\ndoes differently from the babbage era is provide support for rotating\nthe master keys using the hardfork combinator's state translation.\nWe may end up adding features to the conway era, but it is a nice exercise\nseeing what it looks like to get a minimal ledger era supported in all the\ndownstream components.

    Addressing technical debt

    We have been addressing technical debt, mostly in an effort to make the\nrepository a more friendly code base to work in.

    • We have begun work on a ledger API, called cardano-ledger-api.
    • We have done a big re-design of the major type classes used in the ledger.\nWith hindsight on our side, we now have something much more organized and\neasier to use.
    • We have done a lot of re-naming. The names across eras are now much more\nuniform, avoid certain confusions that plagued us, and are clearer in where\nthey are from.
    • We have reduced a lot of code duplication that could lead to bugs if you\ndo not have the whole code base in your head.
    • We have added a handful of performance improvements.
    • We added type safety in a number of locations. In particular, the type of\nvalues that can be minted in a transaction no longer allow for Lovelace\nin the type, and some functions which used to handle both timelock scripts\nand plutus script now correctly enoforce at the type level that only one of\nthem can be used.
    • We made our generators so that they now produce a much richer set of\nvalid serializations. There is room within CBOR to serialize the same\ndata structure in multiple ways, and it is helpful to have the generators\nuse a wide variety.
    • We have begun re-organizing our test suites.
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-09-01-ledger", + "title": "Ledger Team Update", + "summary": "Ledger Update", + "date_modified": "2022-09-01T00:00:00.000Z", + "author": { + "name": "Jared Corduan", + "url": "https://github.com/JaredCorduan" + }, + "tags": [ + "ledger" + ] + }, + { + "id": "2022-08-31-consensus", + "content_html": "

    Executive summary

    • We did most of the heavy lifting required to integrate the Conway era.
    • We have property tests for the UTxO HD backing store API implementations. A\npossible bug was identified. Work is ongoing to make sure the property-tests\ncover all the relevant cases.
    • We implemented and benchmarked the \"anti-diff\" prototype to speed up the UTxO\nHD functionality. Results show a rough speedup of 4x to 5.5x across\nseveral scenarios. Note that: \"Data reported by tasty-bench is only of\nindicative and comparative significance.\".\nWe are investigating additional performance improvements. The \"anti-diff\"\nprototype and benchmarks are still pending code review.
    • We elaborated a draft specification for the Genesis implementation and\nChainSync jumping optimization.

    Workstreams

    Conway

    • Integration PR of the minimal Conway era (Issue #3963, PR\n#3971).
    • Discussions with Ledger revealed possible sources of confusion about which\ndata should be changed in the Conway era. As a result, a new technical debt\nissue was raised, which does not block the integration of the Conway era\n(Issue #3976).

    UTxO HD

    • Issue #3954, branch: The functionality of a\nbacking store, which is the interface to the on-disk part of ledger state in\nUTxO-HD, is tested at a high level through the OnDisk tests. However, some\nfunctionalities remain untested, e.g., reads of ranges of keys. As such, we\nhave implemented quickcheck-state-machine tests that exercise backing stores\ndirectly. The tests are reusable for different backing store implementations\nbecause the tests are implementation-agnostic: Any backing store that conforms\nto the backing store interface can be plugged into the tests. Work is still\nongoing to label/monitor the tests, such that we can verify that interesting\ncases are being tested. Furthermore, a possible bug has been identified in the\nLMDB backing store with respect to range reads, though the bug has not been\nresolved yet.

    • Issue #3946, branch, PR #3882: The\n\"anti-diff\" prototype proposes an alternative approach to keeping track of\nsequences (more specifically, FingerTrees) of diffs. These diff sequences\nare a component of the in-memory parts of the ledger state in UTxO-HD. Since\nthe consensus code often requires the cumulative diff of a sequence of diffs,\nthe current implementation \"caches\" cumulative diffs of each subtree in the\ndiff sequence. This caching allows relatively fast reconstruction of the total\ncumulative diff, but this caching proved to incur a non-negligible cost: when\nwe manipulate diff sequences through splits and appends, we force re-computing\na logarithmic number of caches. This is problematic, since we often split and\nappend in consensus: we split when we flush diffs to a backing store or when\nwe roll back blocks, and we append when pushing blocks. The new approach\nshould reduce the overhead of this caching.

      We implemented micro-benchmarks for the \"anti-diff\" prototype: we\nfirst generate a sequence of commands (Forward, Push, Flush, or\nRollback) through a simulation, after which we measure the performance of\napplying the commands to a diff sequence. In this context, Forward means\nforwarding of values through a diff, whereas Rollback means switching to\na different fork by rolling back diffs/blocks and pushing new ones.\nMoreover, we compare the performance for the two implementations: the\n\"legacy\" approach, and the anti-diff approach.

      Some preliminary results were positive, but we needed to revisit the\nbenchmark's configuration to obtain more definitive results. After a\ndiscussion with @dcoutts and the consensus team about this configuration\n(e.g., number of commands generated, choice of the security parameter k),\nthe benchmarks should now be closer to the realistic setting. The following\nconfiguration specifies the default configuration that is used in the\nbenchmarking code:

      • Number of commands generated: 10_000
      • Security parameter k: 2160
      • Number of initial backing values: 100
      • Number of key-value pairs deleted by a push: 50
      • Number of key-value pairs inserted by a push: 50
      • Number of key-value pairs forwarded by a forward: 50
      • Probability of a large (in the range [1000, 2000]) rollback: 0.05
      • Probability of a small (in the range [1, 10]) rollback: 0.95
      • Order of commands:
        • An equal number of forward and pushes.
        • 1 flush every 10 pushes.
        • 1 rollback every 100 pushes

      Moreover, we run four benchmark scenarios:

      • Default configuration
      • Without rollbacks
      • With only small rollbacks
      • Without rollbacks, larger flushes (1 flush every 100 pushes)

      How to read results

      Note: this section uses documentation from the\ntasty-bench package to\nexplain how to read the results of running our benchmarks.

      Running a benchmark scenario gives us the following (curated) output:

      ...
      AntiDiff: OK (18.27s)
      2.527 s ± 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x
      LegacyDiff: OK (32.73s)
      10.829 s ± 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory
      ...

      The output says that the first benchmark, which exercises the anti-diff\nprototype, was repeatedly executed for 18.27 seconds (wall-clock time),\nits predicted mean CPU time was 2.527 seconds and means of individual\nsamples do not often diverge from it further than ± 47 milliseconds\n(double standard deviation). We also configure the RTS to collect GC\nstatistics, which enables tasty-bench to estimate and report memory usage.\nThis data is reported as per RTSStats fields: allocated_bytes,\ncopied_bytes and max_mem_in_use_bytes. So, the output of the first\nbenchmark says that a total of 2.1 GB of memory was allocated, that a\ntotal of 544 MB of memory were copied, and that the peak memory in usage\nwas 2.2 GB. We read the output for the second benchmark in the same way.

      Furthermore, the benchmark compares the mean CPU times for\nboth the anti-diff and legacy approaches: In this case, the mean CPU time\nfor the anti-diff approach is ~0.23x the mean CPU time for the legacy\napproach. Conversely, the mean CPU time for the legacy approach is\n1 / 0.23 ~= 4.35x the mean CPU time for the anti-diff approach. We will\ncall 0.23x the improvement factor. We will call 4.35x the speedup.

      Note that these improvement factors (and reported results) are subject to\nnoise, randomness, the specific configuration parameters, and the whims\nof statistics. Data reported by tasty-bench is only of indicative and\ncomparative significance.

      Results

      For each of the 4 scenarios, we list the results of running the anti-diff and\nlegacy approaches 5 times. We run the benchmarks 5 times to get an indication\nof whether the results are similar across multiple runs. Furthermore, we\ncalculate the accompanying ranges (if applicable) of improvement factors and\nspeedups.

      Note also the decrease in total bytes allocated and total bytes copied for\nthe anti-diff approach compared to the legacy approach.

      Default configuration

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff2.533 s (0.23x)4.7 ms2.1 GB557 MB2.4 GB
      Run 1: LegacyDiff10.792 s162 ms6.8 GB2.3 GB2.4 GB
      Run 2: AntiDiff2.508 s (0.23x)245 ms2.1 GB515 MB2.2 GB
      Run 2: LegacyDiff10.850 s30 ms6.9 GB2.3 GB2.2 GB
      Run 3: AntiDiff2.562 s (0.23x)5.0 ms2.1 GB552 MB2.2 GB
      Run 3: LegacyDiff10.993 s149 ms6.9 GB2.3 GB2.2 GB
      Run 4: AntiDiff2.168 s (0.22x)5.3 ms1.8 GB434 MB2.0 GB
      Run 4: LegacyDiff9.976 s39 ms6.3 GB2.0 GB2.0 GB
      Run 5: AntiDiff2.527 s (0.23x)47 ms2.1 GB544 MB2.2 GB
      Run 5: LegacyDiff10.829 s148 ms6.8 GB2.3 GB2.2 GB
      • Improvement factor: [0.22, 0.23]
      • Speedup : [1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]

      No rollbacks

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.638 s (0.19x)36 ms1.4 GB181 MB2.4 GB
      Run 1: LegacyDiff8.656 s207 ms5.7 GB1.5 GB2.4 GB
      Run 2: AntiDiff1.638 s (0.19x)75 ms1.4 GB181 MB2.2 GB
      Run 2: LegacyDiff8.654 s322 ms5.7 GB1.5 GB2.2 GB
      Run 3: AntiDiff1.663 s (0.19x)74 ms1.4 GB181 MB2.2 GB
      Run 3: LegacyDiff8.799 s216 ms5.7 GB1.5 GB2.2 GB
      Run 4: AntiDiff1.645 s (0.19x)51 ms1.4 GB181 MB2.0 GB
      Run 4: LegacyDiff8.732 s261 ms5.7 GB1.5 GB2.0 GB
      Run 5: AntiDiff1.639 s (0.19x)19 ms1.4 GB181 MB2.2 GB
      Run 5: LegacyDiff8.653 s234 ms5.7 GB1.5 GB2.2 GB
      • Improvement factor: 0.19
      • Speedup : 1 / 0.19 ~= 5.25

    Only small rollbacks

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff1.833 s (0.18x)36 ms1.5 GB185 MB2.4 GB
    Run 1: LegacyDiff10.362 s867 ms5.8 GB1.6 GB2.4 GB
    Run 2: AntiDiff1.696 s (0.19x)30 ms1.5 GB185 MB2.2 GB
    Run 2: LegacyDiff8.822 s106 ms5.8 GB1.5 GB2.2 GB
    Run 3: AntiDiff1.702 s (0.19x)44 ms1.5 GB186 MB2.2 GB
    Run 3: LegacyDiff8.906 s147 ms5.8 GB1.5 GB2.2 GB
    Run 4: AntiDiff1.701 s (0.19x)47 ms1.5 GB185 MB2.0 GB
    Run 4: LegacyDiff8.949 s197 ms5.8 GB1.5 GB2.0 GB
    Run 5: AntiDiff1.677 s (0.19x)55 ms1.5 GB186 MB2.2 GB
    Run 5: LegacyDiff8.856 s177 ms5.8 GB1.5 GB2.2 GB
    • Improvement factor: [0.18, 0.19]

    • Speedup : [1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]

      No rollbacks, larger flushes (every 100 pushes)

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.643 s (0.25x)21 ms1.5 GB196 MB2.4 GB
      Run 1: LegacyDiff6.591 s351 ms4.0 GB1.4 GB2.4 GB
      Run 2: AntiDiff1.616 s (0.25x)47 ms1.5 GB196 MB2.2 GB
      Run 2: LegacyDiff6.520 s232 ms4.0 GB1.4 GB2.2 GB
      Run 3: AntiDiff1.640 s (0.25x)34 ms1.5 GB196 MB2.2 GB
      Run 3: LegacyDiff6.540 s150 ms4.0 GB1.4 GB2.2 GB
      Run 4: AntiDiff1.635 s (0.25x)76 ms1.5 GB196 MB2.0 GB
      Run 4: LegacyDiff6.589 s131 ms4.0 GB1.4 GB2.0 GB
      Run 5: AntiDiff1.628 s (0.25x)19 ms1.5 GB196 MB2.2 GB
      Run 5: LegacyDiff6.490 s5.9 ms4.0 GB1.4 GB2.2 GB
    • Improvement factor: 0.25

    • Speedup : 1 / 0.25 ~= 4

    Genesis

    • We elaborated a draft of the specification of the Genesis implementation and\nthe ChainSync Jumping optimization. In particular, this includes a proof\nsketch that the latter preserves liveness and safety in all cases (Issue\n3964).
      • @nfrisby's main realization during this sprint was that he had been\nfocusing so far on the case where the selected chain is an extension of\nthe intersection of our peers' ChainSync candidates.
      • This is the main case, ie an \"absorbing\" state, but it's not the only\ncase.
      • The new proof sketch begins by case splitting on that predicate, and\nthat made the sketch quite a bit easier to follow.
    • We continued working on the \"happy path\" ChainSync Jumping prototype (Issue\n3960).

    Technical debt

    • We started working on the issues required to re-enable nightly CI runs..\nNightly CI runs have far more lax time constraints, which gives the option to\nrun significantly more property tests than in our regular CI. To this end, we\nmerged a PR to easily adapt the number of tests globally (PR\n#3947).
    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-08-31-consensus", + "title": "Consensus Team Update", + "summary": "Executive summary", + "date_modified": "2022-08-31T00:00:00.000Z", + "author": { + "name": "Damian Nadales", + "url": "https://github.com/dnadales" + }, + "tags": [ + "consensus" + ] + }, + { + "id": "2022-08-12-network", + "content_html": "

    The networking team took an active part in the project iteration (PI) planning\nsession, see cardano-node backlog for detailed\noutcomes.

    • We started working on a detailed design / implementation plan for gossip.

    • We merged input-output-hk/ouroboros-network#3859 which\nsets the ouroboros-network repository for the single relay release.

    • We identified a bug in the network simulator, which is fixed in the\ninput-output-hk/ouroboros-network#3852.\nThe above PR was reviewed.

    • We set the tracing configuration for nodes which we deploy and fixed and\nidentified some deployment hiccups. We identified some bugs in the RT view\nwhich were registered by the maintainers.\ninput-output-hk/ouroboros-network-ops#4

    • We fixed typos in network-mux library:\ninput-output-hk/ouroboros-network#3921

    • For easy of debugging we renamed a trace point:\ninput-output-hk/ouroboros-network#3922

    • Duncan iterated on his simulation / visualisation. He also was able to\nidentify and fix a bug in the simulator. The simulation contains 50 nodes.\nDashed lines indicate and established connection, while solid lines indicate\na TCP connection with fully open TCP window.

    ", + "url": "https://input-output-hk.github.io/cardano-updates/2022-08-12-network", + "title": "Network Team Update", + "summary": "The networking team took an active part in the project iteration (PI) planning", + "date_modified": "2022-08-12T00:00:00.000Z", + "author": { + "name": "Marcin Szamotulski", + "url": "https://github.com/coot" + }, + "tags": [ + "network" + ] + } + ] +} \ No newline at end of file diff --git a/images/consensus/2022-11-02-csj-vs-baseline-sliced.svg b/images/consensus/2022-11-02-csj-vs-baseline-sliced.svg new file mode 100644 index 00000000000..e75d1eaf09c --- /dev/null +++ b/images/consensus/2022-11-02-csj-vs-baseline-sliced.svg @@ -0,0 +1,2041 @@ + + + + + + + + 1980-01-01T00:00:00+00:00 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/consensus/2022-11-02-csj-vs-baseline.svg b/images/consensus/2022-11-02-csj-vs-baseline.svg new file mode 100644 index 00000000000..8c8eeb6606f --- /dev/null +++ b/images/consensus/2022-11-02-csj-vs-baseline.svg @@ -0,0 +1,2277 @@ + + + + + + + + 1980-01-01T00:00:00+00:00 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/consensus/2022-11-16-comparing-TICKF-batch.png b/images/consensus/2022-11-16-comparing-TICKF-batch.png new file mode 100644 index 00000000000..15e1c6e0b0b Binary files /dev/null and b/images/consensus/2022-11-16-comparing-TICKF-batch.png differ diff --git a/images/consensus/2022-11-16-removed-stuttering.png b/images/consensus/2022-11-16-removed-stuttering.png new file mode 100644 index 00000000000..606656fac37 Binary files /dev/null and b/images/consensus/2022-11-16-removed-stuttering.png differ diff --git a/images/consensus/2022-12-14-ledger-ops-benchmark.png b/images/consensus/2022-12-14-ledger-ops-benchmark.png new file mode 100644 index 00000000000..69a3758ff57 Binary files /dev/null and b/images/consensus/2022-12-14-ledger-ops-benchmark.png differ diff --git a/images/consensus/2023-01-11-utxo-hd-replay-benchmarks.png b/images/consensus/2023-01-11-utxo-hd-replay-benchmarks.png new file mode 100644 index 00000000000..906827f577b Binary files /dev/null and b/images/consensus/2023-01-11-utxo-hd-replay-benchmarks.png differ diff --git a/images/consensus/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks.png b/images/consensus/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks.png new file mode 100644 index 00000000000..2e9cbe7de3b Binary files /dev/null and b/images/consensus/2023-01-25-consensus-utxo-hd-read-and-flush-benchmarks.png differ diff --git a/images/consensus/2023-Q2-beacon-graph.png b/images/consensus/2023-Q2-beacon-graph.png new file mode 100644 index 00000000000..32c77ec19f4 Binary files /dev/null and b/images/consensus/2023-Q2-beacon-graph.png differ diff --git a/images/consensus/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks.png b/images/consensus/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks.png new file mode 100644 index 00000000000..75c58abe23a Binary files /dev/null and b/images/consensus/2023-Q2-utxo-hd-sync-ad-hoc-benchmarks.png differ diff --git a/images/happy-path-csj-prototype-bench-1.svg b/images/happy-path-csj-prototype-bench-1.svg new file mode 100644 index 00000000000..71262d6b9fa --- /dev/null +++ b/images/happy-path-csj-prototype-bench-1.svg @@ -0,0 +1,1812 @@ + + + + + + + + 2022-10-05T14:01:43.231609 + image/svg+xml + + + Matplotlib v3.5.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/happy-path-csj-prototype-bench-2.svg b/images/happy-path-csj-prototype-bench-2.svg new file mode 100644 index 00000000000..bdfae76e616 --- /dev/null +++ b/images/happy-path-csj-prototype-bench-2.svg @@ -0,0 +1,1888 @@ + + + + + + + + 2022-10-19T12:30:35.894508 + image/svg+xml + + + Matplotlib v3.5.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/happy-path-csj-prototype-prelim.svg b/images/happy-path-csj-prototype-prelim.svg new file mode 100644 index 00000000000..a35a5935f8e --- /dev/null +++ b/images/happy-path-csj-prototype-prelim.svg @@ -0,0 +1,1424 @@ + + + + + + + + 2022-09-21T14:18:47.635974 + image/svg+xml + + + Matplotlib v3.5.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/haskell-logo.png b/images/haskell-logo.png new file mode 100644 index 00000000000..97c0937482e Binary files /dev/null and b/images/haskell-logo.png differ diff --git a/images/network/2022-11-11-noticed-headers.png b/images/network/2022-11-11-noticed-headers.png new file mode 100644 index 00000000000..98f661897e5 Binary files /dev/null and b/images/network/2022-11-11-noticed-headers.png differ diff --git a/images/network/2023-07-06-p2p-progress.png b/images/network/2023-07-06-p2p-progress.png new file mode 100644 index 00000000000..59cde79f6ac Binary files /dev/null and b/images/network/2023-07-06-p2p-progress.png differ diff --git a/images/network/2023-08-31-p2p-relays.png b/images/network/2023-08-31-p2p-relays.png new file mode 100644 index 00000000000..7298d24bed9 Binary files /dev/null and b/images/network/2023-08-31-p2p-relays.png differ diff --git a/images/network/2023-08-31-relay-versions.png b/images/network/2023-08-31-relay-versions.png new file mode 100644 index 00000000000..a9721ebe815 Binary files /dev/null and b/images/network/2023-08-31-relay-versions.png differ diff --git a/images/network/2023-09-14-p2p-relays.png b/images/network/2023-09-14-p2p-relays.png new file mode 100644 index 00000000000..8960e26e7ec Binary files /dev/null and b/images/network/2023-09-14-p2p-relays.png differ diff --git a/images/network/2023-09-14-relay-versions.png b/images/network/2023-09-14-relay-versions.png new file mode 100644 index 00000000000..b611d86543a Binary files /dev/null and b/images/network/2023-09-14-relay-versions.png differ diff --git a/images/network/2023-10-04-p2p-relays.png b/images/network/2023-10-04-p2p-relays.png new file mode 100644 index 00000000000..76b781b81d7 Binary files /dev/null and b/images/network/2023-10-04-p2p-relays.png differ diff --git a/images/network/2023-10-04-relay-versions.png b/images/network/2023-10-04-relay-versions.png new file mode 100644 index 00000000000..afcec848767 Binary files /dev/null and b/images/network/2023-10-04-relay-versions.png differ diff --git a/images/p2p-relay-5.mp4 b/images/p2p-relay-5.mp4 new file mode 100644 index 00000000000..79c27bfc398 --- /dev/null +++ b/images/p2p-relay-5.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c47ba3e2aa570664b189bd12139959db071550c4efa3cadfd915193ddd4c39bd +size 86690301 diff --git a/img/doc-adoption.png b/img/doc-adoption.png new file mode 100644 index 00000000000..fe32333d9fb Binary files /dev/null and b/img/doc-adoption.png differ diff --git a/img/docusaurus.png b/img/docusaurus.png new file mode 100644 index 00000000000..f458149e3c8 Binary files /dev/null and b/img/docusaurus.png differ diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 00000000000..ec9e8ffeb44 Binary files /dev/null and b/img/favicon.ico differ diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 00000000000..98007a29716 Binary files /dev/null and b/img/logo.png differ diff --git a/img/logo.svg b/img/logo.svg new file mode 100644 index 00000000000..c1895147a25 --- /dev/null +++ b/img/logo.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 00000000000..284157d7b95 --- /dev/null +++ b/index.html @@ -0,0 +1,53 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Alexey Kuleshevich

    High level summary

    This period we reached a major milestone, namely we now have an initial version of Conway +conformance testing working. We are now able to generate random valid data with the help +of constraint based testing framework, apply that data to Conway Ledger rules and verify +that the output matches to the one produced by the executable version of the Formal Ledger +Specification, when it is applied to the same random data.

    We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get +Constitutional Committee query is complete and tested. Various improvements to the +testing tools. Addition of more test cases.

    Low level summary

    Conway

    • pull-3888 - Add checks for valid ProtVer when a proposal is a HardFork
    • pull-3902 - Fix pvCanFollow usage in Conway and improve clarity in Shelley
    • pull-3855 - Remove unreachable proposals
    • pull-3903 - Add lenient decoder for Addr
    • pull-3878 - Committee query - implement next epoch change

    Testing

    • pull-3893 - Move tree-diff dependency to tests together with all instances
    • pull-3896 - Fix Brute force failure
    • pull-3904 - New ListWhere Pred added to the Constrained Solver.
    • pull-3907 - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file
    • pull-3883 - Committee QuerySpec Imp Test
    • pull-3909 - Make impAnn a bit more useful, by making the logs scoped by impAnn
    • pull-3908 - Use upstream testing instances for very basic types
    • pull-3912 - Removed call to tail, and the 'watchPulser' test
    • pull-3852 - Added constrained generators to conformance tests - Part 1

    Improvements and releasing

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking.

    Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io.

    Low level overview

    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Create a test network on Sanchonet #1173
    • Worked on the issue Upgrade breaking changes crates #1357
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Completed the issue Enhance aggregator REST API performances #1327
    • Completed the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Make mithril-client examples full crates #1385
    • Completed the issue Manual publication to crates.io with GitHub action #1380
    • Completed the issue Remove sqlite dependency from mithril-client crate #1390

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: Release benchmarking for node 8.7.0. Also, we performed the first-ever Conway benchmarks.
    • Development: Conway capability of our workload generator has been implemented and merged to master.
    • Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data.
    • Tracing: Quality-of-life improvements to tracing output and addition of a test suite.
    • Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.

    Low level overview

    Benchmarking

    A full set of benchmarks for node 8.7.0 has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of 8.7.0 over 8.6.0, and can confirm no regressions have been introduced.

    Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version. +Only Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty.

    Development

    Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era. +Currently, we're looking into adding Conway-exclusive features, such as DRep registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining DRep sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying.

    Infrastructure

    As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've +improved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data.

    Tracing

    The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages. +Additionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system.

    Nomad backend

    We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases.

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team conducted a packed Monthly Review meeting, +featuring demonstrations and the preparation of the monthly report. They +addressed flakiness in tests and enhanced the logs json schema, +improving overall test reliability. Additionally, the team successfully +built MacOS ARM64 (aarch64-darwin) binaries in CI, expanding platform +support. They further improved the network configuration by detecting +incompatible persisted states, contributing to overall system +robustness. Finally, the team released version 0.14.0, highlighting +their commitment to delivering regular updates and improvements.

    What did the team achieve this week

    • Monthly Review +meeting +packed with demonstrations and prepared monthly report +#1189
    • Fixed several flaky tests and improved the logs json schema +#1188#1190#1192
    • Built MacOS ARM64 (aarch64-darwin) binaries in CI +#1182
    • Improved network configuration by detecting incompatible persisted +states #1174
    • Released version 0.14.0

    What are the goals of next week

    • Start work on incremental decommit
    • Continue shepherding contributed PRs to completion
    • Finish stateless-observation work
    • Open a head on a Conway network

    · One min read
    Damian Nadales

    High level summary

    The Consensus team implemented and tested a patch that does not propagate future headers. +It is under review, and we expect it can be released in the next Cardano node version. +On the UTxO-HD front, we finished prototyping the LedgerDB and BackingStore redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend. +With this prototype finished we can start integrating the rest of the code. +We investigated the unexpected performance degradation observed when acquiring the block context. +We also released Cardano node 8.7.0 and moved tree-diff outside cardano-ledger libraries.

    + + + + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html new file mode 100644 index 00000000000..7b559619eff --- /dev/null +++ b/markdown-page/index.html @@ -0,0 +1,24 @@ + + + + + +Markdown page example | Cardano Development Updates + + + + + + + + + + + + +
    +

    Markdown page example

    You don't need React to write simple standalone pages.

    + + + + \ No newline at end of file diff --git a/p2p-relay3.mp4 b/p2p-relay3.mp4 new file mode 100644 index 00000000000..ea8958a9979 --- /dev/null +++ b/p2p-relay3.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fdf115e9488b153cec95afca51015740fc394722e82937d06eec7387d95e058 +size 67109177 diff --git a/page/10/index.html b/page/10/index.html new file mode 100644 index 00000000000..f0e0fe28274 --- /dev/null +++ b/page/10/index.html @@ -0,0 +1,54 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Alexey Kuleshevich

    High level summary

    Few important Conway related features were completed in this two week period:

    • Constitutional Committee was the last missing Conway related entity that has now been +fully implemented.
    • Treasury withdrawals governance actions have been fixed and now behave as expected.
    • Current treasury amount supplied in the transaction is now enforced by the rules.
    • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no +proposals to vote on.
    • Semantics of how CostModels are updated with Protocol Parameters have been changed to +allow for individual Plutus language version updates, rather than requiring a complete +replacement of all CostModels

    Besides the new features there were also important performance and testing improvements:

    • In particular stake distribution computation and native script handling received some +optimizations.
    • New testing DSL has been implemented that drastically simplifies writing unit tests for +ledger rules.
    • Integration tests and benchmarks are now possible for Conway era because of the overhaul +of functionality for initial funds and staking injection whenever node starts up in +Conway, while bypassing all previous eras.

    Low level summary

    Conway era

    • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
    • pull-3739 - Rename some PParams to be consistent with Agda specification
    • pull-3743 - Move DRepDistr from VState to ConwayGovState
    • pull-3746 - Implement tcTranslationContextL for Shelley
    • pull-3737 - Implement EraTransition
    • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
    • pull-3748 - Apply enacted treasury withdrawals
    • pull-3745 - Constitutional Committee Ratification
    • pull-3763 - Plutus interface improvements
    • pull-3771 - Changed how costmodel updates are applied
    • pull-3766 - Prevent updating protocol version with PParamUpdate

    Performance

    • pull-3765 - Improve native script handling
    • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
    • pull-3758 - Cardano-Perf regression: UMap.size regression fix
    • pull-3754 - Use Alonzo-style TxOut encoder when possible

    Releasing

    • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
    • pull-3744 - Changelog 8.4
    • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
    • pull-3753 - Minor cleanup and changelog entries
    • pull-3760 - Fixup issues for release
    • pull-3764 - Bump plutus deps to 1.13

    Testing

    • pull-3734 - Removed Shaped instance for Rep
    • pull-3735 - Simplify the implementations of hasOrd and hasEq
    • pull-3728 - STS tests based on constraints
    • pull-3714 - Implement the remaining upgradable families
    • pull-3733 - Add some unit tests for Conway features
    • pull-3762 - Update CDDL for praos headers.

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node 8.4.0-pre.
    • The use of cardano-node docker hub will be deprecated in preference of GHCR

    Lower level summary

    Capkgs

    • Refactor parsing scripts, add github action automation, various bugfixes and cleanup: capkgs-compare

    Cardano-parts

    • Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: cardano-parts-pull-8

    Cardano-playground

    • Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: cardano-playground

    Cardano-world

    · One min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has released a new distribution 2337.0, which includes the following enhancements: support for zstandard compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator.

    They also completed the refactoring and standardization of the errors in the Mithril nodes and published an Architectural decision record on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure.

    Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs.

    Low level overview

    • Completed the issue Release new 2337 distribution #1219
    • Completed the issue Errors refactoring #798
    • Completed the issue Client traffic creates performance bottleneck in aggregator #1207
    • Completed the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Worked on the issue Spike: Run client in browser WASM PoC #1254
    • Worked on the issue Benchmark aggregator performances #1220
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230

    · 2 min read
    Carlos LopezDeLara

    2023-09-13 - 2023-09-26

    High level summary

    • cardano-node 8.4.0-pre release suitable for SanchoNet.
    • CLI continues making progress integrating governance features. During this sprint we integrated the info and new-committee governance actions.
    • The team continued moving to the ERA top-level commands structure. Removed --conway-era flag from the legacy commands making conway era commands only accessible via cardano-cli conway.
    • stake-pool command is now under the ERA top level structure.
    • API continues integration with governance features, it is worth to higlight that now ProposeNewCommitee uses the right key type (cc-cold)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team conducted the monthly review meeting in +collaboration with Mithril, enhancing project coordination.

    The team improved the gen-hydra-key node command for smoother usability +and identified concrete steps to enhance network resiliency in feature +items #188, +#1080, and +#1079. +Additionally, they contributed the aiken-mode editor integration to the +aiken-lang organization, updated dependencies to utilize cardano-api +8.20, and published the Hydra security advisory CVE-2023-42806 with a +workaround available for users.

    These efforts demonstrate the team\'s commitment to project improvement, +security, and open-source community collaboration.

    What did the team achieve this week

    • Conducted the monthly review meeting together with Mithril
    • Improved gen-hydra-key node command +#1077
    • Established a clear plan to improve resiliency of network and manifested +feature items #188, +#1080 and +#1079
    • Moved aiken-mode (created by SN) +to aiken-lang organization
    • Updated dependencies to using cardano-api 8.20 +#1075
    • Published security advisory +CVE-2023-42806 +(workaround available)

    What are the goals of next week

    • Write-up the monthly report for September
    • Finish "network resilience to disconnects" +#188
    • Finish kupo integration with hydra +#1078
    • Discuss and decide on using aiken or not
    • Address the published security advisory +CVE-2023-42806 +(to not require workaround)
    • Ideally, release 0.13.0
    + + + + \ No newline at end of file diff --git a/page/11/index.html b/page/11/index.html new file mode 100644 index 00000000000..11096c6edc4 --- /dev/null +++ b/page/11/index.html @@ -0,0 +1,50 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters.
    • Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time.
    • Tracing: Work on machine-readable tracing of tracer configuration is ongoing.
    • Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster.
    • Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Blöndal!

    Low level overview

    Benchmarking

    As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking +backend with means to measure and document network latency for each run. Furthermore we've implemented means to +capture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences +in the behaviour of the underlying networking stack at OS level.

    Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided +to compare standard deviations instead to validate the measurements from nomad.

    Infrastructure

    Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline +have been merged to master. They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis.

    Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for trace-dispatcher and tx-generator we were able to address those issues.

    Tracing

    After various steps in constructing a configuration upon node startup, it is vital to document +which runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML +trace message for that purpose.

    This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node.

    Nomad backend

    As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it +produces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an +impact on our measurements, as we'd be basically using two different instruments to take them.

    Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service +or the slightly different system architecture of the new cluster.

    New team member

    Baldur Blöndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team. +So I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on cardano-tracer, the component receiving, processing and making available node traces and metrics.

    · 2 min read
    Damian Nadales

    High level summary

    We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks. +We are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough. +On the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain. +We also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway.

    UTxO-HD

    • We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (349). System level benchmark results are pending.
    • Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (344), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run.
    • We also brought the UTxO-HD branch up to date with node version 8.4.0.

    Genesis

    • We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain. +We are now drafting the final self-contained argument. (4157)

    Support

    • We debugged a bad parameter update on the Babbage to Conway transition in the SanchoNet testnet (339). +A superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (340, 354, and 355) +However we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ConsensusProtocol type class and the HardForkBlock combinator (345 and 346). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports.

    Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution.

    Low level overview

    • Completed the issue Add snapshot compression parameters in infrastructure deployments #1200
    • Completed the issue Add Cloudflare protection of infrastructure #986
    • Worked on the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Worked on the issue Error refactoring #798
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    • Worked on the issue Release new 2337 distribution #1219
    • Completed the issue Upgrade dependencies #1238

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • working on collating and open sourcing performance analysis prototype

    • improvements to Ouroboros Praos specification in Isabelle

    • working on formalising chain sync mini-protocol

    • reviewing an alternatice semantics for DeltaQ

    • Seminar talk at U. Bergen on algebraic properties of timeliness

    · One min read
    Sasha Bogicevic
    Sebastian Nagel

    High-level summary

    This week, most of the Hydra team was attending a cardano scaling workshop in +Nantes, France. They used this oportunity to meet fellow mithril team and spend +some time together to hack on some code and, as always, reflect on the past work +and find optimal path forward for both projects. They also fixed a bug that +caused hydra-node to crash when querying L1, worked on a new network resillience +proof-of-concept and accepted a new ADR related to stateless transaction +observation.

    What did the team achieve this week

    • Cardano scaling workshop with members of hydra and mithril teams
    • Accepted user contribution for possible new use-case #1048
    • Fix for the hydra-node crash related to internal wallet query #1053
    • Collected experimental CI findings #1070
    • Propose first POC for the network resilience #1074

    What are the goals of next week

    • Monthly review meeting & report including updates from Mithril
    • Review POC and discuss our options for the network resilience
    • Update cardano-api to version 8.20
    • Address TODOs on aiken commit validator #1072
    • Complete hydra-support in kupo kupo#117
    + + + + \ No newline at end of file diff --git a/page/12/index.html b/page/12/index.html new file mode 100644 index 00000000000..6d9604b0386 --- /dev/null +++ b/page/12/index.html @@ -0,0 +1,60 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Alexey Kuleshevich

    High level summary

    The Ledger team's focus is still mainly on the Conway era implementation.

    We were able to add ability to specify initial Constitutional Comittee and the initial +version of Constitution. Priority in which Governance Action are now enacted matches the +specification. DRep's deposits are now properly accounted for. Governance actions that are +not allowed to be voted on by Stake Pool operators and Constitutional Committee members +are prevented by transaction submission failure, rather than simply being ignored. There +was a few important CDDL fixes as well as a lot of new round trip serialization +tests. Constraint based testing framework has also received a lot of improvements.

    Low level summary

    Conway era

    • pull-3681 - Conway Genesis additions
    • pull-3690 - Preserve the order of ProposalProcedures
    • pull-3705 - Removed ProtVer from EnactState
    • pull-3700 - Add conway-specific certs to deposit/refunds
    • pull-3704 - Add comments on deprecating certs to Conway CDDL
    • pull-3698 - Reordering of governance actions
    • pull-3712 - Disallow empty fields in ConwayTxBodyRaw
    • pull-3716 - Abstract threshold calculation
    • pull-3725 - Fix mistaken use of dollar sign in cddl files
    • pull-3718 - Predicate failure for mismatched Voter GovAction
    • pull-3721 - Committee expiration, validation and modification

    Improvements and releasing

    Testing

    • pull-3730 - Implement Show instance for Rep using IsTypeable
    • pull-3697 - Rewrite testEql using Typeable to make it impossible to forget cases
    • pull-3709 - Add many new features to the Constrained modues in cardano-ledger-test
    • pull-3726 - Conway and other eras serialization roundtrip tests
    • pull-3713 - Improve CI resiliency against GitHub issues

    · 2 min read
    Marcin Szamotulski

    High-level overview of sprint 44

    Bootstrap Peers

    In this sprint, we focused on developing bootstrap peers.

    Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we +identified a possible improvement to bootstrap peers. A more detailed +description is available here.

    Cardano-Node-8.4.0 Release

    We also were responsible for the cardano-node-8.4.0-pre release. A final +integration PR is currently being merged. We published +new versions of ouroboros-consensus, cardano-api and cardano-cli.

    Towards Typed Protocols 0.2.0.0

    We also updated the future typed-protocols-0.2.0.0 and its integration with +cardano-node. This is towards our goal which we planned for the next +quarter. The identified tasks are to fix breaking tests, and then measure and +address possible performance regressions.

    Tech Debt

    Mark Tullsen (Galois) submitted two more PRs: ouroboros-network-#4663, +ouroboros-network-#4664. We provided feedback on their other pull requests: ouroboros-network-#4661 and +ouroboros-network-#4660.

    P2P adoption

    In the last two weeks, there was a regression in P2P adoption concerning +the number of SPOs or stakes, although the number of overall P2P relays has +increased. Karl Knutsson (Cardano Foundation) is investigating +this issue. +P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

    Data has been kindly provided by Cardano Foundation and their mainnet +monitoring infrastructure.

    Open Source

    We are in the process of upstreaming our ffi to Windows Named Pipes API to the Win32 package, see [win32-220].

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet environment was updated to 8.3.0-pre.
    • Cardano-parts now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is here.

    Lower level summary

    Capkgs

    • Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: capkgs-compare

    Cardano-ops

    Cardano-parts

    • Utilize content addressed binaries to significantly improve eval, build and devShell performance: cardano-parts-pull-8
    • Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: cardano-parts-pull-10
    • Fix warns thrown during some builds and devShell usage: cardano-parts-pull-11
    • Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: cardano-parts-pull-12
    • Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: cardano-parts-pull-13

    Cardano-perf

    • Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: cardano-perf-compare

    Cardano-playground

    Cardano-world

    · One min read
    Kostas Dermentzis

    High level summary

    We have created a DBSync tag sancho-1-1-0 which can follow sanchonet. Also +the team has ran a number of benchmarks and tests for the new options/flavours of DBSync +and prepared a blogpost which summorises them, for downstream components.

    Lower level summary

    • Integration of node-8.3.x and support for Sanchonet on Conway +#1498
    • Simplifications of new feautures +#1496
    • Makes it impossible to restart DBSync with different schema options and adds +tests for them +#1466
    • CI fixes +#1494#1491
    • Prepared a blogpost about different DBSync options +blog

    · 3 min read
    Carlos LopezDeLara

    2023-08-30 - 2023-09-12

    High level summary

    Release of Cardano-node 8.3.0-pre for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs. +This release completes phase 2 of SanchoNet feature roll out plan

    CLI continues on its migration to a era-based top-level commands. This sprint we moved text-view, key, query, genesis, node, stake-address, transaction and address into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints.

    We are moving the drep delegation-certificate to the stake-address command so delegating to a drep is done via stake-addres vote-delegation-certificate. Along the same lines, we are renaming +stake-address delegation-certificate (delagating to a stake pool) to stake-address stake-delegation-certificate to distinguish between stake delegation to a pool and votes delegation to a drep. On top +of that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly stake-address stake-and-vote-delegation-certificate. Note that change is not included on 8.3 but will come on 8.4. +Removing --conway-era flag from all the transaction sub-commands.

    Update description fields in delegation certificates from Stake Address Delegation Certificate to respectively (Conway onwards):

    • Stake Delegation Certificate
    • Vote Delegation Certificate
    • Stake and Vote Delegation Certificate

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    + + + + \ No newline at end of file diff --git a/page/13/index.html b/page/13/index.html new file mode 100644 index 00000000000..1441e057091 --- /dev/null +++ b/page/13/index.html @@ -0,0 +1,52 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team improved the commit process with support for inline +datums. They simplified the chain layer by refactoring how the chain state is +persisted. Updates to the Hydra tutorial were completed, including CI workflows +to keep it up-to-date. The team engaged in discussions with researchers about +incremental commits & decommits, and drafted an architectural decision record +for a resource-based API. They also explored simpler solutions for the upcoming +network resilience feature.

    What did the team achieve this week

    • Support InlineScriptDatum in commit +#1043
    • Refactored chain state persistency +#1049
    • Completed tutorial updates (by adding CI and some cleanup) +#997
    • Intersect Open Source committee meeting
    • Experimented with various models to better express the \"Network +resilience problem\" to find a KISS solution for +#188
    • Drafted and discussed incremental de-/commit features within team +and with researchers +#199 and +#1057
    • Created ADR for a resource based overhaul of the API +#1028

    What are the goals of next week

    • Meetup of Hydra & Mithril contributors in Nantes, France
    • Integrated cardano-api 8.15 to have GHC 9.6 support
    • A clear design for incremental commits (decommits are already +understood)
    • An ADR for improving tx construction & observation to not need chain +state

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has released a new distribution 2335.0 which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information.

    They have also worked on snapshots enhancements: implementation of the zstandard compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes.

    Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client.

    Low level overview

    • Completed the issue Use 'zstandard' compression for snapshot archives #876
    • Completed the issue Design & implement stress test tool for aggregator - phase 2 #1155
    • Completed the issue Provide progress information with '--json' option in Client #1095
    • Completed the issue Make client download and extract the archive simultaneously #1115
    • Completed the issue Add aggregator Cardano node version in snapshot artifact #948
    • Completed the issue Make Cardano node version part of the Mithril network configuration #947
    • Completed the issue Post deployment 'mainnet' infrastructure #1091
    • Worked on the issue Errors refactoring #798
    • Worked on the issue Add Cloudflare protection of infrastructure #986
    • Completed the issue Failed to restore recent snapshot with strange error #1160
    • Completed the issue Update 'ed25519-dalek' to '2.0.0' #1188
    • Completed the issue Add target networks blocks in release notes #1151
    • Completed the issue Fix end to end 'wait_for_the_expected_time' test #1191
    • Completed the issue Fix docs 'git checkout' command #1174

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack.
    • Infrastructure: Various improvements of our analysis pipeline have been merged to master, supporting safe log truncation.
    • Tracing: Namespace consistency checks have been merged to master along with a curated configuration for benchmarking.
    • Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.

    Low level overview

    Benchmarking

    We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer.

    With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance.

    The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack.

    Infrastructure

    As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation +operation that keeps the interdependencies of block events intact.

    Truncation might happen at a slightly different point +in time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time.

    Tracing

    Consistency checking of namespace implementation and configuration when using the new system has been completed. +This feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a cardano-node shows inconsistencies with the namespaces the system provides - and hence needs attention.

    Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many +detailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable.

    Nomad backend

    The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the +first real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend.

    · 3 min read
    Damian Nadales

    High level summary

    We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation. +On the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers. +The Consensus release engineer finished his rotation: version 8.3.0-pre of cardano-node is releasing 2023 September 5.

    UTxO-HD

    • We ran the first successful system-level benchmarks for UTxO-HD (see #203) using the in-memory backend.
      • We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot.
      • After the mempool regression is fixed the benchmarks need to be ran again.
      • System-level UTxO-HD benchmarks with the LMDB are still pending.
    • UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see #344).
    • We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in GetUTxOByAddress (see this comment). Preliminary results are promising.
    • Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (#344), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.

    Tech debt

    • We added tests that Consensus emits valid CBOR (#3099). This helped us detect a couple of serialization bugs. The tests still need to be merged into the main branch (#323).

    Support

    • Nick Frisby finished his release engineer rotation; cardano-node 8.3.0-pre is releasing 2023 September 5.
    • We helped to investigate a protocol version bug in Sanchonet (see #3491).
    • We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see #91.

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • finalising a presenting performance analysis internship work to the +formal methods team

    • developed a new Isabelle mini-protocol framework and examples

    • planning an extended version of the ICE DeltaQ paper

    • working on algebraic rules for properisation of any-to-finish

    + + + + \ No newline at end of file diff --git a/page/14/index.html b/page/14/index.html new file mode 100644 index 00000000000..bfff9289d10 --- /dev/null +++ b/page/14/index.html @@ -0,0 +1,57 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Sasha Bogicevic

    High-level summary

    This week, the Hydra team focused primarily on changes needed in the network +layer and have the first draft document related to needed design. They also +improved the user experience by allowing a commit using inline datums. +Discussed the off-chain governance with researchers and improved internal model +tests.

    What did the team achieve this week

    • Monthly report published
    • Small changes to hydraw and tutorial in light of the Masterclass
    • Investigated a bug and saw it was solved by recent developments
    • Improved the model tests by fully validating L1 transactions
    • Enhanced the /commit API to also allow commit from scripts with inline datums (user request)
    • Discussed off-chain governance with IOG and CF researchers
    • Drafted a first network specification document in the context of Network resilience

    What are the goals of next week

    • Have a clear understanding of the changes we need for the "Improve network resiliency" feature
    • Groomed and agreed plan on incremental commits/decommits
    • Updated tutorials including CI workflows to check consistency
    • Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)

    · 2 min read
    Alexey Kuleshevich

    High level summary

    Broadly speaking the Ledger team focused on a few main areas of Conway era:

    • Creation of voting state snapshots in order to correctly delay ratification for one epoch
    • Validation of the Governance Actions sequencing and ordering
    • Proper expiry of DReps and Proposal Procedures
    • Expanding Conway Genesis functionality
    • Utilization of some of the new Protocol Parameters in ledger validation rules

    Low level summary

    Conway era

    • pull-3659 - Validate Network for ProposalProcedure and TreasuryWithdrawal
    • pull-3637 - Avoid using sequence of tuples, by adding GovActionId to GovActionState
    • pull-3651 - Inactive DReps
    • pull-3664 - Track proposal expiry
    • pull-3668 - Add min committee size predicate to NewCommittee
    • pull-3669 - Add Proposal deposit check against PParam
    • pull-3676 - Fix inactive PoolStake not counting as Drep Stake
    • pull-3635 - Make snapshots of GovActionsState
    • pull-3670 - Validate previously enacted govAction
    • pull-3694 - Improve error reporting on the positive coin decoder
    • pull-3674 - Added RATIFY thresholds
    • pull-3684 - Add proposal delaying, remove predicate failure from ENACT
    • pull-3688 - DRep Refunds and update evalTransactionBalance

    Improvements and releasing

    • pull-3677 - Minor patch that fixes the DRep distribution computation
    • pull-3686 - Post patch release fixup
    • pull-3695 - Changelog for cardano-node-8.3 release
    • pull-3683 - Add two new bench mark programs

    Testing

    · 3 min read
    Marcin Szamotulski

    High-level overview of sprint 43

    In this sprint, we received contributions from CF & Galois. Karl Knutsson +(CF) has addressed various issues regarding peer churning in P2P, timeouts +and our WireShark dissector. While the Galois developers focused on +addressing issues from their review last year. See below for more details.

    We continued working on bootstrap peers ouroboros-network-#4661.

    We refactored our test suites: they are split into io-tests which require to +be run natively on all platforms (these tests mostly contain tests that +require IO system calls) and sim-tests which are platform independent. We +run io-tests on all supported platforms (e.g. x86_64-linux, +x86-64-darwin, aarch64-darwin and x86_64-w64-mingw32 (Windows)) natively. +The sim-tests are not executed on Windows due to memory limitations on +GitHub Actions runners. ouroboros-network-#4653

    We also started rebasing typed-protocols refactoring branches.

    Marcin was appointed as the cardano-node release engineer for the 8.4.0-pre +version. So far he integrated cardano-ledger-conway-1.8 and +ouroboros-network-0.9.1.0 to ouroboros-consensus, cardano-cli and +cardano-api. Once we will have an integration branch for cardano-node, +cardano-ledger-conway-1.8 and ouroboros-consensus packages can be released +to CHaP and PRs can be merged once they go through review & CI.

    We also fixed some smaller issues regarding peer sharing (both were discovered +by Karl from CF). More details are included below.

    Progress on P2P addoption

    SPO relays

    There are currently ~2000 relays running P2P +enabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On +16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil +Ada.

    P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

    Data has been kindly provided by CF and their mainnet monitoring +infrastructure.

    IOG relays

    As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all +IOG relays will be running P2P.

    Detailed description

    In this sprint, we got a few contributions from CF:

    • Karl made peer churning mechanism less aggressive ouroboros-network-#4656; and
    • he added timeouts for idle states in ChainSync & KeepAlive +miniprotocols. These timeouts help a node remove idle connections from the +responder (server) side ouroboros-network-#4648.
    • he improved the WireShark dissector by adding support for the peer-sharing mini-protocol ouroboros-network-#4656.

    Galois has been making progress in addressing some of the issues they raised in their review (last year):

    Peer Sharing

    • Light peer sharing is only enabled when peer sharing is turned on ouroboros-network-#4652;
    • Handshake incorrectly reports peer sharing value. It's supposed to relay the +remote value, but instead, it returns the local value. ouroboros-network-#4642 (in review).

    Async Demotion Test Fix

    • We fixed an async demotion test failure which turned out to be a weakness of +the test itself rather than a bug in the connection manager. ouroboros-network-#4655

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes
    • Work on a new capkgs repository started -- "Content Addressed Packages"
      • This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output
      • These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do
      • Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers

    Lower level summary

    Capkgs

    • Content addressed packages -- new repo: capkgs

    Cardano-ops

    • Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: cardano-ops-compare

    Cardano-parts

    Cardano-perf

    Cardano-world

    Sanchonet-demo

    · 2 min read
    Carlos LopezDeLara

    2023-08-16 - 2023-08-29

    High level summary

    CLI is making progress towards phases 3 and 4 of SanchoNet.

    • Ability to create info, no-confidence and new committee governance actions.

    • Voting as DREP is possible now on the CLI

    • API is now using Ledger's PParams and VotingProcedures

    • Expose following queries from consensus:

      - GetGovState
      - GetDRepState
      - GetDRepStakeDistr
      - GetCommitteeState
      - GetConstitution

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    + + + + \ No newline at end of file diff --git a/page/15/index.html b/page/15/index.html new file mode 100644 index 00000000000..3a4061bc4c1 --- /dev/null +++ b/page/15/index.html @@ -0,0 +1,42 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of zstandard compression of the snapshot archive, and streaming its download and decompression in the client.

    Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer.

    Low level overview

    • Completed the issue Create explorer page with registered signers #1097
    • Completed the issue Simplify logs on the Signer/Aggregator #1106
    • Completed the issue Refactor (de)serialization of crypto entities #668
    • Completed the issue Mithril client last snapshot download #1078
    • Completed the issue Use the '/signers/registered' route to verify if a signer is registered #1152
    • Worked on the issue Provide progress information with '--json' option in Client #1095
    • Worked on the issue Use 'zstandard' compression for snapshot archives #876
    • Worked on the issue Make client download and extract the archive simultaneously #1115

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team conducted the monthly review meeting for Agust,which +continously ensures transparent communication and project evaluation.

    In terms of community engagement, the Hydra team gave a Hydra master-class at +RareEvo workshop as an educational initiative for the community. +Additionally, the team updated the Hydra demo and tutorial to include Mithril +and latest release changes.

    They also focused on exploring the Hydra network resiliance in order to improve +hydra-node availability, as it becomes stuck very easily and that leads to a +bad user experience.

    What did the team achieve this week

    • Hydra master-class at RareEvo workshop!
    • Monthly report & review meeting
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Groomed network resilience and explorer features #188
    • New ADR for “Resourced based API” #1028

    What are the goals of next week

    • Have a poc on network resilience working #188
    • Fix issue #931: “Chain state in head state not updated on replayed observation”
    • Fix issue #1039: "Close transaction dropped from cardano-node"

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: Benchmarking node version 8.2.1 has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD.
    • Infrastructure: Our analysis pipeline has received improvements reducing memory footprint.
    • Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing.
    • Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.

    Low level overview

    Benchmarking

    We've performed and analysed the benchmarks for the 8.2.1 version of cardano-node as part of our release benchmarking cycle.

    Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths.

    Infrastructure

    As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held +in memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline.

    Tracing

    The next portion of optimizations has been completed and merged to master, getting rid of Haskell's native String representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by cardano-node.

    The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup.

    Nomad backend

    The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster +and porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend.

    · 2 min read
    Damian Nadales

    High level summary

    On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests. +On the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base.

    UTxO-HD

    • We addressed the issues that came from the benchmarking and testing phase (see #314).
      • We fixed the operational-certificate update exception (#305).

    Tech debt

    • We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see this branch).
    • We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see this branch).
    • We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see #275).
    • We decreased the flakiness for our test suite (#284).
    • We incorporated and merged the pull-request on query versioning (#273).
    • We started working on new performance-based regression tests for mempool operations.

    Support

    • Nick Frisby continues with his engineer responsibilities. Notably getting the Consensus release out for node pre-release 8.3. Nick also began integrating it into downstream branches (cardano{-api,-cli,-node}). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • Development of an automated prover for showing conformance of +programs to state machines (as part of the mini-protocol framework)

    • Completion of the documentation of the (current state of the) +mini-protocol framework

    • Discussion about two DeltaQ lectures with two practical sessions as part +of 4th year masters course on distributed systemsby colleagues at UC +Louvain in the Autumn

    • Discussion about four DeltaQ lectures by colleagues at U. Bergen as part +of a 5th year Masters course in the Autumn

    • Adapted original DeltaQ implementation to the new typeclasses and +wrote property tests for its algebraic laws

    + + + + \ No newline at end of file diff --git a/page/16/index.html b/page/16/index.html new file mode 100644 index 00000000000..2f226ef8207 --- /dev/null +++ b/page/16/index.html @@ -0,0 +1,61 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team released version 0.12.0, a significant update that +brings support for cardano-node 8.1.2, along with performance enhancements and +various API improvements. Additionally, the team successfully onboarded a new +contributor who is now actively participating in operating a Hydra Head. They +took part in a meeting of the Intersect open source committee and prepared the +Hydra master-class for RareEvo, an educational initiative for the community.

    If you happen to be at RareEvo, register for the Hydra master-class using this +form. +We hope to make it possible to follow along on-line as well and will announce +details on the Hydra announcements channel on the IOG discord +server.

    What did the team achieve this week

    • Released version 0.12.0 which adds support for cardano-node 8.1.2, performance +and several API improvements. Release notes
    • Replaced commit via websocket with external draft + submit. #954
    • Onboarded new contributor to the point where he actively participates in operating a Head now.
    • Joined a first meeting of the Intersect open source committee
    • Prepared the Hydra master-class for RareEvo.

    What are the goals of next week

    • Monthly review meeting
    • Run the Hydra master-class at RareEvo!
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Clear out red bin items (technical debt)
    • Groom network resilience and explorer features

    · 2 min read
    Alexey Kuleshevich

    High level summary

    The ledger team made great progress in advancing Conway era forward. In particular, voting +for DRep and Stake Pool Operators is now at the state that can be used by downstream +components. Addition of new ledger state queries makes it possible to verify changes to +the governance state, such as placement of votes, submission of governance proposals, +inspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the +ability to enact all of the governance actions, except for the hard fork initiation.

    Low level summary

    Conway progress

    • pull-3577 - Move PParams to GovState
    • pull-3609 - Adjust thresholds for sanchonet
    • pull-3604 - README: update CIP-1694 link
    • pull-3616 - Switch TreasuryWithdrawals to use RewardAcnt
    • pull-3599 - Add governance action well-formedness check
    • pull-3607 - Rename governance to gov
    • pull-3601 - Added DRep anchors
    • pull-3615 - Add optional previous GovActionId in some ProposalProcedures
    • pull-3596 - Upgradeable families
    • pull-3625 - Change constitution to use Anchor
    • pull-3592 - Added pulsing incremental computation of the DRep distribution
    • pull-3523 - Treasury donations
    • pull-3633 - Prevent state changes on phase2 failure
    • pull-3634 - Disable serialization of protocolVersion param update
    • pull-3630 - Implemented DRep refreshing
    • pull-3640 - Remove crypto parameterization from AnchorData
    • pull-3636 - Implement DRep ratification with an "always passing"; threshold
    • pull-3648 - Governance queries
    • pull-3650 - Change environment for ShelleyPOOLREAP rule
    • pull-3658 - Set DRep ratify threshold to 51%
    • pull-3628 - DELEG, POOL, GOVCERT conformance with Spec v0.8

    Testing

    Improvements and releasing

    • pull-3660 - Fix bounds and versions
    • pull-3661 - Adjust versions, bounds and CHANGELOGs to account for the latest release

    · 3 min read
    Marcin Szamotulski

    High-level overview of sprint 42

    Eclipse Evasion

    We merged and released a new version of the ouroboros-network package (version +0.9.0.0) which includes big ledger peers feature. +This is the primary peer selection mechanism to defend against eclipses. We +also prepared a PR to updated ouroboros-cosnensus +and ekg-forward packages.

    CDDL specs for protocol codecs

    We made the cddl spec for network codec more inline with the implementation +which is highly polymorphic. cddl doesn't have the notion of polymorphism, +but has any which can generate any valid cbor term. We matched it with an +Any type on the Haskell side and made all remaining tests & specs use it. +This simplified the specifications and made it easier to understand which parts +are defined in the spec, and which parts are left unspecified. See +ouroboros-network#4595.

    Ouroboros-Network-Framework API changes

    We also released ouroboros-network-framework and other network components. +The ouroboros-network-framework package contains a redesign of API exposed to +ouroboros-consensus. We consolidated, cleaned it and made it easier to +extend in the future if there will be new arguments that need to be passed to +mini-protocol initiator and responders which comes from the low-level network +layer.

    Nix setup (CI)

    We also made a major review of our nix setup. With help from our DevX team +we ended up with a clean flake.nix file which can:

    • compile & test the code on x86_64-linux, x86_64-darwin and aarch64-darwin
    • cross-compile to Windows on x86_64-linux

    And provides a shell which contains all the build tools, including ghc-9.6, +hls, cddl, and more. See ouroboros-network#4640, +ouroboros-network#4643.

    Other contributions

    Cardano Network Service Assurance

    • The work and writeup in finishing up the CNSA, first stage (first +contract).
    • Getting Sam Cowger (Galois Inc) up to speed.
    • The IOG Networking team carried a reivew of CNSA project progress: a limitted +code & design review.

    Galois Review

    Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues

    scoping, requirements, and getting started.

    CI

    We added a nightly run for GitHub actions and made the GitHub actions test be +executed with extra concurrency ouroboros-network#4637, ouroboros-network#4649.

    We also added GitHub's dependabot ouroboros-network#4650.

    Bootstrap Peers

    We settled on implementation design of bootstrap peers which is being +implemented, ouroboros-network#4615.

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet and shelley-qa environments were updated to 8.2.1-pre.
    • Work on two new repos utilizing flake parts for cardano cluster generation, automation and operation.

    Lower level summary

    Cardano-ops

    Cardano-parts

    Cardano-perf

    Cardano-playground

    Cardano-world

    Inputs-check

    • A flake parts module to check input closure sizes recursively for optimization considerations: inputs-check

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Include MuSig2 description in cryptography handbook
    • kes_agent: Finilising test and CI. Working on KES binary

    Low level summary

    Mithril

    • Full Node Verifier merged #939.

    MuSig2

    • Started describing MuSig2 to include it as part of the cryptography handbook

    Sidechains

    • Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in this fork.

    KES agent

    • KES agent is ready:
      • CI ready #19
      • Receipt confirmation message #20
      • KES agent binary ready #21
      • Control client implemented #11
    + + + + \ No newline at end of file diff --git a/page/17/index.html b/page/17/index.html new file mode 100644 index 00000000000..226a48f4961 --- /dev/null +++ b/page/17/index.html @@ -0,0 +1,51 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Kostas Dermentzis

    High level summary

    We have integrated many new Conway feutures and allow db-sync to sync sanchonet. +We also continued testing and improving the new db-sync options.

    Lower level summary

    • Conway integration +#1484
    • Support for Sanchonet +#1476
    • Stake distribution is computed earlier +#1484
    • Deposit ledger events are now used. This reduces the db queries and makes syncing faster +#1484
    • Testing new db-sync options +#1466
    • Added support for ghc-9.6 +#1479
    • Tech debt: improve exceptions +#1471

    · 4 min read
    Iñigo Querejeta Azurmendi

    Security Issue Report: SECP256k1 bug

    Date Occurred: July 15, 2022 +Severity: Potentially Very High if exploited on Mainnet +Authors: Iñigo Querejeta Azurmendi

    Date of Report: August 17, 2023

    Summary of Issue

    Criticality Level

    Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet +Context

    New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains. +How was the Issue Detected

    The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there.

    What Action was Taken

    The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod). +Fixes were applied to prevent the use of the primitives. +A full security audit was carried out on the bindings. +The rollout of the primitives was postponed to a new hard fork (Valentine)

    Potential Effect

    The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction.

    Actual Effect

    • Delay to the Vasil hard-fork
    • Temporary removal of SECP256k1 primitives
    • Additional hard-fork to introduce SECP256k1 primitives

    Ongoing Mitigations Needed, if any

    None

    Responsibility for Mitigations

    Core team

    Detailed description of Incident

    New Plutus secp256k1 cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet.

    The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing.

    • This is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an expected structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely.
    • The same happened with the Schnorr verification function. It takes as input a SECP256k1_xonly_pubkey, which is again an opaque structure that holds a parsed and valid public key.

    The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated.

    The fix was addressed in this PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts.

    Recommendations

    • Check all new Plutus bindings for correct use.
    • Audit all new Plutus built-in bindings.
    • Continue to develop specific End-to-End tests for all new Plutus features.
    • Do not assume that any existing library functions are "safe". Treat all external calls circumspectly.

    · 2 min read
    Carlos LopezDeLara

    2023-08-02 - 2023-08-15

    High level summary

    • cardano-node 8.2.1 (pre-release) to SanchoNet
    • Continue moving CLI into era-based top level command structure
    • Wire-up DREP key generation,
    • Fix DREP deregistration certificates
    • Implement Constitutional Committee Key generation on the CLI
    • Introducing era-based protocol parameters on the API
    • Removing depracated functions and types on the API

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    Fix broken links in docs

    CI & project maintenance

    · One min read
    Franco Testagrossa
    Sebastian Nagel

    High-level summary

    This week, the Hydra team updated hydra-node to support cardano-node version +8.1.2, ensuring compatibility with the latest mainnet release. The team also +participated in discussions about a "cardanonical" JSON schema and added it as a +submodule to the project, contributing to improved data modeling and +interoperability.

    In terms of community engagement, the team successfully onboarded a new +contributor, also participated in a RareEvo Twitter space, and continued +preparations for the Hydra master-class.

    What did the team achieve this week

    • Updated dependencies to support cardano-node 8.1.2 #1007
    • Engaged in discussions about a cardanonical json schema and +add it as submodule to the project +#1013
    • Onboarded a new contributor to the hydra project (@locallycompact)
    • Joined RareEvo twitter space and continued preparation of hydra master-class

    What are the goals of next week

    • Update & streamline tutorial to work with latest version of hydra-node
    • Remove the internal commit functionality #954
    • Release 0.12.0

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We've concluded benchmarking node version 8.2.0.
    • Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration.
    • Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.

    Low level overview

    Benchmarking

    As part of our release benchmarking cycle, we've completed and analysed the runs for the 8.2.0 version of cardano-node. In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version.

    Tracing

    A significant amount of optimizations for the new tracing system has finally been merged to master. At the moment, +we're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding +insight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward.

    Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing.

    Nomad backend

    The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent +and reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were +able to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks.

    A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to master.

    + + + + \ No newline at end of file diff --git a/page/18/index.html b/page/18/index.html new file mode 100644 index 00000000000..c019f21ad1f --- /dev/null +++ b/page/18/index.html @@ -0,0 +1,37 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the Mithril protocol’s mainnet beta launch: the release-mainnet network is now consistently producing new certificates and snapshots! The team has released a new distribution 2331.1 which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the mainnet infrastructure.

    Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network.

    Low level overview

    • Released the new distribution 2331.1
    • Completed the epic Release 'mainnet' Mithril network #918
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Completed the issue Design & implement basic stress test tool for aggregator - phase 1 #991
    • Worked on the epic Post deployment 'mainnet' infrastructure #1091:
      • Completed the issue Create Production Infrastructure Runbook #1085
      • Completed the issue Ingest 'mainnet' metrics/logs in Grafana #1122
    • Worked on optimizations:
      • Completed the issue Add a 'clean' file to extracted database in client #1131
      • Worked on the issue Create explorer page with registered signers #1097
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on bugs:
      • Completed the issue Client fails to unpack some snapshot archive #1137
      • Completed the issue The 'release-preprod' network stopped producing certificates #1114
      • Completed the issue The 'release-mainnet' network does not show up in the explorer #1111
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.2' #1090
    • Worked on troubleshooting:
      • Completed the issue Signer can't sign with 'Invalid signature for party' error #1125

    · 2 min read
    Damian Nadales

    High level summary

    This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of fs-sim and fs-api, and released strict-checked-vars.

    UTxO-HD

    • Rebased UTxO-HD on top of node 8.2 (issue)
    • Address new Maybe translations for UTxOs in Conway 1.6. (PR).
    • Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory.
    • Fixed an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully.
    • Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running QueryUTxOByAddress (PR).
    • Measured the speed of QueryUTxOByAddress under different queryBatchSize values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution.
    • Refactored and implemented ledgertable-related classes for the general HardforkBlock.

    Genesis

    • Frisby and Esgen continue to engage with the Researchers on grinding against the Genesis design.

    Fostering collaboration

    • Drafted a document explaining versioning of local state queries #273.

    Support

    • Frisby is the release engineer this cycle.
    • Successfully created work-in-progress ouroboros-consensus and cardano-api commits that integrate the 2023 Aug 7 tip of cardano-ledger. This will require a release of ouroboros-consensus, which hasn't happened yet.

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Finalised the missing fuzz tests
    • kes_agent: engineer on PTO. Work halted

    Low level summary

    Mithril

    • Work on a mithril flaky test #1105
    • Keep working on Full Node Verifier #939. +Should be merged in the coming week.

    MuSig2

    • Finalised the fuzz tests #43

    Sidechains

    • Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is formalising mini protocols and also further developing the +performance modelling prototype.

    Details

    • Developing new framework for specification and verification of +mini-protocols which is closer to the Haskell implementation.

    • Developed a new internal representation for the DeltaQ algebra that +allows for more modularity in backend implementations

    • Discussions regarding the Cardano networking specification

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team achieved notable progress in various aspects of the +project. The team updated the use case section for auctions on the /unstable +branch of the website, improving the understanding of Hydras applicability.

    From the development side, the team successfully completed event-sourced +persistence, a key enhancement in the projects architecture which improves +off-chain transaction processing performance. They also added a +submit-transaction endpoint to the API.

    In addition to project-related progress, the team actively engaged in community +reviews for several catalyst proposals related to Hydra and Mithril, +contributing to the wider Cardano ecosystem.

    Finally, the full report for the month of July was also published here.

    What did the team achieve this week

    • Published the monthly report for July
    • Updated the use case section for auctions (published on /unstable branch)
    • Completed event sourced persistence #913
    • Added a submit-transaction endpoint to the API #966
    • Community reviews for several catalyst proposals related to Hydra and Mithril
    • Created a network testing tool (hydra-net) #1006

    What are the goals of next week

    • Update hydra-node to work with cardano-node version 8.x
    • Remove the internal commit functionality
    • Release version 0.12.0
    • Update & streamline tutorial to work with latest version of hydra-node
    + + + + \ No newline at end of file diff --git a/page/19/index.html b/page/19/index.html new file mode 100644 index 00000000000..149fc2bc2fe --- /dev/null +++ b/page/19/index.html @@ -0,0 +1,54 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Alexey Kuleshevich

    High level summary

    The ledger team was working almost exclusively on the Conway era implementation. In +particular, the main focus was directed towards solidifying transaction related types and +their binary representation. We also directed some effort into unblocking Plutus team with +respect to PlutusV3 integration.

    Low level summary

    Conway progress

    • pull-3552 - Allow Constitutional Committee Hot Key to be ScriptHash
    • pull-3581 - Make Constitutional Committee Cold Key to be ScriptHash
    • pull-3571 - Implement a portion of the TICKF rule.
    • pull-3556 - Add Script to Constitution
    • pull-3576 - Add optional Anchor to ConwayRegDRep certificate
    • pull-3495 - Implement refund logic for Proposal deposits
    • pull-3579 - Change voting procedure in the transaction to a nested Map
    • pull-3585 - Rename CommitteeCert into a GovCert
    • pull-3587 - Remove DelegStakeTxCert from the COMPLETE pragma for TxCert
    • pull-3586 - Add CurrentTreasuryValue to TxBody
    • pull-3588 - Rename key roles
    • pull-3557 - Update NewCommittee action to use RewardAcnt and add more info
    • pull-3595 - Add ConwayUpdateDRep constructor to ConwayTxCertGov type
    • pull-3600 - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway
    • pull-3597 - Update ProposalProcedure return address to be a RewardAcnt

    Testing

    • pull-3374 - New features for generation subject to constraints
    • pull-3519 - Basic Conway features test

    Bugfixes

    Plutus integration

    • issue-3538 - A fairly complete specification was created for the PlutusV3 context
    • pull-3593 - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality

    Improvements and releasing

    • pull-3574 - Improve clarity and performance of collateral Non-ADA validation:
    • pull-3573 - Update top-level CHANGELOG.md with cardano-node relevant changes
    • pull-3555 - Bump pygments from 2.12.0 to 2.15.0 in /doc
    • pull-3575 - Bump certifi from 2022.12.7 to 2023.7.22 in /doc
    • pull-3567 - Backport mint field translation bugfix
    • pull-3568 - Fixed typo in byron ledger spec
    • pull-3572 - Release/backport tickf bugfix

    · 2 min read
    Marcin Szamotulski

    High-level overview of sprint 41

    24th July - 6th August 2023

    We started the implementation of bootstrap peers. Bootstrap peers are designed +to provide a safety guarantee for nodes joining the network while still taking +advantage of the distributed network for nodes that are synced. This will be +an intermediate step before Genesis which will allow for further distribute the +system. The bootstrap peers will be run by some trusted partners like CF, +Emurgo or IOG. They are primarily designed for leaf nodes (e.g. full node +wallets), which often end up syncing and require access to the honest chain. See +ouroboros-network#4615 for a more detailed implementation plan.

    Other contributions

    We started to use nothunks library to discover if we have any unevaluated +thunks which can lead to memory leaks ouroboros-network#4633. We found +a small one in the peer metric component of the P2P networking stack. Fixing +it put us on a small detour of fixing the API of the strict-checked-vars +package: cardano-base#431, cardano-base#432, as well as adding NFData +instance to io-classes. We also improved nothunks +library to make debugging easier and we provided a NoThunks instance for +ThreadId which we will need in the future (see nothunks#33).

    We released a new version of io-classes (version 1.2.0.0) and related +packages to Hackage.

    We addressed all review comments on the eclipse evasion PR which introduces big +ledger peers, ouroboros-network#3886.

    We fixed how SIGHUP signal handlers are registered, so it's not possible to +shutdown a node which was starting while trying to update network topology, +see cardano-node#5421.

    I didn't mention that in the previous update, so here it goes: in the previous +sprint we released ouroboros-network-0.8.2.0 and +ouroboros-network-framework-0.7.0.0.

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version 8.2.0.
    • Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing.
    • Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6.
    • Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.

    Low level overview

    Benchmarking

    The 8.2.0 version of cardano-node required adjustment of some of the sanity checks that are part of our benchmarking +cluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version.

    Tracing

    The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint +when using it as default for a running node.

    A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any +inconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node. +This feature adds another layer of robustness to the whole system.

    Infrastructure

    A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler +versions. We've future-proofed our benchmarking code.

    Nomad backend

    The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend +accordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant.

    The validation phase is ongoing. We were able to perform successful runs and analyses for various 8.x node versions, including 8.2.0-pre. With parallel runs on the current cluster, we hope to measure the same effects we've observed with the +nomad backend - which will be a big step towards production use.

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Preprod and preview envionments were updated to 8.1.2.
    • Sanchonet and shelley-qa environments were updated to 8.2.0-pre.
    • Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.

    Lower level summary

    Cardano-ops

    Cardano-perf

    Cardano-world

    · 2 min read
    Carlos LopezDeLara

    2023-07-19 - 2023-08-01

    High level summary

    • Release of Node 8.2.0
      • Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694.
      • This release is phase 1 of the SanchoNet roll out
      • Allows SPOs to vote on changes to the on-chain constitution.
      • Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag.
      • Updates to the networking packages prepare the road for peer sharing.
    • cardano-cli and cardano-api continue to integrate Conway era features
    • Continue refactoring of cardano-testnet

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    + + + + \ No newline at end of file diff --git a/page/2/index.html b/page/2/index.html new file mode 100644 index 00000000000..f9996bda93f --- /dev/null +++ b/page/2/index.html @@ -0,0 +1,51 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team released the initial version of the Mithril client library, enabling developers to integrate core Mithril features into their applications. They also released a new distribution, 2347.0, which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements.

    The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance.

    Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users.

    Low level overview

    • Release of the mithril-client library crate
    • Publication of a dev blog post about the released Mithril library
    • Released the new distribution 2347.0
    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Support P2P relay in infrastructure #1361
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue mithril-client verbosity not following usage menu #1325
    • Completed the issue Error message for mithril-client snapshot download #1375

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team spent significant time opening a head among +themselves on mainnet using the release candidate, revealing and +addressing lurking bugs such as +#1174. Also +required was this change to dynamically calculate the min utxo value +#1176, a +necessary adjustment following the switch to inline datums. The team +engaged with cardano-cli / cardano-api maintainers to discuss recent +changes and collaborated on drafting feature ideas, including providing +Conway support +for the Hydra roadmap. As part of ongoing improvements, they +experimented with writing the specification in markdown instead of +LaTex.

    What did the team achieve this week

    • Opened head among us on mainnet and uncovered a few lurking bugs like +#1174 in the +release candidate
    • Calculate the min utxo value instead of hard-coding it +#1176, which is +needed since we switched to inline datums.
    • Met with the cardano-cli / cardano-api maintainers to discuss +recent changes and way forward
    • Drafted features ideas to provide Conway +support on the +Hydra roadmap
    • Experimented in writing the specification in markdown instead of LaTex

    What are the goals of next week

    • Have the Monthly review meeting with several demos
    • Release version 0.14.0 with this +scope
    • Complete tidying up chain layer via stateless observation changes in +hydra-node +#1096
    • Update dependencies to prepare for Conway +#1114

    · 4 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • The cardano-node nixos service now supports SIGHUP p2p topology reloading when the useSystemdReload option is enabled

    Lower level summary

    Capkgs

    • Update cardano-db-sync and offchain-metadata-tools package paths and/or references: capkgs-compare

    Cardano-node

    • Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: cardano-node-pull-5537
      • Creates a useSystemdReload bool option for the cardano-node nixos service
      • This will move the topology file(s) to /etc/cardano-node/topology-$i.yaml and inject systemd reload hooks for p2p configured cardano-node instances
      • Moving topology files to /etc also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired

    Cardano-parts

    • Adds a metadata server profile and a number of other features and improvements: cardano-parts-pull-20
      • Adds a new metadata-service profile
      • Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile
      • Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish
      • Adds extra node list producers and public producers for cardano-node-topology profile
      • Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch
      • Adds select systemd metrics reporting to grafana-agent profile
      • Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS
      • Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation
      • Adds support for grafana recording rules in the template files
      • Improves cardano-group profile handling of producers with respect to multiple instance nodes
      • Improves grafana-agent profile metrics handling for multi-instance cardano-node servers
      • Improves smash service preStart handling while waiting for a node socket
      • Updates Justfile for ERA_CMD demo support
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Defaults cardano-postgres profile psqlrc use to false

    Cardano-playground

    • Adds a new testnet metadata server, cluster webserver, and other improvements: cardano-playground-pull-6
      • Adds a new metadata server
      • Adds a new webserver for the cluster's static virtualhost needs
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds systemd metrics monitoring to the cluster
      • Resizes sanchonet machines to support the growing chain
      • Completes migration of preprod from world
      • Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes
      • Updates Justfile for ERA_CMD demo support
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Migrates book static code to playground from world, with refactor, cleanup and updates
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules

    Offchain-metadata-tools

    • Adds db password option with obfuscation plus misc improvements: offchain-metadata-tools-pull-61
      • Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services
      • Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile
      • Moves from std use in the nix flake to standard flake schema
      • Fixes hydra CI failures
      • Builds update-docs in hydra to avoid long local build times
      • Removes deprecated tullia
      • Removes deprecated check-hydra from pkgs
      • Removes deprecated bors files and references

    · 2 min read
    Alexey Kuleshevich

    High level summary

    Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of +CDDL specification. Important bugfixes include:

    • Fix deserialization of ValueNotConservedUTxO predicate failure that could not +previously report zero ADA.
    • Fix deserialization of CostModels in the PParamsUpdate. Invalid CostModels are no +longer allowed, only CostModels for unrecognized Plutus versions are allowed starting +with Conway
    • Fix returning of Deposits for ProposalProcedures

    Testing tooling has been improved and new tests have been implemented for Conway era.

    Low level summary

    Conway

    • pull-3858 - Restructure computing Refunds and Deposits in a TxBody across all eras
    • pull-3860 - Removed mock/crypto.cddl, added optional tag to sets
    • pull-3864 - Fix Proposal deposits and add deposit tests to imp tests
    • pull-3859 - Rename ProposalsSnapshot to Proposals
    • pull-3867 - MaryValue fixes
    • pull-3869 - Indicate that tag 258 is optional for OSet. Fix rational CDDL
    • pull-3863 - Improve deposits refunds re-usability
    • pull-3861 - Fail PParamsUpdate deserialization for invalid costmodels in Conway
    • pull-3875 - Fix cddl spec for CostModels in Conway
    • pull-3876 - Change 4 PParam fields from EpochNo to EpochInterval
    • pull-3884 - Relax requirement on the Set tag 258 to be enforced in the next era

    Testing

    • pull-3868 - Improvements to support property tests on Traces with simple Tx with DRep related Certs
    • pull-3792 - RATIFY and GOV constraint tests
    • pull-3885 - Added a test for genTxAndNewEpoch
    • pull-3886 - QuickCheck Imp integration

    Improvements and releasing

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer.

    Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release.

    Low level overview

    • Completed the issue Prototype a P2P relay with libp2p #1326
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Worked on the issue Support P2P relay in infrastructure #1361
    • Completed the issue mithril-client fails to extract archive #1352
    + + + + \ No newline at end of file diff --git a/page/20/index.html b/page/20/index.html new file mode 100644 index 00000000000..9ab41397933 --- /dev/null +++ b/page/20/index.html @@ -0,0 +1,57 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Marcin Szamotulski

    Network Update (Sprints 39 & 40)

    The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away. +It was great to see and talk to so many of the community members.

    Sprint 39 (Jun 26 - Jul 09)

    Major changes

    Now the following list of traces will be turned on by default:

    node-to-client protocol
    • LocalConnectionManagerTracer
    • LocalInboundGovernor
    • LocalHandshake
    • LocalServer
    node-to-node protocol
    • Server

    See cardano-node#5353. This will be released in node-8.2.0.

    We made sure that cardano-client-0.1.0.x library (which is db-sync) is not using the experimental node-to-client protocol. +The cardano-client-0.2.0.0 was not affected. +See ouroboros-network#4612.

    We merged the dynamic block production feature to ouroboros-consensus (also available in the cardano-node-8.2.0 release). +Dynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes. +See ouroboros-network#3159, [ouroboros-consensu#140].

    We continued to review the implementation of big ledger peers for eclipse evasion, see ouroboros-network#4462.

    Minor changes

    Sprint 40 (Jul 09 - Jul 23)

    Major changes

    We integrated ouroboros-network-0.8.2.0 with the master branch of cardano-node for the 8.2.0 release (the version match between ouroboros-network and cardano-node is purely accidental). +This includes:

    • integration with dynamic block production feature. +This feature is documented in the following PR.
    • Warm valency for local root peers (see below).

    For the full list of features included in the 8.2.0 release from the network side, please take a look at the pre-release nodes.

    We improved the memory footprint of peer metrics measured by the P2P stack. +Peer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation). +See ouroboros-network#4620. +The improvement will be available in cardano-node-8.2.0.

    We added an optional explicit warm valency to local root peers of the P2P topology file. +Previously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to. +The hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones. +Warm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses. +See ouroboros-network#4575, cardano-node#5409.

    · 2 min read
    Sebastian Nagel

    High-level summary

    During this week, the Hydra team achieved significant progress in various areas. +They conducted the monthly review meeting for July, which continously ensures +transparent communication and project evaluation. The team migrated the core +logic of the node to an event-sourced architecture and incremental writes of +events to persistence, enhancing the projects performance and maintainability. +Furthermore, the team added the ability to read protocol parameters via the API +and fixed the CI workflows to support pull requests from forks of external +contributors, streamlining the development process for community involvement.

    What did the team achieve this week

    • Held the monthly review meeting for July (recording)
    • Migrate the core logic of the node to an event-sourced architecture #999
    • Updated persistence to faster incremental writes of events #1000
    • Added ability to read protocol parameters via API #735
    • Fix CI workflows to support pull requests from forks of external contributors #993
    • Updated to GHC 9.2.8 #1005
    • Prepared an updated use cases section on https://hydra.family (published with next release)

    What are the goals of next week

    • Publish monthly report
    • Complete user transaction submission work #966
    • Remove commit from internal wallet (deprecated) #954

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team launched Mithril protocol’s mainnet beta: the release-mainnet network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch.

    They have released a new distribution 2329.0, which is running on the release-mainnet network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator.

    Finally, they have worked on enhancing the documentation for onboarding SPOs and setting up a Mithril signer, and fixing installation bugs of the binary artifacts produced in the CI.

    Low level overview

    • Created the dev blog post Mithril Protocol’s Mainnet Beta Launch
    • Released the new distribution 2329.0
    • Closed the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Deploy 'mainnet' infrastructure #988
      • Completed the issue Handle Secrets management #989
    • Worked on the epic Release 'mainnet' Mithril network #918
      • Completed the issue Prepare SPO on-boarding guide #1049
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Enhance the configuration of Mithril relay #1080
      • Completed the issue Remove legacy store adapters from aggregator #1053
      • Completed the issue Add a 'sign' sub-command to 'genesis' command in aggregator #1081
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on documentation:
      • Completed the issue Enhance 'Run a Mithril Signer node (SPO)' guide #1055
    • Worked on bugs:
      • Completed the issue Shared library error in CI binaries #1073
      • Completed the issue Debian package does not install cleanly on older ubuntu versions #834
      • Completed the issue Aggregator panics with new (de)serialization of 'ProtocolVerificationKey' #1083

    · One min read
    Damian Nadales

    High level summary

    The db-sync team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now. +We also focused on completing tracing support for UTxO-HD in cardano-node. +Currently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further.

    The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ChainSync client as part of the onboarding efforts for the team that will implement Genesis.

    The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team.

    Genesis liaising

    Improvements to the ChainSync client:

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team updated the specification to align with recent +off-chain protocol changes, completed refactoring the snapshot emission +in preparation for event-sourced protocol logic, and updated to GHC +9.2.7, resulting in improved compile times and slightly smaller Plutus +scripts.

    What did the team achieve this week

    • Updated the specification to match the recent off-chain protocol +changes to complete +#728
    • Refactored the snapshot emission logic in preparation for event +sourced protocol logic.
    • Updated to GHC 9.2.7, which led to improved compile times and +slightly smaller plutus scripts.

    What are the goals of next week

    • Monthly review meeting next wednesday and July report
    • Reflect latest information onto our roadmap.
    • Actual implemention of event-sourced persistence +#913.
    • Update the use cases section on https://hydra.family
    • Remove deprecated internal commit +#954.
    + + + + \ No newline at end of file diff --git a/page/21/index.html b/page/21/index.html new file mode 100644 index 00000000000..547e7e8d561 --- /dev/null +++ b/page/21/index.html @@ -0,0 +1,39 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Alexey Kuleshevich

    High level summary

    Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet. +All members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era. +We also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release). +Additionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available. +We also made progress on the constraint-based generators, which can now generate valid transactions and ledger states.

    What we achieved

    • [pull-3521] [pull-3554] Improved Governance model (GovernanceProcedures, ProposalProcedure)
    • [pull-3520] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert )
    • [pull-3531] Refactored and simplified code interacting with Plutus
    • [pull-3558] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix.
    • [pull-3550] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed.
    • [pull-3551] [pull-3546] [pull-3472] Updated tools and added some small improvements
    • [issue-3146] [pull-3498] Introduced Conway protocol parameters
    • [issue-2948] [pull-3499] Implemented ConwayGenesis with the new protocol parameters

    What is currently in progress

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent improvements include:

    • Re-spin sanchonet for testing a new node version followed by fork to Conway
    • Deploying a sanchonet compatible faucet to sanchonet
    • Migrate shelley qa legacy environment to cardano-world

    Lower level summary

    Cardano-node

    Cardano-ops

    • Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: cardano-ops-compare

    Cardano-world

    Iohk-nix

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is working on formalising mini protocols, the performance +modelling prototype and also finishing off their ICE papers.

    Details

    • Formalization of the chain synchronization mini-protocol in the +thorn calculus

    • Final pre-publication steps for ICE 2023 papers

    • Developing approach for specification and verification of +mini-protocols

    • Started work on porting the DeltaQ framework to a new, more concrete +backend based on piecewise-polynomials

    · 2 min read
    Carlos LopezDeLara

    · One min read
    Franco Testagrossa
    Sasha Bogicevic

    High-level summary

    This week the team focused on exploring the event sourced persistence in order +to improve hydra-node performance. Because of this work the team noticed we +need to refactor the emit snapshot emission logic and update the spec in the +light of new changes. They also took the time to revisit their goals and product +plans for the next quarter as well as doing some security fixes related to +multisignatures.

    What did the team achieve this week

    • Finished spike about performance improvements of event sourced persistence #963.
    • Refactor snapshot emission in protocol logic.
    • Revisited our roadmap and goals.
    • Prepared and conducated a learning session on lean-waste.
    • Improve security of multi-signature checks, see this Github security advisory.
    • Implemented a cache friendly way to version our binaries #962.

    What are the goals of next week

    • Implement Event sourced persistence #913.
    • Remove deprecated internal commit #954 and close #728.
    + + + + \ No newline at end of file diff --git a/page/22/index.html b/page/22/index.html new file mode 100644 index 00000000000..85513f7fbd0 --- /dev/null +++ b/page/22/index.html @@ -0,0 +1,29 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team created a new 2327.0 distribution. They focused on preparing the beta launch on the mainnet: they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the mainnet infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library.

    Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs.

    Low level overview

    • Released the new distribution 2327.0
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Add infrastructure monitoring #987
      • Worked on the issue Deploy 'mainnet' infrastructure #988
      • Worked on the issue Handle Secrets management #989
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Remove certificate hash from Artifact #932
      • Completed the issue Check vulnerabilities in CI #1037
      • Completed the issue Add 'created_at' in Mithril Stake Distribution messages #1030
      • Completed the issue Add a 'run-only' option in end to end test #1048
    • Worked on refactoring:
      • Completed the issue Factorize protocol crypto operations #669
      • Completed the issue Refactor aggregator dependency injection and services #1058
      • Completed the issue Build static binaries in CI #874
    • Worked on documentation:
      • Completed the issue Prepare SPO on-boarding guide #1049
      • Completed the issue Add instructions to set firewall using iptables #1040
      • Completed the issue Update ufw command to set firewall on Mithril Signer installation instructions #1041
    • Worked on bugs:
      • Completed the issue Aggregator does not detect certificate chain epoch gap #952
      • Completed the issue 'testing-preview' network does not create certificates #1015
      • Completed the issue SQLite compatibility in aggregator #837
      • Completed the issue Q&A followup fixes #1035
      • Completed the issue E2E tests are flaky in CI #1023

    · One min read
    Damian Nadales

    High level summary

    This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a proposed fix. The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine.

    The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility.

    On the support front, the team drafted an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed.
    • Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends.
    • Tracing: Optimization of the new tracing system is ongoing and yielding good performance results.
    • Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.

    Low level overview

    Benchmarking

    Our analysis of the GHC9 build of cardano-node has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation.

    In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into cardano-node. This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle.

    Infrastructure

    We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in master.

    Tracing

    Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance.

    Nomad backend

    For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run.

    Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to master.

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: First version of snark-based ATMS
    • mithril: Full node verifier
    • kes_agent: Keep progress, and prepare CIP and CPS
    • CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP

    Low level summary

    kes_agent

    Mithril

    • Final review of the implementation of Full Node Verifier #939. +Included benchmarks and further tests.

    Sidechains

    • Schnorr signature implemented
    • ATMS signature implemented
    • First benchmarks show that for the committe size we expect, we need 2^21 constraints.

    CIPs and community

    • Addressed some review comments in #PR506
    • Worked with the communityt on #PR524 to include Keccak as part of the next Plutus release.

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the teams have been working on finalising their ICE papers +for publication in EPTCS, formalising concensus, and investigating chain +sync.

    Details

    • Preparing final versions of ICE papers

    • Reviewing the chain sync design and documentation

    • Refactoring the thorn calculus

    • First draft of Praos specification

    • Developing bounding factors on timeouts

    + + + + \ No newline at end of file diff --git a/page/23/index.html b/page/23/index.html new file mode 100644 index 00000000000..da847b87877 --- /dev/null +++ b/page/23/index.html @@ -0,0 +1,37 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Franco Testagrossa
    Sasha Bogicevic

    High-level summary

    This week the Hydra team accomplished some nice progress. They secured the +network layer further by implementing authentication of the messages between the +peers in the Head protocol. In the process they also managed to separate +HeartBeat messages from the protocol ones which somewhat improved the quality of +code in Hydra. The team also finished work related to sending only transaction +ids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark +publishing on the website.

    What did the team achieve this week

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Add new endpoint for submitting client transactions
    • Remove commit from internal wallet

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance.

    Some notable recent improvements include:

    • Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment
    • Explorer component updates
    • Spongix caching server rewrite for R2 Cloudflare support and various performance improvements

    Lower level summary

    Cardano-node

    Cardano-ogmios

    Cardano-ops

    • Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: cardano-ops-compare

    Cardano-rosetta

    Cardano-world

    Spongix

    • Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: spongix-simple-branch

    · 2 min read
    Moritz Angermann

    High level summary

    The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements.

    Lower level summary

    build support & maintainance

    The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions.

    compiler upgrades

    Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests.

    Hydra Tools

    Our repository, input-output-hk/actions, has seen quite some improvements to facility the hydra <-> github integration.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of preliminary GHC 9.8 support.

    devx

    The devx repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our actions/devx GitHub Actions, we have a consistent set of tooling for

    • nix develop shells
    • GitHub CodeSpaces integration
    • VSCode DevContainer support
    • GitHub Actions integration

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    · One min read
    Kostas Dermentzis

    High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested
    • Many devx issues resolved

    Lower level summary

    • We have improved and validated the design for the Conway integration in db-sync
    • Improved the initial integration of the UTxO-HD feauture branches which are under test
    • Prepared a new release 13.1.1.3 which supports node 8.1.1 +#1455.
    • This also fixes a bug +#1451
    • Added new tests to the new tx_out options +#1429
    • Fixed a chronic issue in db-sync related to exception handling and concurrency +This fixes many other issues and simplifies the logic in db-sync +#1447
    • A number of fixes and improvements in ci, docker, devx, docs +#1436#1442#1448#1452

    · 2 min read
    Carlos LopezDeLara

    2023-06-21 - 2023-07-04

    High level summary

    • Started integration of conway era into the cardano-api,
    • Pre-release of cardano-cli 8.2.1 which enables creating goveranance "Update constitution" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.
    • Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities.
    • Continue refactoring cardano-testnet
    • CI and docs house keeping on the new cardnao-cli and cardano-api repositories

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    + + + + \ No newline at end of file diff --git a/page/24/index.html b/page/24/index.html new file mode 100644 index 00000000000..ea7084b34e2 --- /dev/null +++ b/page/24/index.html @@ -0,0 +1,32 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team wrote and published the monthly report for June, +implemented the end-to-end functionality for external commits, and tested it on +the preview environment. They also listed Hydra as a tool on the Cardano +developer portal, providing more visibility for the project. The team clarified +the path forward for L2 protocol improvements and explored an alternative CI +approach using cabal instead of nix. Additionally, they released version 0.11.0, +marking another milestone in the projects development.

    What did the team achieve this week

    • Written and published the monthly report for June
    • Implemented external commits end-to-end incl. tested it on preview #215
    • Listed Hydra as a tool on cardano developer portal
    • Cleared up path forward on L2 protocol improvements #728
    • Established an alternative CI using more cabal tools #923
    • Release version 0.11.0

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Complete ReqSn only sends transaction ids #728
    • Groom and plan last items for 0.12.0 (remove internal commit)
    • Improve reliability of benchmarks

    · 3 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano mainnet infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator.

    Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1.

    Low level overview

    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Add infrastructure monitoring #987
    • Completed the epic Prepare Mithril Signer deployment model for SPO #862:
      • Completed the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
      • Completed the issue Adapt infrastructure to use Mithril Relay #1018
      • Completed the issue Announce the new signer deployment model in a dev blog post #1017
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on bugs:
      • Completed the issue Aggregator does not exit on critical error #993
      • Completed the issue Computation of master certificate of an epoch is incorrect #1006
      • Completed the issue End to end tests are flaky #954
      • Worked on the issue 'testing-preview' network does not create certificates #1015
    • Worked on optimizations:
      • Completed the issue Dates format is not standardized #946
      • Completed the issue Add 'recompute-certificates-hash' command to aggregator #1001
      • Completed the issue Add a retry mechanism for artifact creation in aggregator #984
      • Completed the issue Log node version at startup in Aggregator/Signer #944
      • Completed the issue Reactivate Publish Results job in CI #978
      • Completed the issue Clean 'pending_snapshot' directory of aggregator #983
      • Completed the issue Update OpenAPI spec examples #1000
    • Worked on refactoring:
      • Completed the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Refactoring client #982
      • Completed the issue Refactor download code in client #1010
      • Worked on the issue Factorize protocol crypto operations #669
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.1' #973

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team.

    The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components.

    Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node.

    Genesis

    • We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.

    • We decided on an approach of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team.

    UTxO-HD

    • We merged the last of the PRs that were part of UTxO-HD improvements for version 0.1: expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size.
    • We added a new "legacy" cardano block in a new ouroboros-consensus-cardano-legacy-block package that should ease the transition for some downstream packages to UTxO-HD, like db-sync. This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block.
    • We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9.
    • Infrastructure: The first batch of refactoring and documentation for our tx-generator has been merged to master.
    • Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown.
    • Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.

    Low level overview

    Benchmarking

    The compiler switch to GHC9 as the default build platform for cardano-node and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard.

    Using the forge-stress approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node.

    Infrastructure

    The tx-generator is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to master. Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base.

    Tracing

    The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue.

    Nomad backend

    With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress.

    Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend.

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the teams presented two papers at ICE 2023.

    Details

    + + + + \ No newline at end of file diff --git a/page/25/index.html b/page/25/index.html new file mode 100644 index 00000000000..a227c71db50 --- /dev/null +++ b/page/25/index.html @@ -0,0 +1,56 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Franco Testagrossa
    Pascal Grange

    High-level summary

    This week, the Hydra team shared progress updates during the monthly review +meeting (monthly report and video recording available soon) and started +experimenting on preview network with the new commit from external wallet +feature.

    What did the team achieve this week

    • Monthly report & review meeting, demonstrating commit from external +wallet
    • Published regular benchmarks for +Hydra
    • Moved forward the journey for external commits using multiple script UTxOs +#903
    • Changed the API to only put transaction id in snapshots, instead of the full +transactions #922 -> this +is now evolved into fully addressing #728
    • Fuel marking is now optional as one can now commit from an external wallet +#924
    • Add flag option to display node version on tui +#934

    What are the goals of next week

    • Complete external commits using multiple script UTxOs #903
    • New release 0.11.0
    • Dirtroad solution of improved persistence performance #913

    · 2 min read
    Marcin Szamotulski

    Network Update

    Key contributions

    We held a series of session to review the implementation of big ledger peers +(eclipse evasion). See #4462.

    We get a request from a 3rd party to clarify an inconsistency between CDDL spec +and protocol implementation. We worked out a nice solution which takes +advantage of the any notion available in CDDL. On the Haskell side we +provide Any type which gen generate almost any CBOR term (some are excluded +only because they are not decoded back to the same form, and we relay on that +property). See #4580.

    We fixed a bunch of problems of the cardano-cli ping command. It also now has +a limited support of node-to-client mini-protocol (the -c option is +ignored, as it cannot be supported by node-to-client protocol). Note that +the format of messages has changed, timestamps are printed in ISO8601 format. +See #4601, #5326, #5313, #30

    In order to provide a new flag in the topology file which enables ledger peers +when the chain is close to the tip, we continued to work on #4530. This is +currently in review, the consensus team will need to provide us with the new +api. This feature is useful for two reasons: makes it easier to maintain +a topology file, it will also limit the traffic on public roots generated by +for example full node wallets and distribute it to ledger peers.

    We also continued to work on a blog post which describes the journey of design +& implementation of the dynamic P2P network layer. Too be announced soon :).

    Other smaller changes

    We limit the concurrency of resolving dns names. Up to 8 root peers or ledger +peers DNS names are resolved concurrently, and at most 2 local root peer DNS +names. See #4596.

    We fixed handshake query timeout in #4603.

    We renamed one of the block-fetch decision constructors as requested by the +consensus team, see #4608.

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:

    • A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality
    • Cardano Sanchonet environment was stood up to test Conway era functionality
    • Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case
    • Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments

    Lower level summary

    Cardano-node

    • Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: cardano-node-pull-5318

    Cardano-ops

    Cardano-world

    Ci-ops

    Ci-world

    • Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ci-world-compare

    Devx-ci

    • A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: devx-ci-repo

    Iohk-nix

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team focused their efforts on continuing to investigate and +experiment operating a head on mainnet. They collected several bugs and issues +and worked on fixing them. Now the team is soon to release a new version, +0.11.0, which comes with a lot of improvements and bug fixes.

    What did the team achieve this week

    • Restored and fixed a bug which stalled our head on mainnet #927
    • Solved one user issue #914
    • Reduced significantly local state size and logs by removing the full scripts from it #928
    • (pending review) Reduced snapshot size in the API, by only including tx ids #922

    What are the goals of next week

    • New release 0.11.0
    • Monthly report & review meeting.
    • Fix some minor bugs discovered when operating our head on mainnet
    • Complete journey for external commits using multiple script UTxOs #903
    • Publish benchmarks and provide regular benchmarks for Hydra #186

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client’s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet.

    Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI.

    Low level overview

    • Completed on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Create the sub-command for 'Mithril Stake Distribution' in client #896
      • Completed the issue Adapt end to end tests to handle new types of data #899
      • Completed the issue Update client documentation #897
      • Completed the issue Update architecture documentations for new types of data #898
      • Completed the issue Refactoring client #960
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Enhance terraform infrastructure #930
    • Completed the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Check performance impact of new stake distribution command on the 'mainnet' #962
    • Worked on the epic Prepare Mithril Signer deployment model for SPO #862:
      • Worked on the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
    • Worked on bugs and optimizations:
      • Completed the issue Aggregator does not always detect new immutable file #953
      • Completed the issue CI tests fail with Rust '1.70.0' #958
      • Worked on the issue End to end tests are flaky #954
      • Worked on the issue Certificate dates in metadata are not on the same timezone #946
      • Worked on the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Fix 'Mithril Client multi-platform test' with new client interface #956
      • Completed the issue Enhance 'ImmutableDigesterError::NotEnoughImmutable' error #969
      • Completed the issue Client 'snapshot download' command fails with option '--download-dir' #979
    + + + + \ No newline at end of file diff --git a/page/26/index.html b/page/26/index.html new file mode 100644 index 00000000000..ee71bfa560b --- /dev/null +++ b/page/26/index.html @@ -0,0 +1,52 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Damian Nadales

    High level summary

    The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the Byron and TPraos eras do not need to be checkpointed for an MVP. +There is one remaining question (which applies also to the Praos era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated "Limit on Patience" timeout sufficiently bounds how long the adversary can inflate a victim's overall sync time.

    On the UTxO-HD front, the prototype branch was rebased on top of the latest ouroboros-consensus main branch and integrated on top of cardano-node 8.1.1-pre. As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD. +We managed to run a node again with UTxO-HD enabled. +We also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for cardano-node, which uncovered a performance regression on the Network component when using GHC-9.2/9.4. This is being addressed.

    Regarding our support activities, we Released fs-sim-0.2.0.0 and are in the process of preparing the 8.2 release of cardano-node. We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests.

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We've continued release benchmarking and established a new baseline for 8.0.0.
    • New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined.
    • Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.

    Low level overview

    Benchmarking

    In our release benchmarking cycle, we established a new performance baseline for 8.0.0. Additionally, we've measured +performance under various workloads for 8.1.1-pre; the results look promising and validate the optimization efforts +done on several system components.

    In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for +benchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper.

    Tracing

    The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be +meaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific +trace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles.

    Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD.

    Nomad backend

    As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs.

    This means the backend is entering validation phase, where we systematically compare all metrics taken from the new +infrastructure to the existing ones, including determining reproducibility and variance.

    · 3 min read
    Marcin Szamotulski

    Network Update

    Key contributions and advances

    We merged light peer sharing feature, which allows to include inbound peers +into outbound governor known peers. This is the primary way for new +unregistered nodes to enter the network, which then can be shared using peer +sharing. Note that peer sharing is an experimental feature which is disabled +until genesis & eclipse evasion as fully implemented. See #3596.

    We are making progress reviewing eclipse evasion, #3886.

    We fixed another bug in local root peers. We found out that if the local roots +where ignored until the first domain name was resolved, see #4583. The bug +fix was backported and released in ouroboros-network-0.8.1.1.

    We re-started working on dynamically enabling block forging to address issue +#3159, which will enable us to release P2P on block producing nodes. See #140.

    New cardano-ping / cardano-cli ping release

    We prepared a new release of cardano-ping library which supports the new +query feature (query supported versions). See #4589, #4593 and #5313. +The new version of cardano-cli ping will use ISO8601 formatted +timestamps; also the formatting of ping results is slightly improved, and it +will introduce the new --query-versions (-Q) switch. If the remote site +supports the query parameter, the command will print:

    redacted-ip:port network rtt: 0.064
    redacted-ip:port handshake rtt: 0.064010896s
    redacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat
    orAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]

    otherwise it will print the negotiation results

    redacted-ip:port network rtt: 0.045
    redacted-ip:port handshake rtt: 0.101867615s
    redacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder

    Note that in that case cardano-cli ping offers InitiatorAndResponder, which +allows us to detect whether the remote side is an InitiatorOnly or +InitiatorAndResponder. Also cardano-cli ping will no longer announce +itself as InitiatorAndResponder, except for the case mentioned above.

    Other smaller contributions

    On a request from the Marlow Team, we published haddocks of typed-protocols, +which are now available here (#40, #41).

    We made a new release of strict-stm-1.1.0.1 on Hackage, which fixed a bug in +package description file, #101 .

    We also helped to debug a deadlock when using named pipes on Windows in the new +RawBearer API. The API is being used to store secret keys only in memory. +The PR #4395 is under review.

    We also have two more PRs which are under review:

    • #4530: enabling ledger peers on a fixed number of slots before the tip of the chain;
    • #4580: a PR which fixes inconsistencies in one of our cddl specs.

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: E2E tests for BLS bindings and KES agent
    • Sidechains: Implement ECC chip and Rescue hash primitives for ATMS
    • mithril: Full node verifier

    Low level summary

    cardano-base

    • RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); blocked due to issue with windows' localSnocket. Trying to resolve.
    • Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors #317.
    • Above, blocked by the simplification of typeclasses #404.
    • Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings

    Mithril

    • Implementation of Full Node Verifier #939

    Sidechains

    • ECC chip implemented for JubJub over BLS12-381
    • Rescue chip implemented for hashing.
    • Currently working on Schnorr signature (which uses the above constraints)

    · 3 min read
    Moritz Angermann

    High level summary

    The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements.

    Lower level summary

    build support & maintainance

    Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure LoadDLL errors to blst integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like cardano-base experiencing significant reductions in CI complexity.

    compiler upgrades

    After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility.

    CHaP (cardano-haskell-packages)

    We relocated the underlying tooling, (foliage), for CHaP into the IOG organization. Furthermore, we have introduced improved tooling to quickly add constraints to packages, better error reporting for add-revision and better hackage url compatibility to facilitate easer usage of CHaP.

    GitHub Actions

    Our repository, input-output-hk/actions, now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the base and haskell install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking cabal.

    iohk-nix

    The iohk-nix repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, sodium, blst, and secp256k1, are also fixed to certain revisions within the iohk-nix repository.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to gmp.

    devx

    The relatively new devx repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The devx repository's readme has been updated to reflect its purpose and usage guidelines.

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    + + + + \ No newline at end of file diff --git a/page/27/index.html b/page/27/index.html new file mode 100644 index 00000000000..8798f5c8410 --- /dev/null +++ b/page/27/index.html @@ -0,0 +1,46 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team worked on multiple fronts. They finished the +investigation about the broken head on mainnet and re-opened their persistent +head instance. The team also fixed the monthly report publication on their +website and started sketching ideas and further improvements. Also, they are on +the last mile to deliver a new feature which will allow parties to commit funds +from extern wallets. Finally the team started to work on optimizing the +performance on their benchmarks.

    What did the team achieve this week

    • Finished investigation on broken head on mainnet #897 and re-opened it.
    • Added support for externally committing regular utxo #887
    • Fix monthly report publication on docs website and published the monthly report. Odd problems when publishing monthly report:
      • Make us think about if we should change something about the website #908
      • Open issue to docusaurus #9036
    • Fixed a bug in the benchmark process #910
    • Explored performance of the hydra-node{.verbatim} and identified a +bottleneck.
    • Timed transaction feature is being used by the auction project 🎉

    What are the goals of next week

    • Complete performance analysis and start/plan improvements and provide +regular benchmarks for Hydra #186
    • Add hydra as tool to developer platform #872.
    • Authenticate network messages #727.
    • Complete journey for external commits using multiple script UTxOs #903
    • Start implementing Option B for external commits #215.

    · One min read
    Kostas Dermentzis

    High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2
    • A new hire will help us with devx issues.

    Lower level summary

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on giving and preparing public +talks, also on preparing final versions of their ICE 2023 papers, and +on analysing chain selection.

    This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

    Details

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer.

    Lower level summary

    Bitte

    • Equinix bare metal capability was added to bitte: bitte-pull-194
    • Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: bitte-pull-201

    Bitte-cells

    Cardano-graphql

    Cardano-node

    Cardano-ops

    Cardano-world

    Ci-ops

    • Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ci-ops-pull-108

    Ci-world

    Cicero

    • Implement a cicero webhook backoff with exponential decay plus jitter: cicero-pull-79

    Iohk-nix

    Openziti

    · 2 min read
    Martin Kourim

    High level summary

    Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.7 and 8.0.0 releases.

    Workstreams

    Full list of closed PRs

    Framework improvements:

    • Make cardano-submit-api REST API service available and run corresponding regression tests by default
    • Update cabal build testing for 8.0.0
    • Add support for testing governance SPO poll
    • Use Poetry for Python dependency management
    • Check status of known GH issues during tests runtime and finish the test accordingly
    • Generate topology files with both IP addresses and DNS names
    • Log issues like failure to start a cluster instance and report errors during tests runtime

    Testing improvements

    • Add rollback testing:
      1. global consensus is reached after rollback, in situation where less than securityParam blocks were produced since cluster split
      2. global consensus is not reached when more than securityParam blocks were produced, and the result is permanent fork
    • Add tests to governance SPO poll commands

    Node:

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests
    + + + + \ No newline at end of file diff --git a/page/28/index.html b/page/28/index.html new file mode 100644 index 00000000000..379fe6663e2 --- /dev/null +++ b/page/28/index.html @@ -0,0 +1,44 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Carlos LopezDeLara

    2023-06-07 - 2023-06-20

    High level summary

    • Completed cardano-cli migration to input-output-hk/cardano-cli
    • cardano-cli ping now uses cardano-ping-0.2.0.5
    • New queries on API:
      • queryCurrentEpochState
      • queryDebugLedgerState
      • queryGenesisParameters
      • queryPoolDistribution
      • queryPoolState
      • queryProtocolParameters
      • queryProtocolParametersUpdate
      • queryProtocolState
      • queryStakeAddresses
      • queryStakeDistribution
      • queryStakePoolParameters
      • queryStakeSnapshot
    • Deprecate:
      • queryPparams
    • Export query API as functions
      • genFeatureValueInEra
      • featureInShelleyBasedEra
      • isFeatureValue
      • valueOrDefault
      • asFeatureValue
      • asFeatureValueInShelleyBasedEra
      • queryEpoch
      • requireShelleyBasedEra
    • Restructure cardano-testnet (WIP)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team has put their effort on finding solutions on many +different problems, such as our broken head on mainnet +#897, our fragile monthly +report publications on the website and implementing Option A for +external commits #215. +Although most of these items are still open, huge progress has been made. To +accelerate the investigation, they improved their logging to give more precise +errors when a transition requirement fails, and to reduce duplication on effets +logged content. Last but not least, the team is exploring formal methods and +attended a workshop on formalizing cryptographic protocols in Agda.

    What did the team achieve this week

    • Continued investigating broken head and opened an issue to keep track #897.

      As part of this issue, improvements were made to the node logs:

      • Give a precise error when a transition requirement fails #895.

      • Reduce duplication for effects logged content by using sequential eventId and effectId pair #896.

    • Fixed references in the hydra specification #893.

    • Attended a workshop on formal methods and crypto in Agda.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete journey for external commits implementing Option A and start implementing Option B #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.
    • Fix monthly report publication on docs website.

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2321.1 distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots.

    Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks.

    Low level overview

    • Released the new distribution 2321.1
    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Enhance MessageAdapter for Artifact in aggregator REST API #925
      • Completed the issue Create the sub-command for 'Cardano Immutable Files Full' in client #895
      • Completed the issue Enhance state machines Aggregator/Signer #933
      • Completed the issue Adapt the aggregator REST API to list certificates #892
      • Worked on the issue Adapt end to end tests to handle new types of data #899
      • Worked on the issue Update client documentation #897
      • Worked on the issue Update architecture documentations for new types of data #898
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Enhance terraform infrastructure #930
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Upgrade Cardano node to '8.0.0' #920
    • Completed the issue Add export path in Client CLI #512

    · One min read
    Damian Nadales

    High level summary

    During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see this issue). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain.

    On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano.

    UTxO-HD

    • We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking SOP classes like HPure and HAp . In short, we implement generalised versions of important classes like Applicative and Traversable.

    Support

    • fs-sim-0.1.0.2 and fs-api-0.1.0.2 were released, which makes them now compatible with GHC up to 9.6.
    • ouroboros-consensus-0.7.0.0 was released for cardano-node 8.1, including query serialization fixes for backwards compatibility.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster.
    • New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism.
    • Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.

    Low level overview

    Benchmarking

    The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build +configuration: As it stands, the ghc-bignum package is using the Haskell native-backend as a default. We strive +to benchmark a build with the gmp-backend next.

    A variant of our forge-stress local benchmark has been set up to serve as an early indicator for the resource usage profile +we'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way +shorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great +support when evaluating different compiler versions or RTS flags incrementally.

    Tracing

    The hub of the new tracing system cardano-tracer is designed with a fixed output behaviour, which is limited to various +logging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to +directly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all.

    Nomad backend

    We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with +job definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing +benchmarking run required us to fine-tune communications with the nomad server.

    Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible +and offers more detailed insight than the previous iteration in cardano-ops. The backend will enable you to formulate +very specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met.

    + + + + \ No newline at end of file diff --git a/page/29/index.html b/page/29/index.html new file mode 100644 index 00000000000..a079f713418 --- /dev/null +++ b/page/29/index.html @@ -0,0 +1,43 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

    Details

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team accomplished several important tasks. They held their +monthly review meeting and drafted the report for May. They made progress on +implementing the first end-to-end journey for external commits using "Option A" +for normal UTxOs, while still considering "Option B". The team also integrated a +Spanish translation contributed by the community, created micro-benchmarks for +transaction validation and deserialization, and made improvements to +hydra-node's version reporting. Last but not least, they implemented the ability +to commit multiple UTxOs to a head at once.

    What did the team achieve this week

    • Held the monthly review meeting (recording + slides) & drafted the report for May.
    • Have a first end-to-end journey for external commits implementing Option A +for normal UTxOs #887 (still considering Option B).
    • Integrated the spanish translation #866.
    • Created micro-benchmarks for transaction validation and deserialization #884.
    • Improve hydra-node version reporting on non-released builds #849
    • Some minor CI improvements following up last weeks changes.
    • Allow commit transactions with multiple UTxO #774.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete external commits with script UTxOs #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.

    · 2 min read
    Jared Corduan

    High level summary

    The ledger team made progress on the conway ledger era. In particular, the design and implementation +of the new certificates is near complete, we refactored some of our data structures +to be able to support DReps, we cleaned up the serialization format, and renamed things to make +clearer the differences with Shelley.

    The team also completed integration work for the next node release, namely 8.1.0. +And, as always, we continue to address technical debt.

    Low level summary

    Conway progress

    • pull-3408 - Improve conway delegation certificates
    • pull-3428 - Get rid of Constitutional in favor of Genesis and Committee
    • pull-3426 - Add DRep to internal data struture (UMap)
    • pull-3425 - Improve witness logic needed for conway
    • pull-3423 - Rename ShelleyDelegCerts constructors to distinguish them from Conway
    • pull-3421 - Rename DCert -> TxCert
    • pull-3454 - conway CDDL minor fixes

    Improve testing

    • pull-3403 - Add Plutus script context golden tests

    Integration work

    • pull-3410 - Update chaps index
    • pull-3416 - Bump cardano-ledger-alonzo-test version
    • pull-3414 - Bump cardano-ledger-shelley-test minor version
    • pull-3420 - Bump cardano-ledger-shelley-ma-test version
    • pull-3441 - Release cardano-ledger-[alonzo|babbage]-1.2.1

    Technical debt

    • pull-3409 - Unit test - no such thing as a reference datum
    • pull-3407 - Fixup release process documentation
    • pull-3404 - Create TotalDeposits events during all eras
    • pull-3402 - Fix broken references in the Shelley spec
    • pull-3424 - Remove no longer used cardano-ledger-shelley-ma package
    • pull-3432 - Add an example on how to bump up versions in the changelog
    • pull-3440 - Revert back to the group serialization for ProtVer for PParams

    · One min read
    Marcin Szamotulski

    High level summary

    We continued working on eclipse-evasion. We also analysed and fixed a bug +when using DNS names in local root peers. We continued working on engineering +blog post about P2P. We released a new version of packages for +cardano-node-8.1.0 release.

    We improved our CI, removed obsolete scripts add extra validation which checks +if CHANGELOG.md files were updated.

    We also improved release scripts.

    Detailed summary

    • Eclipse evasion: #4462
    • Local root peers bug fix: #4559
    • Release to CHaP: #4573
    • CI improvements: #4572
    • Release script improvements: #4573

    · One min read
    Jordan Millar

    2023-05-24 - 2023-06-06

    High level summary

    • The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released.
    • We provided assitance where needed in the release
    • An integration repository https://github.com/input-output-hk/fusion-flamingo was created to enable my team to more easily work on cardano-cli and cardano-api

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    + + + + \ No newline at end of file diff --git a/page/3/index.html b/page/3/index.html new file mode 100644 index 00000000000..d1d827c2396 --- /dev/null +++ b/page/3/index.html @@ -0,0 +1,50 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 6 min read
    Kevin Hammond

    High level summary

    We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

    Initial CIP-1694 Security Analysis and Responses

    Section: The constitutional committee


    • “For example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

    There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


    Section: Size of the constitutional committee


    • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

    Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


    Section: Terms


    • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

    Thanks. Yes, that suggestion is a bit easier to read.


    Section: Registered DReps


    • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

    Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


    Section: Ratification


    • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

    These correspond exactly to the groups that are administered by the Parameter Committee.


    • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

    Yes, it’s not about harming the system, since Info +actions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

    Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


    Section: Content


    • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

    Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


    Section: Protocol Parameter groups


    • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

    These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


    • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

    All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


    Section: Votes


    • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

    They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


    Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


    • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

    There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


    Section: Changes post Edinburgh workshop (July 2023)


    • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

    It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


    Section: Reduced deposits for some government actions


    • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

    Indeed. We have no plans for this at the moment.

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team made several impactful updates. They addressed +misleading errors regarding collect com transactions, resolved a security +advisory (CVE-2023-42806), and simplified the Hydra Head protocol by using +inline datums. The team also tackled minor inconsistencies in specifications and +implementation, documented reasons for potentially dropped close transactions by +the cardano-node, and collaborated with SundaeLabs on an offline mode for +hydra-node. Additionally, they engaged in discussions with researchers about +incremental de-/commits.

    What did the team achieve this week

    • Removed misleading errors about collect com transactions #839
    • Addressed security advisory CVE-2023-42806 in PR #1161
    • Changed the head protocol to use inline datums, simplifying things in the hydra-node #1162
    • Addressed minor inconsistencies in spec and implementation #1104
    • Documented why close transacations might be dropped by the cardano-node (cant fix) #1039
    • Tidy up a few things here and there
    • Worked with SundaeLabs on the offline mode for hydra-node
    • Discussed incremental de-/commits with researchers

    What are the goals of next week

    • Start work on incremental decommits protocol specification #1057
    • Provide support to Hypix
    • Address all open bugs
    • Release version 0.14.0 with this scope
    • Update dependencies to prepare for Conway #1114
    • Shepherd off-line mode PR over the finish line
    • Complete tidying up chain layer via stateless observation changes in hydra-node #1096

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: Release benchmarking for node 8.6.0 as well as benchmarks scrutinizing GHC versions and the new tracing system.
    • Development: PlutusV3 capability of our workload generator has been implemented.
    • Tracing: First round of optimization of the cardano-tracer service has completed, awaiting validation.
    • Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.
    • Workbench: Configurable remote environments and improvements to run documentation have been merged to master.

    Low level overview

    Benchmarking

    We've performed and analyzed a full set of benchmarks for node 8.6.0, both in comparison to recent release tags +and mainnet version 8.1.2. A lot of development work has entered the system since then, so it is crucial +we can rule out any potential performance risks for the next mainnet release.

    Additionally, we've been benchmarking GHC9.6.3 builds of cardano-node. Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform.

    A last set of benchmarks was dedicated to the new tracing system with node 8.6.0. We were able to show that +there is no performance risk to enabling the new system, even when forwarding all trace messages to a cardano-tracer +service on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.

    Development

    For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes +to the execution budgets by developing specialized workloads.

    Tracing

    The cardano-tracer service has received its first batch of optimizations. Profiling output is promising; to measure +performance for a long service run time, we're currently equipping the service binary with the same capability to +emit regular resource traces as cardano-node. Analysis of those will be the basis for validating this and possible future optimization efforts.

    Nomad backend

    Many improvements for the nomad backend have been implemented and merged to master. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service, +more detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables +our team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.

    Workbench

    Our performance workbench has seen upgrades in documenting and reporting cardano-node builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler. +When alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential.

    Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance.

    · One min read
    Marcin Szamotulski

    High-level overview of sprint 48

    Bootstrap Peers

    We continued reviewing bootstrap peers, ouroboros-network#4555.

    IOClasses / IOSim

    We prepared slides for a Haskell meetup were we presented a talk on IOSimPOR. +The recording will be availble on YouTube.

    We also used the opportunity to do some refactoring of the IOSim code base: io-sim#117. +We released io-sim-1.3.0.0 on Hackage: io-sim#119.

    We also added forkFinally to MonadFork (not included in 1.3.0.0 release): io-sim#123.

    Tech debt

    We refactored Resource used by the DNS subsystem: ouroboros-network#4707. +We continued reviewing the ouroboros-network#4625 PR, which refactors +RootPeersDNS module.

    · 2 min read
    Damian Nadales

    High level summary

    Over the last two weeks, we managed to run a UTxO-HD capable node in legacy mode, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does). +This legacy mode could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not. +However, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter. +On the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node. +Therefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.

    On the Genesis front, we reviewed the peer simulator for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.

    We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.

    Javier Sagredo continues his cycle as release engineer, and he is working on version 8.7 of Cardano node.

    + + + + \ No newline at end of file diff --git a/page/30/index.html b/page/30/index.html new file mode 100644 index 00000000000..e51b5fb4ee8 --- /dev/null +++ b/page/30/index.html @@ -0,0 +1,37 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the "Coding Standards" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.

    What did the team achieve this week

    • Complete validation of timed transactions feature #196.
    • Write ops instructions and troubleshooting #569 and improve logs.
    • Remove --ledger-genesis argument to hydra-node options #863.
    • Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows #877.
    • Use nix to build test binaries to increase CI speed #867.
    • Updated our Coding Standards.

    What are the goals of next week

    • Monthly report & review meeting.
    • Have a first end-to-end journey for external commits implementing "Option A" #215.
    • Integrate spanish translation #866.
    • Improve and provide regular benchmarks for Hydra #186.
    • Allow commit transactions with multiple UTxO #774.
    • Explored stateless observation and refined hydra explorer ticket #696.

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the [Genesis][#genesis] section for more details.

    Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our main branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain.

    We improved our tooling by releasing an immutable DB server, which can be used for testing and benchmarking purposes, and a db-truncater program, which can be used in disaster recovery and benchmarking scenarios.

    Genesis

    The consensus team working on Genesis:

    • Improved the genesis selection rule as a result of our interaction with IO Research.
    • Studied how the hard-fork combinator handles forecasting at era transitions, and improved our documentation.
    • Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP.
    • Elaborated concrete proposal for the Genesis State Machine.
    • Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).

    The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine.

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2318.0 distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types.

    Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node 8.0.0 (along with the backward compatibility for previous 1.35.x versions).

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the handling of multiple types of signed entity in the aggregator runtime #907
      • Completed the adaptation of the signer runtime to use the signable builder service #854
      • Completed the adaptation of the aggregator runtime to use the artifact builder service #869
      • Completed the appending of the next AVK to all protocol messages #888
      • Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced #893
      • Completed the adaptation of the explorer to handle new artifact routes of the aggregator #927
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the implementation of the new stake distribution computation in the chain observer #919
      • Worked on upgrading the Cardano node to 8.0.0 #920

    · 4 min read
    Michael Karg

    High level summary

    • Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes.
    • New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due.
    • Analysis pipeline: First steps on implementing incremental analysis have been untertaken.
    • Open Sourcing: Exhaustive dataflow charts for both our analysis tool locli and our workbanch have been merged to master
    • Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster.
    • P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland.
    • Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.

    Low level overview

    Benchmarking

    As a compiler switch to GHC 9.2.7 for cardano-node's default build environment is around the corner, we're setting up our benchmarking cluster to +handle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This +also involves choosing a reliable baseline as reference point for inter-version comparisons.

    Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet, +we strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to +be balanced against resource demand for all our cluster's nodes.

    Tracing

    For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some +quality-of-life details that have changed required us to revision the system documentation.

    Analysis

    As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been +normally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a +huge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken.

    Open Sourcing

    A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking +copmonents more accessible. As a result, detailed charts for both our LogObject CLI locli and our workbench have been merged to master.

    Nomad backend

    While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting +those profiles of our workbench that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality +of the nomad cloud backend.

    Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster.

    Performance & Tracing Meetup

    We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive +days together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future. +Also, it was a great opportunity to finally meet in person.

    Offboarding

    Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation +of team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: Include final tests for BLS signature. Further adaptations for KES agent.
    • Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.

    Low level summary

    cardano-base

    Sidechains

    • Opened PR in halo2curves to include BLS12-381 and JubJub, #38
    • Addition constraint over JubJub merged #10
    + + + + \ No newline at end of file diff --git a/page/31/index.html b/page/31/index.html new file mode 100644 index 00000000000..6fe5adfadd7 --- /dev/null +++ b/page/31/index.html @@ -0,0 +1,66 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team had two paper accepted for ICE 2023 +(https://www.discotec.org/2023/ice). The event will be held in Lisbon +on 19th June 2023. The papers will be published in EPTCS.

    Details

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team achieved a number of milestones, including the release +of the first mainnet compatible version. Besides this they also addressed +inconsistencies in rollback handling, added an architecture page to the website, +reducing the size of logs using event IDs. They also had productive discussions +with researchers on plans for incremental commits/decommits and had a whiteboard +session on DeFi and lending protocols. The goals for next week include +completing the validation of the timed transactions feature, exploring stateless +observation, refining the Hydra explorer ticket, writing ops instructions and +troubleshooting, and implementing the first end-to-end journey for external +commits.

    What did the team achieve this week

    • Released first mainnnet compatible version 0.10.0
    • Addressed inconsist handling of rollbacks #784
    • Added architecture page and fixed haddock links on our website #838
    • Opened a new hydra head on mainnet
    • Talked with researchers on initial plan for incremental commits/decommits
    • Had a Whiteboard session on DeFi and lending protocols
    • Reduced size of logs using event ids #859
    • Published the monthly report for April

    What are the goals of next week

    • Complete validation of timed transactions feature #196
    • Explored stateless observation and refined hydra explorer ticket #696
    • Write ops instructions and troubleshooting #569 and improve logs
    • Have a first end-to-end journey for external commits implemented #215

    · 2 min read
    Marcin Szamotulski

    High level summary

    We started working on a new way to switch between root & ledger peers (see +below). We continued to work on eclipse-evasion. We merged changes to +Handshake contributed by Galois Inc. We made improvements to our tests (fixed +a flaky test, added cddl specs for NodeToNodeVersionData and +NodeToClientVersionData). We improved our CI and automated the process of +releasing new package version to CHaP.

    Detailed summary

    We continued to work on testing eclipse-evasion.

    We came up with an idea to limit how full node wallets relay on root peers +(currently operated by IOG, in future also CF and Emurgo). We designed +a switch to use ledger peers if the node tip is close enough to the current +time. For more details see #4530.

    We merged changes to the handshake mini-protocol which allow one to query +server's node-to-node / node-to-client parameters. We are grateful to +Galois Inc. for implementing it, #4256 and #4538. We published new version +of packages to CHaP chap-#253.

    We added DiffusionError wrapper. Thanks to it, ouroboros-consensus will +not duplicate diffusion errors messages in the log, #4537.

    We fixed an issue which caused one of our tests to be flaky, #4515.

    We added cddl tests for NodeToNodeVersionData and NodeToClientVersionData: +#4540, #4544 (in review).

    We wrote scripts which will help us release packages as well as verify that we +released all the package necessary to build the newest set of packages, +#4542.

    We renamed the consensus startup tracer and make sure it doesn't log +ExitSuccess exceptions, consensus-#71.

    We reviewed PR which adds RawBearer API, #4395.

    We made series of improvements to our CI:

    • #4539: we don't need to install cryptographic libraries in CI;
    • #4545: Javier Sagredo (consensus) cleaned up CI after consensus moved +to a new repo;
    • #4546: we switched to use GitHub merge queues;
    • #4549: we made it possible to trigger building haddocks manually;
    • #4553: we fixed and enhanced caching of building dependencies.

    · 2 min read
    Jared Corduan

    High level summary

    The ledger team focused mainly on the conway ledger era and node integration. +For conway, we completed a large structural change that now allows +for delegation certificates to be parameterized by era, and introducing +new certificates for the first time since Shelley. +We also continue to build out our contraint based generators that we will +use to property test the conway era. +In particular, we can now generate an entire ledger state and a +transaction which is balanced with respect to the ledger state.

    Low level summary

    Conway certificates

    Certificiates are now abstracted as a type family in the ledger codebase. +Moreover, there are new certificates in the Conway era to support CIP-1694, +and MIR certificates have been removed.

    Constraint based testing

    Our plan for property testing in the conway era is to no longer use the trace generators, +but instead generate ledger states and transactions based on constraints. +We hit a milestone this week, namely the ability to generate a balanced transaction in the context +of a ledger state, all based on our ever growing constaint language.

    Integration work

    Technical debt

    · 2 min read
    Jordan Millar

    2023-05-05 - 2023-05-23

    High level summary

    • Golden tests for cardano-cli command help output were added.
    • Documentation was updated with new libsodium installation instructions.
    • There were several updates for the cardano-cli:
      • Deletion of the deprecated shelley command group.
      • Addition of golden tests for CLI help.
      • An improvement to avoid bare IO in tests, allowing better error reporting in failed tests.
      • Generation of UTCTime test values without leap seconds (avoids erroneous test failures)
      • Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32.
    • The cardano-api underwent multiple refinements:
      • Implementing deposit handling when balancing transactions (necessary for Conway)
      • Cleaning up socket file path code.
    • Several changes were made to the cardano-testnet:
      • Adding golden tests for cardano-testnet help.
      • Removing all hardcoded yaml files in cardano-testnet
      • Improving cardano-testnet help output.
      • Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    + + + + \ No newline at end of file diff --git a/page/32/index.html b/page/32/index.html new file mode 100644 index 00000000000..043b1663692 --- /dev/null +++ b/page/32/index.html @@ -0,0 +1,63 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version 1.35.7.

    Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain.

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the implementation of the Certifier service in the aggregator #850
      • Completed the implementation of the signable builder for the Mithril Stake Distribution #851
      • Completed the implementation of the artifact builder for the Mithril Stake Distribution #870
      • Completed the implementation of the signable builder for the Full Immutables Snapshot #852
      • Completed the implementation of the artifact builder for the Full Immutables Snapshot #871
      • Completed the adaptation of the aggregator runtime to use the signable builder service #853
      • Worked on the adaptation of the signer runtime to use the signable builder service #854
      • Completed the definition of the entity service interface for verification/restoration #868
      • Completed the refactoring of the OpenMessage type #878
    • Completed the epic that simplifies the multi-signer in the aggregator #398:
      • Completed the extraction of the single signature registration from the multi-signer #643
    • Completed the upgrade of the Cardano node to version 1.35.7 #881
    • Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators #873

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks we made some important progress in the Genesis design. +It seems the BlockFetch logic need not be modified for Genesis, although this +needs to be confirmed. We started a DoS mitigation handbook and updated our +conceptual component diagram to guide the Genesis design. We engaged with the +IOG researchers to work on the Limit on Patience attack vector, work in this +area is still ongoing. We sketched a design to decouple the CPU load of the node +from its responsiveness to the socket. Finally, we discussed with Networking our +approach to lower the performance impact of the BlockFetch decision logic, and +got green light from them.

    We migrated the consensus code to a new +repository, splitting +it from the ouroboros-network repository, and released version 0.6 of +Consensus.

    We also merged the mempool fairness improvement to main branch.

    Another significant enhancement to our documentation was the addition of an +explanation of the hardfork combinator forecast horizon.

    See the sections below for more details.

    Genesis

    We reviewed the BlockFetch design documentation, and added some source-code +comments that emphasize certain properties of the decisions the BlockFetch +logic makes that are helping us confirm that Genesis does not require any +changes to BlockFetch. We are waiting on input from our former system +architect to verify this.

    We migrated and updated the conceptual component diagram in the ouroboros-consensus +repository which helps us situate the Genesis design and argument.

    We engaged with the IOG researchers about the Genesis design. We sketched out a +way to address the concern that the Limit on Patiente (LoP) attack vector duty +cycle is indeed low, but it's still non-trivial to ultimately conclude it's +sufficiently low.

    We also sketched a design to decouple the CPU load of the node from its +responsiveness to the socket, since the LoP is a relatively tight timeout, and +node performance bugs inducing seconds-worth of latency are unfortunately +familiar phenomena.

    Fostering collaboration

    We added an +explanation of +a question that we had to explain many times about the exact behavior of the +hardfork combinator forecast horizon.

    · 2 min read
    Michael Karg
    • Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.
    • New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint.
    • Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on.
    • Infrastructure: The plutus-apps flake input for cardano-node has finally been removed.
    • Nomad backend: A PR implementing placement of benchmarking clusters has been merged.

    Benchmarking

    The performance investigations on the 8.0 release branch have lead to pinpointing and addressing incosistent behaviour. For that, +we created yet another local reproduction with the workbench's forge-stress benchmark.

    Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into 8.0 and +subsequent releases.

    Additionally, we've refined the trace-bench family of profiles that target benchmarking our own new tracing system.

    Tracing

    Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally +intended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant +conversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system.

    Infrastructure & Analysis

    Dataflow documentation

    The LogObject CLI locli is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate +further development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting.

    Remove redundant Plutus flake input

    This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input, +we simplify the dependency graph for cardano-node, as well as enable immediate feedback when developing Plutus benchmarks.

    Nomad backend

    Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking. +This capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along +with various quality-of-life improvements, has been merged to master.

    · One min read
    Kostas Dermentzis

    High level summary

    Lower level summary

    • Prepared a schema change which is expected to speed up queries and help clients +#1389.
    • Ran a big number of benchmarks on the above to evaluate if this change is reasonable.
    • Performance optimization related to rewards +#1382
    • Using the cache in more places to reduce recourses usage +#1380
    • Evaluated risks related to UTXO-HD integration
    • Worked on a feauture request to split the tx_out to an address table +#1396
    • Worked on another feauture request to prune the consumed entries from the tx_out table +#1398
    • Prepared for CIP-1694 integration

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library.
    • KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction.
    • Sidechains: Started implementing ECC chip of JubJub over BLS12-381.

    Low level summary

    cardano-base

    • #255 finally merged 🎉
    • Additional tests for BLS bindings #384
    • Open PR for including test vectors created with zkscrypto's library, PR#397

    KES agent

    • Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period PR#389.
    • Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) #317.
    • Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim
    • Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes
    • Refactor MonadSodium into MonadMLock PR#388.

    Sidechains

    • Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)
    • Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo
    + + + + \ No newline at end of file diff --git a/page/33/index.html b/page/33/index.html new file mode 100644 index 00000000000..eccbde9be7a --- /dev/null +++ b/page/33/index.html @@ -0,0 +1,53 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is working on porting an existing formalisation of Ouroboros +Praos to a newer foundation.

    Details

    · 2 min read
    Marcin Szamotulski

    High level summary

    The networking team has released the following packages to Hackage:

    We published an announcement blog post. We made progress +also on another blog post which will describes the design of the P2P networking +layer.

    After moving ouroboros-consensus to its own repository, we made +ouroboros-network compatible with GHC 9.4 and 9.6.

    We made cardano-client library independent of +ouroboros-consensus-diffusion.

    We prepared release of network packages for cardano-node-8.0.

    Detailed log

    Ouroboros-Network

    IO-Sim

    • io-classes-1.0.0.0, and following up releases: 1.0.0.1 (ghc-9.6 +support), 1.1.0.0 (documentation fix).
    • Fixed timeouts and delays in io-sim in a series of PRs: io-sim#81, +io-sim#82, io-sim#86, io-sim#87.
    • Renamed a module: io-sim#88.
    • Fixed a failing registerDelayCancellable test: [io-sim#80].
    • Use GitHub merge queue in io-sim repository.
    • CI: download stylish-haskell: io-sim#83.

    Typed Protocols

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team held their Monthly review meeting and drafted the +report which likely is published next week. They put the spec into the +repository and website, addressed a user issue and fixed the TUI peer list. +Furthermore, they updated dependencies, conducted a Twitter space on Auctions +use cases, covered the rollback bug with tests and implemented a solution. +Looking ahead, their goals for next week include releasing 0.10.0, implementing +timed transactions support, writing a Query API ADR, and grooming work items +like off-chain benchmarks.

    What did the team achieve this week

    • Held the Monthly review meeting and drafted the report (to be published next week)
    • Added the spec into the repository +#693 and published on +the +website
    • Groom and addressed user issue #823
    • Covered the rollback bug with tests and implemented a solution (to be reviewed) #784
    • Fixed the TUI peer list
    • Updated dependencies to match cardano-node master
    • Conducted a twitter space on Auctions use cases

    What are the goals of next week

    • Release 0.10.0
    • Support timed transactions solution drafted and validated API with users
    • Write Query API ADR and groom a concrete step
    • Groom and solve PostTxOnChainFailed UX problem #832
    • Groom off-chain benchmarks idea #186 and turn it into a feature

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team worked on several fronts, including fixing state +machine continuity on-chain, discussing voting project solutions, exploring +adding Hydra support to kupo, and improving API navigation with a sidebar. The +team also updated dependencies and fixed issues in their test suites. Moving +forward, the team plans to hold the next monthly review meeting, address a user +issue, prepare for the 0.10.0 release, and work on a dirt road fix for the +rollbacks issue with proper test coverage.

    What did the team achieve this week

    • Fixed scripts to enforce state machine continuity on-chain #777.
    • Took part in a twitter space on Scaling Cardano.
    • Joined a CBIA meeting to discuss Cardano network protocols & how to specify them.
    • Discussed potential solutions of ensuring vote uniqueness in the voting project.
    • Updated dependencies to match cardano-node master to prepare for upcoming releases and hard-forks
    • Explored adding Hydra support to kupo, a lightweight Cardano chain indexer - some more work required.
    • Improved navigation of the API Reference with a sidebar, see unstable API version.
    • Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)

    What are the goals of next week

    • Monthly review meeting (join via Discord or AddEvent) & report
    • Dirt road fix for rollbacks #784 properly covered by a test.
    • Groom and ideally address user issue #823.
    • Put the spec into the repo #693 and prepare release 0.10.0.

    · One min read
    Jared Corduan

    High level summary

    We continued to make progress on CIP-1694 and the conway ledger era. +In particular, the conway era now supports Plutus V3. +Finally, we made small improvements to the ledger API and now host +our Haskell code documentation (haddocks) on github pages.

    Low level summary

    Conway ledger era

    Haddocks hosted on github pages

    Small improvements to the API

    Technical Debt

    • [pull-3367] Fix cost model json instances.
    • [pull-3371] UMap cleanup.
    • [pull-3373] Upgrade to ghc 9.2.7 and cabal 3.10.1.
    • [pull-3375] Sadly, we had to revert the TICKF optimizations. There was a regression we do not yet understand.
    • [pull-3377] Fix cabal warnings.
    • [pull-3383] Fix multi-asset test.
    + + + + \ No newline at end of file diff --git a/page/34/index.html b/page/34/index.html new file mode 100644 index 00000000000..40e569e7dc1 --- /dev/null +++ b/page/34/index.html @@ -0,0 +1,51 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2315.0 distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures.

    Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network.

    Low level overview

    • Released the new distribution 2315.0
    • Completed the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the signed_entity table #816
      • Completed the creation of the signer table #814
      • Completed the migration/adaptation of the single_signature table #829
    • Worked on the epic that designs and implement generic signing/verification of entity services #780:
      • Completed the definition of the interface of the generic entity service for signing #847
      • Worked on the implementation of the Certifier service in the aggregator #850
      • Completed the extension of the SignedEntityType type #848
      • Completed the implementation of the Tick service in the aggregator #849
      • Worked on implementing the signable builder for the Mithril Stake Distribution #851

    · One min read
    Jordan Millar

    · One min read
    Damian Nadales

    High level summary

    This week the consensus team continued working on the improved DB lock mechanism +for UTxO-HD, and modifications to the mempool benchmarks that this prototype +requires.

    On the Genesis front we validated that the fragment size calculation in +BlockFetch is a major performance sink for ChainSync Jumping. By removing it +we will get performance that is acceptably close to that of the baseline. We +also started investigating a performance fix that does not alter the existing +baseline behavior too much. In addition we reviewed our Genesis attack vector +calculations.

    On the support front we released Consensus 0.4, and we are working on improving +our release process, to support the Cardano-wide efforts in this area. We also +performed an analysis on the number of file descriptors that consensus use. This +information can be used by the node operators to check if the number of file +descriptors they want to support are enough.

    · 3 min read
    Michael Karg
    • Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.
    • New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois.
    • Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run.
    • Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench.
    • Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.

    Benchmarking

    We have performed various cluster runs targeting the 8.0 release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile epoch-transition for local reproduction of what we observed on the benchmarking cluster.

    Furthermore, we bridged the gap between the run data from the 1.35.x releases to the the new 8.0.x release branch. This included walking the +master branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial +in locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of +benchmarks.

    Tracing

    In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still +ongoing.

    In coordination with Galois, who are developing a system assurance service by observing a number of cardano-nodes, we're working with the implementation +of data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational +burden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether cardano-tracer could be extended with a richer +feature set to that end.

    Infrastructure & Analysis

    Detailed manifest

    A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with. +These dependencies come from different package sources, have different versioning policies, and an identical package version might provide different +performance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated +by making all component bumps visible and accessible.

    GHC profiling inside workbench

    The workbench has been equipped with a new -profnix profile flavour. This enforces a -fprof-auto build for all node-related packages. The type of +profiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already +been merged to master.

    Nomad backend

    The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances. +This results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing.

    · 2 min read
    Kevin Hammond

    Incident reporting: Cardano block production temporary outage

    On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a ‘critical’ incident, thus warranting immediate response and investigation by IOG engineers. +The investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue – a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite. +Following successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version. +With the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue.

    Further Details

    You can read more details on the incident and how it was managed from SundaeSwap’s Pi Lanningham here. Thanks again to all the community for its support in identifying and fixing this bug.

    + + + + \ No newline at end of file diff --git a/page/35/index.html b/page/35/index.html new file mode 100644 index 00000000000..232b6442f5b --- /dev/null +++ b/page/35/index.html @@ -0,0 +1,49 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has submitted two papers for publication, carried +out consultancy with other teams and has an opening for an intern.

    Details

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team focused on improving the smoke test, fixing developer +tooling, and improving the API for voting use cases. They reviewed progress on +auction, payments, and voting projects and made worked on reproducing a bug with +handling rollbacks. Moving forward, the team plans to update dependencies, +implement a dirt road fix for the rollbacks bug, and explore adding Hydra +support to kupo.

    What did the team achieve this week

    • Reviewed progress on auction, payments and voting projects
    • Improved smoke tests so they can run on mainnet
    • Fixed a regression in the development environment and updated cardano-node +used in tests
    • Improved API with more configurability to unblock voting use case
      • Exclude utxo in SnapshotConfirmed outputs #808
      • Addressed a user request by only sending Greetings once #813
    • Reproduced the rollback bug by improving our model-based test suite #784

    What are the goals of next week

    • Update dependencies to match cardano-node master
    • Dirt road fix for rollbacks #784
    • Update Hydraw to maintain state locally
    • Explore adding Hydra support to kupo
    • Put disclaimer texts and closing mainnet compatibility feature #713

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team published the monthly report for March, created +separate links for different versions of documentation, and clarified potential +solutions for the Rollbacks bug. The team also discussed Query API requests for +the Hydra Voting project and met with community members to answer questions +about Hydra. Moving forward, the team plans to integrate the specification into +the repository, implement a short-term fix for the Rollbacks issue, and draft a +Query API ADR.

    What did the team achieve this week

    • Published monthly reports on website
    • Separate last released and latest versions of docs (e.g. normal released vs. /unstable)
    • Discussed Query API concerns from Hydra Voting project (link)
    • Clarified rollbacks bug and defined possible solutions (short and long term) #784
    • Met with community members to answer questions about Hydra

    What are the goals of next week

    • Finally get the docs integrated into the repository #693
    • Dirt road fix for rollbacks #784
    • Disclaimer text and detail known issues about mainnet compatibility +#713

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2313.0 distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages.

    Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to 1.35.6.

    Low level overview

    • Released the new distribution 2313.0
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the epoch_settings table #813
      • Completed the migration/adaptation of the signed-entity-type table #815
      • Completed the migration/adaptation of the certificate table #817
      • Completed the migration/adaptation of the open_message table #827
      • Completed the migration/adaptation of the signer_registration table #828
    • Completed the refactoring of the dependency injection of the aggregator #823
    • Completed the cleanup of the multi-signer of the aggregator #824
    • Completed the upgrade of the Cardano node to 1.35.6 #843

    · One min read
    Damian Nadales

    High level summary

    This week the consensus team finished the UTxO-HD prototype refactoring. We are +now working on improving the DB lock mechanism to improve performance. We also +introduced several improvements to the file system abstraction and simulation +layer (fs-sim), which culminated in the release of fs-sim-0.1.0.0 and +fs-api-0.1.0.0 to CHaP.

    On the Genesis front we distributed the updated Genesis design document, +soliciting feedback from Networking Team and IOG Researchers. We also opened up +a PR for the adversarial leader schedule QuickCheck generator, which is being +reviewed.

    On the support front, we got a new Consensus version that can use different +fundamental VRF crypto primitives for Babbage and Conway eras.

    On the tech debt front we fixed an bug in the followers logic, which was +discovered by our QuickCheck property tests.

    + + + + \ No newline at end of file diff --git a/page/36/index.html b/page/36/index.html new file mode 100644 index 00000000000..c22e1b90414 --- /dev/null +++ b/page/36/index.html @@ -0,0 +1,42 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jordan Millar

    2023-04-05 - 2023-04-19

    High level summary

    • Introduce new governance commands create, answer and verify. This allows us to have onchain polls.
    • Begin making changes in cardano-api to accomodate for CIP-1694
    • Rename TestEnableDevelopmentHardForkEras to ExperimentalHardForksEnabled and TestEnableDevelopmentNetworkProtocols to ExperimentalProtocolsEnabled
    • Various bug fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 3 min read
    Michael Karg
    • Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.
    • New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput.
    • Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged.
    • Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added.
    • Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.

    Benchmarking

    We have adapted our benchmarking cluster to the requirements of the 8.0 release branch. Testing runs of a very early feature branch for 8.0 +helped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for 8.0 soon.

    Tracing

    Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very +detailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing +the highest possible throughput of data for forwarding to cardano-tracer.

    Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions +for tunneling trace forwarding from a node to cardano-tracer via an easy to manage system service, which will match the production setup of most users.

    Infrastructure & Analysis

    General

    Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance +analysis can be fed back and serve as an additional point of comparison.

    Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations.

    Plutus library

    We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles. +This will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile. +It is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit.

    Nomad backend

    The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is +being improved to minimize any friction for the backend user.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Started looking into full-node verifier
    • cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties.
    • KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent.
    • Sidechains: Included BLS12-381 & JubJub to halo2curves
    • MuSig2: Final modifs to C version.

    Low level summary

    Mithril

    • Started designing how a full-node verifier would work. Issue comming in the next couple of weeks.

    cardano-base

    • BLS12-381 branch merged PR#266.
    • Testing strategy for BLS bindings:
      • Test-vectors for Groth16, and simple BLS signatures ready.
      • Test-vectors with different library, and created by different engineer.

    KES agent

    • Resolved issues of circular dependency
    • Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same.
    • Opened a PR for raw bearer branch in ouroboros network PR4395
    • Resolved a bug where the agent node did not properly closed connections
    • Updated version of IOSim allowed us to finish a first version of KES agent.

    Sidechains

    • Included BLS12-381 curve to our branch of halo2curves
    • Included JubJub to our branch of halo2curves

    MuSig2

    • Minor reorg PR#42
    • Started including fuzz testing for deserialisation PR#

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on final drafts of two papers +for internal review and planning next steps of analysis of consensus +design refiniments.

    Details

    • Preparing final draft of DeltaQSD algebra paper for internal review

    • Preparing final draft of verifying design refinements for +distributed system design for internal review

    • Planning next phase of consensus design refinement analysis

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra continued work on finishing mainnet compatibility. The +semi-automated smoke tests and some missing documentation is still preventing +from calling that fully done. They fixed smaller issues and made a step in the +Head protocol more robust. Besides development, they met with interested people +from the community who want to get started collaborating on communication and +marketing materials.

    What did the team achieve this week

    • Groomed and followed-up on GetUTxO user request discussion #797
    • Fixed hydra-node crashes after forks #560
    • Made collectCom more robust and aligned with spec #786
    • Completed configurable API feature #380
    • Met potential contributors about Hydra communication and marketing materials
    • Versioned documentation: we have a unstable bleeding edge version available as well now, seperate from the last released version

    What are the goals of next week

    • Follow-up backlog and roadmap clean-up
    • Complete mainnet compatibility feature #713 (documentation updates)
    • Integrate Hydra specification into repository #693
    + + + + \ No newline at end of file diff --git a/page/37/index.html b/page/37/index.html new file mode 100644 index 00000000000..4975f5fa38c --- /dev/null +++ b/page/37/index.html @@ -0,0 +1,51 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jared Corduan

    High level summary

    We are still heavily involved in work related to preparing the next release. +The other main thing we have worked on is experimentation about how we will +handle the DRep stake distribution for CIP-1694 in the conway ledger era. +Lastly, we merged a fix for +node-4826 +into our main branch (there will be a post-mortem shortly).

    Low level summary

    Support for the next release

    • pull-3363 - Fix problems relating to Arbitrary instances used by consensus.
    • pull-3361 - Remove the alonze genesis from the conway genesis.
    • pull-3360 - Translate bad pointer addresses to valid ones in conway.
    • pull-3357 - Fix a bug relating to zero valued ADA in the script context.
    • pull-3356 - Added needed instances (Arbitrary and Serialization) for conway integration.
    • pull-3345 - Added helper functions for the CLI.
    • pull-3342 - Fix a bug with a CLI helper function (having to do with deposit tracking).

    Experiments for DRep stake distribution

    Adding another stake distribution to the ledger state presents some new challenges. +We would like to be able to use the current stake distribution at the epoch boundary +for DRep voting so that people can always vote themselves in time for any proposal. +To this end, we have a prototype of an incremental computation based on the incremental +lambda calculus, together with tests and benchmarks (which are very promising). +See pull-3344.

    Additionally, more of the ledger state is going to need to be rearranged to accomodate +the new incremental computations. +We have two draft PRs up for possibles solution. +See pull-3353 and pull-3364.

    Technical debt and bug fixes

    Documentation changes

    • pull-3354 - Rename "optional datums" with "supplemental datums" in the alonzo spec.
    • pull-3352 - Add a section to the Shelly errata about the individual deposit tracking.
    • pull-3351 - Further clarify the details regarding the script integrity hash.
    • pull-3350 - Some cleanup of the Babbage spec.

    · One min read
    Martin Kourim

    High level summary

    Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.5 and 1.35.6 releases (and their predecessing release candidates) and ran tests on branch with the UTxO-HD functionality.

    Workstreams

    Framework improvements:

    • improvements in searching for unexpected error messages in log files during test run
    • added support for UTxO-HD testing
    • added support for the new P2P topology format
    • added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)
    • added preliminary support for the Conway era
    • added support for running tests on the Preview testnet

    Full list of closed PRs

    Node:

    • ran tests on node branch with the UTxO-HD functionality
    • tested the 1.35.5 release
    • tested the 1.35.6 release

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra had a team workshop and conducted the monthly review +meeting for March. They demonstrated a Hydra Head on mainnet, which was running +the hydraw demo application. While this marks an important milestone, they also +emphasized that more features are still to be added as needed for applications +to run on Hydra. Besides this, the roadmap is getting cleaned up to encourage +discussions and provide more space for user requests.

    What did the team achieve this week

    • Monthly review meeting slides/recording, full report of March next week
      • Opened a head on mainnet with hydraw demonstration
      • Hydra pay updates
    • Team workshop in Austria
      • Hydra presentation at the Cardano Foundation in Zurich
      • In-person grooming session, marked many items as candidates to be rather :idea: dicussions
      • Improved head protocol #786 and investigated a potential bug in rollback handling #784
      • Team building and retrospective

    What are the goals of next week

    • Follow-up on backlog and roadmap clean-up
    • Complete mainnet compatibility feature (documentation updates)
    • Make API more configurable #380
    • Integrate Hydra specification into repository #693

    · One min read
    Kostas Dermentzis

    High level summary

    The DBSync team worked in performance enhancements issues, on providing new db-sync options and on +technical debt and bug fixing. The DBSync team also on boarded a new member.

    Low level summary

    • Worked on an issue which causes ada_pots tables to include the values related not only to an +epoch, but also the first epoch of the last epoch. +#1367
    • Fixed an issue where the epoch table didn't rollback and caused wrong values +#1370
    • Fixed an issue were users with disable-ledger option had to provide the state dir option, even +though it was never used. Also refactored the no ledger part of the codebase. +#1378
    • Improved the perforance by using the cache more. Also provided many new options which enables or +disables parts of db-sync. In addition a new --turbo mode is enables which allows db-sync to sync +mainnet in hours. +#1379

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2310.0 distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images.

    Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano mainnet and they have fixed some bugs.

    Low level overview

    • Completed the epic that implements eras behavior switch #707:
      • Completed handling the API version switch at era transition #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed on the migration/adaptation of the stake_pool table #787
      • Worked on the migration/adaptation of the epoch_settings table #813
      • Worked on the migration/adaptation of the signed-entity-type table #815
      • Completed the creation of a stake distribution service #799
    • Completed the testing of Mithril with Cardano mainnet network #777
    • Completed qualifying the computation of the stake distribution #810
    • Completed the testing of the Docker client in the Mithril Client multi-platform test workflow #794
    • Worked on bugs and optimizations:
      • Fixed a bug that made computation of the stake distribution occur multiple times during an epoch #804
      • Fixed a bug that created deadlocks on the SQLite connection #807
      • Optimized the error message and the behavior of the signer node when KES keys have expired #820
      • Upgraded the infrastructure of the testing-preview and pre-release-preview networks #801
      • Re-genesis of the testing-preview network #803
      • Re-genesis of the pre-release-preview network #818
    + + + + \ No newline at end of file diff --git a/page/38/index.html b/page/38/index.html new file mode 100644 index 00000000000..5720d05fd23 --- /dev/null +++ b/page/38/index.html @@ -0,0 +1,53 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Damian Nadales

    High level summary

    This week the consensus team continued working on the refactoring of the UTxO HD +prototype, and design and testing of Genesis. We also extracted the fs-sim +package, which provides a file-system abstraction layer that can be used for +testing and simulation. This makes the Consensus code base smaller, while +providing a package that the community can reuse and contribute to. We also +fixed a failing property test related to iterators. We are also working on +mempool and VRF improvements.

    Low-level details

    · One min read
    Jordan Millar

    2023-03-22 - 2023-04-05

    High level summary

    • Added new cardano-cli ping command which allows users to ping remote cardano-nodes.
    • The transaction build command now can automatically balance multiassets
    • New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 3 min read
    Michael Karg
    • Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.
    • New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users.
    • Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery.
    • Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks.
    • Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing.
    • Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.

    Performance

    New tracing

    The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe +a slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use.

    GHC RTS parametrization

    We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies +on different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use.

    Open Sourcing

    Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases.

    Tracing

    For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well +as a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points +for users of the new system, depending on their wants and needs.

    Infrastructure & Analysis

    General

    Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will +increase confidence in specific metrics.

    Nomad backend

    We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis +is patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries.

    · 2 min read
    Marcin Szamotulski

    High level summary

    In the last spring we released cardano-node-1.35.6 with dynamic P2P +functionality.

    We received reports from some SPOs who encountered problems with their non +P2P block producing nodes not being able to connect to their P2P relay. Karl +Knutsson (from Cardano Foundation) reproduced this issue between two nodes (a +non P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed +it and found a bug in the legacy non p2p code. The bug is only possible to +trigger with a P2P node which is binding its outbound connection port to +a fixed IP address and port (default in p2p). A possible solution was found. +For more information see #4465.

    We released cardano-ping-0.1.0.0 package to CHaP. cardano-ping is no +longer available as a standalone binary, but instead it will become part of +cardano-cli (see #4664)

    We are testing cardano-node with peer sharing functionality (#4019).

    We are working on eclipse evasion. We added new class of peers: big ledger +peers to the outbound governor, implemented tests and fixed found issues +(#4462). We also made the information if a given peer plays the role of +a big ledger peer to the mini-protocols. This will allow to modify +mini-protocol applications for such peers. As part of this functionality we +refactored some core types in the network code which simplifies exposed API.

    Together with Moritz Angerman we started to update io-sim to ghc-9.6.1 (see +#73).

    We merged a fix of configuration of accepted connections limit in +cardano-node (see #4902).

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: RFP finished. Code ready for audit.
    • cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams.
    • KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing.
    • Sidechains: Preparing proving system to use the curves needed for main-net PoC.

    Low level summary

    Mithril

    • Merged PR#783
    • RFP for crypto audit ready.

    cardano-base

    • BLS12-381 branch approved PR#266. Blocker is Windown's CI. Working on it
    • Testing strategy for BLS bindings:
      • Preparing test-vectors for Groth16, and simple BLS signatures
      • Finding community projects to help write their use cases
      • Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)
    • Wrote blogpost on how using the same key for ed25519 and VRF completely breaks the security of both systems

    KES agent

    • Started integration of sockets interface used in consensus
    • Use that for de/ser
    • Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim
    • Results in having to parametrise for IOSim in KES and DSIGN for testing

    Sidechains

    • Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages.
    • Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS.
    • EdDSA over JubJub ready
    + + + + \ No newline at end of file diff --git a/page/39/index.html b/page/39/index.html new file mode 100644 index 00000000000..7f253fc6355 --- /dev/null +++ b/page/39/index.html @@ -0,0 +1,56 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has continued work on the mainnet compatibility of the +hydra-node. They added a golden test suite for hydra-plutus scripts, added +some detection of hydra-node misconfiguration, established a limit of 100 ADA +per commit and other smaller tasks to prepare for a mainnet beta release.

    Next week there will be a small team workshop to push for demonstrating a Hydra +Head on the Cardano mainnet, ideally just in time for the monthly review +meeting. See the hydra channels on the IOG Technical Community discord server +for details.

    What did the team achieve this week

    • Implement a 100 ADA hard-coded commit limit in the hydra-node +#763
    • Pay back funds to faucet after smoke-test run +#773
    • Setup custom github runner for smoke-tests on mainnet +#775
    • Created golden tests to assure the script hash stays the same between +changes #772
    • Removed hardcoded error codes in plutus scripts +#768
    • Detect misconfiguration of a hydra-node given persistent state +#767
    • Met with potential users for hydra-pay
    • Prepared hydra workshop

    What are the goals of next week

    • Hydra monthly meeting
    • Open a multi-party head on mainnet
    • Complete mainnet compatibility feature

    · 2 min read
    Jared Corduan

    High level summary

    We made further progress on the conway ledger era. +In particular, we expanded the ledger API significantly, including lots of governance features. +We also made progress on the specification and corresponding work in the Haskell implementation.

    We also continued to integrate the latest ledger packages into cardano node and addressed +technical debt.

    Low level summary

    Expanded ledger API

    The ledger API was significantly expanded to include:

    • a lot of protocol parameter support
    • versioning support (type level ledger eras and protocol versions)
    • auxiliary data support
    • many new lenses
    • support for witnesses
    • support for conway governance

    See pull-3328.

    Conway ledger rules

    We have made progress on the formal ledger specification for the Conway era. +Moreover, the corresponding Haskell updates were also completed:

    Incremental SPO/DRep stake distribution computation

    We have a working (and correct) proof of concept for how to use the incremental lambda calculus +to maintain several of the stake distributions incrementally. +For the per-SPO distribution, this is a performance improvement. +For the (conway) per-DRep distribution, this is will allow those who have delegated their votes +to a DRep to have time to react to any votes that they disapprove of. +(Sorry, no code to share just yet, more to come.)

    Technical debt

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers +improving the deltaQ tutorial, consulting on performance design, and +the final version of the Djed paper.

    Details

    • Preparing draft of DeltaQSD algebra paper for ICE 2023

    • Successful outcome of Marlowe consultancy leading to substantial +improvement in performance

    • Preparing sections on the communication language and bisimulation +proofs for draft paper about verifying design refinements for +distributed system design

    • Camera ready version of Djed paper under preparation

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team addressed issues with committing complex UTxOs into a +Hydra Head, prepared the hydra-node to be run on mainnet (soon) and improved +the test suite of the hydra-plutus scripts. The specification is constantly +getting improved upon reviewer feedback on overleaf - this week the graphical +notation was refined to be more transaction-focused.

    What did the team achieve this week

    • Clarified bug of committing UTxOs with reference scripts to a Hydra head #737
    • Prepare usage of hydra-node on mainnet by updating command line options #715
    • Improved our mutation test suite to all expected errors #705
    • Re-opened our persistent hydraw demo head on preprod using version 0.9.0
    • Updated on-chain graphs to be more transaction-focused in the specification

    What are the goals of next week

    • Complete mainnet compatibility feature
    • Prepare the Hydra workshop
    • Address all todo’s in the Hydra specification
    • Unblock the auctions project with commit from script a solution

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano mainnet and computes the stake distribution with the optimized unreleased Cardano CLI command.

    Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup.

    Low level overview

    • Worked on the epic that implements eras behavior switch #707:
      • Completed the deployment of the era behavior switch to the test networks #752
      • Completed the enhancement of datum generation for era markers #786
      • Worked on handling the API version with an era switch #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Worked on the migration/adaptation of the stake_pool table #787
    • Completed the refactoring of errors in the signer and aggregator state machines #665
    • Worked on testing Mithril with a mainnet Cardano network #777
    • Worked on fixing bugs with the Docker client image:
      • Fixed a bug that made the Docker client container crash at startup #769
      • Fixed a bug that prevented the restoration of a snapshot with a Docker client #791
      • Worked on testing the Docker client in the Mithril Client multi-platform test workflow #794
    + + + + \ No newline at end of file diff --git a/page/4/index.html b/page/4/index.html new file mode 100644 index 00000000000..fa1ac49642b --- /dev/null +++ b/page/4/index.html @@ -0,0 +1,59 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Completed the issue Light Wallet: Release mithril-client library #1311
    • Completed the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Completed the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Fix certificate hashes re-computation in aggregator #1343
    • Completed the issue Remove unstable tag in unstable release #1235
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312

    · 2 min read
    Carlos LopezDeLara

    2023-11-01 - 2023-11-14

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Improve golden tests
    • Clean-up of conway era commands

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Sebastian Nagel

    High-level summary

    The last two weeks, the Hydra team achieved several milestones. They published +the monthly report for October, providing updates on project developments. The +team delivered a presentation and workshop at the Cardano Summit, contributing +to community engagement. They implemented a \"dirt road\" solution for the +\"Ignored init tx\" notification and moved the hydra-poll example project to a +dedicated repository. Additionally, the team built a hydra-chain-observer tool +for Hydra Heads, updated the toolchain to GHC 9.6.3, and made various +improvements to tooling and code formatting. They addressed specific issues, +such as fixing the gen-hydra-keys command and resolving concerns with the +rewritten hydra-tui. The team also enhanced the hydra-cluster smoke test +suite by fetching network configurations dynamically. Lastly, they actively +reviewed pull requests and architectural decision records from the community, +including contributions from SundaeSwap. An experiment, the Hydra tally, was +completed and successfully deployed to the mainnet by the Cardano Foundation.

    What did the team achieve this week

    • Published the monthly report for +october
    • Given a presentation / workshop at the Cardano summit +#1109
    • Dirt road implementation for \"Ignored init tx\" notification +#529 (without +stateless observation)
    • Completed and moved hydra-poll example project into a +dedicated +repository
    • Built a first version of a chain observation tool for Hydra Heads +#1096
    • Switched toolchain to GHC 9.6.3 and various improvements on tooling +and code formatting +#1135#1152#1151#1154
    • Fix gen-hydra-keys command to not overwrite existing +keys #1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Fetch network configurations instead of packaging them into +hydra-cluster (smoke) test suite +#1156
    • Reviewing PRs and ADRs from the community (SundaeSwap) +#1118#1157
    • Hydra tally experiment (Cardano Foundation) deployed to mainnet

    What are the goals of next week

    • Tackle reported bugs
    • Shepherd contributed off-line mode PR to the main codeline
    • Improve chain observation tool to include more data and refactor +existing code towards more stateless observation
    • Start work on incremental decommits

    · 3 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the cardano-playground stack

    Lower level summary

    Capkgs

    Cardano-parts

    • General migration support PR for cardano-world to cardano-playground cardano-parts-pull-18
      • Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground
      • Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes
      • Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains
      • The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state
      • The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable
      • Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0
      • For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true
      • Template updates include:
        • Adds optional TF AZ declaration on ec2 resources
        • Adds a cardano node p2p dashboard to the grafana cloud stack
        • Adds a dbsync pool performance analysis query
        • Updates python distribute and delegation scripts from world for playground compatibility
        • Starts a python script lib to reduce shared code among the python scripts
        • Several justfile improvements and new recipes
      • More detail is available in the PR description
    • Update submit action script for 8.6 cardano-parts-pull-19
    • Update scripts for 8.6.0-pre cardano-parts-pull-21
      • Fixes subcommand names based on ERA_CMD
      • Adds deposits to some commands
      • Separates CC cold/hot key generation as host authorization has to occur after action is approved
      • CC voting enabled in vote job

    Cardano-playground

    • Migration PR to largely complete the network migration from cardano-world to cardano-playground: cardano-playground-pull-5
      • Adds re-spun private chain network
      • Migrates shelley-qa chain network from world
      • Justfile improvements and new recipes
      • Improve concurrent environment chain support
      • More detail is available in the PR description

    Iohk-nix

    • Migration to play: iohk-nix-pull-561
      • Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org
      • Remove deprecated cardano-lib p2p network environment
      • Update sanchonet chain with respin changes
      • Update private chain with respin changes
      • Bump private and shelley-qa chains to sanchonet equivalent conway genesis
      • Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing

    Sanchonet-demo

    · One min read
    Kostas Dermentzis

    High level summary

    We have created new tag sancho-2-2-0, which integrates missing Conway feautures and some minor fix +tags sancho-2-1-0, sancho-2-0-1. +We have completed the initial implementation for the bootstrap instance objective.

    Lower level summary

    • Add a new --disable-gov flag which disabled Conway ferautures +#1558
    • Fix of the committee key size +#1544
    • Workaround a ledger issue with unregistered pools +#1542
    • Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs +#1539
    • Rename offline to offchain +#1533
    • Transfer existing tests to Conway era +#1529#1547
    + + + + \ No newline at end of file diff --git a/page/40/index.html b/page/40/index.html new file mode 100644 index 00000000000..bcfd7419218 --- /dev/null +++ b/page/40/index.html @@ -0,0 +1,68 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Damian Nadales

    High level summary

    The Consensus team continued working on refactoring and improving the UTxO-HD +prototype, and introducing improvements to the lmdb related packages. In +particular we identified an opportunity to gain performance by handling locks in +a more optimal way.

    On the Genesis front, we sketched a mitigation for an issue that PNSol and +Researchers caught. We also came op with a road map for not only testing the +Genesis prototypes, but also for enriching the tests we already have.

    Regarding technical debt, next to some minor improvements, we created +component-level micro-benchmarks for adding transactions to the mempool. The +results of these benchmarks will be published in the ouroboros-consensus web +page.

    We also finished moving the Consensus documentation to the ouroboros-consensus +repository, released ouroboros-consensus 0.3.0.0, and reduced the time +GitHub actions take in ouroboros-network.

    Workstreams

    UTxO HD Prototype

    We continued working on refactoring and improving the UTxO-HD prototype. As a +result of the first round of sytem-level benchmarks, we identified an +opportunity to optimise the way we handle locks to improve performance +(#4393).

    Also, we introduced several improvements to the lmdb related packages:

    Genesis

    We sketched out a mitigation of the issue that PNSol and Researchers caught in +the Genesis design.

    We came up with a road map for testing the Genesis prototypes, including early +milestones that are applicable to today's master branch, ie tests that are +useful before Genesis, and that will be nicely enriched when we do add Genesis.

    We developed the aforementioned tests, specifically a QuickCheck generator for +the Honest leader schedule and one as-aggressive-as-possible Adversarial +leader schedule that together satisfy the Praos properties that the Consensus +design takes as invariants.

    We investigated why the improved ChainDB queueing implementation behaves +differently in the baseline compared to the prototype, and we are close to +having a full picture of how the Consensus components interact during bulk sync.

    Technical debt

    We created component-level micro-benchmarks for adding transactions +to the mempool. We plan on extending this to more mempool actions and different +types of blocks. We store the benchmark data to make it available +to the GitHub action that publishes the benchmarks results.

    Other minor improvements include:

    • Removal of Test.Util.Classify in favour of Test.StateMachine.Labelling.
    • Addition of -Wunused-packages to the default ghc-options for Consensus +packages.

    Fostering collaboration

    We finished moving the Consensus documentation from +ouroboros-network to ouroboros-consensus, in preparation for +migrating the code to the latter repository.

    Support

    We released ouroboros-consensus 0.3.0.0.

    We reduced the load in the ouroboros-network GitHub actions, +thereby reducing the time CI jobs take.

    · One min read
    Jordan Millar

    · 2 min read
    Michael Karg
    • Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.
    • New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.
    • Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.
    • Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.
    • Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.

    Performance

    1.35.6 release

    Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.

    Analysis pipeline

    Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better +differentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance. +Additionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking +data more easily accessible.

    Open Sourcing

    As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable +third parties to make use of that data much more easily, by having reliable guidelines and a working example.

    Tracing

    The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make +the switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.

    Infrastructure

    Nomad backend

    The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.
    • cardano-base: BLS branch is now ready for review. We are workign forward its merge.
    • KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.
    • Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs

    Low level summary

    Mithril

    • Bumped to version 0.2.0 the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using mlock.
    • Opened PR#783 to update dependency
    • Improved testing for batch opening of mtree, PR#773
    • Improved testing for batch verification of STM sigs PR#774
    • RFP for crypto audit almost ready.

    cardano-base

    • BLS12-381 branch finally ready for review PR#266

    KES agent

    Team off for one week. Other progress:

    • Learning about raw direct-bearer abstraction. An interface for sockets in consensus.
    • use that for direct ser/deser
    • written those syntaxes for ouroboros (coming PR)
    • the kes agent will depend on that.

    Sidechains

    Progress with familiarisation of Halo2 library to write circuits.

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, improving the deltaQ tutorial, consulting on +performance design, and the Djed paper has been accepted for +publication.

    Details

    • Preparing draft of DeltaQSD algebra paper for FORTE 2023

    • Extending the technical report on which the above paper is based

    • Consulting with an external company on performance engineering of Plutus contracts

    • Planning improvements and collecting material for the deltaQ +tutorial based on experience with systems that manage risk at +multiple timescales

    • Preparing sections on the communication language and idempontency +laws for draft paper about verifying design refinements for +distributed system design

    • Studying Cardano chain sync protocol

    • "Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin +Protocol" has been accepted for publication at IEEE ICBC 2023

    + + + + \ No newline at end of file diff --git a/page/41/index.html b/page/41/index.html new file mode 100644 index 00000000000..9a621c37fad --- /dev/null +++ b/page/41/index.html @@ -0,0 +1,77 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team released version +0.9.0 - a version +of the hydra-node with fully specified behavior of on-chain scripts and +off-chain head-logic, decreased costs for opening/closing a Head and scalable +contestation deadline semantics. Check out the full release notes for details.

    Furthermore, they published the monthly +report of the Hydra project +and conducted a review meeting with an increasingly wider audience. The team +plans to extend invitations through the new Hydra +#announcements discord channel for the next +months, stay tuned!

    What did the team achieve this week

    • Monthly review meeting with report published on website
    • Fixed smoke tests #726
    • Reduced the cost of opening/closing a Head (error codes #748 + head reference script #701)
    • Released version 0.9.0
    • Conducted a first experiment on mainnet compatibility #713
    • New discord category with #announcements channel
    • Received a demo about the Hydra for Voting project
    • Lightning talk on mutation-based testing (to be shared)
    • New themes view in on our roadmap and some rearranging as we align it with high-level objectives
    • Clarified things with researchers, but mostly identified action items for them

    What are the goals of next week

    • Redraw transaction graphs and address TODOs specification
    • Run hydraw with 0.9.0 on preprod
    • Make smoke tests on mainnet possible
    • Groom the explorer item
    • Unblock the auctions projecth with commit from script a solution

    · 2 min read
    Jared Corduan

    High level summary

    We have focused the last two weeks on CIP-1694, integration of the last several months of ledger +work into consensus and node, and testing infrastrutcture that we will use in the conway ledger era.

    Low level summary

    Conway rules

    We made a major update to the conway era so that the implementation is now in sync with the spec +with respect to the ratification and enactment logic.

    See the notes in pull-3291 for more details.

    Constraint based generators

    This week we hit a major milestone in our efforts to build out better property based testing +support for the main ledger properties. +The new constraint based generators can now generate full ledger states with what is probably +very close to the real constraints (if anything, it is under constrained). +Next we will work on generating a transaction in the context of a ledger state, which would allow +us to actually start using these generators for real tests.

    See pull-3219.

    Preparing a release, now with proper versioning

    After quite some time, we are ready to release a version of ledger that will work with a new +version of consensus, using CHaPs.

    See pull-3308.

    Technical debt

    • We cleaned up the redeemer serialization code (to prevent future mistakes). See pull-3269.
    • We added a note to the Alonzo spec, specifying that the transaction inputs are +lexicographically ordered in the Plutus script context. See pull-3306.
    • We fixed a problem with the address deserialiazation +(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway). +See pull-3307.
    • We fixed a problem with our nix build. See pull-3311.
    • We fixed a problem with our NoThunks tests. See pull-3310.
    • We improved our nightly tests. See pull-3316.

    · 2 min read
    Marcin Szamotulski

    High level summary

    In the current sprint the networking team focused on fixing bugs and pushing +forward implementation of eclipse evasion. We also found a bug in our +simulation testing setup (in integration of test node). We also overviewed the +work on extending handshake protocol which is delivered by Galois Inc.

    We published ouroboros-network-0.4.0.1 and +ouroboros-network-protocols-0.3.0.0 to CHaP.

    We also fixed a bug in cardano-node which results in not being able to +configure inbound connection limits, see PR #4902.

    Together with Karl Knutsson (CF) we realised an issue in cardano-cli: it's +validation of DNS names, IP address & ports when registering a stake pool +should be more strict to protect against common mistakes which we identified on +the chain. See issue #4929.

    Detailed work log

    In PR #4385 we fixed two bugs in peer state actions. First one results in +a busy loop if demotion from hot to warm times outs. This busy loop is +eventually exited when mux exits (we reported this in our previous report). +This fix made it to 1.35.6 release as well.

    In addition the PR #4385 also fixes another bug which results in hot -> warm +-> hot demotion / promotion busy loop.

    The PR #4385 also fixed a bug in a node only used in simulation which +resulted in not using chain-sync or block-fetch mini-protocols. In the +review process, we realised that the header-body split in the simulated node +requires further work (see PR #4419, which is under review).

    The PR #4385 also extend our generators, which together with the above fix, +cover the hot -> warm -> hot demotion / promotion busy loop.

    In PR #4419 we introduce a ChainDB for our simulation node, which plays +similar role to ChainDB in the ouroboros-consensus: a persistent (across +simulated restarts) store of blocks which does chain selection. This ensures +that the simulated node is using block-fetch to download blocks announced by +chain-sync mini-protocol.

    We also made progress with reviewing PR #4019 - peer sharing.

    We also fixed issue #4370 - a connection manager test failure, see PR #4384.

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team continue closing many gaps and aligning the +implementation with the specification. More over, they have groomed a plan to +make Hydra Mainnet compatible. Also, they continue moving forward with the +internal auditing and have published some auditing guidelines to receive +contributions from the community.

    What did the team achieve this week

    • Completed #452 (what is +remaining in there)
    • Aligned the Head protocol logic implementation with the specification
    • Completed full minting policy implementation and spec +#720
    • Clarified message authentication with researchers
    • Groomed what is left to do for Mainnet compatibility +#713 and drafted a +0.10.0 version
    • Added a tutorial by @perturbing to the +website LINK
    • Published auditing guidelines +LINK
    • Made hydra-node work for macos +#746 and added support +for building on aarch64 +#673
    • Met with a potential customer of Hydra for Payments

    What are the goals of next week

    • Have the monthly review meeting incl. the report
    • Have smoke tests fixed and running regularly
    • Release 0.9.0 with updated scripts
    • Redraw transaction graphs for specification

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2306.0 distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes’ CLI that allows generating and signing an era marker’s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI.

    Low level overview

    • Released the new distribution 2306.0
    • Completed the epic that implements signer versions deployment monitoring #718:
      • Completed the implementation an event producer/consumer via channel #738
      • Completed the creation of a database and its configuration to save the events on the consumer side #740
      • Completed the creation of events and sending them on the channel on the producer side #741
      • Completed the creation of the signer registration event #742
      • Completed the creation a query to extract the node versions stakes distribution #743
    • Worked on the epic that implements eras behavior switch #707:
      • Completed the loading of era reader adapters from config in the signer and the aggregator #732
      • Completed the implementation of an era cli command in the aggregator #755
      • Completed the implementation of a dynamic matrix of cases in CI end to end tests #760
    • Fixed some bugs:
      • Fixed the unsupported unixepoch() function #757
      • Fixed the problem that prevented some signers from signing on the testing-preview network #730
      • Update SQLite version to 3.40 in aggregator infrastructure #765
    + + + + \ No newline at end of file diff --git a/page/42/index.html b/page/42/index.html new file mode 100644 index 00000000000..ec2c82f20ca --- /dev/null +++ b/page/42/index.html @@ -0,0 +1,70 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Michael Karg
    • SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.
    • Release benchmarking: we performed a round of benchmarks for the 1.35.6 release.
    • UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup.
    • New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities.
    • Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure.
    • Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.

    Performance

    SECP

    1. For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead.
    2. The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run.
    3. The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking.

    UTxO-HD

    1. After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop.
    2. We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.

    1.35.6 release

    Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health.

    Tracing

    Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible.

    Infrastructure

    Nomad backend

    1. Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients.
    2. Locality assumptions were removed and job monitoring was refactored.
    3. To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster.
    4. We're currently evaluating different options for genesis distribution in said cluster.

    NixOps backend

    The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery.

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks we got the results from the system level benchmarks +for UTxO HD. They showed a substantial performance regression, so we spent some +time analyzing the results. We found out the frequency at which ledger snapshots +were taken was too high, so we requested the benchmarking team a new run with a +more realistic snapshotting policy. We continued refactoring and improving the +prototype, and we released UTxO-HD related packages to CHaP.

    We met with IOG researchers and networking specialists to discuss the Genesis +design, which was well received. We continued working on testing and +benchmarking different Genesis prototypes.

    We are also working on solving a test failure related to iterators. This work +derived in several improvements such as better documentation, a framework for +writing unit (and regression) tests, and the possibility of debugging +QuickCheck counter examples in the REPL.

    Finally, we released ouroboros-consensus 0.2.0.0 and +ouroboros-consensus-cardano 0.3.0.0 to CHaP

    Workstreams

    UTxO HD Prototype

    We got the results of the first system level benchmarks for UTxO HD. They seemed +to indicate a significant regression in performance. After looking into the +benchmark logs we found that the benchmark runs took ledger state snapshots too +often, due to the default snapshotting policy depending on k, and k being so +small in the benchmark runs. Therefore, the next step is to re-run the +benchmarks with a snapshotting policy that more closely resembles the one from +mainnet.

    At the same time, we continued refactoring and cleaning up the prototype.

    Also, we prepared the anti-diff packages (fingertree-rm, diff-containers, +simple-semigroupoids) and the lmdb related packages (cardano-lmdb and +cardano-lmdb-simple) to CHaP.

    Genesis

    The Genesis design was presented to the IOG researchers and Peter Thompson from +NSol. It was well received. They pointed out one blindspot, but we think it'll +be relatively simple to mitigate.

    In parallel, we continued developing test and benchmarks for the Genesis +prototypes. I particular we tested and implemented a potential fix for +increased ChainDB dequeue timings, which partly +behaved as we expected, but still needs further investigation. Also we obtained +new benchmarking data for the prototype.

    Technical debt

    Related to #4183, we developed a DSL for specifying +ChainDB unit tests. This will allow us to better understand the +counter-examples returned by QuickCheck tests, and to write regression +tests for them. Also, we added a module to enable +QuickCheck counter-examples to be run on the REPL, allowing for faster debugging +feedback. Also, we improved the documentation related to followers +(#4372).

    We are also working on a design for optimizing the way we handle blocks from the +future.

    Support

    We released ouroboros-consensus 0.2.0.0 and ouroboros-consensus-cardano +0.3.0.0 to CHaP. Remember that we decided to split the packages related to +Consensus into two bundles, one with the core functionality, Cardano-agnostic +code, and another bundle with instantiations specific to Cardano.

    · 2 min read
    Jordan Millar

    2023-02-22 - 2023-03-07

    High level summary

    General bug fixes

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    Documentation

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · One min read
    Kostas Dermentzis

    High level summary

    The db-sync team created a new tag 13.1.0.2 which is ready to release. +We also investigated and had the first working UTxO-HD integration which is one +of the potential future risks for db-sync.

    Low level summary

    • Integrated the UTxO-HD feauture branch in kderme/utxo-hd-1. This doesn't +use the full on disk storage but keeps things in memory and the plan is to keep +it this way for the first iteration. The integration still has some performance +issues which we investigate
    • Created tag 13.1.0.2 which upgrades the dependencies of db-sync
    • Fixed an issue related to errors appearing in SMASH +#1353
    • Continued with ghc-9.2 integration +#1339
    • Worked on an new fixing procedure for +#1348. +We try to make these procedures work also on older schema version, without the +need to migrate to newer schema, which can be very useful for fixing existing +snapshots.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration.
    • cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: started implementation in rust.

    Low level summary

    Mithril

    • Transmute helpers merged PR#722
    • We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope.
    • We are working in a modification of KES to require caller to allocate the secret key buffer.
    • Proposed a solution for signer registration of Mithril.

    cardano-base

    • Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 proof.
      • Results are promising, with using only 23% of the execution budget to verify a realistic proof.
      • Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril.
    • KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this.
    • Conversion finally merged PR#344.

    KES agent

    • Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation
    • Figuring out how to go from fake file descriptor to write the raw bytes

    MuSig2

    • Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.
    + + + + \ No newline at end of file diff --git a/page/43/index.html b/page/43/index.html new file mode 100644 index 00000000000..eb888a511d5 --- /dev/null +++ b/page/43/index.html @@ -0,0 +1,73 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, distributivity properties of deltaQ, and consulting +on performance design with the Marlowe team.

    Details

    • Processing reviews on performance engineering paper and planning +paper revisions accordingly

    • Investigating distributivity properties of DeltaQ

    • Preparing sections on the thorn calculus and idempotency laws for +draft paper about verifying design refinements for distributed +system design

    • Consulting on performance design with Marlowe team

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team completed work on dealing differently with contests +during the contestation period. These will now always push out the deadline and +hence contestation periods are easier to pick (depending on the network a Head +runs on). Furthermore, they added an important acceptance test and completed +internal refactoring of the protocol logic making future changes easier.

    What did the team achieve this week

    • Push contestation deadline on each contest #716
    • Wrote an acceptance (property) test can always close/fanout when collect is successful
    • Internal refactoring of our HeadLogic
    • Groomed remaining things from #452 into dedicated features

    What are the goals of next week

    • Complete full minting policy #720
    • Release 0.9.0 with updated scripts
    • Plan mainnet milestone and a 0.10.0 version
    • Redraw transaction graphs for specification (upon feedback)
    • Have smoke tests fixed and running regularly

    · 3 min read
    Jared Corduan

    High level summary

    This past two weeks saw many months worth of ledger changes integrated with the cardano-base +and ouroboros-network repositories. +The vast majority of the effort involved all the changes to the ledger serialization libraries +(and the interplay with cardano-base) which now support proper versioning. +Supporting the conway ledger era, and in particular allowing the ledger state to transition +to a whole new system of governance, also played a noticeable part in the integration.

    Besides the integration work, the team continues to address technical debt, improve the +documentation, make our testing infrastructure better (such as experimenting with better +nightly tests), and formally specifying more parts of CIP-1694.

    Lower level summary

    Integration work

    Below is all the integration work completed, which will enable a release to node from +the current ledger master. Many thanks to +Alexey for this colossal undertaking!

    Technical debt

    Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted +in the CBOR specification. See pull-3241.

    We now have our .cabal files being checked for a consistent formatting given by +cabal format in our CI. See pull-3286.

    We are still experimenting with better nightly tests for our long running +property based tests. See pull-3276 and pull-3296.

    Small documentation improvements

    The hand proofs of the preservation ADA property have been added back to the +Shelley ledger specification. See pull-3295.

    We have clarified how the script integrity hash is computed in the CDDL description. +See pull-3290.

    Specifying CIP-1694

    Our new formal specifications backed by Agda have seen a lot of progress! +Upgrading to Agda 2.6.3 fixed our main build infrastructure problems, +and we no longer have to rely on our custom fork. See pull-50.

    Our progress on formally specifying CIP-1694 can be followed here:

    Constraint based testing

    We are still actively working on our new constraint based property testing framework. +We have nearly all of the constraints for an entire ledger state +hooked into generators, and tests that the generators do indeed obey the constraints. +The variable count in the constraints is over 100! +There is still much work to do on shrinking, making the generators faster, +and writing actual property tests for the ledger, but the approach still seems viable and +we are hopeful that it could replace our trace generators. +The WIP can be followed here: pull-3219.

    · One min read
    Marcin Szamotulski

    High level summary

    Recently QA found a bug in P2P code, which results in busy loops. We added one +fix to 1.35.6 release, another one will likely be part of next release. The +first one is already included in ouroboros-network-0.3.0.1 release. These +bugs could only affect nodes which are out of sync and thus should not impose +risk on well maintained nodes on mainnet. We also advertise to deploy at most +one of the relays as a P2P node, which shields from possible consequences.

    We recently finished design phase of eclipse evasion and we started +implementing it (see issue #3886 for progress).

    Galois finished implementing Handshake extension which will allow to query +network protocol versions (see pr #4256).

    We also recently released a newer set of network packages to be integrated with +cardano-node master branch, this includes:

    * monoidal-synchronisation-0.1.0.2
    * cardano-client-0.1.0.2
    * network-mux-0.3.0.0
    * ouroboros-network-api-0.1.0.0
    * ouroboros-network-protocols-0.2.0.0
    * ouroboros-network-testing-0.2.0.1
    * ouroboros-network-mock-0.1.0.0
    * ouroboros-network-framework-0.3.0.0
    * ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
    in `0.3.0.1`)

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team closed several gaps to align the Hydra scripts +implementation further with the specification. This also resulted in a slight +improvement on Hydra script size and costs. They consequently analysed the +asymptotic complexity of collect and fanout and how they relate. Also plutus-tx +profiling toolchain was evaluated and set up for future improvements on Hydra +on-chain performance. In discussions with researchers and internal auditors, +they also uncovered next steps on further securing the Head protocl using a +"full" minting policy.

    What did the team achieve this week

    • Closed several gaps to align script implementation with specification #452
      • Allow contest only once #680
      • Optimization through head output at index 0 #700
      • Value is preserved #702 + optimized exact value equality #709
    • Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to #721
    • Fixed our tooling around the Haskell language server
    • Discussed full minting policy with researchers
    • Started grooming “what we need for mainnet” on this idea ticket and milestone

    What are the goals of next week

    • Implement full minting policy
    • All remaining protocol discrepancies are implemented or groomed as individual features
    • Ideally release 0.9.0 with updated scripts
    • Discuss what we need for mainnet (milestone planning)
    • Redraw transaction graphs for specification (upon feedback)
    + + + + \ No newline at end of file diff --git a/page/44/index.html b/page/44/index.html new file mode 100644 index 00000000000..63916a6eb46 --- /dev/null +++ b/page/44/index.html @@ -0,0 +1,42 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2304.1 distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.

    Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version 1.35.5 on their devnet and infrastructure.

    Low level overview

    • Released the new distribution 2304.1
    • Fixed a bug that prevented some signers to sign with 2304.0-prerelease #716
    • Completed the implementation of an EraChecker that checks if an era is active #708
    • Completed the implementation of an EraReader that gathers era activation data #709
    • Completed the implementation of an EraReader adapter with on chain transaction as source #710
    • Completed the relational design of the aggregator store #476
    • Completed adding a new SPO on the testing-preview network #729
    • Completed the upgrade of the Cardano node to 1.35.5 #725
    • Fixed flakiness in the CI #734

    · 2 min read
    Damian Nadales

    High level summary

    We continue refactoring the UTxO HD prototype while we wait for the system level +benchmarks. We have created a new repository that contains the anti-diff +packages used in this prototype.

    On the Genesis front, we are preparing another meeting with the researchers to +audit the implementation design, and we continued working on basic tests and +simplifications.

    During the past two weeks we also introduced two new tools. One for dumping CBOR +encoded blocks to JSON, and another to serve a local immutable DB.

    Workstreams

    UTxO HD Prototype

    We are in the process of refactoring the UTxO HD prototype, while we wait for +the system level benchmarks to confirm if the performance of the prototype is +satisfactory.

    We also set up a repository for the anti-diff package, which +required us to refactor the code, write documentation, and prepare a release to +CHaP.

    Genesis

    We worked on basic tests for the Limit on Eagerness property of +Genesis. We also introduced further robustness and simplifications in the +Genesis Density governor. Finally, we developed a presentation to engage again +with the researchers on our Genesis implementation design.

    Technical debt

    Fostering collaboration

    We are in the process of polishing the ouroboros-consensus +documentation site, which we will use a the entry point for Consensus related +documentation. The first version will not be complete, but we plan on +systematically improving it.

    Support

    We added a tool to ouroboros-consensus-cardano-tools which allows +to dump the Chain DB blocks or any given CBOR encoded blocks as JSON.

    We also added another tool that serves an existing immutable DB via +BlockFetch and ChainSync. This tool can help in assisting our local benchmarking +efforts (for instance Genesis' ChainSync jumping prototype).

    · 2 min read
    Jordan Millar

    · 3 min read
    Serge Kosyrev

    High level summary

    1. SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions.
    2. Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks.
    3. New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node.
    4. New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide.
    5. Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live.
    6. Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on.
    7. Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.

    Performance

    We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:

    • we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,
    • after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,
    • finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.

    In addition, we started benchmarks of the 1.35.6 release.

    Tracing

    A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way.

    Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting.

    Infrastructure

    On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders.

    The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment.

    The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops.

    · 3 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril.
    • cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.

    Low level summary

    Mithril

    • Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing PR#722
    • We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper.
    • We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.

    cardano-base

    • There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381.
    • The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner.
    • The update VRF PR#341 is finally merged, and we are ready to merge PR#344, which implements conversion functions from the compatible types between Praos and PraosBatchCompat.

    KES agent

    • Use of snockets to send the data directly from the socket to secure memory.
    • We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives
    • Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.

    MuSig2

    The GitHub Action linelint is used to check the files.

    • A new job for linting is added to the file /.github/workflows/ci.yml. The rules are configured in the file /.github/workflows/.linelint.yml. Some files from the configuration of libsecp were failing, so in the rules in .linelint.yml the failing files are denoted to be ignored by the linter.
    • Folders are reorganized. We created a folder to handle the example. This folder includes the examplemusig2.c, a distinct config.h, and helper.c. The example is enhanced by implementing the functions in the helper for the configuration given in config.h. The number of messages is different than the tests. The example is made more generic to run with a loop.
    + + + + \ No newline at end of file diff --git a/page/45/index.html b/page/45/index.html new file mode 100644 index 00000000000..0619f21babf --- /dev/null +++ b/page/45/index.html @@ -0,0 +1,56 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been preparing several papers for peer review +and knowledge sharing and consulting within IO and the community.

    Details

    • R&D Seminar on experience participating in a member based organisation
    • Full day tutorial on performance engineering presented at HiPEAC +2023 conference
    • Finished preparing and submitted a paper on performance engineering +to an ACM workshop
    • Preparing a draft paper for future submission about verifying design +refinements for distributed system design
    • Consulting on performance design of other IO projects

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team completed the Hydra specification with a section about +rollbacks and updated graphs +(#448). In a next step, +the specification will be made more approachable and an open standard. They +improved their hydra-cluster tool to launch a local --devnet sandbox +environment and continued aligning the hydra-plutus scripts with the +specification by hardening the checks on close and contest transactions.

    What did the team achieve this week

    • Completed the specification with a section about rollbacks and updated graphs +#448, with a follow-up on making it more approachable and an open standard.
    • Continued spec review with internal auditor and incorporated changes.
    • Talked to TxPipe about how Demeter and Hydra could work together
    • The hydra-cluster executable can be used to launch a local --devnet sandbox environment.
    • Reproduced the “head being stuck on network outage” bug
      • relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed.
    • Progressed with higher velocity by addressing more and more gaps #677

    What are the goals of next week

    • Upstream our JSON instances to the ledger
    • Close all transaction security related on-chain gaps
    • Ideally release 0.9.0 with updated scripts
    • Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap

    · 2 min read
    Jared Corduan

    High level summary

    Much of the work the past two weeks involved integration efforts, +cleaning up and debugging some serialization issues, +adding tests, and work on large projects that are still ongoing. +We also released a CIP this week that aims to make the ledger +a registered CIP category.

    Lower level summary

    Ledger evolution CIP

    We published a +CIP +that will make the Cardano ledger a registered category of the CIP process.

    Serialization issues

    We had previously thought that we had found a serialization problem with the redeemers, +but it turned out to just be particularly confusing code. +We have now clarified the issue for the future.

    See pull-3263, pull-3269, and pull-3268.

    Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps.

    See pull-3277.

    New tests

    We added a new property test suite for some of our custom containers.

    See pull-3270.

    Progress on a better cost model serialization situation.

    We are still working our way through issue-2902. +Towards this end, we are now properly gating the new flexible encoders +until version 9.

    See pull-3274.

    Nightly tests

    We are still experimenting with moving more CI actions to GitHub actions.

    See pull-3276.

    Constraint based generators

    We continue to add to our proof of concept for constraint based generators. +See the previous ledger update for more information about this project.

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team had a monthly review meeting with their stakeholders, +contributors and interested people from the community. The monthly repot for +January 2023 is a digest +of the things presented and also includes a summary of the meeting. The Hydra +specification was getting discussed and the team is incorporating suggested +changes of reviewers. Last but not least, they compute and publish script +information on every PR and also on the +website +now.

    What did the team achieve this week

    • Had the monthly review meeting with a broader audience
    • Published the monthly report for January 2023
    • Reviewed the spec and discussed individual aborts with researchers
    • Compute and publish script information along benchmarks on every PR and website

    What are the goals of next week

    • Add rollback section to Hydra spec, update pictures and publish it as part of repository
    • Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository.
    • Groom & plan actions required for a maintainable Head explorer + break down align gaps feature.

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2302.0 distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes.

    Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node.

    Low level overview

    • Released the new distribution 2302.0
    • Implemented a backward/forward compatibility mechanism for API messages #688:
      • Implement the mechanism for the signer registration #689
      • Implement the mechanism for the signature registration #693
      • Implement the mechanism for epoch settings #695
      • Implement the mechanism for certificate pending #696
      • Implement the mechanism for certificate #697
      • Implement the mechanism for snapshots list #698
      • Implement the mechanism for snapshot #699
      • Update enforcement of API version with Semver #705
    • Completed the PoC implementation of backward compatibility with protobuf #677
    • Completed the PoC implementation of backward compatibility with avro #678
    • Completed the PoC to Read/Write transaction on chain for Era activations #672
    • Completed the upgrade Cardano devnet to 1.35.4 #523
    + + + + \ No newline at end of file diff --git a/page/46/index.html b/page/46/index.html new file mode 100644 index 00000000000..c318e5f322c --- /dev/null +++ b/page/46/index.html @@ -0,0 +1,70 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks, the consensus team finished the testing activities +around the UTxO-HD prototype. This is a very important milestone which will +enable us to run system-level tests and benchmarks, as well as start refactoring +and cleaning the prototype. Regarding our Genesis workstream, we elaborated a +roadmap that gives an indication of the remaining work. We also continued our +work on benchmarking chain-sync-jumping. We also continued working on improving +the way we handle blocks from the future, and advancing the integration of the +new VRF and KES crypto.

    Workstreams

    UTxO HD Prototype

    As the prototype is nearing its completion, it was important to have enough +confidence that we will be able to move additional parts of the ledger state +onto disk. We worked together with the Ledger team to elaborate a +sketch on how the UTxO-HD design would accommodate the migration of +additional data from memory to disk. This gave us enough confidence that the +current architecture will be extensible in the future.

    On the testing front, we added property-based tests for the UTxO-HD +type classes.

    We also enabled disabled components, and addressed several +technical debt issues:

    • Implement splitSized anti-diff split (#4269), and integrate it +into consensus (#4273).
    • Renaming of peekVal to peekMDBVal (#7).

    We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We +found a race condition in the LMDB backing store, which we fixed. +After the fix we were able to successfully run these benchmarks. The results +were published by this pull request.

    We used our db-analyser tool to benchmark the cost of reading keys and +flushing values to disk. The following plot shows the duration of these disk +operation in relation to the main ledger operations, where we can see that the +cost of the former are comparatively low. The spike at the beginning of the +graph is when, at the start of the Shelley era, the entire UTxO set is flushed +to disk.

    UTxO-HD read and flush benchmarks

    After months of hard work adding tests for the prototype, we are ready to run +end-to-end tests on the node, and system level benchmarks. This signals a very +important milestone for the UTxO-HD workstream 🎉.

    Genesis

    We elaborated a high-level decomposition of the remaining +work for Genesis. We also continued benchmarking the chain-sync-jumping +happy-path.

    Technical debt

    We continued working on improving the way we handle blocks from the future.

    Support

    We completed the mapping of Crypto to HeaderCrypto and body Crypto. +HeaderCrypto is moved to cardano-protocol-tpraos. We created a draft pull +request to facilitate compiling consensus.

    · 2 min read
    Jordan Millar

    2023-01-25 - 2023-02-07

    High level summary

    General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the cardano-cli query stake-snapshot command.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We explored whether some uses of transmute could be removed, but it resulted in considerable regression.
    • cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision.
    • KES agent: An inconsistency between contra-tracer available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the contra-tracer used by consensus.

    Low level summary

    Mithril

    • We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average PR#675. We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing.
    • We are writing a RFP for the audit of the core library.

    cardano-base

    • A problem with Nix is blocking merge of PR#341
    • Plutus team ran benchmarks of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution.
    • Team is fully digesting the Plonk paper.
    • There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used.

    KES agent

    • A little unforseen delay has been caused by a mismatch in the use of contra-tracer. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are doing the change, but still the CI is not happy.
    • The same was needed for the KES agents prerequisites PR#317.
    • We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1 +specification. Of which a first version has been aggregated and is currently +under review. They aligned the on-chain scripts of reimbursing funds on abort +like defined in the specification, improved the mutation test framework to have +more control when testing plutus scripts. The added HeadId in the API and the +TUI example client make hydra-node easier to use and a first experiment of a +Hydra Head explorer was showing the utility of this - see what Heads exist on +the preview network here.

    What did the team achieve this week

    • HeadId to API and display in the TUI #678
    • Experiment of creating a hydra explorer, first result hosted here
    • Improved mutation framework allowing to fail for the right reason #679
    • Correctly reimburse funds in abort (matching the spec) #670
    • Finished a first write-up of the Hydra HeadV1 spec: Read it on overleaf (Communication channels for feedback)

    What are the goals of next week

    • Monthly review meeting with a broader audience
    • Groom & plan actions required for a maintainable Head explorer
    • Break “align gaps” feature into smaller chunks (at least on- /off-chain) and groom it
    • Review the spec & discuss individual aborts with researchers (a bigger open question)

    · 2 min read
    Marcin Szamotulski

    High level summary

    We have been working towards cardano-node-1.35.5 release. QA & benchmarking +teams gave a green light for the release, and we made decent progress with some +CI problem which we encountered on the way (PR #4612). We are also working on +peer sharing, making improvements in our testing infrastructure, reducing +technical debt and making progress towards io-sim-1.0.0.0. Galois is making +progress on Handshake improvements.

    Low level summary

    Our diffusion simulation network now includes a mixed network of initiator +only and initiator and responder nodes. issue #4222

    We are now reviewing the peer sharing pull request.

    We are also reviewing pull request which introduces handshake query flag. PR #4256

    We fixed a bug in our network simulator. The bug was triggered when a node +died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

    We also refactored Snocket interface and removed the bearer construction from +its methods. PR #4260

    We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes +reviewing two PRs: PR #57 and PR #60 as well as writing an announcement +blog post.

    + + + + \ No newline at end of file diff --git a/page/47/index.html b/page/47/index.html new file mode 100644 index 00000000000..aac3d4a982d --- /dev/null +++ b/page/47/index.html @@ -0,0 +1,69 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Michael Fellinger

    High level summary

    The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing +support for cardano-world.

    Lower level summary

    Cicero

    • Fixed various race conditions around transformers.
    • Brought our CI up to date.
    • Migrated to the Nomad exec driver with Nix support for many actions.
    • Moved Nix builds to the Nomad clients for much better cache locality.
    • Ongoing work on vastly improving the action matching and evaluation speed.

    Tullia

    • Made it easier to support cloning from a PR's fork
    • Update to latest std
    • Add workaround for cgroup issue: nomad#12877
    • github preset: add github.ci.remote and (read|get)Repository functions
    • Fix various issues around CUE handling

    Bitte

    • Upgrade to NixOS 22.11
    • Prototype usage of Colmena for deploys instead of deploy-rs
    • Finalized work on Equinix Metal support
    • Prototype better secrets management with ragenix instead of sops-nix
    • Improve CI and bring it up to date

    cardano-world

    • Fixd various OOM issues on preview and preprod
    • Rotated KES keys on preview and preprod
    • Optimize mainnet db-sync to cope with higher load
    • Fix an issue where PostgreSQL would fail after a reboot

    bitte-world

    • Updated to NixOS 22.11

    ci-world

    • Updated to NixOS 22.11
    • Added Equnix cluster
    • Improve caching of Nix builds

    · 3 min read
    Jared Corduan

    High level summary

    The ledger team completed some preliminary ground work in preparation for CIP-1694 +(restructuring the ledger state), +fixed the PDF hosting problem (mostly the formal specs), +built out more of the new user-friendly ledger API, +finished a proof of concept for constraint-based generators for property tests +(with the hopes of being able to replace our trace generators one day), +and addressed technical debt.

    Lower level summary

    Restructuring the ledger state

    The existing governance structures will be replace in the conway ledger era, +as described in CIP-1694. +In particular, the ledger rules will be restructured as follows:

       BBODY
    |
    |-------------------------------|
    v v
    TICK LEDGERS
    | |
    |---------| |
    v v v
    RUPD ~NEWEPOCH~ ~LEDGER~
    | |
    |----------| |--------|-------------------|-----------|
    v v v v v
    ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+
    | | |
    |---------|------------| v |
    v v v DELPL v
    SNAP POOLREAP -UPEC- | UTXO
    |--------| |
    v v v
    POOL DELEG ~UTXOS~

    -..- Removed
    +..+ Added
    ~..~ Modified

    Moreover, the ledger state will also be restructured in accordance with the new rules. +In the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT. +We have also adapted all the data structures in the ledger state.

    See:

    PDF hosting

    We now build all of our PDFs using a GitHub action which is triggered by pushing a tag +with a specific form, cardano-ledger-spec-YYYY-MM-DD. +The action creates a GitHub release containing the PDFs. +The links in the main ledger README now point to the PDFs in the latest release.

    See:

    Powering the new ledger API

    We have now removed all the HasField instances from the protocol parameter data types, +and replaced them with lenses. +This is probably the last major restructuring that the ledger team will do on the code base +for the API for a while +(the Plutus tools team will be working on it next, see here). +We also added a new helpful function ensureMinCoinTxOut.

    See:

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We would like to switch to tests which instead generate a random ledger state representative +of not just an initial state, generate a single random valid block, and then test our properties. +The hope is that these will be much more random and easier to maintain.

    We have finished a proof of concept are encouraged that this approach could work!

    See:

    Technical debt

    • pull-3244 massive CI speedup
    • pull-3249 better types for fees in the protocol parameters
    • pull-3264 move our annotator code to the cardano-ledger-binary package where it belongs
    • pull-3239 move the Wdrls type to the Core module.

    · One min read
    Kostas Dermentzis

    High level summary

    After spending the last months on improving DBSync and releasing 13.1.0.0 the DBSync team focused +the last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the +new leger core and ghc-9.2.4

    Lower level summary

    • Integrate CHaP +#1331
    • Integrate new ledger core 0.1.1.1 and ghc-9.2 +#1332
    • Technical debt: Add code formatter fourmolu +#1334
    • Preparing and tracking Conway and UTxO integration

    · 2 min read
    Sebastian Nagel

    High-level summary

    Since last weekly update before christmas, the Hydra team worked on the +technical specification, closed gaps in hydra-plutus scripts, made the unique +headId available to Hydra clients through the API, allow the hydra-node to +explicitly synchronize from genesis (if configured), and fixed smaller log and +build issues reported by new users.

    Besides this, a retrospective blog +post +was published by Matthias Benkort (CF) on Hydra, summarizing our progress made +in 2022 also an outlook where Hydra is headed for in 2023. Also, the team had +some first sessions on the voting project with Catalyst and the CF.

    A full digest monthly digest for December 2022 can be found on the hydra +website.

    What did the team achieve this week

    • Had some first sessions on the voting project with Catalyst and CF
    • Published retrospective blog +post +by Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also +an outlook where Hydra is headed for in 2023.
    • Worked on the LaTeX spec for HydraHeadV1, not final or published yet - latest +version in this repository.
    • Add unique headId to API and hence make it available to clients.
    • Allow hydra-node to explicitly synchronize from genesis using --start-chain-from 0.
    • Closed gaps in hydra-plutus scripts
      • bounded transaction validity (ADR21)
      • enforcing contract continuity via state token in output
    • Fixed JSON for some logs and smaller build issues reported by new users.

    What are the goals of next week

    • Reach out to have hydra-tutorial integrated.
    • Plan the next couple of months.
    • Complete checking reimbursing of commits in head validator.
    • Align plutus scripts to spec and simplify them (identified some simplifications)
    • Improve mutation framework to be sure we fail tests for the right reasons
    • Complete the spec except the open points (<5) and also discuss them with researchers.

    · One min read
    Samuel Leathers

    Node Reelease Update

    2022-11-02 - 2023-01-13

    Executive Summary

    A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on +release/1.35 branch and does not bump cardano-ledger.

    The team successfully integrated an interim release bump of ledger and consensus into cardano-node master. +This work will not be released in a node version, but will be continued by the current dependency bump in progress.

    We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again.

    The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress.

    Completed

    In Progress

    + + + + \ No newline at end of file diff --git a/page/48/index.html b/page/48/index.html new file mode 100644 index 00000000000..739e1d3d109 --- /dev/null +++ b/page/48/index.html @@ -0,0 +1,58 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Dorin Solomon

    High level summary

    During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the P2P Single +Relay functionality.

    We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level.

    Workstreams

    Framework improvements:

    • extended the cardano-node-tests with the ability for anybody to fork the repo and run all our System Tests on GitHub Actions
    • added 2 new nightly pipelines - nightly-mixed and nightly-p2p - details here
    • some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;

    === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) === + to + === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===

    Node:

    • ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled
    • started the preparations for testing the next tag - details here

    DB-Sync:

    • some improvements on db-sync sync tests

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ADR. They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible.

    Finally, they have worked on upgrading the devnet and fixing some flakiness in the end to end tests of the CI.

    Low level overview

    • Implemented the redaction of an ADR for handling graceful updates of the Mithril Network #671
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with protobuf #677
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with avro #678
    • Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction #672
    • Worked on upgrading the Cardano node of the Mithril devnet, as well as fixing flakiness of the CI #523
    • Prepared and tested the new 2302 distribution pre-release 2302.0-prerelease
    • Updated the documentation for SPO to build a signer node in order to better reflect the new release process #681

    · 3 min read
    Damian Nadales

    High level summary

    The consensus team is resuming its activities after the Christmas break. During +these weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and +discussing with the Ledger team the changes that might be required for the next +iterations. The pull request that adds the Conway era is waiting for a second +review round and we hope to merge it soon. On the technical debt side we are +looking into a property-test failure found in the iterators. We are +investigating if this is an error in the model or in the implementation. We also +improved the documentation of our testing code.

    Workstreams

    UTxO HD Prototype

    We worked with the Ledger team to start preparing the next versions of UTxO-HD. +The Ledger team is concerned that for the remaining maps we might need the full +ledger state on epoch boundaries. Since the main consumer of the ledger rules is +Consensus, the code that requires access to a full state could be moved from the +ledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take +place in such bridge, instead of querying the ledger for the values that are +required in the epoch-transition computations.

    We relocated some UTxO-HD definitions, in preparation for merging +the prototype into master.

    We also completed updated local benchmarks comparing the replay time and memory +consumption of:

    • the baseline node (f2fc76ef45647275c98634da1718290b976ff364)
    • the UTxO-HD node with the in-memory backend
    • the UTxO-HD node with the LMDB backend

    The following plot shows the results: we can see that the LMDB node barely +reaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The +in-memory backend is about 30 minutes faster, but still slower than the baseline +version. We are aware of this phenomenon and it is inherent to the problem of +maintaining sequences of differences of the last k ledger states that allows +us to perform rollback and roll-forward. We are in the process of measuring +syncing from scratch times.

    We also added StaticEither accessors that helped us to simplify +the UTxO-HD prototype.

    New Conway era

    We incorporated the feedback of the pull request, and rebased this +branch on top of master. The PR is pending a second review round and we hope +to merge this soon.

    Technical debt

    We are investigating a property-testing failure involving +iterators. Solving this requires understanding the expected behavior of +iterators in the counterexample found by QuickCheck to determine if the error +is in the model or in the implementation.

    Fostering collaboration

    We moved the contents of docs/Testing.md closer to the code, so that the +explanations about the tests are easier to find in the relevant modules, and the +documentation is easier to keep up to date.

    · 2 min read
    Serge Kosyrev

    High level summary

    Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:

    1. SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress.
    2. The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over.
    3. Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks.
    4. New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs.
    5. Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench.
    6. Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.

    Performance

    The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on.

    Tracing

    The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done.

    Infrastructure

    Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components.

    On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters. +We now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes.

    We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development. +Once this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: The API features (error handling) has been merged.
    • Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI.
    • KES agent: We keep progressing with KES secure forgetting implementation.

    We also started working in the cryptography engineering handbook, which will be a cross team effort.

    Low level summary

    MuSig2

    • Merged the more granular error handling mechanism PR#33

    Mithril

    • Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in Version 0.1.1, which was published in crates.io.
    • Updated new KES format to mithril library PR 674
    • We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync PR 531
    • We keep progressing on reducing the use of transmute in mithril-stm.

    cardano-base

    • Nothing new to report. Still working in merging these PRs. We are only missing nix merge of PR#520 and the updates on VRF will be merged.

    KES agent

    • We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests PR#255.

    Cryptography handbook

    We have made available the (temporary) cryptography handbook https://input-output-hk.github.io/cryptography_spec/, and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives.

    + + + + \ No newline at end of file diff --git a/page/49/index.html b/page/49/index.html new file mode 100644 index 00000000000..87cf1b93659 --- /dev/null +++ b/page/49/index.html @@ -0,0 +1,112 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 5 min read
    Jared Corduan

    High level summary

    The ledger team finished up the remaining work for tracking individual depots, +built out the new Conway era transaction body (in line with CIP-1694), +greatly reduce some problematically large calculations on the epoch boundary, +and addressed technical debt.

    Lower level summary

    Finishing the deposit tracking

    The initial work on the individual deposit tracking project focused only on correctness. +As this is a large data structure +(since its size is linear with respect to the number of registered stake credentials), +it is very important that we also reduce the memory overhead as much as possible. +Fortunately, we were able to add very little overhead for the deposits by using existing +efficient data structures. The extra tracking now only incurs one word (8 bytes) +per registered stake credential.

    See:

    New Conway era transaction

    We implemented the Conway era transaction body, which is in line with CIP-1694. +Note that the Conway era implements, losing speaking, the parts of CIP-1694 that are not +related to the liquid democracy (the "DReps"). +The new transaction body adds the new governance actions and votes, +while also deprecating the old governance structures +(i.e. the old protocol parameter updates and MIR certificates).

    We also now have the wire specification (CDDL file) and serialization code in place. +The wire specification is still subject to change while we work on the Conway era, +but it is now usable and has proper testing support +(so that, for example, the serialization round-trips, etc).

    See:

    Optimizing the TICKF transition

    Every since the release of the Shelley era, we have been working to reduce the computational load +placed on the node by the ledger at the epoch boundary. +While still not perfect, we believe that we have removed one of the final problematically long +epoch boundary computations that exacerbate situations like +this. +In particular, the problem involved the way in which the consensus layer obtains a view of the +ledger for the purposes of checking the leadership schedule in a new epoch. +We implemented a stopgap measure which now only incurs a single multi-second cost once per epoch +instead of potentially several multi-second costs while the networks waits for the first block +of a new epoch to be minted.

    See:

    Technical debt

    We closed the year out with a lot of reduction to the technical debt!

    Improved ledger event

    • pull-3212 - The ledger events are not guaranteed to appear in any given order within a block. +For this reason, motivated by the use case in db-sync, the TotalDeposits event now +includes a transaction ID and emits the change in deposits instead of the value.

    Improved type saftey

    • pull-3208 - We replaced NominalDiffTime with a newtype wrapper. The problem was that our CBOR +encoders and decoders were using the wrong level of precision, having to due with with +the Shelley genesis file. We removed the potential problem with a newtype wrapper.
    • pull-3167 - We now use a GADT to ensure consistency of the Plutus language in the types +for TransactionScriptFailure and PlutusDebug.

    Code/Module organization

    • pull-3175 - The Allegra and Mary eras had an unusual relationship in our codebase, +due to the uncertainly of release dates while we were implementing them. +In particular, they were coupled in way that is different from the rest of the code base. +With hindsight on our side, we split the combined shelley-ma Haskell package into two +separate ledger era packages, which is now consistent with the rest of the repository +and module structure.
    • pull-3184 - We created a core test sub-library, cleaning up a lot of our property test +generator code.
    • pull-3210 - We moved the KeyPair type to the test library. Outside of testing, +the ledger does not need to deal with signing keys, and since this is a topic that +deserves the utmost care, it is best to make it clear that our use of signing keys +is only for testing.
    • pull-3229 - We split the Cardano.Ledger.Alonzo.Data module, which is more consistent with the rest +of the codebase.

    Revert pointer address deprecation

    Thanks to one of our excellent internal auditors, +@jmhrpr, +we now have a better plan for deprecating pointer addresses. +This meant that we had to revert the previous work to deprecate them.

    See:

    Miscellaneous

    • pull-3205 - We removed deprecated type synonyms.
    • pull-3218 - We cleaned up the address deserialization.
    • pull-3223 - We fixed faulty address deserialization tests.
    • pull-3222 - We switched to a general type family TxOut from concrete ones, +reducing many constraints.
    • pull-3224 - ShelleyGenesis is now parameterized by crypto instead of by era.
    • pull-3170 - We set the cabal-version to 3.0 in our projects.
    • pull-3172 - We removed the now useless EncodeMint/DecodeMint classes.
    • pull-3225 - We switch from ormolu to +fourmolu. +The reason was to be able to finally have more diff friendly code!

    · 2 min read
    Jordan Millar

    2022-12-28 - 2023-01-10

    High level summary

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on the website and reduced the cost for commit transactions by ~30% with the help of reference scripts.

    The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.

    What did the team achieve this week

    • Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.
    • Reduce commit transaction costs by ~30% with reference scripts.
    • Prepared an RFP for external audit of the Hydra Head solution.
    • Fixed transaction cost benchmarks for abort tx #631.
    • Recorded decision to use model-based testing (ADR22) and improved Model documentation.
      • Concluding the first increment on Validate coordinated Head protocol #194.
      • Formulated next step / follow-up on testing the Soundness property of our protocol #656.
    • Switched to using nix flakes for development setup and CI build #646.

    What are the goals of next week

    • Push ADR21 & tx validity gap over the finish line (smoke tests missing).
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Close & recap on the year with another monthly report (+ blog post).

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has released the new distribution 2248.1 of their nodes. They have published the first version of the Mithril cryptographic library on crates.io, the Rust community’s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.

    Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities.

    Low level overview

    • Implemented removing verification key and stake from single signatures #619
    • Completed the extraction of the signer registration from the multi-signer #642
    • Completed the extraction of the certificate creation from the multi-signer #638
    • Implemented a workflow to test client binaries (Linux / MacOS / Windows) #601
    • Completed the signature of the artifacts produced by the CI #587
    • Fixed the protocol parameters transition #627
    • Worked on optimizing the snapshot digest computation #510
    • Worked on enforcing the API protocol versions in the client and signer #633
    • Worked on deactivating the non certified signer registration mode #621
    • Worked on the re-genesis of the test networks #651

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks, the Consensus team finalized the QSM tests for the +backing store and Mempool on the UTxO-HD branch with important discoveries +regarding parallel QSM testing. We also worked with the Ledger team to envisage +the modifications that are required in Ledger and Consensus to accommodate the +changes in the crypto VRF and KES. The db-analyser now supports bechmarking +the ledger operations, which will allow us to identify, debug, and profile +potential performance problems. We drafted a document that defines how to manage +the versions of Consensus-related packages. The top level documentation of +ouroboros-network now features a description of the consensus components and +provides a hyperlinked map to the modules documentation.

    Workstreams

    UTxO HD prototype

    Whereas we had passing sequential state-machine tests for the mempool, the +parallel case proved to be more challenging than we thought. The operation of +adding a list of transactions to the mempool is not atomic and, as a result, +when adding a list of transactions, transactions from other processes can be +added in between. The mempool implementation handles this correctly, however +this required us to redesign the parallel model we had to take +the lack of atomicity into account.

    Backing store property tests

    We finished refactoring the backing store property tests. The second review +round is ongoing.

    LSM tree implementation

    We are working on benchmarking (in terms of time and number of IO operations) +fetching/looking up data from disk.

    Genesis

    We worked on the design of a mechanism to prevent a DoS attack on our Genesis +design related to rollbacks. This was arguably the biggest outstanding question.

    During the discussions around Genesis, we noticed a design boundary that nicely +delineates a fundamental component. We almost have a full Haskell prototype of +it. It will be very nicely self-contained, perhaps even usable in the ultimate +implementation!

    New VRF and KES crypto integration

    We collaborated with the Ledger team on preparing the ledger state and crypto +types to avoid huge allocation on the epoch boundary when changing aspects of +the crypto that will only manifest in headers, not in the ledger states.

    Technical debt

    We merged the pull-request that adds a support to db-analyser for +benchmarking ledger operations. This will allow us to identify, debug, and +profile potential performance problems. The benchmark focus on the main 5 ledger +operations that are involved in chain syncing, block forging, and block +validation, namely:

    1. Forecast.
    2. Header tick.
    3. Header application.
    4. Block tick.
    5. Block application.

    The following figure shows a plot of the benchmarking results for the first 65 +million blocks (approximately) of the Cardano chain. The thin yellow lines under +the x-axis show the epoch boundaries, whereas the thick yellow lines correspond +to the era transitions.

    As we can see in this figure, era and epoch boundaries require more computation +time. The ledger team are aware of this problem, and we are working to improve +this situation.

    Fostering collaboration

    We drafted a document motivating and defining how Consensus (and +possibly other core teams) will/should manage our package versions. This +pull-request garnered many great discussions from our team members and other +teams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et +al. We want to thank you all for your input, and we found this discussion very +enlightening!

    We merged the pull request that adds an overview of consensus to +the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    + + + + \ No newline at end of file diff --git a/page/5/index.html b/page/5/index.html new file mode 100644 index 00000000000..c8f1d419b6f --- /dev/null +++ b/page/5/index.html @@ -0,0 +1,46 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Alexey Kuleshevich

    High level summary

    This update contains mostly improvements to quality of Conway era implementation and +tooling that we use for testing Ledger. Major Conway bugs that were discovered and +squashed are:

    • PParamsUpdate proposals will now correctly use DRep thresholds for ratification
    • Treasury withdrawals are now properly enacted.
    • Corrected snapshotting and DRep Stake Distribution Pulser initialization
    • Delegation to non-existent Stake pool is no longer possible

    Other important quality of life improvements are addition of reusable interfaces for an +ordered set OSet and ordered map OMap. Which allowed us to disable duplicate +certificates and proposals in a transaction. As a precursor to PlutusV3 integration, a +serious reorganization of Plutus related functionality was performed.

    Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on +expired proposals, addition of Anchor to Constitutional Committee resignation proposals.

    Significant improvements have been made to a specialized "Imp" test library that allows us +writing concise stateful unit tests for verifying the Ledger logic. Serious progress has +been made on the conformance testing, where we can now interface with Haskell generated +code from the Agda specification. Serialization testing has been extended to increase +binary conformance coverage.

    Low level summary

    Conway

    • pull-3808 - Enhance CommitteeMembersState query to return quorum and NoConfidence
    • pull-3801 - Fix epoch rule and tests
    • pull-3803 - Fix delegation validation
    • pull-3759 - Reshuffle things to the DRepPulser incorporates some snap shot things
    • pull-3779 - Prevent duplicate certs and proposals
    • pull-3794 - Added anchor to resign certs
    • pull-3797 - Cleanup JSON instances for Conway governance
    • pull-3848 - Plutus modules restructure
    • pull-3840 - Fix anomalies in Deposits in the Conway Era
    • pull-3856 - Add governance related ledger events
    • pull-3825 - Prevent voting on expired GovActions
    • pull-3831 - Treasury withdrawal fix
    • pull-3791 - Use a Data.OMap.Strict to replace ProposalsSnapshot
    • pull-3836 - PParamsUpdate enactment fix
    • pull-3846 - Revert argument order swap.

    Testing

    • pull-3782 - Move ImpTest to Shelley testlib
    • pull-3842 - Imp improvements
    • pull-3844 - Add mappings to Agda types
    • pull-3853 - Fix strange assertion failure, which hides real Block too big problem.
    • pull-3809 - CDDL roundtrip testing
    • pull-3832 - Treasury withdrawals tests
    • pull-3839 - Added cardano-ledger-conformance
    • pull-3841 - Add sha256 to cardano-ledger-executable-spec

    Improvements and releasing

    • pull-3843 - Add ...WithLogs versions of evalScripts and friends
    • pull-3795 - Bump plutus to 1.15
    • pull-3798 - Bump urllib3 from 1.26.17 to 1.26.18 in /doc
    • pull-3799 - Changes needed for 8.6 release
    • pull-3807 - Add invalidBeforeL and invalidHereAfterL functions
    • pull-3819 - Fixups needed for a release
    • pull-3829 - Post release CHANGELOG version bumps
    • pull-3830 - Bump aeson to 2.2
    • pull-3833 - Backport release cardano-ledger-conway-1.10.1.0
    • pull-3828 - Add changelog for node release 8.6

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client Docker package is incorrect #1322

    · One min read
    Damian Nadales

    High level summary

    This week the Consensus team made progress on two fronts: the question of survivable eclipse duration, which is part of our work supporting Genesis delivery, and how to improve the handling of blocks from the future. +Regarding the UTxO-HD branch, we managed to run a node with legacy blocks, which is syncing with mainnet, up to including Alonzo. +We also investigated a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release.

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the release-mainnet aggregator.

    Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Fix devnet Mithril Docker images [#1272](https://github.com/input-output-hk/mithril/issues/1272
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client regressions in snapshot list and download #1321

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team fixed the gen-hydra-keys command to avoid +overwriting existing keys, and resolved issues related to the rewritten +hydra-tui. They also worked on a \"dirt road\" implementation for the +\"Ignored init tx\" notification, improving the robustness of the system.

    The team finalized preparations for the Cardano Summit presentation, including +implementation of the hydra-poll example DApp.

    If you happen to read this and attend the Summit in Dubai, make sure to check +out our Masterclass about \"Developing Hydra + Mithril for Scaling Cardano\" on +Friday, November 3 at 14:00-15:30 local time in the \"Al Dar\" room!

    What did the team achieve this week

    • Fix gen-hydra-keys command to not overwrite existing keys +#1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Finalized cardano summit preparation +#1109
    • Implemented the hydra-poll example DApp link to +repository
    • Dirt road implementation for \"Ignored init tx\" notification +#529

    What are the goals of next week

    • Attend cardano summit and deliver presentation
    • Clarify / close user created issues
    • Build aarch64-darwin binaries in CI
    + + + + \ No newline at end of file diff --git a/page/50/index.html b/page/50/index.html new file mode 100644 index 00000000000..d9241abe3e4 --- /dev/null +++ b/page/50/index.html @@ -0,0 +1,41 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Kostas Dermentzis

    High level summary

    The DBSync team continued testing release 13.1.0.0. The QA team has reported that no issues have +been found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.

    Lower level summary

    • Release is cherry-picked back to master, which uses the new rollback mechanism which uses +reverse indexes, same as the release +#1320 +This also fixes a bug number of issues on master.
    • Depenencies upgrade and CHaP integration +#1324
    • AdaPots fix #1323. This +fixes an issue where the per epoch AdaPots didn't match the epoch boundary, but +they also included changes from the first block of the epoch.
    • Deposits Event fix #3212. This pr +adjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the +number of queries that db-sync does during syncing an make syncing faster.

    · 2 min read
    Jordan Millar

    2022-12-14 - 2022-12-27

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 4 min read
    Serge Kosyrev

    High level summary

    1. SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment.
    2. A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery.
    3. The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals.
    4. Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started.
    5. Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.

    Performance

    The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload.

    We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling.

    Tracing

    After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical.

    To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:

    1. We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration.
    2. The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.

    All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further.

    In addition, we're still pursuing our performance-enhancing rework of the new tracing internals.

    Infrastructure

    After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends.

    Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it. +This means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis. +This will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports.

    A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches. +Previously we only had automation for two aspects separately, so we only could either:

    • compare individual runs (used for different node configurations / versions)
    • collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version) +Naturally, combining these two capabilities was a long-desired feature of our analysis pipeline.

    · One min read
    Marcin Szamotulski

    High level summary

    In last sprint the team focused on preparations for the conference talk at +OPODIS 2022. We also worked on preparations to publish io-sim and related +packages on Hackage (PR #57, PR #60).

    We also started reviewing:

    • ouroboros-network
    • cardano-node
    • cardano-ledger +repositories for open-source readiness (PR #4128).

    We prepared a PR which changes how node-to-node and node-to-client protocol +versiones are serialised in cardano-node log (PR #4691).

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency.
    • Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack.
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • [Still in progress] We are introducing a more granular error handling mechanism PR#33
    • We merged the API redesig PR#35
    • We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future PR#36

    Mithril

    • We merged the individual signature PR#620
    • We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (kes repo)

    cardano-base

    • Nothing new to report. Still working in merging these PRs.
    • We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a bug in GHC

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Fixed a 'use-after-free' bug in the KES agent.
    + + + + \ No newline at end of file diff --git a/page/51/index.html b/page/51/index.html new file mode 100644 index 00000000000..bfc1162f7ec --- /dev/null +++ b/page/51/index.html @@ -0,0 +1,78 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has worked on completing to "Validate coordinated head protocol against formal model", this is a huge step to verify the implementation is secure. They also worked on implementing ADR21 related to bounded tx validity which is now under review. HydraPay project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of issues they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced.

    What did the team achieve this week

    • Document model based testing #194 & #641
    • Got ADR21, reducing gaps between implementation and specification, under review.
    • Complete review on hydra-tutorial.
    • Complete first round of review on HydraPay work #634
    • Meeting with Director of CyberSecurity frio IOG to unblock "the RFP prepared for the external audit" #606
    • Remove vasil-dev and testnet from smoke-test because they were not working #630
    • Fix flaky plutus-merkle-tree test #642
    • Refactor NetworkSpec to improve legilibility.
    • Fix benchmark cost for abortTx #631
    • Adapt nix.conf to the recent hydra-ci nix cache migration.

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation.
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Get Cicero (new CI) working.
    • Use reference inputs to reduce the cost of the commitTx.

    · 3 min read
    Jared Corduan

    High level summary

    The Plutus tools team at IOG has started helping the ledger team to build out a user friendly +cardano-ledger-api package! +A GitHub project +will be filled out in the days ahead, +people interested in the API can use it to follow along and join in on the conversations.

    The ledger team has started using +architectural decision records +to leave a record of important decisions that the team makes. +We will retroactively go back through past decisions and make ADRs for them.

    The logic to track individual deposits is now nearly in place. +We are prioritizing correctness with our first pull request, and will follow up with +performance optimizations and general cleanup next.

    Pointer addresses are being deprecated with the Cardano major protocol version 8. +See CPS-0002 +for more context.

    Lower level summary

    Cardano ledger API

    The Plutus tools team has taken our minimal cardano-ledger-api package and started filling it +out and adding much needed documentation. +They have also added doctests! +In the days to come, the Plutus tools team will map out a lot more work for the API and record +it in this +GitHub project.

    See

    Architectural Decision Records (ADRs)

    We are now providing more context and leaving a record of important decisions that are made +in the ledger. The first ADR explains the very lightweight process.

    See

    Tracking individual deposits

    See ADR-3 +for background. +We now have the logic in place to track individual deposits, and a host of property tests +to make sure that the logic is correct. +The current implementation uses more memory than it needs to, and we will address that next, +with our hope being to only use one word (8 bytes) per registered stake credential. +There is a fair amount of other cleanup needed for general maintainability.

    See

    Removing pointer addresses

    Pointer addresses, which have never seen any real use +(there are something like eleven on mainnet), are being deprecated starting at Cardano major +version 9. +CPS-0002 gives the context. +We are disabling them by first preventing transaction outputs containing them +from being serialized by the node at the moment we switch to version 9. +At the hard fork after that, we will translate the existing few pointer addresses +to enterprise addresses.

    See

    Technical debt

    • pull-3162 - Sometimes we have to put safeguards in place for hard forks which may never +be exercised. After we have passed the given hardfork, we are able to clean up the code +and simplify our logic. We removed all of the ones that we are currently easily able to.
    • pull-3165 - We improved the type safety of our code while also discovering and fixing +a serialization bug.
    • pull-3172 - We removed dead code.
    • pull-3175 - The Allegra and the Mary code used to be coupled in a particular way the we grew to +dislike. We made these two ledger eras now uniform with the rest of our code base.
    • pull-3184 - We organized our property testing code.
    • pull-3200 - The Plutus tools teams fixed an outstanding bug in the translation from the +ledger state to the Plutus script context.

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has worked on cleaning up several things in progress +after last week's summit. They have extended their model-based testing (MBT) +approach with transaction creation & observation +#410, solved +AcquirePointTooOld problems of the hydra-node with by changing the wallet +initialization #439. +Also, the Hydra researchers updated the security proofs of the Coordinated Hydra +Head, which are bound to be included in the Hydra HeadV1 specification.

    What did the team achieve this week

    • Monthly review & report - will also be published on our website #644
    • Extended the model-based testing (MBT) with transaction creation/observation #410
    • Solve AcquirePointTooOld problems with new wallet initialization #439
    • Fixed our hydraw deployments (EC2 instances)
    • Created & discussed ADR21 within tx validity work
    • Received & discussed security proofs of Coordinated Hydra Head (requires more work)

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation
    • Complete review & integrate the Hydra tutorial
    • Review latest hydra-pay work
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec
    • Get Cicero (new CI) working

    · One min read
    Kostas Dermentzis

    High level summary

    The DB Sync team prepared a release 13.1.0.0-rc2 which includes many improvements for db-sync, +it makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces +migrations. This release finalises the objectives that were set for db-sync for the previous +3 months period and part of the syncing speed objective set for the next period +Changelog

    Lower level summary

    • Branch release/13.1.0.x +includes all the improvements related to the release. The release is passing through the testing +phase and a number of bugs and issues have been fixed, like +#1312 +#1311. +Also many new unit tests have been added.

    • Part of the release branch is cherry-picked back into master, in a way that it respects the new +release and development process, so that it takes into account migrations +release process

    • The DB Sync team has also tagged release 13.0.6 which better supports preview and preprod for +docker.

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes.

    Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer.

    Low level overview

    • Implemented custom Mithril SPOs on testing/pre-release networks #563
    • Deprecated Signer Declarative Pool Id registration mode #585
    • Completed the second stage of the store automatic migration process #600
    • Completed the deployment pipelines to crates.io registry #588
    • Completed automatic generation of nodes/libraries versions manifest in releases notes #599
    • Completed CI/CD handling of PR from forks #597
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #586
    • Worked on signing the artifacts released in the distributions by the CI/CD #587
    • Worked on multi-platforms end to end test #601
    • Worked on the refactorizaton of the aggregator multi-signer engine #398
    + + + + \ No newline at end of file diff --git a/page/52/index.html b/page/52/index.html new file mode 100644 index 00000000000..f39e5934e43 --- /dev/null +++ b/page/52/index.html @@ -0,0 +1,97 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Dorin Solomon

    High level summary

    During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the P2P Single +Relay functionality, and also tested some DB-Sync tags.

    Workstreams

    Framework improvements:

    • moved the System Test CLI Pipelines from BuildKite to Github Actions
    • improved the reporting tools to support the rerun of the failled tests and update of the reports
    • added support for Github API in report-aggregator, so reports will be generated from the GitHub nightly jobs from now on
    • added support for mixed topology - P2P, legacy, mixed topologies
    • planned the P2P Single Relay system test activities
    • added support to start regression tests with PV8 + better selection of tests

    DB-Sync:

    • confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)
    • tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks, the consensus team merged improvements to the monadic +cursor API that was needed to implement LMDB range reads, which is in turn +required for the implementation of the UTxO HD feature. We added tables to +several tests in for the UTxO HD feature, which increases our confidence in the +correctness of the prototype. The mempool property tests are close to being +completed. Also, we finished the LSM tree tuning algorithm.

    On the Genesis front we started simplifying the BlockFetch logic with +CSJ-specific workloads in mind.

    We are also documenting the Block Diffusion Pipelining feature, and added a +high-level overview of consensus to the top level documentation of +ouroboros-network.

    Workstreams

    UTxO HD prototype

    We merged the implementation of a monadic cursor API (#1)) which was +needed to solve a bug with LMDB range-reads. After this PR was merged, we focused on +bridging the gap between the lmdb-simple interface and consensus by facilitating +using lmdb-simple's cursor API without Serialise constraints (#3).

    We refactored the backing store property tests to use quickcheck-lockstep +(#4081).

    We added tables to the mock ledger in the UTxO-HD feature branch +(#4184). Every test that used to run with SimpleBlocks now uses +tables. This will enable us to exercise the UTxO HD mempool integration by +leveraging the existing mempool property-tests. The new state-machine +property-tests are still needed for testing the parallel behaviour of the +mempool.

    Our work on the mempool state-machine tests revealed the need for improvements +in the quickcheck-state-machine library. Parallel testing assumed that the +state machine did not have access to mutable references. However, the mempool +tests require the use of such mutable references for mocking the ledger +interface. As a result, our parallel tests were failing with rather obscure +messages. @Jasagredo submitted a pull request (#12) that allows for +new mutable references to be created at each run of the state machine.

    Backing store property tests

    LSM tree implementation

    We finished the LSM Tree tuning algorithm. We are currently tidying up the code +and gathering results (i.e., plots and their interpretation).

    CSJ prototype

    We started simplifying the BlockFetch logic with CSJ-specific workloads in mind.

    New VRF and KES crypto integration

    Started working on supporting new version of StandardCrypto which uses compact +KES and batched VRF (#4151).

    Technical debt

    We reviewed the existing state of the Block Diffusion Pipelining document. We +are now working on the "Implementation" section (#4020).

    Fostering collaboration

    We cleared up our understanding of the error dynamics of forecasting +(#4146 and #4174).

    We submitted a pull request that adds an overview of consensus to the top level +documentation of +ouroboros-network (#4197). This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    https://github.com/input-output-hk/ouroboros-network/pull/4197

    · 2 min read
    Jordan Millar

    · 2 min read
    Serge Kosyrev

    High level summary

    1. Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release.
    2. SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench.
    3. The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks.
    4. Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started.
    5. Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.

    Performance

    We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release.

    Tracing

    For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them. +The idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time.

    To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics.

    Infrastructure

    Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation.

    In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model.

    The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged. +We are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration.

    We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability.

    We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP.

    As usual, a number of smaller workbench, data analysis & reporting improvements have been made.

    · 4 min read
    Marcin Szamotulski

    Stake-Driven Data Diffusion Release for Relays

    IOG networking team decided to release the Stake-Driven Data Diffusion with +Robust Optimised Peer Selection also more commonly known as P2P. In the +last update, we informed about a performance regression, but it turns out it +only affects block producers, and thus we highly advise against running it on +such nodes. Further investigation is required to find the cause of it.

    On IOG's benchmarking cluster we have seen quite a good performance improvement +on block propagation itself. The cluster is running a static topology with +valency 6 (each node is connected to 6 other nodes). In which every of the 50 +nodes are block producers. The setup of this network is the same as mainnet. +We've seen 40-50% performance improvement on block propagation comparing to the +same cluster deployed with the same topology but using non-P2P nodes. We think +this performance improvement is caused by using full duplex connections. Quite +likely the transaction traffic floating in both directions on the same TCP +connection helps to keep the TCP window open. Note that in a cluster of 50 +nodes with valency 6 the probability of having at least one duplex connection +is more than 50%. We don't expect the same improvement on mainnet because the +network is much wider and the transaction traffic is not as large.

    Just before the release we squashed two small bugs:

    • issue #4163 - top level integration bug in keep-alive;
    • issue #4177 - a bug in outbound-governor;
    • PR #4165 - a fix cardano-ping support of NodeToNodeV_10.

    Peer Sharing

    We were carrying a review of peer sharing PR.

    DeltaQ

    Neil Davies was invited to give a guest lecture entitled Avoiding System Catastrophes at UCLouvain.

    What have we achieve last sprint

    • issue #4163: we found out that a control message is not passed to the +keep-alive mini-protocol, this results in every demotion executing demotion +timeout rather than a graceful termination. With the fix the node will no longer log:

      { "kind": "PeerStatusChangeFailure"
      , "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"
      , "reason": "TimeoutError"
      }
    • issue #4177: we fixed an assertion failure in the outbound-governor; now +we don't try demoted peers which are being demoted already.

    • PR #4155: we refactored ouroboros-network packages. There's a top level +ouroboros-consensus-diffusion package which integrates network +& consensus code. We also introduced:

      • ouroboros-network-api package which contains the API shared between +network & conensus;
      • ouroboros-network-mock package which contains mock API used for testing +(e.g. a mock chain & chain producer, etc.)
      • ouroboros-network-protocols package which contains implementation of all +(but handshake) mini-protocols, exposes a testlib and contains test +and cddl components.

      This made the dependency tree of network & consensus packages much +cleaner.

    • PR #4169: we described the usage of release branches in CONTRIBUTING.md +doc.

    • PR #4165: we fixed cardano-ping support of NodeToNodeV_10 protocol.

    DeltaQ

    The abstract of the talk:

    An essential step to ensuring that distributed systems are fit for +purpose.

    Distributed systems have become an integral part of our society and +daily lives. We are, both implicitly and explicitly, individually as well as +collectively, placing ever more trust in them.

    Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes +well beyond notions of functional correctness (i.e. never getting the wrong +answer). We need them to deliver the desired outcomes in a timely, robust, +reliable, resilient fashion, at scale and in a sustainable way (both +economically and environmentally).

    This all sounds like a worthy aspiration, but what would be a practical +approach to capturing and reasoning about these issues? How can we ensure that +systems can meet their fit-for-purpose objectives, not just in their design but +as they are deployed, encounter the imperfect world, are scaled to become +economic, and proceed into ongoing maintenance?

    This talk will illustrate how the notions of Outcomes and Quality Attenuation +(as captured by ‘∆Q’) are being used to both frame the necessary notions and +provide a basis for assuring the refinement and reification of such systems, +from initial concept to operational infrastructure.

    You can download the slides from here.

    + + + + \ No newline at end of file diff --git a/page/53/index.html b/page/53/index.html new file mode 100644 index 00000000000..0b161fe4d3d --- /dev/null +++ b/page/53/index.html @@ -0,0 +1,50 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team.
    • Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes
    • cardano-base: The VRF and BLS branchs are still open and in progress
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library PR#31
    • We are introducing a more granular error handling mechanism PR#33
    • We rethought the API and made it more consistent with the underlying secp256k1 library PR#35

    Mithril

    • The mithril crates in general will be published in crates.io, and we adapted the core library's README PR#616
    • We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information PR#620

    cardano-base

    • We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) PR#341
    • SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions PR#344
    • Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus PR#266

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a presentation about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas.

    What did the team achieve this week

    What are the goals of next week

    • Monthly report & review meeting
    • Tie up several loose ends / branches.
    • Resolve Tx validity discussions & PRs.
    • Review cicero PR & try it out.

    · 3 min read
    Jared Corduan

    High level summary

    We released CIP-1694, +our proposal for entering the Voltaire phase. +Please come join the discussion, this will be an incredibly exciting transition for +Cardano and we want everyone to participate!

    We now have a sensible way to version all of the serialization schemes used in the ledger. +The draft pull request was polished, reviewed, and merged this week. +This solves many problems that have vexed us since the beginning of the Shelley ledger era.

    Everyone working on the Cardano node is working together to improve our release process, +and the ledger team in particular dedicated one engineer to help with these efforts +for the next release.

    Lower level summary

    The Conway ledger era

    The current proposal in CIP-1694 encompasses two new ledger eras. +The first era will be called Conway, after the English mathematician John Horton Conway. +The community facing aspects of the Conway ledger era will be very minimal, +but it will pave the way for introducing liquid democracy. +The details can be viewed here. +We do not yet have a formal specification for the Conway era. +Our plan is to debut the +formal ledger model. +Briefly, the Conway ledger era will:

    • introduce SPO voting for hard forks (in the spirit of the now abandoned CIP-47)
    • provide an on-chain mechanism for rotating the governance keys
    • re-plumb the ledger rules involving governance to be in line with CIP-1694

    Versioned CBOR

    We now have the ability to easily tie our serialization schemes to the Cardano +major protocol version. +We still aim to preserve backwards compatibility as much as possible, but we now have a principled +plan for resolving problems (see CIP-ledger-cbor). +In particular, we can now address several long standing issues, such as +issue-2444, issue-2965, and issue-3003.

    The final (and massive!) pull request which brought us the versioning is pull-3138.

    Deposit tracking

    The draft pull request which was exploring how best to track individual deposits +is much closer now to being ready to take out of draft (pull-3127). +For background on the issue, see issue-3113. +This is quite an invasive change which effects many of our tests, which we are now addressing.

    Technical debt

    As always, we keep working on technical debt. +We have deduplicated a some things: pull-3129, pull-3162. +We have memoized a problematic computation (though more due diligence is needed before we can +merge): pull-3141.

    Node release

    We have been helping with the node release efforts. See pull-4608.

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team released version 0.8.1, which includes several fixes and a user-wished extension of the persistence introduced by 0.8.0 of replaying server outputs to make clients like the hydra-tui be aware of the latest hydra-node state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from hydra-poc to hydra!

    What did the team achieve this week

    • Implemented replaying of server outputs to address #580
    • Released version 0.8.1 containing this and other fixes Release notes
    • Worked on the bounded tx validity as one of the on-chain script fixes, but couldnt finish it just yet #615
    • Collaborated with the education team on a Hydra tutorial.
    • Discovered and discussed issues with the seen ledger.
    • Renamed the Hydra repository hydra-poc -> hydra

    What are the goals of next week

    • Create and discuss an ADR about handling tx validity correctly.
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
    • Have a team workshop / hackathon after the summit:
      • Retrospective
      • Roadmapping session
      • Hack on something complex or useful

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level overview

    The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks.

    Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer.

    Low level overview

    • Released a new Mithril distribution 2246.1
    • Completed the first stage of the store migrations process #562
    • Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes #565
    • Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage #576
    • Prepared a Daedalus synchronization benchmark video with/without Mithril #606
    • Upgraded the Cardano nodes of the testing Mithril networks to 1.35.4 #594
    • Worked on implementing SPO tests nodes on testing Mithril networks #563
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #588
    • Worked on the refactorizaton of the aggregator multi signer engine #398
    + + + + \ No newline at end of file diff --git a/page/54/index.html b/page/54/index.html new file mode 100644 index 00000000000..20a2c1134f9 --- /dev/null +++ b/page/54/index.html @@ -0,0 +1,85 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 6 min read
    Damian Nadales

    High-level summary

    During the past two weeks, the consensus team started documenting the +implementation of the UTxO HD feature and continued developing tests for it. As +part of our work on UTxO HD, we improved the Haskell support for LMDB. We also +spent time working on the LSM tree prototype, and designed a parameter tuning +algorithm for it. Regarding our work on Genesis, our investigation of the +"plateaus" pointed at the TICKF slowdown on era boundaries as culprit. This +led us to developing a caching strategy that will not only remove the +aforementioned "plateaus", but can help alleviating the growing block production +delay on epoch switch. We also helped reviewing the block forge credential +hotswap feature, which is intended for use in the adoption of P2P.

    We also worked on paying technical debt and fostering collaboration. In +particular, we improved the io-sim framework, which is crucial for testing and +simulating Cardano components. We also removed thunks that appeared on era +translations, and improved our diffusion pipelining feature. We are working on a +presentation for explaining Praos and Genesis.

    High-level status report

    • Finish the UTxO HD prototype: in progress.
      • We added documentation for this feature.
      • We developed the second version of the mempool tests.
      • We fixed benchmarks that were inflating the speedup we observed in the +anti-diff implementation of sequences of differences. Speedups are now in the +range of [3.33, 4.75], which remain significant.
      • We continued improving Haskell LMDB support.
      • We finished implementing a "parameter tuning algorithm" for the LSM tree +prototype. This enables us to run experiments to check the correctness of +the algorithm.
    • Genesis: in progress.
      • Work investigating the "plateaus" in the ChainSync jumping prototype +pointed to the TICKF slowdown on era boundaries as culprit.
    • Tech debt:
      • We improved the capabilities of our io-sim library, which is crucial for +testing and simulating Cardano components.
      • We removed thunks from epoch translations in the ledger.
      • We added Linux CI support for lmdb-simple.
      • We got pending diffusion pipelining improvements merged.
    • Fostering collaboration:
      • We are working on a explanation of Praos and Genesis protocols.
    • Support:
      • Investigation of CSJ "plateaus" led us to developing a caching strategy for +TICKF that will not only remove these "plateaus", but can help alleviating +the growing block production delay on epoch switch.
      • We reviewed the block forge credential hotswapping feature which is intended +for use in the adoption of P2P.

    Workstreams

    Finish the UTxO HD prototype

    We merged PR #4060, which adds a report documenting the UTxO HD +feature, and puts emphasis in explaining how the mempool works in combination +with UTxO HD.

    We opened a draft PR with the second iteration of the property tests for the +mempool (#4076).

    We fixed the Arbitrary instances for keys and values in DiffSeq benchmarks +(#4143). The problem was that we were testing with mostly small +values, which artificially boosted the performance gains we saw on benhcmarks. +Speedups are now in the range of [3.33, 4.75] across the different +configurations.

    Backing store property tests

    We focused on incorporating feedback on the monadic cursor API PR (#1). +This required us to make small tweaks to quickcheck-lockstep to test the new +API. We also updated the backing store property tests to use the new version of +the monadic cursor API.

    LSM tree implementation

    We worked on the LSM tree prototype. In particular: finished implementing a +"parameter tuning algorithm" that adapts the LSM tree design based on factors +like:

    • workload
    • machine specs,
    • and characteristics of the data being stored.

    We are now running experiments to gather results and cross-reference them with +existing experimental results from the LSM tree paper to see if the algorithm is +working correctly.

    Benchmarking the CSJ prototype

    We focused on investigating the "plateaus" in the ChainSync tip, which turned +out to be due to the TICKF bug which we previously were only aware of in the +context of the long forging times near epoch boundaries. For the most drastic +patch by @nfrisby to speed up TICKF, full sync is speeding up by 7%.

    The following plot shows that by caching the TICKF the ChainSync tip and the +VolatileDB tip progress at the same rate.

    The plot below shows the speedup observed by caching the TICKF rule wrt the +baseline.

    Technical debt

    After addressing the PR comments, we merged PR #16, which implements +the MonadCatch instance for STM. This extends the capability of our io-sim +library, which is crucial for testing and simulating Cardano components PR #16 +closed #1461. This new feature was published as version 0.4.0.0 +of io-sim.

    We continued with our work fixing the NoThunk errors required for enabling +nightly tests, with the help of TVarInvariant checks in strict-stm and +nothunks libraries. We proposed fixes in cardano-ledger that took care of +thunks that appeared in era translations (#3143). The fixes will be +integrated back into consensus when cardano-ledger approves and publish the +changes introduced in #3143.

    We added CI support for lmdb-simple (#2). We currently test the build on +a Linux environment only.

    We got pending diffusion pipelining PRs (#3857, #3860, +#3856) merged, after rebasing and addressing feedback.

    Fostering collaboration

    @nfrisby finished a visualisation tool and outlined scripts for the Praos and +Genesis explanation presentations. The idea is to produce a video that gives an +overview of these protocols.

    Support

    We started working on caching the computation of the TICKF rule +(#4054), since this was blocking our benchmarking work for +Genesis. In addition, this issue has the Cardano community quite +concerned, so we are hoping the work done in caching the +computation of the TICKF rule can help alleviating the growing block +production delay on epoch switch.

    We reviewed the block forge credential hotswapping PR #3800 from the +networking team, which is intended for use in the adoption of P2P.

    · One min read
    Jordan Millar

    · 2 min read
    Serge Kosyrev

    High level summary

    1. P2P performance investigation is ongoing, in support of the networking team.
    2. SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support.
    3. Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing.
    4. On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started.
    5. We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.

    Performance

    We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes.

    Tracing

    We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis.

    Infrastructure

    The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends.

    We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing.

    A number of smaller workbench, data analysis & reporting improvements have been made.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level overview

    The SECP primitives AC has been met, and the test-vectors PR has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool PR has been merged, and we've adapted the KES secure PR to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (PR#). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork.

    Low level overview

    • With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation.
    • We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool.
    • In parallel, we keep progressing on the KES agent
    • VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification.
    • Our libsodium fork now links directly to upstream libsodium.

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team published together with Obsidian Systems a light paper +on our "Hydra for Payments" project (Link). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of hydra-node processes.

    What did the team achieve this week

    • Published Hydra for Payments light paper (Link)
    • Have a draft RFP ready for a first review internally
    • Answered the internal auditors questions
    • Fixed a bug with following the chain when starting with persistence (#599)
    • Minor improvements to logging for better observability (#598, #600)
    • Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (#590)

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Close more gaps #452
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
    + + + + \ No newline at end of file diff --git a/page/55/index.html b/page/55/index.html new file mode 100644 index 00000000000..b6fddfb26c4 --- /dev/null +++ b/page/55/index.html @@ -0,0 +1,90 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Jared Corduan

    High level summary

    I am extremely excited to say that we now have a pull request up which introduces our new versioned +CBOR serialization. This was an enormous effort, but it will solve a host of problems that we have +had since the Shelley phase. It will take time to properly review it, and we will +need to put in a lot of effort to integrate it with the downstream components, but this is a huge +milestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction +serialization schemes.

    We also have a draft pull request that reworks how deposits are tracked. Users of the system will +not notice any difference, but it is a necessary change needed to prepare the way for +decentralizing the governance of Cardano.

    Finally, we continued to address technical debt. In particular, we continued to make progress on +bringing coherency and consistency to the code base with a common naming convention, and +improving some error messages.

    Lower level summary

    • We have a pull request up for our new versioned CBOR serialization. +When we encounter a problem with our deserializers, it can be very difficult to implement a fix. +It is difficult because we can only fix such issues during a hard fork, and leading up to the +hard fork we must maintain two serializations for the same type in order to not cause unintended +network splitting (the problematic version must be used before the hard fork, +and the fixed version is used afterwards). +This can be especially tricky with the FromCBOR typeclass, since it is not always easy to +search for where all the problematic uses are located. +The new versioned CBOR serialization allows us to gracefully handle this transition. +See [pull-3138].
    • We proposed a CIP for backwards compatibility of the transaction serialization schemes. +See [pull-372].
    • We have draft for the new deposit tracking. +This draft is not as memory efficient as the final version will be, +but it is a sufficient proof of concept that we can write property tests against, ensuring +that we have not changed the semantics. +We will optimize after we are sure of the correctness. +See [pull-3127].
    • We now provide better support for debugging failed Plutus scripts in an important helper +function, named evaluateTransactionExecutionUnits. +In particular, it now returns all the information needed to rerun the script with exactly the +same arguments. This feature will end up appearing in the CLI and other tools from the Plutus +tools team. +See [pull-3135].
    • We did a lot more renaming to bring coherency and consistency to the code base. +See [pull-3126], [pull-3120], [pull-3118], and [pull-3116].
    • We have added a few things to the ledger repository to make it conform to the +Cardano Engineering Handbook +See [pull-3139].

    · 2 min read
    Marcin Szamotulski

    High-level summary

    In last sprint we got a performance report of P2P performance testing cluster +(which consists of 50 nodes). There is a performance regression in the header +notification metric. The P2P cluster is constructed with the same +topology as the non-p2p reference one this indicates some regression which +needs to be further investigated. This poses a risk for releasing P2P.

    We also continued to work on peer sharing: pull #4019.

    We continued working on dynamic block production which is required for P2P +release for BP nodes: pull #3159.

    We simplified the P2P topology format: issue #4559, pull #3888.

    We added a new trace point for asynchronous demotions of local peers with +Warning severity. This trace is important for SPOs.

    Detail description

    Performance regression

    Below we include a graph which shows the performance regression of the P2P code base vs non P2P.

    On the x axis is time in seconds which measures the delay from the start of +the slot to when a header was received. The y axis is the percentile of nodes +that received a header. We are currently investigating possible causes of the +regression.

    New P2P topology form

    The new topology file format is described in this issue #4559.

    Tracing improvements

    • We improved a handshake error reporting, pull #4136
    • We added TraceDemoteLocalAsynchronous rendered as DemoteLocalAsynchronous +in json format, pull #4127. Such demotions should be investigated by the +pool operator. They can indicate a problem in the deployed system, but also +they could indicate a remote problem in arranged connections with other SPOs.

    Open Source Improvements

    We improved documentation of io-sim and typed-protocols for open-source +contributors and/or maintenance tasks: pull #22, pull #45, pull #48.

    · One min read
    Sebastian Nagel

    High level summary

    This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun preview network, see 0.8.0 release notes. They also completed implementation of ADR18 and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates #195 and alignment of the specification document with auditors.

    What did the team achieve this week

    • Complete and merge ADR18 #579
    • Re-deploy hydra scripts to respun preview network, see 0.8.0 release notes #595
    • Have first gap of #452 in review.
    • Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot.
    • Engineering meeting to discuss hard forks and protocol parameter updates #195
    • Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions.
    • Drafted project scope for an external audit RFP.

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Answer the internal auditors questions
    • Have a draft RFP ready for a first review internally
    • Close some gaps #452

    · 2 min read
    Iñigo Querejeta Azurmendi

    This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.

    Low level overview

    • We have been moving forward on the implementation of the release process #500:
      • Setup of the new hosted environments for testing-preview, pre-release-preview and release-preprod with their terraform and GitHub environments #542
      • Adapted the CI workflows to work with the new release process #543
      • Publication of an ADR3
      • Publication of a dev blog post about Mithril networks evolution
      • Releasing our first Mithril distribution 2244.0
    • Worked on the API versioning mechanism #565
    • Worked on the implementation of the stores migration process for the signer and aggregator nodes #562
    • Prepared a Mithril devnet video demo #526
    • Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably #484

    · 2 min read
    Marcin Szamotulski

    High Level Summary

    • We've been working toward publishing Cardano Backlog, currently its in +review by the IOG communication team.
    • We identified a number of libraries which can be published.
    • We setup and enhanced cardano-updates.

    Detailed description

    I am glad to announce that I was given the role of open-source advocate for +cardano project. In last few weeks we were making steps towards publishing our +backlog. It's currently under review by the communication team, although most +of the issues are already visible across various repositories.

    The open-source initiatives have their own +project. It is set up +to help us track our major open-source activities. Right now there are two +work streams:

    We identifies a number of libraries across all the teams which contribute to +Cardano which we would like publish to publish, see the following +link. Arnauld Bailly recently published +quickcheck-dynamic +library on Hackage. The networking team is slowly progressing towards +publishing io-sim and related packages, checkout the progress +here.

    Thanks to Arnaud Bailly our Cardano Updates website has +a new look & feel! It's using docusaurus.io.

    Christian Taylor carried recently a detailed analysis of our open-source +repositories. He collected many interesting metrics, which allows us to see +where we need to improve as an open-source project to make the Cardano project +and many smaller related libraries which we maintain be more open and available +for open-source contributors.

    The graph below shows which documents the 55 most important Cardano +repositories are missing the most: +Documentation Adoption +You can expect we will improve in these metrics in the coming weeks.

    + + + + \ No newline at end of file diff --git a/page/56/index.html b/page/56/index.html new file mode 100644 index 00000000000..a482243c86f --- /dev/null +++ b/page/56/index.html @@ -0,0 +1,106 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Dorin Solomon

    High level summary

    We made good progress on most of the Action Items we agreed on Lisbon, like:

    • Cardano System Tests was fully open to public (tools, tests, results) +See cardano-node-tests webpage.
    • We defined an user-facing-functionality template that is used with the cardano-cli team
      • this includes acceptance criteria & user stories, and definition of done
    • We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)
    • We started to apply a labelling convention on cardano-node issues that will be used to generate some visual dashboards with some metrics [TBD]
    • Ziyand Liu started an End-to-End Development and Testing Process for Plutus Features

    · 4 min read
    Damian Nadales

    High-level summary

    During the past two weeks, the consensus team continued its work on testing the +UTxO HD prototype. We completed the era-transition and backing store tests, and +the mempool tests are advancing at a steady pace. Regarding our work in the +Genesis design, we continued our collaboration with the research and networking +teams, and we continue investigating strategies for making the chain-sync +jumping prototype faster.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We worked on state-machine tests for the mempool, and spotted potential bugs +in the implementation. Investigation is ongoing.
      • We have a set of property tests for the backing store. We still need to +incorporate the improvements to the LMDB cursor API that these tests +made possible.
      • We merged the era-transition tests PR.
    • Genesis: on track.
      • Design work around Genesis continues in collaboration with researchers and +the networking team.
      • We continued trying to improve the performance of the chain-sync jumping +prototype. We gained additional insight on which parameters to tweak next. +In spite of the baseline still being faster, the current prototype already +achieves a significant speedup when compared to the naive approach of simply +running full chain-sync with all peers.
    • Tech debt: on track.
      • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    Workstreams

    Finish the UTxO HD prototype

    We continued working on property-tests for the UTxO HD prototype. In particular +we merged the era-transition tests +PR.

    Backing store property tests

    The backing store property tests +PR has been +reviewed. The next steps are:

    • Improve error handling and command generation.
    • Add coverage testing to check that we are not failing to cover interesting +test cases.

    The monadic cursor API +went through its first review round. The API is in a relatively stable state. +This PR also unifies the cborg and serialise-based interfaces to LMDB +operations. The next steps are:

    • Write +quickcheck-dynamic +state-machine tests for this API.
    • Adapt the changes in the serialisation interface in the backing store property +tests. This will involve adding boilerplate code in consensus to make up for +the removal of the cborg-based interface.

    LSM tree implementation

    We worked on the LSM tree +prototype. In +particular, we focused on tuning the LSM tree design to the different workloads +that consensus has (eg syncing, normal node operation, etc).

    Benchmarking the CSJ prototype

    Work on improving the chain-sync jumping performance is ongoing. In particular +we compared the performance of different jump intervals, which, somewhat +surprisingly, do not make a significant difference. In particular, we are seeing +periodic "plateaus" where the chain-sync tip does not progress, but they are +much longer for the prototype. Our hypothesis is that this seem to be due to a +combination of the garbage collector (GC) pauses, and the actual time it takes +the non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo +fragment.

    In the coming weeks we will try to shorten these plateaus via a combination of +tweaking GC options and less synchronisation in the CSJ governor.

    The following plot shows the performance of the chain-sync jumping prototype +using different jumping intervals. It compares the syncing progress by plotting +the slots of adopted blocks against time. The baseline is still faster, however +it is worth noting that the current prototype already achieves a significant +speedup when compared to the naive approach of simply running full chain-sync +with all peers.

    The second plot shows the syncing progress sliced to a chosen ~5min interval, +and includes, in addition to the slots of adopted blocks, the slots of the tip +of the ChainSync fragment. This allows us to see how far ahead of the selected +tip the CS dynamo is, i.e. how much room we have for BlockFetch not to get +stalled. It shows periodic behaviour (due to the forecasting limit), and shows +that the CS fragment tip is not progressing for significant periods +("plateaus").

    Technical debt

    We clarified a +common source of confusion around VRF tie-breaking and cross-era chain +selection. This PR involved correcting potentially misleading names of +VRF-related functions, and providing context for a particular VRF value is +used for tie-breaking.

    · 3 min read
    Jared Corduan

    High level summary

    We have made the decision to use the +formal ledger repository +in place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure +to the model. In particular, we now have a lot of support for axiomatic set theory. +While the next ledger era is still in the design phase, most of the team remains working +on technical debt. +In particular, we have moved a lot more code out of the Shelley specific modules and into +a ledger core module, we have finished up our benchmarking around the problematic TICKF +ledger transition (while improving the performance), made conveniences to the development +environment, cleaned up all the recent changes to the cost model, added a lot of documentation, +fixed some flaky tests, and deleted some dead code.

    Lower level summary

    Axiomatic Set Theory

    The formal ledger model now has support for much of the set theory that we make use of in +the formal ledger specifications. See [pull-20].

    Completed Technical Debt

    • We have addressed issues with two of our most problematic and flaky tests. +See [pull-3039] and [pull-3093].
    • We have added more documentation and tests to the Twiddler module. This is a module which +makes our CBOR serialization round-trip tests much more robust, and will also hopefully +help enforce the mandate for downstream libraries to never re-serialize data that needs +to be hashed. See [pull-3073] and [pull-3095] +(we cannot merge 3095 just yet, due to a preference for merging other features).
    • We have finished our long analysis of the problematic TICKF transition. +We now have a lot of benchmarks surrounding this code, and have added performance improvements. +See [pull-3068] and [issue-3035].
    • We have restored support for +ghcid +in our repository. This is a tool for developing with Haskell that many of us find greatly +improves our productivity by providing us with constant feedback from the type checker. +See [pull-3112].
    • After much activity on the cost model, we have done some final clean up of the code. +See [pull-3075] and [pull-3101].
    • We moved a lot of the existing user facing documentation regarding native tokens into the +ledger repository, and cleaned it up +(most of the heavy lifting was done by our amazing technical writers). +See [pull-3091].
    • We removed dead code. See [pull-3089].
    • We moved a lot of code from the Shelley specific libraries to the ledger core library. +See [pull-3109] and [pull-3110].
    • We've removed more of the awkward legacy template Haskell names. +See [pull-3108].

    · 2 min read
    Jordan Millar

    2022-11-02 - 2022-11-15

    High level summary

    • Documentation improvments
    • Merged community contributions
    • Exposing types from cardano-api requested by the community/other teamss
    • Test output has been improved so diagnosing failures is now easier
    • Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)
    • Refactoring of cardano-testnet making it more useable as a library (ongoing)
    • Release 1.35.4 was merged & released

    Completed

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    · One min read
    Samuel Leathers

    Node Reelease Update

    2022-10-19 - 2022-11-02

    Executive Summary

    The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset, +a temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8.

    1.35.4 release candidates have been created and are being tested internally and externally.

    Completed

    In Progress

    + + + + \ No newline at end of file diff --git a/page/57/index.html b/page/57/index.html new file mode 100644 index 00000000000..405075c0945 --- /dev/null +++ b/page/57/index.html @@ -0,0 +1,76 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · One min read
    Dorin Solomon

    High level summary

    We have been focused on:

    • Fully opening our test results (on top of the existing tests & tools):
      See cardano-node-tests webpage.
    • Started to test and automate the new functionalities added in the 1.35.4-rc1 node tag
      See test results tracking page.
    • Made some improvements to the automated db-sync sync tests
      See db-sync tests.
    • Multiple cleanups and updates to the cardano-node-tests framework
    • Updated the nightly pipelines for the cardano-node-tests after the Babbage HF

    · One min read
    Kostas Dermentzis

    High level summary

    The DBSync team is preparing a release which introduces schema simplifications, removes indexes, +unique and foreign keys. It also provides a way to fix older values and migrates without the need to +resync from genesis.

    Lower level summary

    Schema simplifications

    Indexes, Unique and Foreign keys are removed in order to speedup syncing +#1295 +The same pr also introduces a different way to rollback, which doesn't rely on foreign keys and +indexes.

    Performance

    The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A +conservative number of these will be included in the next release and the rest can be found in +performance view.

    Migrations and resyncing

    The next release will be 13.1.0, it will enable a migration without the need to resync. It will also +introduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases +#1294

    Release

    The release has been mostly cherry-picked from master +#1294 and its scope can be seen +release view

    · One min read
    Sebastian Nagel

    High level summary

    This week, the hydra team completed several user experience improvements to the +hydra-tui and hydra-node, and delivered a first version of persisted head +states by publishing release version +0.8.0. +Besides this, they met with researchers on topic of the HeadV1 specification and +kicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation.

    What did the team achieve this week

    • Completed the UX improvements on the hydra-tui
    • Released version 0.8.0, which delivers a first version of persisted head states
    • Met with researchers on the HeadV1 specification
    • Started work on the RFP for our external audit

    What are the goals of next week

    • Complete ADR18 implementation and get it merged
    • Start work on event-sourced persistence #580
    • Have a first plutus script gap closed #452
    • Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)

    · 3 min read
    Marcin Szamotulski

    High-level summary

    The team has focused on debuging & fixing bugs for the P2P single relay release, which included

    • diagnosing, fixing and writing tests for a bug in peer-state-actions which +fortunately hasn't been released;
    • diagnosing & preventing misconfiguration of DNS

    We also focused on developing peer sharing. We also held a session with +the scientists on eclipse evasion.

    Detailed description

    P2P Network Stack

    During the past two weeks the team focused on p2p single relay release and peer +sharing. We found and fixed an important bug recently introduced in one of the +components of p2p networking stack (fortunately never released). Together with +a fix, we designed a unit test diffusion simulation as well as quickcheck +property test (both could reproduce it). We also changed the code in a way that +if such a bug is reintroduced in the future, it will be obvious to diagnose. +For more see:

    Initial benchmarking run of the P2P code was executed. The results where +unlike what we see on the mainnet. We found a possible misconfiguration of the +cluster (caused by 0 TTL on domain names), which could be the direct cause of +it. We wrote a PR which rules out such misconfiguration. We are awaiting on +the next benchmarking results. See more at:

    ouroboros-network#4106

    We also started working on P2P single relay release. The PR +ouroboros-network#4120 +includes 108 patches cherry-picked from the master branch. We started +working toward integration these changes against the release branch of +cardano-node. Early next week we ought to be able to have an early version +of cardano-node with non experimental P2P support!

    For more detailed release plan please see P2P - Single +Relay +issue.

    Consensus

    We identified and fixed missing error reporting in consensus +initialisation phase. See more at +ouroboros-network#4015

    Cardano Node

    We also made changes in cardano-node in order to give better experience for +node operators. This includes updating severities of some of the traces as +well as implementing new format of the p2p topology file. For more see:

    Peer Sharing

    We continued working on implementation of peer sharing. We have an early +implementation which will be reviewed and analysed in next weeks. We started +working on cardano-node integration. We need +PR #4392 to be merged +before such integration will be able to land in cardano-node, although this +is not blocking us currently. See more at:

    Eclipse Evasion

    We held a session which included Alexander Russel, Sandro Coretti-Drayton and +Nick Frisby from the consensus team. We discussed high lever design of the +eclipse evasion scheme, which is important for the design and implementation of +ouroboros-genesis. We got a positive feedback from the researchers.

    IO-Sim

    In this period we made little progress towards releasing IO-Sim on Hackage. +A single PR which added +a few missing instances of the STM monad.

    Open Source

    We made sure the CI runs for PRs which comes from forks (which is important to +accept contributions from 3rd parties).

    Mithril Cardano Integration

    We held initial discussions with Arnaud Bailly about possible path to integrate +mithril to cardano-node and take advantage of the ouroboros-network +diffusion layer.

    · 2 min read
    Serge Kosyrev

    High level summary

    On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline.

    On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario.

    Executive summary

    • The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale.
    • The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment.
    • The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.
    + + + + \ No newline at end of file diff --git a/page/58/index.html b/page/58/index.html new file mode 100644 index 00000000000..62a5268d72f --- /dev/null +++ b/page/58/index.html @@ -0,0 +1,95 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 4 min read
    Michael Fellinger

    High level summary

    The SRE team is heavily working on the Equinix Metal migration, replacing Hydra +with Cicero, and a new version of Spongix.

    Lower level summary

    OpenZiti

    • Work is ongoing on our OpenZiti integration into Bitte in [bitte-zt].
    • CI-World deployment of Darwin CI Ziti service in [ci-world-commit-d40f4d].
    • Multiple issues filed, and a lot of discussion with the OpenZiti developers, +we're making pretty rapid progress thanks to them.
    • Work on getting Equinix baremetal machines integrated into AWS World Bitte +clusters utilizing a Ziti ZTNA network overlay to bridge the networking of +the two environments and get IAM extension to Equinix machine for Nomad +client onboarding.
    • A Nix Flake for most of our OpenZiti dependencies including the Console, +Controller, Edge Tunnel, and Router is now at [openziti-bins].
    • The Flake also includes a WiP NixOS modules for these components.
    • Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with +no issues seen so far
    • Moved the console to traefik routing service (zac.$DOMAIN) and +controller/edge router stay at zt.$DOMAIN, but have registered consul +services

    Cicero & Tullia Integrations

    Cicero & Tullia Features

    • Improvements to Tullia task aggregation to make [cardano-addresses] build +correctly.
    • Better tullia CUE lib default for tags [tullia-commit-4df3c5d].
    • Put cache.nixos.org back in cache.iog.io's upstreams. This is now +considered a public cache again, and without it some Cicero evaluations had +to build huge packages.
    • Started working on a flake-parts module for Tullia.
    • Started working on cutting down Tullia task build time by putting facts in +JSON files.
    • Fixed running into kernel arg limit by reading tullia's DAG from a file
    • Merged [tullia-pull-9] that fixes several issues related to error reporting. +and escaping.
    • Added Mac builders in Cicero on CI-World.
    • Started work on Tullia invocation caching.

    Spongix

    • A lot of progress on an SQlite backed version of Spongix, it already supports +the full HTTP binary cache protocol but still lacks comprehensive testing and +some tuning, as well as recursive lookups.
    • First steps in the implementation of the nix-daemon ssh-ng protocol so +Spongix can be used via SSH and we can get rid of basic auth.

    Bugs

    • Discovered Cicero bug where Nomad reschedules cause the Github commit status +to get stuck in pending
    • Discovered Cicero race condition bug around concurrent transactions for +codependent actions.
    • Fixed tullia task order bug in [cardano-addresses]
    • Diagnose Cicero action not triggered in [abcirdc]
    • Fixed meta/description of the Tullia package in [tullia-pull-7]
    • Add Vault token loop alerts in [bitte-cells-pull-40]
    • Ongoing investigation on recurring Patroni and nomad-follower issues related +to token rotation.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level overview

    The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to +meeting the acceptance criteria in cardano-base, +which lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and +we are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution, +but also progressing on the implementation.

    Low level overview

    SECP built-ins

    • (missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in PR 313
    • CIP-0049 was addressed in the editors meeting, and PR 250 was merged
    • The unit-tests PR 320 is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.

    KES agent

    • We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them.
    • We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).

    · One min read
    Sebastian Nagel

    High level summary

    This week, the hydra team reviewed and addressed several open comments on the +new HeadV1 specification, completing a list the of identified gaps between +specification and implementation while doing so. In the wake of the recent +demonstration of SundaeSwap running their DEX in a Hydra Head, they met with +them to capture feature ideas & incorporate their feedback on the roadmap, as +well as potential research avenues.

    What did the team achieve this week

    What are the goals of next week

    • Complete the last two items required for a version 0.8.0.
    • Cut the next release, version 0.8.0
    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Have the CI build macos artifacts

    · 2 min read
    Jordan Millar

    2022-10-19 - 2022-11-01

    High level summary

    This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:

    • Ask the node about the current mempool's capacity and sizes
    • Request the next transaction from the mempool's current list
    • Query if a particular transaction exists in the mempool

    Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric tx_submit_fail_count has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:

    • Documentation improvments
    • Release 1.35.4 was merged & released
    • Exported various types from cardano-api that were requested by community members

    Completed

    cardano-cli

    cardano-api

    cardano-submit-api

    cardano-node

    cardano-testnet

    • None

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    · 4 min read
    Damian Nadales

    High-level summary

    During the past two weeks, the consensus team worked on adding property test for +different aspects of the UTxO HD prototype: era transitions, mempool, and +backing store. Thanks to these tests we were able to uncover a bug in the +prototype. On the Genesis front, we benchmarked a different version of the +ChainSync jumping prototype to try to improve its performance, but this did not +result in any noticeable speedup.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We focused on increasing test coverage for the UTxO-HD prototype:
        • We started implementing Cadano-eras transition property-tests.
        • We started implementing state-machine property-tests for the mempool.
        • We merged the mempool rewrite.
        • We started working on state-machine tests for the backing store. This +uncovered a bug in the range-read implementation of the LMDB backing +store.
    • Genesis: on track.
      • We benchmarked a version of the Genesis ChainSync Jumping prototype that +spreads out the ChainSync updates over a longer period of time. This did not +result in any noticeable speedup.
      • We investigated the overhead introduced by non-ChainSync components, but no +conclusions could be drawn from the benchmarks we ran.

    Workstreams

    Finish the UTxO HD prototype

    We focused on increasing test coverage for the UTxO HD prototype. We also merged +the mempool +rewrite.

    Era transition property tests

    We started implementing Cardano era transition property +tests, +which are needed for making sure that the ledger tables get updated in the +right way when we move from one era to the next. There are at the moment two +important transitions.

    • Byron to Shelley: where all the UTxO is transferred from in-memory Byron +state (which has no tables) to the ledger tables of the Shelley state.
    • Shelley to Allegra: where the AVVM addresses must be deleted.

    We have tests for the Byron to Shelley transitions. We are working on adding +the remaining ones.

    Mempool state-machine tests

    We started implementing state-machine property tests for the +mempool. +The mempool is currently tested via pure property tests, and use a ledger +state without tables. With the introduction of UTxO HD, testing the concurrent +behavior of the mempool became of crucial importance (eg now we have to +acquire locks to flush the backing store). In addition, we need to test a +ledger state with tables. These needs led to the creation of a new set of +property tests. In particular we aim to run parallel state-machine tests that +exercise the mempool in a way similar to how the node would make use of it.

    Backing store property tests

    We started working on state-machine tests for the backing +store that UTxO +HD uses. The property tests uncovered errors in the range-reads implementation +of the LMDB backing store. To facilitate fixing this bug, we made +changes to the Haskell +LMDB bindings.

    Benchmarking the CSJ prototype

    Prompted by previous benchmarks showing significant improvements in sync time by +using more capabilities, we implemented a way to spread out the ChainSync +updates over a larger period instead of firing them all at the same time. This +didn't result in a noticeable speedup.

    We also benchmarked the prototype with CSJ disabled (such that just the dynamo +peer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule +out/confirm overhead by non-ChainSync (mainly BlockFetch) related components. +This results in era-specific behavior (speed is like the prototype in Byron, but +like the baseline in Shelley). This deserves a closer look in the future.

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    • Red: baseline
    • Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps.
    • Blue: like Green, jumps are spread out.
    • Orange: variant with no jumping, to measure unrelated overhead.

    + + + + \ No newline at end of file diff --git a/page/59/index.html b/page/59/index.html new file mode 100644 index 00000000000..5870db1c67d --- /dev/null +++ b/page/59/index.html @@ -0,0 +1,100 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Sebastian Nagel

    High level summary

    This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the hydra-node over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks "past the opening of a Head". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.

    What did the team achieve this week

    • Last week we thought we were done with ADR18, but were not ...
    • ... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence.
    • Implemented a first version for persistence #187 in response.
    • Enhanced CI to publish test results on our website
    • Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!
    • Pulled static executable feature #200 into scope, implemented it and merged it!
    • Received and read through a project proposal by a vendor (building a Hydra platform).

    What are the goals of next week

    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Cut the next release, version 0.8.0
    • Address open comments on specification document & complete the list of identified gaps between specification and implementation #452
    • Have the CI build macos artifacts

    · 3 min read
    Jared Corduan

    High level summary

    The ledger team is still primarily focused on addressing +technical +debt. +We now have the infrastructure for versioning our serialization schemes, +which we continue to put into action. +We have made first steps towards getting proper support for the +formal ledger repository +(in particular, we've added nix builds and +continuous integration support). +We are wrapping up an investigation of the performance of a critical +function used by the consensus layer for leader checks. +Finally, we are improving the packaging and versioning of our code.

    Lower level summary

    Completed Technical Debt

    • Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of +our code lives in the cardano-ledger-shelley package, though with hindsight we can say that +much of it should live in cardano-ledger-core. +We continue to move things to cardano-ledger-core, and have much more to come. [pull-3059]
    • We now have the infrastructure to support versioned serialization schemes. +The inability to do this has caused us a lot difficulties, +such as [issue-3003], [issue-2965] and [issue-2444]. +We are still in the process of switching to the versioned serialization scheme +(such as [pull-3078]), +but the infrastructure was completed in [pull-3063].
    • We now have proper nix and CI support for the formal ledger project. [pull-19]
    • A separate team is helping bring support for +CHaP +to all the cardano-node repositories. +We have been helping out with this effort.
    • A separate team continues working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. +We have been helping out with this effort.

    In-progress Technical Debt

    We also have several fairly large pull-requests in review +that we are working on.

    • In an on-going attempt to build out a more user-friendly API, +we continue to remove HasField instances in place of using micro-lenses. +The protocol parameters, in particular, are being worked on. [pull-3045]
    • We are also renaming record fields to be consistent across the repository. [pull-3062]
    • We are now cleaning up all the work we did to understand the performance +of the TICKF transition. We have some improvements to the computatation +as well. [pull-3068]
    • We are adding more documentation, in particular to our Twiddler functionality. [pull-3073]
    • The formal ledger is adding support for finite set theory. [pull-20]

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks, the consensus team worked on improving the +performance of the ChainSync jumping logic, which is needed for Genesis. We also +rewrote the implementation of the mempool in the UTxO HD prototype which solved +the issues that prevented us from running system level benchmarks. Also on the +UTxO HD front, we have an improved implementation of the sequence-of-differences +(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for +the UTxO HD feature.

    Executive summary

    • With the latest implementation of ChainSync jumping we are closer to the +baseline performance. In particular, the prototype seems to benefit from the +extra concurrency provided by additional capabilities.
    • We rewrote the implementation of the mempool in the UTxO HD prototype. This +rewrite was required due to performance problems we observed when running the +workbench. +These performance problems prevented us from running system level benchmarks. +The rewrite solved these issues. After the UTxO-HD: mempool +rewrite PR is +merged, we will contact the Benchmarking team so that they run the system +level benchmarks.
    • The implementation of sequences of differences based on anti-diffs was +integrated into the UTxO HD prototype. It is pending +review and +we also need to run replay and syncing benchmarks to confirm that this will +deliver a performance improvement, as observed in our micro-benchmarks.
    • The UTxO HD prototype +inspection +resulted in a list of +tests +needed for consensus to consider the UTxO HD prototype as fully tested.

    Additional information

    Genesis

    Benchmarking setup: 50MBit/s, 50ms latency

    • Red: baseline
    • Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.

    As ChainSync Jumping involves many concurrent network operations at every jump, +we tried to run the node with 6 instead of the default 2 capabilties.

    • Orange: baseline with 6 capabilities
    • Blue: CSJ prototype with 6 capabilities

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    Further work includes whether we can tune the prototype to better handle few +capabilities, or to adapt the default number of capabilities (potentially just +while syncing).

    · 2 min read
    Kostas Dermentzis

    DBSync Update

    Fast restarts

    We fixed a long overdue issue in db-sync which caused long delays on restarts +1266. This has been +one of db-sync main objectives for this period. Restarts are now very fast, +because db-sync deletes almost nothing from the db, it just replays the ledger rules until it +reaches the tip of the db. The fix also improves reconnection speed, in cases where the node +restarts or the connection is temporarily lost. It also speeds up even more in cases where due to a +deployment mess up a very old snapshot or no snapshot at all is used.

    Property based testing

    We added stateful property based testing, using quickcheck-state-machine +1269. These tests use empty or +almost empty blocks to test the new behaviour of restarts and rollbacks.

    These tests generate arbitrarily a list of symbolic commands from these:

    RollForward Int
    RollBack BlockNo
    StopDBSync
    StartDBSync
    RestartNode
    AssertBlockNo BlockNo

    The commands are translated into real commands. For example RollForward Int will forge a new block +that fits on the current chain. These real commands are executed against db-sync using the mock +chain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync +which looks like this:

      Model
    { serverTip :: BlockNo
    , dbSyncTip :: BlockNo
    , dbSynsIsOn :: Bool
    , dbSynsHasSynced :: Bool
    }

    Finally a number of postconditions are checked, related to the eventual block number of db-sync.

    Tech Debt

    We handled a number of tech debt in +1275 +This improves the code format of db-sync, deletes many queries that were never used and groups the +others. This tech debt resolution not only improves the experience of working in db-sync, but can +facilitate some of our other objectives, as it makes it very explicit which queries are used +during syncing and which indexes are necessary.

    Smash

    We worked on fixing an issue related to fetching pool metadata +1276. +The issue which is described in +1270

    · One min read
    Jordan Millar

    Node-Api-Cli Update

    2022-10-04 - 2022-10-18

    Executive Summary

    The majority of the team's time was spent between getting 1.34.4 ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to cardano-cli.

    Completed

    cardano-cli

    cardano-api

    cardano-node

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    + + + + \ No newline at end of file diff --git a/page/6/index.html b/page/6/index.html new file mode 100644 index 00000000000..f31985103b6 --- /dev/null +++ b/page/6/index.html @@ -0,0 +1,37 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Marcin Szamotulski

    High-level overview of sprint 47

    Bootstrap Peers

    We continued to review the process of bootstrap peers, see ouroboros-network#4555

    CI / Tests

    We investigated our CI issues. We found a memory leak in typed-protocols +function used for testing codecs which triggered out of memory manager (OOM) on +some platforms (typed-protocols#43); we also found a bug in the connection manager which resulted in CI +timeouts (see connection-manager-fix).

    KeepAlive client

    We found two small issues with the keep-alive client, which were addressed +by Karl Knutsson (Cardano Foundation), ouroboros-network#4689.

    Galois

    We merged two large PRs prepared by Galois:

    Cardano Network Service Assurance (CNSA)

    Galois made the following progress on CNSA:

    • a simple [InfuxDB] database backend has been added;
    • the documentation has been updated;
    • internal improvements to the code;
    • progress on a new "CSNA analysis" that provides, for each sampler node, the +block download throughput in bytes over time.

    New CHaP Release

    We cut a new release of ouroboros-netowrk packages to CHaP: chap#547

    More details

    CI / Tests

    We improved the memory footprint of some of our tests by analysing a stream of +IOSim traces without retaining them, see ouroboros-network#4696

    As a safety measure, we introduced an upper bound for heap memory used by test +artefacts in our nix tests. We use 200MB limit for all tests except for +network-mux tests which use 350MB limit, see ouroboros-network#4702.

    We refactored one of our tests to use ephemeral ports thus allowing it to +run concurrently, see ouroboros-network#4702.

    We merged ouroboros-network#4623 which fixes a bunch of test failures.

    All of them were due to a bug in test logic rather than a bug in production +code.

    Release Process

    We updated our release process & associated scripts, see +ouroboros-network#4705.

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the cardano-playground stack

    Lower level summary

    Capkgs

    • Adds offchain-metadata-tools, dbsync sanchonet updates: capkgs-compare

    Cardano-parts

    • General package updates, modules improvements and template recipes to support network migration from world to playground cardano-parts-pull-17
      • Bumps cardano-db-sync-ng to sancho-2-0-0 tag
      • Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play
      • Adds more machine system bins and devShell bins for scripting and debug purposes
      • Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module
      • Adds profile-cardano-node-topology module for a simplified interface to most common topology needs
      • Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs
      • Adds a topology function to filter self from group machines with an allowList for matching infixes
      • Adds metadata-server and related offchain-metadata-tools bins from capkgs
      • Updates justfile template with:
        • a new query-all recipe for getting status of multiple concurrent running environments
        • a new set-default-cardano-env recipe for fast switching between environments
        • a new start-demo recipe for forking a custom env into conway
        • a new start-node recipe for generic environment start
        • a new stop-node recipe for generic environment stop
        • updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions
        • updated query-tip recipe to a generic query tip compatible with each environment

    Cardano-playground

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team released a new distribution 2342.0. This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes.

    They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files.

    Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the release-mainnet aggregator, and enhanced the Mithril explorer UI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Completed the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Worked on the issue Fix devnet Mithril Docker images #1272
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Worked on the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Display a summary of signers before the full list in explorer #1133
    • Completed the issue Add certificates list in explorer #1184
    • Completed the issue CoreVerifier setup does not compute total_stake correctly #1306

    · 2 min read
    Carlos LopezDeLara

    2023-10-11 - 2023-10-24

    High level summary

    CARDANO-CLI

    • Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified.
    • stake-address-info now shows deposits balance.
    • Added conway governance action view to allow to inspect governance action files before submitting them on a transaction.
    • build-raw support for --vote-file and --proposal-file

    CARDANO-API

    • Support DRep extended keys
    • Support Plutus V1 in Conway

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023.

    In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON. +This improvement offers users greater flexibility and ease of interaction with the API.

    Finally, the team has followed up on the TUI brick upgrade to version 1.10. +This effort has resulted in addressing minor details and enhancing the overall user experience with the TUI.

    What did the team achieve this week

    • Prepare presentation and workshop for Cardano Summit.
    • More TUI fixes and improvements.
    • Upgrade GHC from 9.2.8 -> 9.6.2 #1105
    • Solved user issue related to submitting transactions in cbor format #1111.
    • Fix hydraw connection issue making it more stable #1121.

    What are the goals of next week

    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.
    + + + + \ No newline at end of file diff --git a/page/60/index.html b/page/60/index.html new file mode 100644 index 00000000000..2aa50eba4e2 --- /dev/null +++ b/page/60/index.html @@ -0,0 +1,178 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Jared Corduan

    Ledger Update

    We have continued focusing nearly entirely on addressing technical debt. +A lot of design work has begun for the next ledger era, +but we do not yet have anything concrete to share.

    Technical debt issues completed

    • [issue-1676][pull-2992] We have finally removed the ledger dependency on the +cardano-prelude package. It was barely used in the ledger repository, and it added a dependency +that we did not want to maintain. It was a bit difficult to remove, and we had +to coordinate removing it from cardano-base. +A lot ended up going into pull-2992, due to the coordination effort, and we ended +up updating Plutus as well. +This means that we've now also made a lot of progress on the problematic cost model serialization +issues described in issue-2902. +In particular, after we resolve issue-3014, we will not have to wait an epoch before +releasing a cost model for a new version of Plutus, as we had to do for the Vasil HF.
    • [issue-3046][pull-3055] We moved a module that is now only used in Byron to a Byron package.
    • [issue-3047][pull-3054] We improved the interface to the Value (multi-asset) type.
    • [pull-3044] We debugged and fixed a tricky compilation issue. Certain kinds of field updates +were adding approximately 20 minutes to our compile time!
    • [issue-2932][pull-3036] As a part of our ongoing re-organization of the codebase, we +have added a Cardano.Ledger.[Era].Core module to each ledger era that has a TxBody class. +Most classes defined in the era should go in this new module. +We also re-export the Cardno.Ledger.Core module and the previous Cardano.Ledger.[Era].Core +modules from each era.

    Technical debt in progress

    • [issue-3034][issue-3035][node-issue-4421] We are continuing to write benchmarks to understand exactly where +all the time is being spent on executing the TICKF transition. +The consolidation of the per-stake-credential stake distribution to the per-stake-pool +distribution does seem to account for a large amount of time (near a second as written, which we +have down to about half a second with some optimizations), +but this does not account for everything. +Applying the reward update may also be a big contributing factor.
    • [pull-3033][pull-3038][pull-3041] A separate team is working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort.
    • The nix scripts used to build our new +formal ledger model +do not work consistently for everyone, and we have been working on fixing these issues.
    • [issue-3014] We are still working on adding a versioning scheme to all of the ledger +serializers.

    · 3 min read
    Marcin Szamotulski

    Network Update

    Ouroboros Network

    Ouroboros Consensus

    • Recently we found out that the consensus does not log exceptions thrown during +intiialisation. This was fixed in +PR input-output-hk/ouroboros-network#4015 +As part of this pull request we also changed that all exceptions rethrown by +the connection handler thread are wrapped in ExceptionInHandler.

    Some older items, which were not announced

    • We identified and fixed an issue related to socket activation (socket options +where not set for sockets passed through socket activation). +PR input-output-hk/cardano-node#3979 +This fix will be released in the next cardano-node release.

    Cardano Node

    • We extended the NixOs service module so that one can modify socketPath, +runtimeDir, databasePath, traceSocketPathAccept, +traceSocketPathConnect and stateDir options. +PR input-output-hk/cardano-node#4196

    IO-Sim

    We resolved a number of issues before release of io-sim on hackage:

    See PR #24.

    We also improved experience for contributors of io-sim and typed-protocols by adding issue templates:

    Typed Protocols

    Input Endorsers Simulation

    New features include:

    • Histograms of block arrival frequency, for both network (inbound) and CPU +(block validation). This is interesting to check that we're not overloading +the CPU block validation capacity, or network link capacity. Or alternatively +to observe the behaviour in an overload situation if we set the block +generation rate high enough.

    • Pie chart of utilisation of TCP links. This shows how small a fraction of +links are being used at any one time, and shows that once the system "warms +up" and is operating stably, most block delivery is ballistic.

    • Showing off the new screen layout combinators, that let us put multiple +charts, titles etc on screen at once and scale them to whatever screen or +video resolution we like without having to tweak numbers (this example is +scaled to fit 1080HD video resolution).

    · 4 min read
    Damian Nadales
    • We proposed a fix for the performance degradation observed when running +distributed multi-node benchmarks in the UTxO HD feature branch. While this +fixed the problems observed when running local benchmarks, it broke the +ThreadNet tests due to concurrency issues. Therefore, we think it is wise to +start redesigning the UTxO HD mempool integration.
    • We did several rounds of code review on the alternative implementation of +diff-sequences required by the UTxO HD feature based on the idea of +anti-diffs. This alternative implementation is close to being merged, and the +next step is to integrate this to the UTxO HD branch, so that we can run +ad-hoc replaying and syncing from scratch benchmarks and compare these with +the baseline. The micro-benchmarks we elaborated for the alternative +implementation show speedups of up to 4x, so we are optimistic about the +performance of replaying and syncing from scratch benchmarks, however it is +important to notice that due to the nature of UTxO HD we will still be +slower than the baseline.
    • The final draft of the Genesis implementation specification is ready for +review.
    • We implemented a prototype for the happy path of Genesis' ChainSync Jumping +(CSJ). The prototype is slower than the baseline, however it is not the latest +version of the prototype and the jump interval is very small.
    • Work on integrating Conway has stopped since +priorities have changed.
    • We started work on benchmarking epoch-boundaries and epoch overhead +pr-4014. To this end, we made use of a modified version of our +db-analyser tool. We ran the new benchmarking setup using the Cardano +mainnet chain, and we can see that block tick and application take +substantially longer at epoch boundaries, although there are a couple of slots +during an epoch in which these computations take more than normal. We notified +the ledger team about these findings. We will use this modified version of +db-analyser to investigate the epoch overhead.

    Workstreams

    UTxO HD

    • Spent quite some time investigating the root cause of the degradation in +performance observed in the benchmarks. We run the make forge-stress +benchmarks locally in order to debug this behavior.

      • Transaction batching doesn't make a notable difference in the outcome +(considering we are using the in-memory backend).

      • The mempool batching implementation required asynchronous transaction +validation which is a violation of the LocalTxSubmission protocol +contract and therefore if we continued on that route, the impact would +have been quite big.

      • The STM logic we implemented by using a TMVar for the mempool internal +state was buggy and under certain circumstances it seemed to lock. +Reverting the mempool internal state to be stored in a TVar seems to +solve this problem.

      • The results we get after this change look almost identical to the ones +from the baseline.

    • The anti-diff prototype (PR +#3997) has +been reviewed and is close to being merged.

      • A follow-up issue (issue +#4010) +to integrate the anti-diff prototype in the various consensus packages +was created. A first version of the integration exists, and all tests +pass. A next step is to get some indication of the "real" performance gain +by profiling db-analyser (or cardano-node).

    Genesis

    • Final draft of the Genesis implementation specification, now up for review.

    • Local benchmark setup for parameter tuning via the happy path ChainSync +Jumping (CSJ) prototype (Issue 3987).

      • Context: Our Genesis design requires us to check in with a large (~20) +number of servers periodically while syncing. These servers are offered +jump requests via the ChainSync protocol (hence the name), which they can +accept or decline. If a peer declines, the Genesis rule allows us to +determine whether a node actually has a better chain.

      • The "happy path" is when no peer declines a jump. We want this to have +close to no overhead compared to status quo, i.e. syncing without Genesis.

      • We implemented a prototype for this happy path, and are now starting to +test in various configurations (number of peers, latency, bandwidth) to +tune the performance of ChainSync jumping, i.e. how complicated our logic +of choosing when to jump needs to be.

        Example:

      • Simulated connection: 50 MBit/s, 50ms latency

      • Jump interval: 3000 slots (on the low end, could be increased to up to +3k/f)

      • Red: baseline (1.35.3), one peer in topology file

      • Blue: Preliminary version of our prototype, with 10 peers.

        It is slower by about ~30%, but it is not the latest version of the +prototype, and the jump interval is very small, making CSJ more of a +bottleneck.

    Technical debt

    • Fix flakiness in ChainDB QSM tests (PR 3990).

    · 2 min read
    Kostas Dermentzis

    DBSync Update

    New Tag

    We created a new db-sync tag 13.0.5 which addresses shortcomings of the last +release 13.0.4. It is currently under testing. +The Changelog is +here and in more details:

    • We fixed fees for tx with phase 2 failure that didn't include a total collateral field. +1248

    • We fixed an issue that could cause db-sync to crash if a specific rollback occured. +1247

    • DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but +could result in the wrong CBOR encoding being inserted. +1217

    • All the fixes above come with unit tests which validates the fix.

    • Added support for preprod and preview from docker. DBSync no longer needs to include the configs +for different networks, these are directly fetched from the cardano world. +1254

    • We added better support from docker for the new disable options and the overall documentation. +1260

    All the above were also backported to the master branch

    Open source

    We made the db-sync board public, so +everyone can have access on the issues we prioritise. +We also added new tasks to the board, some of them could be approachable to newcomers or people who +want to contribute.

    Progress on tech debt and new features

    • 1223 was merged, which removes the +foreign keys from the db schema. This opens the road to a number of optimizations.

    • An additional fix on top of the previous work was added +1250

    • An initial version where DBSync does not rollback on restart is done here +1266. +This allows db-sync to restart much faster, without the need to delete data and reinsert them. In +the future it can also facilitate migrations in cases where the ledger snapshots have a breaking +change, without the need to resync everything from genesis.

    · 2 min read
    Jared Corduan

    Ledger Update

    We have been focused nearly entirely on addressing technical debt.

    • We introduced more consistent naming across eras, this time for the auxiliary data. +See 3032.
    • We made clear how the consumed functions differs between eras (which was a previous source of +confusion), and added some related support to the fledgling ledger API. +See 3016.
    • We added clarity and organizational consistency to the main ledger era type synonyms. +See 3017.
    • We removed code duplication related to the input data hashes. +See 3018.
    • We split up a large module into smaller components. The large module was actually causing our +CI to time out. +See 3020.
    • We cleaned up stale information in our cabal files, and upgraded cabal 3.8. +See 3023, +3031, +and 3028.
    • We made consistent, standalone TxOut (transaction output) modules for every era. +See 3024.
    • We brought consistency to a maddening inconsistent use of type variables indicating the specific +choice of cryptographic primitives. In particular, all uses of crypto have been renamed to c. +See 3027.
    • We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric +types that will compose better in the future and which simplifies the constraints. +See 3029.
    • We consolidated some existing fragmented logic regarding how we gather the scripts needed for a +given transaction. This is a much needed cleanup to prevent future mistakes. +See 3019.
    • We fixed a problem with our generators that was causing a fair number of our property tests to +fail in CI. +See 3039.
    • We have started the work to update Plutus. This will bring support for SECP in the next major +protocol version, and also address a +problem +that we current have evolving the cost models. +See 3030.
    • We addressed a small issue that came up when integrating the conway era downstream, namely +the lack of some serialization instances. +See 3022.
    + + + + \ No newline at end of file diff --git a/page/61/index.html b/page/61/index.html new file mode 100644 index 00000000000..552caced08e --- /dev/null +++ b/page/61/index.html @@ -0,0 +1,144 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Jared Corduan

    Ledger Update

    Since finishing up support for the Vasil Hardfork, the ledger team has been +focused on two main things: a new ledger era and technical debt.

    New minimal ledger era

    We have implemented a new ledger era named conway which is nearly identical +to the babbage era. This has been the first time that we have been able to see +what a minimal ledger era looks like. We have finished this task, modulo any +integration issues that might come up. The only thing that the conway era +does differently from the babbage era is provide support for rotating +the master keys using the hardfork combinator's state translation. +We may end up adding features to the conway era, but it is a nice exercise +seeing what it looks like to get a minimal ledger era supported in all the +downstream components.

    Addressing technical debt

    We have been addressing technical debt, mostly in an effort to make the +repository a more friendly code base to work in.

    • We have begun work on a ledger API, called cardano-ledger-api.
    • We have done a big re-design of the major type classes used in the ledger. +With hindsight on our side, we now have something much more organized and +easier to use.
    • We have done a lot of re-naming. The names across eras are now much more +uniform, avoid certain confusions that plagued us, and are clearer in where +they are from.
    • We have reduced a lot of code duplication that could lead to bugs if you +do not have the whole code base in your head.
    • We have added a handful of performance improvements.
    • We added type safety in a number of locations. In particular, the type of +values that can be minted in a transaction no longer allow for Lovelace +in the type, and some functions which used to handle both timelock scripts +and plutus script now correctly enoforce at the type level that only one of +them can be used.
    • We made our generators so that they now produce a much richer set of +valid serializations. There is room within CBOR to serialize the same +data structure in multiple ways, and it is helpful to have the generators +use a wide variety.
    • We have begun re-organizing our test suites.

    · 9 min read
    Damian Nadales

    Executive summary

    • We did most of the heavy lifting required to integrate the Conway era.
    • We have property tests for the UTxO HD backing store API implementations. A +possible bug was identified. Work is ongoing to make sure the property-tests +cover all the relevant cases.
    • We implemented and benchmarked the "anti-diff" prototype to speed up the UTxO +HD functionality. Results show a rough speedup of 4x to 5.5x across +several scenarios. Note that: "Data reported by tasty-bench is only of +indicative and comparative significance.". +We are investigating additional performance improvements. The "anti-diff" +prototype and benchmarks are still pending code review.
    • We elaborated a draft specification for the Genesis implementation and +ChainSync jumping optimization.

    Workstreams

    Conway

    • Integration PR of the minimal Conway era (Issue #3963, PR +#3971).
    • Discussions with Ledger revealed possible sources of confusion about which +data should be changed in the Conway era. As a result, a new technical debt +issue was raised, which does not block the integration of the Conway era +(Issue #3976).

    UTxO HD

    • Issue #3954, branch: The functionality of a +backing store, which is the interface to the on-disk part of ledger state in +UTxO-HD, is tested at a high level through the OnDisk tests. However, some +functionalities remain untested, e.g., reads of ranges of keys. As such, we +have implemented quickcheck-state-machine tests that exercise backing stores +directly. The tests are reusable for different backing store implementations +because the tests are implementation-agnostic: Any backing store that conforms +to the backing store interface can be plugged into the tests. Work is still +ongoing to label/monitor the tests, such that we can verify that interesting +cases are being tested. Furthermore, a possible bug has been identified in the +LMDB backing store with respect to range reads, though the bug has not been +resolved yet.

    • Issue #3946, branch, PR #3882: The +"anti-diff" prototype proposes an alternative approach to keeping track of +sequences (more specifically, FingerTrees) of diffs. These diff sequences +are a component of the in-memory parts of the ledger state in UTxO-HD. Since +the consensus code often requires the cumulative diff of a sequence of diffs, +the current implementation "caches" cumulative diffs of each subtree in the +diff sequence. This caching allows relatively fast reconstruction of the total +cumulative diff, but this caching proved to incur a non-negligible cost: when +we manipulate diff sequences through splits and appends, we force re-computing +a logarithmic number of caches. This is problematic, since we often split and +append in consensus: we split when we flush diffs to a backing store or when +we roll back blocks, and we append when pushing blocks. The new approach +should reduce the overhead of this caching.

      We implemented micro-benchmarks for the "anti-diff" prototype: we +first generate a sequence of commands (Forward, Push, Flush, or +Rollback) through a simulation, after which we measure the performance of +applying the commands to a diff sequence. In this context, Forward means +forwarding of values through a diff, whereas Rollback means switching to +a different fork by rolling back diffs/blocks and pushing new ones. +Moreover, we compare the performance for the two implementations: the +"legacy" approach, and the anti-diff approach.

      Some preliminary results were positive, but we needed to revisit the +benchmark's configuration to obtain more definitive results. After a +discussion with @dcoutts and the consensus team about this configuration +(e.g., number of commands generated, choice of the security parameter k), +the benchmarks should now be closer to the realistic setting. The following +configuration specifies the default configuration that is used in the +benchmarking code:

      • Number of commands generated: 10_000
      • Security parameter k: 2160
      • Number of initial backing values: 100
      • Number of key-value pairs deleted by a push: 50
      • Number of key-value pairs inserted by a push: 50
      • Number of key-value pairs forwarded by a forward: 50
      • Probability of a large (in the range [1000, 2000]) rollback: 0.05
      • Probability of a small (in the range [1, 10]) rollback: 0.95
      • Order of commands:
        • An equal number of forward and pushes.
        • 1 flush every 10 pushes.
        • 1 rollback every 100 pushes

      Moreover, we run four benchmark scenarios:

      • Default configuration
      • Without rollbacks
      • With only small rollbacks
      • Without rollbacks, larger flushes (1 flush every 100 pushes)

      How to read results

      Note: this section uses documentation from the +tasty-bench package to +explain how to read the results of running our benchmarks.

      Running a benchmark scenario gives us the following (curated) output:

      ...
      AntiDiff: OK (18.27s)
      2.527 s ± 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x
      LegacyDiff: OK (32.73s)
      10.829 s ± 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory
      ...

      The output says that the first benchmark, which exercises the anti-diff +prototype, was repeatedly executed for 18.27 seconds (wall-clock time), +its predicted mean CPU time was 2.527 seconds and means of individual +samples do not often diverge from it further than ± 47 milliseconds +(double standard deviation). We also configure the RTS to collect GC +statistics, which enables tasty-bench to estimate and report memory usage. +This data is reported as per RTSStats fields: allocated_bytes, +copied_bytes and max_mem_in_use_bytes. So, the output of the first +benchmark says that a total of 2.1 GB of memory was allocated, that a +total of 544 MB of memory were copied, and that the peak memory in usage +was 2.2 GB. We read the output for the second benchmark in the same way.

      Furthermore, the benchmark compares the mean CPU times for +both the anti-diff and legacy approaches: In this case, the mean CPU time +for the anti-diff approach is ~0.23x the mean CPU time for the legacy +approach. Conversely, the mean CPU time for the legacy approach is +1 / 0.23 ~= 4.35x the mean CPU time for the anti-diff approach. We will +call 0.23x the improvement factor. We will call 4.35x the speedup.

      Note that these improvement factors (and reported results) are subject to +noise, randomness, the specific configuration parameters, and the whims +of statistics. Data reported by tasty-bench is only of indicative and +comparative significance.

      Results

      For each of the 4 scenarios, we list the results of running the anti-diff and +legacy approaches 5 times. We run the benchmarks 5 times to get an indication +of whether the results are similar across multiple runs. Furthermore, we +calculate the accompanying ranges (if applicable) of improvement factors and +speedups.

      Note also the decrease in total bytes allocated and total bytes copied for +the anti-diff approach compared to the legacy approach.

      Default configuration

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff2.533 s (0.23x)4.7 ms2.1 GB557 MB2.4 GB
      Run 1: LegacyDiff10.792 s162 ms6.8 GB2.3 GB2.4 GB
      Run 2: AntiDiff2.508 s (0.23x)245 ms2.1 GB515 MB2.2 GB
      Run 2: LegacyDiff10.850 s30 ms6.9 GB2.3 GB2.2 GB
      Run 3: AntiDiff2.562 s (0.23x)5.0 ms2.1 GB552 MB2.2 GB
      Run 3: LegacyDiff10.993 s149 ms6.9 GB2.3 GB2.2 GB
      Run 4: AntiDiff2.168 s (0.22x)5.3 ms1.8 GB434 MB2.0 GB
      Run 4: LegacyDiff9.976 s39 ms6.3 GB2.0 GB2.0 GB
      Run 5: AntiDiff2.527 s (0.23x)47 ms2.1 GB544 MB2.2 GB
      Run 5: LegacyDiff10.829 s148 ms6.8 GB2.3 GB2.2 GB
      • Improvement factor: [0.22, 0.23]
      • Speedup : [1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]

      No rollbacks

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.638 s (0.19x)36 ms1.4 GB181 MB2.4 GB
      Run 1: LegacyDiff8.656 s207 ms5.7 GB1.5 GB2.4 GB
      Run 2: AntiDiff1.638 s (0.19x)75 ms1.4 GB181 MB2.2 GB
      Run 2: LegacyDiff8.654 s322 ms5.7 GB1.5 GB2.2 GB
      Run 3: AntiDiff1.663 s (0.19x)74 ms1.4 GB181 MB2.2 GB
      Run 3: LegacyDiff8.799 s216 ms5.7 GB1.5 GB2.2 GB
      Run 4: AntiDiff1.645 s (0.19x)51 ms1.4 GB181 MB2.0 GB
      Run 4: LegacyDiff8.732 s261 ms5.7 GB1.5 GB2.0 GB
      Run 5: AntiDiff1.639 s (0.19x)19 ms1.4 GB181 MB2.2 GB
      Run 5: LegacyDiff8.653 s234 ms5.7 GB1.5 GB2.2 GB
      • Improvement factor: 0.19
      • Speedup : 1 / 0.19 ~= 5.25

    Only small rollbacks

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff1.833 s (0.18x)36 ms1.5 GB185 MB2.4 GB
    Run 1: LegacyDiff10.362 s867 ms5.8 GB1.6 GB2.4 GB
    Run 2: AntiDiff1.696 s (0.19x)30 ms1.5 GB185 MB2.2 GB
    Run 2: LegacyDiff8.822 s106 ms5.8 GB1.5 GB2.2 GB
    Run 3: AntiDiff1.702 s (0.19x)44 ms1.5 GB186 MB2.2 GB
    Run 3: LegacyDiff8.906 s147 ms5.8 GB1.5 GB2.2 GB
    Run 4: AntiDiff1.701 s (0.19x)47 ms1.5 GB185 MB2.0 GB
    Run 4: LegacyDiff8.949 s197 ms5.8 GB1.5 GB2.0 GB
    Run 5: AntiDiff1.677 s (0.19x)55 ms1.5 GB186 MB2.2 GB
    Run 5: LegacyDiff8.856 s177 ms5.8 GB1.5 GB2.2 GB
    • Improvement factor: [0.18, 0.19]

    • Speedup : [1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]

      No rollbacks, larger flushes (every 100 pushes)

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.643 s (0.25x)21 ms1.5 GB196 MB2.4 GB
      Run 1: LegacyDiff6.591 s351 ms4.0 GB1.4 GB2.4 GB
      Run 2: AntiDiff1.616 s (0.25x)47 ms1.5 GB196 MB2.2 GB
      Run 2: LegacyDiff6.520 s232 ms4.0 GB1.4 GB2.2 GB
      Run 3: AntiDiff1.640 s (0.25x)34 ms1.5 GB196 MB2.2 GB
      Run 3: LegacyDiff6.540 s150 ms4.0 GB1.4 GB2.2 GB
      Run 4: AntiDiff1.635 s (0.25x)76 ms1.5 GB196 MB2.0 GB
      Run 4: LegacyDiff6.589 s131 ms4.0 GB1.4 GB2.0 GB
      Run 5: AntiDiff1.628 s (0.25x)19 ms1.5 GB196 MB2.2 GB
      Run 5: LegacyDiff6.490 s5.9 ms4.0 GB1.4 GB2.2 GB
    • Improvement factor: 0.25

    • Speedup : 1 / 0.25 ~= 4

    Genesis

    • We elaborated a draft of the specification of the Genesis implementation and +the ChainSync Jumping optimization. In particular, this includes a proof +sketch that the latter preserves liveness and safety in all cases (Issue +3964).
      • @nfrisby's main realization during this sprint was that he had been +focusing so far on the case where the selected chain is an extension of +the intersection of our peers' ChainSync candidates.
      • This is the main case, ie an "absorbing" state, but it's not the only +case.
      • The new proof sketch begins by case splitting on that predicate, and +that made the sketch quite a bit easier to follow.
    • We continued working on the "happy path" ChainSync Jumping prototype (Issue +3960).

    Technical debt

    • We started working on the issues required to re-enable nightly CI runs.. +Nightly CI runs have far more lax time constraints, which gives the option to +run significantly more property tests than in our regular CI. To this end, we +merged a PR to easily adapt the number of tests globally (PR +#3947).

    · One min read
    Marcin Szamotulski

    The networking team took an active part in the project iteration (PI) planning +session, see cardano-node backlog for detailed +outcomes.

    • We started working on a detailed design / implementation plan for gossip.

    • We merged input-output-hk/ouroboros-network#3859 which +sets the ouroboros-network repository for the single relay release.

    • We identified a bug in the network simulator, which is fixed in the +input-output-hk/ouroboros-network#3852. +The above PR was reviewed.

    • We set the tracing configuration for nodes which we deploy and fixed and +identified some deployment hiccups. We identified some bugs in the RT view +which were registered by the maintainers. +input-output-hk/ouroboros-network-ops#4

    • We fixed typos in network-mux library: +input-output-hk/ouroboros-network#3921

    • For easy of debugging we renamed a trace point: +input-output-hk/ouroboros-network#3922

    • Duncan iterated on his simulation / visualisation. He also was able to +identify and fix a bug in the simulator. The simulation contains 50 nodes. +Dashed lines indicate and established connection, while solid lines indicate +a TCP connection with fully open TCP window.

    + + + + \ No newline at end of file diff --git a/page/7/index.html b/page/7/index.html new file mode 100644 index 00000000000..d5d5f2402aa --- /dev/null +++ b/page/7/index.html @@ -0,0 +1,36 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node.

    UTxO-HD

    • The Plutus workload benchmark for the in-memory backend showed no regressions for the metrics of interest, but it does show an increase in resource usage.
    • We got additional ad-hoc measurements on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB.
    • We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.

    Genesis

    • We produced the first draft for a Survivable Eclipse Duration Model (422).

    Support

    • Esgen finished his cycle as release engineer. Node 8.5.0 has been released.
    • We resumed work on the subpar handling of block from the future (4251).
    • We prepared the integration of new tracing events for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned issue).

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay.

    Finally, they enhanced the CI/CD to publish multiple packages to crates.io and started improving the developer experience with the Mithril devnet.

    Low level overview

    • Published the security advisory Mithril relay could expose Cardano block producer internal IP when updated #GHSA-9m3h-72xj-x2gq
    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Publish multiple packages to crates.io #1298
    • Completed the issue Rename public key published in releases #1292
    • Completed the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Fix devnet Mithril Docker images #1272

    · One min read
    Marcin Szamotulski

    High-level overview of sprint 46

    Bootstrap Peers

    We continued reviewing of bootstrap peers, see ouroboros-network#4555.

    Towards Typed Protocols 0.2.0.0

    We diagnosed the performance regression of the new design. The work on +typed-protocols will be postponed. For more details see the +typed-protocols#3. As an outcome of the performance debugging we prepared +PR which updates the demo-ping-pong and +demo-chain-sync applications.

    Peer Sharing

    We made progress in review of ouroboros-network#4644, which simplifies the +peer sharing and fixes the ouroboros-network#4642 issue.

    Tech Debt

    We reviewed the ouroboros-network#3836 PR which inspects all the uses of +error in ouroboros-network. The PR was prepared by Galois.

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity.

    They also completed the exploration of potentially moving the Plutus validator scripts to Aiken.

    Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project.

    What did the team achieve this week

    • Network Resilience Persistence (#1101)[https://github.com/input-output-hk/hydra/pull/1101].
    • Upgrade brick on TUI (#1103)[https://github.com/input-output-hk/hydra/pull/1103].
    • Aiken commit validator translation (#1072)[https://github.com/input-output-hk/hydra/pull/1072].
    • Fixed some bugs in our TUI client.

    What are the goals of next week

    • Prepare presentation and workshop for Cardano Summit.
    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.

    · One min read
    Alexey Kuleshevich

    High level summary

    The Ledger team has been shifting focus from implementing Conway related features to +testing. For this reason there is a very little amount features that are reported this +time aorund. Notable Conway related changes are a specialized ledger query for getting +Constitutional Committee state and prevention of submitting proposal procedures that have +no valid path to enactment.

    Testing related work was mainly on a constraint base system as well as on roundtrip +serialization. As a result of this extra testing a bug in Conway Genesis serialization +was eliminated.

    Low level summary

    Conway era

    Integration and releasing

    Testing

    • pull-3769 - Add roundtrip testing by validating FlatTerm
    • pull-3783 - Update TranslationInstance.hs
    • pull-3775 - Refactor and improve constraint based STS tests
    • pull-3793 - Fix sums with negative RHS.
    + + + + \ No newline at end of file diff --git a/page/8/index.html b/page/8/index.html new file mode 100644 index 00000000000..6cb5b65acb4 --- /dev/null +++ b/page/8/index.html @@ -0,0 +1,32 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was updated to 8.5.0-pre.
    • Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring

    Lower level summary

    Capkgs

    • Various improvements and fixes including:
      • Add GHA cron schedule
      • Add nix auto-gc to avoid running out of storage during large package set builds
      • Add new packages to capkgs
      • Reduce runner storage requirement leaving more room for builds
      • Restructure capkgs attribute names to avoid package name collisions
      • Return to non-musl builds for cardano packages to retain journald compatability
      • Update cache usage to from file level to folder level to reduce network and latency overhead
      • Commit diff: capkgs-compare

    Cardano-parts

    • Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: cardano-parts-pull-16
    • Dbsync, smash, faucet and more: cardano-parts-pull-15
      • Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes
      • Adds nginx vhost metrics exporter profile
      • Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down
      • Adds bash *-ng autocompletion compatible wrappers
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds downstream grafana cloud dashboard as templates
      • Adds downstream grafana cloud alerts as templates
      • Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish
      • Updates the basic profile with IOG cache and commonly used bins
      • Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks
      • Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration
      • Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion
      • Updates the colmena template with dbsync, smash, faucet machines profiles and roles
      • Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns
      • Bumps capkgs node-ng to 8.5.0-pre

    Cardano-playground

    • Dbsync, smash, faucet and more: cardano-playground-pull-3
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts
      • Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change
      • Optimizes machine sizes
      • Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion
      • Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration

    Cardano-world

    Sanchonet-demo

    • Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: sanchonet-demo-commit

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on crates.io, the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures.

    Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI.

    Low level overview

    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Update Rust compiler in nix CI #1282
    • Worked on the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230

    · 2 min read
    Carlos LopezDeLara

    2023-09-27 - 2023-10-10

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Depracated governance query commands and moved all governance related queries to cardano-cli <era> query
    • Drep registration certificates now allow to include an anchor
    • Integrated Drep retirement ceriticates
    • clean up of Drep registration certificates.

    CARDANO-API

    • Add support for committee hot key witnesses
    • Require conway onwards for voting
    • Conway drep registration: expose ledger anchor parameter
    • Add certs to txbody of Conway transactions

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums.

    The team also delivered the first version of the network resilience layer, significantly increasing head availability.

    Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra.

    Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra.

    What did the team achieve this week

    • Release 0.13.0
    • Published vulnerability reports #1088
    • Merged network resilience work part I #1074
    • Planning for Cardano Summit participation
    • Discussions with funded Catalyst projects wanting to build on Hydra for support
    • Merged typos fix PR from @omahs #1095

    What are the goals of next week

    • Complete Aiken commit validator script #1072
    • Complete Kupo integration #1078
    • Brick upgrade on TUI #1103
    • Clean backlog
    • Prepare and rehearse demo and talk for Cardano Summit

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system.
    • Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7.
    • Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store.
    • Tracing: The machine-readable tracer configuration has been merged. Optimization of cardano-tracer started.
    • Nomad backend: Ongoing variance analysis and refined cluster topology.

    Low level overview

    Benchmarking

    Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the +performance of the in-memory backing store and evaluate possible optimizations (or regressions) for it.

    Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results +show all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the cardano-tracer service.

    Consensus QTAs

    The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The +feedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype.

    Development

    Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort.

    PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time, +we'd like to validate the many improvements that have gone into the Plutus evaluator.

    Tracing

    The focus for further optimization of the new tracing system has shifted to cardano-tracer - the service +receiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in cardano-node is +more performance critical, the receiving service must still minimize its resource footprint. Moreover, it can +generate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations.

    Nomad backend

    Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated +the same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery.

    + + + + \ No newline at end of file diff --git a/page/9/index.html b/page/9/index.html new file mode 100644 index 00000000000..c9988d6c393 --- /dev/null +++ b/page/9/index.html @@ -0,0 +1,50 @@ + + + + + +Cardano Development Updates | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 2 min read
    Damian Nadales

    High level summary

    The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the in-memory backend.

    On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain. +We also merged a fix for the Babbage to Conway transition, and released a new version of Consensus.

    Genesis

    • We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (392).

    Support

    • We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (366).
    • We enabled richer tracers in cardano-node that can be useful in future debugging (384).
    • Esgen continues with his release engineer activities, and created a new Consensus release.

    Fostering collaboration

    • We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (369).

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion on implementing Mithril in a light wallet to receive feedback and contributions from the community.

    They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks.

    Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs.

    Low level overview

    • Created the discussion Implement Mithril in a light wallet #1273
    • Completed the issue Run client in browser WASM PoC #1254
    • Completed the issue Benchmark aggregator performances #1220
    • Worked on the issue Add SPO tickers in explorer #1185
    • Completed the issue Add a non 404 status code on the aggregator endpoint #1103
    • Completed the issue Use source attribute in errors #1265
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Completed the issue Configure status page and alerting #1277
    • Completed the issue Upgrade dependencies #1274

    · 3 min read
    Marcin Szamotulski

    High-level overview of sprint 45

    Bootstrap Peers

    We started reviewing the bootstrap peers PR, ouroboros-network#4615.

    Towards Typed Protocols 0.2.0.0

    We discovered a performance regression when using typed-protocols-0.2.0.0, and we +started investigating where it comes from. Currently, we see that +typed-protocols-0.2.0.0 can outperform typed-protocols-0.1.0.0 when running +in isolation with a simple ping-pong protocol, so the regression might be in +the new block fetch implementation which comes with typed-protocols-0.2.0.0 +See typed-protocols#3.

    Tech Debt

    We merged two PRs written by Galois engineers:

    • a pull request which refactors the main entry function for P2P, see ouroboros-network#3834;
    • a pull request which reviews usage of unsafe function in the network code based.

    Galois also made progress with the following two issues:

    IO-Sim

    IOSimPOR

    We found and fixed a bug in IOSimPOR. We'd like to thank Prof. John Hughes +(Quviq AB) for helping us with debugging the issue.

    We also provided a more uniform API for IOSimPOR, and added ways to make the +debugging similar problems in the future easier.

    Technical Details on IOSim refactoring
    We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future.

    IOSim

    To prepare for the next release, we consolidate packages taking advantage of +the public sublibraries supported now both by cabal and Hackage. This is +a work in progress, io-sim#114.

    Cardano Newtork Service Assurance

    Galois made the following progress:

    • A test run of spinning up a CNSA instance was done, as a result documentation +was updated.
    • Based on the IOG code review of the CNSA code, updates to the CNSA code were +made.
    • Galois has started the design for adding a CNSA analysis for "fetched bytes +over time while node is syncing".

    P2P adoption

    In the last two weeks, we've seen increase in P2P adoption. +P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays. +node versions

    Open Source

    We upstreamed our FFI bindings to Windows named pipes to Win32 package, the +PR was accepted and merged.

    We also received an external contribution which enhanced our documentation, see +ouroboros-network#4676.

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and testing the +performance analysis tool

    Details

    • drafting processs calculus semantics of mini protocol programs

    • testing the new performance modelling tool

    • further work on specification of mini protocols

    • extension of mini protocol framework to support communication of +programs with local environments via synchronous channels

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team mainly focused on having a working new reliability +network layer; and specified its expected behavior in a new ADR.

    They also revisited the security policy and vulnerability disclosure policy on +how to handle security vulnerability within Hydra, and in particular how to +handle so-called "Silent fixes".

    What did the team achieve this week

    • Updated security policy and vulnerability disclosure policy #1088
    • Adr/network reliability #1082

    What are the goals of next week

    + + + + \ No newline at end of file diff --git a/pdf/network/2022-11-24-UCL.pdf b/pdf/network/2022-11-24-UCL.pdf new file mode 100644 index 00000000000..724ed4392dd Binary files /dev/null and b/pdf/network/2022-11-24-UCL.pdf differ diff --git a/quarterly/2022-10-07-node-cli-api/index.html b/quarterly/2022-10-07-node-cli-api/index.html new file mode 100644 index 00000000000..cc008dd169b --- /dev/null +++ b/quarterly/2022-10-07-node-cli-api/index.html @@ -0,0 +1,24 @@ + + + + + +Node API & CLI Team Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Node API & CLI Team Update

    · 2 min read
    Jordan Millar

    Node-Api-Cli Quarterly Update

    2022-09 - 2022-11-04

    • Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0
    • Major clean up of stale iusses + PRs.
    • Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs
    • cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node.
    • cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation.
    • General documentation updates and improvements
    • Addition of tx-mempool command which allows users to:
      • Query the node about the current mempool's capacity and sizes
      • Request the next transaction from the mempool's current list
      • Query if a particular transaction exists in the mempool
    • Initial refactoring of cardano-testnet

    Next quarter

    • cardano-api
      • Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately.
    • cardano-testnet
    • Serenity
      • Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above.
    • General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new.
    + + + + \ No newline at end of file diff --git a/quarterly/2022-11-07-ledger/index.html b/quarterly/2022-11-07-ledger/index.html new file mode 100644 index 00000000000..8f838436c00 --- /dev/null +++ b/quarterly/2022-11-07-ledger/index.html @@ -0,0 +1,27 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Ledger Team Update

    · 2 min read
    Jared Corduan

    Ledger Quarterly Update

    2022-09 - 2022-11-04

    • We finished a minimal ledger era capable of master key rotation. +This will be re-purposed our upcoming work.
    • We have the humble beginnings of a proper ledger API.
    • We improved the problematic cost model serialization +(recall the song and dance about updating the cost model one epoch after the hard fork).
    • We have added benchmarks for problematic areas.
    • Massive repository restructure and cleanup.
      • Unified and consistent variable name schemes (not completely finished, but nearly there).
      • Massive reduction in type constraints, which causes a lot of developer friction, +in our code and also downstream.
      • More organized module structures.
      • Improved generators for our property tests.
      • We removed our dependency on cardano-prelude.
    • The formal ledger model has come a long way.
      • We created a fork of Agda that provides some meta-programming support for the ledger rules.
      • We have a large amount of the basic UTxO support in the model.
      • We can generate a good looking PDF from the model.
      • We can produce Haskell from the model.
      • We have a nice finite set theory library that we can use for many of the ledger rules.
      • We have nix support for the model.

    Next steps

    • Individual tracking of deposits. [issue-3113]
    • Versioned CBOR encoders/decoders. [issue-3014]
    • New ledger era transaction body (and the surround work associated with it).
    • Designs for the next ledger era.
    + + + + \ No newline at end of file diff --git a/quarterly/2022-11-09-network/index.html b/quarterly/2022-11-09-network/index.html new file mode 100644 index 00000000000..d4702a1119e --- /dev/null +++ b/quarterly/2022-11-09-network/index.html @@ -0,0 +1,66 @@ + + + + + +Network Team Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Network Team Update

    · 4 min read
    Marcin Szamotulski

    Network Quarterly Update

    2022-09 - 2022-11

    Summary of most important improvements

    During this quarter the networking team delivered low level specification of +peer sharing & eclipse evasion. We held a session with the consensus & the +scientists; we got a positive feedback on the design.

    Further we focused on implementation of peer sharing. We produced a detail +design and an early implementation.

    We prepared the P2P Single Relay Release (cardano-node-1.35.5). It +includes over 130 patches of network stack improvements over the +previous version 1.35.4, which were accomplished over a longer period of +time. Among them are both bug fixes and UX improvements for stake pool +operators like simplified format of the topology file, or +improvements in the logged messages:

    We also provide better integration with systemd (socket +activation improvements) or improvements in the networking stack:

    • exit policies,
    • peer metrics improvements,
    • DNS TTL improvements (which make it harder to misconfigure the +system, an issue discovered by the performance & monitoring team),
    • do not trigger inbound idle timeout for node-to-client connections (pr +#3844), an issue reported to us by Matthias Benkort from +Cardano Foundation.

    Duncan has been making progress with the input endorsers demo. His simulation +provides a useful animated visualisation and live quantification of behaviour +of the modeled design.

    We also improved our e2e diffusion simulation by implementing header-body +split, similar to what the real implementation does.

    We also made some advances towards our future goals of P2P release for block +producer nodes (pr #3800 - in review) & for Daedalus users +(pr #3690 - merged).

    Detailed log

    • We expanded diffusion simulation with block-fetch protocol bringing it closer +to the production system.

    • We addressed some additional technical depth in diffusion simulation

    • We slightly improved documentation & CI of io-sim and typed-protocols +repositories for open-source contributors.

    • We closed a number of issues towards publishing io-sim on Hackage (only two +essential issues are left open).

    • We pushed a branch of typed-protocols which captures one of the developer UX +problems in the API which we need to solve.

    • We identified and fixed an issue related to systemd sockets.

    • We identified and fixed an issue in consensus initialisation not giving +feedback on early errors.

    • We deployed RT View, identified a number of issues which were communicated to +the performance & monitoring team.

    • We finished high level & detailed design of peer sharing, very early +implementation of peer sharing is done (note that peer sharing cannot be +safely deployed without eclipse evasion & genesis).

    • We finished high level design of eclipse evasion, and started working on +a detailed design.

    • We were assigned the role of release engineer for 1.35.5 release (the P2P +single relay release); we prepared a cardano-node for 1.35.5 release which +contains more than 130 patches of just network stack improvements done over +last few months.

    • We diagnosed and fixed an tricky bug in the peer state actions (a component +which sits between outbound governor and connection manager). That bug was +introduced earlier this year and never released. It was caught by the QA +testing framework. We expanded our diffusion simulation to cover such case and +also mitigated a chance for reintroducing such a bug in future.

    • We identified and quite likely mitigated a misconfiguration in the +benchmarking cluster (next benchmarking run will confirm our hypothesis).

    • We simplified the format of p2p topology file, we got positive feedback from +SPOs.

    • We raised severities of some of the logging messages, which is an important +improvement for SPOs, exchanges and other users of the system.

    • We worked on input endorsers simulation which gives both animated and +quantified live feedback on network operation, using a simplified model of +a TCP/IP network.

    Next quarter

    • Release the Single Relay P2P Release 1.35.5.

    • Carry on with Peer Sharing (review, testing).

    • Deliver a talk at Conference on Principles of Distributed Systems 2022 in Brussels, Belgium.

    • Present Detailed Design of Eclipse Evasion and start implementation phase.

    • Work on P2P Block Producer release.

    • Carry on with publishing of io-sim on Hackage.

    + + + + \ No newline at end of file diff --git a/quarterly/2022-11-15-consensus/index.html b/quarterly/2022-11-15-consensus/index.html new file mode 100644 index 00000000000..e6cc2b6a4c3 --- /dev/null +++ b/quarterly/2022-11-15-consensus/index.html @@ -0,0 +1,63 @@ + + + + + +Consensus Quarterly Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Consensus Quarterly Update

    · 4 min read
    Damian Nadales

    Consensus Quarterly Update

    2022-09 - 2022-11

    Main achievements

    UTxO HD

    • As a consequence of the errors observed when running distributed mempool +benchmarks, we re-designed the UTxO HD mempool integration, which fixed these +errors and lead to a simpler and more maintainable design.

    • We focused on increasing test coverage for the UTxO-HD prototype. In +particular, we added property tests for:

      • Backing store (work ongoing)
      • Era transitions
    • The property tests we added uncovered several bugs, which is a great result +given the exponential increase in the cost of finding bugs as they are closer +to deployment.

    • One of the errors found by our tests required us to work on improvements in +the Haskell bindings for LMDB. This work is ongoing.

    • We started working on the mempool property tests that will exercise the new +code paths that UTxO HD introduced.

    • We developed, benchmarked and tested an implementation of sequences of +differences based on "anti-diffs". Performance results of diff sequence +operations show that we achieved a speedup of about 4x across several +scenarios. Note: this speedup is taking into account diff sequence operations +only, so the consensus-wide speedup is less than 4x.

    • We integrated the "anti-diff" prototype into the UTxO HD feature branch.

    Genesis

    • We wrote a simulator that demonstrates soundness of an abstract implementation +of the new chain selection rule.
    • We elaborated a draft specification for the Genesis implementation (currently +awaiting feedback from other architects).
    • We elaborated a draft specification for the ChainSync Jumping optimization. In +particular, this includes a proof sketch that the latter preserves liveness +and safety in all cases.
    • With the Networking team, we co-designed the eclipse avoidance mechanism, +specifically its coherence with the Genesis implementation plan's security +and its dependence on the new ChainSync Jumping optimization.
    • We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a +performance degradation wrt the baseline. Our optimization attempts so far +have brought the performance closer to the baseline, but not yet to parity.

    Conway era

    • We did most of the heavy lifting required to integrate the Conway era into the +Consensus layer.

    Technical debt

    • We started working on enabling CI nightly tests, which revealed several test +failures due to thunks being found it data structures used by the ledger and +consensus. We made a lot of progress fixing those thunk errors, but some +errors still remain.

    • We elaborated a db-analyser benchmark for the ledger operations. This led us +to the identification of high processing time at epoch boundaries, and we +could not observe any performance degradation that can be attributed to era +changes.

    • We fixed a source of flakiness in the ChainDB QSM test.

    • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    • We fixed a bug in the maximum-allowed ledger major protocol version.

    Fostering collaboration

    • We spent time making cardano-updates the central source of information for +the core teams stakeholders.
    • We went through the Galois gap analysis and extracted actionable points to +take on next.
    • Bart and Yogesh continued with their onboarding and stated making substantial +contributions to consensus.

    Next steps

    UTxO HD

    • Finish the mempool property tests.
    • Benchmark the latest version of the prototype.
    • Elaborate a document that describes new integration test scenarios and pass it +to the SDET team.
    • Bring query UTxO by address command performance on par with the baseline +version.

    Genesis

    • Receive and incorporate Duncan's feedback on the first draft specification for +the Genesis implementation.
    • Begin prototyping the first genesis implementation, unless the first draft +needs major changes.
    • Draft a second revision of the Genesis report.
    • Review the second revision with a wider audience, which includes at least +Alexander Russell. That feedback will drive a third and hopefully final +revision.
    • Investigate how to mitigate the ~30% slowdown we have observed so far in the +ChainSync jumping prototype, and try to mitigate it. In particular, we might +need to optimize the existing BlockFetch logic.

    Tech debt

    • Enabling nightly CI tests.

    Fostering collaboration

    • Merge the tutorial document Galois wrote; requires CI integration.
    • Come up with our own documentation improvements, many of which were suggested +in the Galois gap analysis.
    • Try to hire a new team member.
    + + + + \ No newline at end of file diff --git a/quarterly/2023-01-13-network/index.html b/quarterly/2023-01-13-network/index.html new file mode 100644 index 00000000000..07fc67d7d66 --- /dev/null +++ b/quarterly/2023-01-13-network/index.html @@ -0,0 +1,47 @@ + + + + + +Network Quarterly Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Network Quarterly Update

    · 5 min read
    Marcin Szamotulski

    Network Quarterly Update

    2022-11 - 2023-01

    Summary

    The primary goal of the networking team was to focus on the single relay +release of P2P. We fixed a number of small late bugs, and concluded QA +& performance testing. Although it was discovered a regression in performance +of block production when P2P is enabled, relaying with P2P performs better +comparing to a non p2p. We concluded that this is not a blocker for the Single +Relay Release which is planned shortly.

    Peer sharing has gone through review and final review is +just being done right now. After merging it will still be disabled (hidden +behind a flag) as it's not safe without eclipse evasion. We started +implementing light peer sharing (i.e. include inbound peers into known peer set +of the outbound governor).

    We started a detailed eclipse evasion design, it will continue in the next +quarter.

    We also made a major revision of package structure of the network packages. We +ended up with a very clean dependency graph (pr #4155).

    Armando Santos delivered a talk at the ODOPIS 2022 conference on principles +of distributed systems in Brussels. The slides are available here.

    Neil Davies gave an invited seminar on DeltaQ at Université Catholique de +Louvain.

    We also found and fixed a few of bugs:

    • a bug in keep alive mini-protocol which resulted in warm to cold transitions +to be always executed through a timeout path rather than do a clean demotion +([pr #4168]).

    • fixed an assetion failure in the outbound governor (issue #4177)

    Next steps

    We will work towards the next release of P2P for block producer nodes. This includes:

    • analysing performance regression for BP nodes when using P2P
    • finish the work on controlling the block forger through node kernel (pr #3800)
    • address issue #3907 and write a script to analyse deployment of P2P relays

    We would like also to push forward eclipse evasion. Although most of the work +has be done already the release of io-sim on Hackage will happen in the +next quarter.

    We would also like to address chain-sync timeout issue recently +diagnosed by Karl Knutsson.

    If time permits we would also like to address some technical debt, especially:

    Risks

    The performance regression for block producer with P2P needs to be investigated +in the near future. This is blocker for the release of P2P on BP nodes.

    Detailed log

    Contributions to Ouroboros-Network

    • We added TraceDemoteLocalAsynchronous, which enables notification of critical issues for SPOs
    • We fixed cardano-ping compatibility with NodeToNodeV_10 (P2P, pr #4165)
    • We fixed a bug in demotion peers to cold which affected P2P nodes (commit-61058aa5c2)
    • Karl Knutsson enhanced SendFetchRequest (commit-bb1c3dddee), open-source contribution)
    • We turned SizeInBytes into a newtype.
    • We extended CONTRIBUTING.md, README.md, added CODE_OF_CONDUCT.
    • We fixed DNS test failure issue #4191
    • We fixed a simulation bug found in issue #4258
    • [pr #4168]
    • issue #4177

    Contributions to Cardano-Node

    • We maintained the Single Relay Release pr #4612, (e.g. fixing CI issues, +Rebasing it when necessary, publishing packages to Cardano Haskell Packages);
    • We enhanced JSON serialisation / deserialisation of NodeToNodeVersion and NodeToClientVersion;

    Contributions to IOSim

    • We started to use Cardano Haskell Packages for IOSim (pr #48)
    • We updated change log files
    • We added support of ghc-9.4 (pr #50)

    We also addressed the following issues in pr #57 in order to prepare the package for publication on Hackage:

    • refactored io-classes timers API (issue #46);
    • created a new package si-timers which exposes an interface using SI units +and is safe on 32-bit systems (issue #59);
    • added monad transformers instances for classes defined in io-classes (issue #58);
    • created io-classes-mtl package which includes (experimental) instances for monad transformers;
    • provide MonadMonotonicTimeNSec in io-classes and MonadMonotonicTime in si-timers (so that io-classes follow the base package);
    • added registerCancellableDelay in si-timers (which allowed us to hide fancy timer api and clean io-classes)
    • added support for js_HOST_ARCH (the new GHC JS backend)

    Note the pr #57 contains almost 40 commits, and was a major step forward for +io-sim ecosystem. We also prepared a draft pr #4281 which updates +ouroboros-network.

    Other changes for 1.0.0.0 release on Hackage:

    • Refactored test suite (pr #47)
    • Updated documentation, cabal files, CONTRIBUTING, SECURITY documents, etc in pr #60, currently under review.
    + + + + \ No newline at end of file diff --git a/quarterly/2023-01-13-open-source/index.html b/quarterly/2023-01-13-open-source/index.html new file mode 100644 index 00000000000..211bee923f2 --- /dev/null +++ b/quarterly/2023-01-13-open-source/index.html @@ -0,0 +1,53 @@ + + + + + +Open-Source Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Open-Source Update

    · 3 min read
    Marcin Szamotulski

    Open Source Quarterly Update

    2022-11 - 2023-01

    Summary

    In the last quarter the open-source initiative delivered a comprehensive report +on the state of our repositories. As part of this work stream we +identified the key open-source repositories for the cardano project across all +the projects From a list of more than 500 repositories (some of which are +forks) we identified key repositories which constitute the core of Cardano. +20 of them were identified as to be transferred to the future MBO which will +govern Cardano development. Some where excluded (like io-sim and +typed-protocols), to be govern by IOG, since they have a much broader +application than Cardano itself, and thus we think their open-source future +will be better outside of the Cardano umbrella.

    Christian Taylor identified a number of ways we can improve our repositories to +make them more attractive for open-source contributions by analysing each of +them. This includes adding or improving various documentation files, like +CONTRIBUTING files, adding code of conduct, improving readme files, issue +& pull request templates etc. Christian also computed various interesting +metrics which gives a very good insight into the development practices: e.g. +average merge ratio, average number of reviews, comments and many more! The +presentation is available here.

    We followed with work on the Cardano Engineering Handbook. We included +a standard code of conduct which is now used by most important projects in the +Cardano space. We included cardano-node's security policy and added +a responsible disclosure policy. We also described how roles and +responsibilities should be clarified. This progress was made by +a collaborative effort of the Cardano Core, Plutus and Architecture teams, and +it wouldn't be possible without Michael Peyton Jones, Arnaud Bailly, Kevin +Hammond, Jared Corduan and Marcin Szamotulski.

    We also improved the documentation of key repositories, by adding description, +improving their README file & CONTRIBUTING files, adding code of conducts +following the Cardano Engineering Handbook. This includes improvements to:

    And also

    The work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan.

    In this quarter we also identified a number of projects which can be published to +Hackage (Haskell's package repository) or crate (Rust package repository). +The list contains 21 packages, 2 of which (hedgehog-extras and +quickcheck-dynamic) are already published on Hackage and another 5 (from +the io-sim repository) are close to be published.

    Detailed log

    The progress of the open-source project is tracked in this project.

    + + + + \ No newline at end of file diff --git a/quarterly/2023-01-18-consensus/index.html b/quarterly/2023-01-18-consensus/index.html new file mode 100644 index 00000000000..0f51ebe7eaf --- /dev/null +++ b/quarterly/2023-01-18-consensus/index.html @@ -0,0 +1,59 @@ + + + + + +Consensus Quarterly Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Consensus Quarterly Update

    · 4 min read
    Damian Nadales

    Consensus Quarterly Update

    2022-12 - 2023-01

    Main achievements

    UTxO HD

    The prototype is feature complete and thoroughly tested at the consensus level. +In particular, we invested a lot of time in writing property-test for the +mempool, and other crucial new parts of the prototype. Now we are ready to run +integration tests and system-level benchmarks.

    Genesis

    We identified and fixed a slowdown in cross-era forecasting that was inhibiting +our efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7% +speedup in full sync times in the baseline.

    We also started prototyping a self-contained implementation of the Genesis +dynamics (in particular of the parts intentionally not part of the ChainSync +Jumping prototype) that furthered our understanding of subtleties and edge +cases.

    Support

    • We worked on designing integration of new VRF and KES crypto into consensus.
      • Crypto class was split into two parts: Crypto and HeaderCrypto.
      • With the Ledger team's help, we refactored cardano-ledger to use a proxy +type for VRF.

    Conway era

    • PR went through its second review round. It is about to be merged, but it got +delayed due to people's availability during Christmas break.

    Technical debt

    • We improved the capabilities of our io-sim library, which is key for testing +and simulating Cardano components.
    • We removed thunks from epoch translations in the ledger, which is important +for reducing memory consumption of the Cardano node.

    Fostering collaboration

    • We added a tutorial on how to instantiate the Consensus layer to run custom +ledgers. This should be a valuable resource to people looking to roll their +own custom blockchain (either for commercial or research purposes).
    • We added an overview of consensus to the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    Next steps

    UTxO HD

    • Evaluate the extensibility of the prototype. Moving the UTxO to disk is only +the first step towards reducing the memory requirements of Cardano node, and +ensuring its long term sustainability. In the future, we plan on moving other +large maps, such as delegation maps. The prototype should be able to +accommodate these changes without any major modifications.
    • Start the integration with other downstream components, such as the wallet and +db-sync. The idea is to identify and address any potential pain points that +might arise during this integration.
    • Run integration tests and system-level benchmarks.

    Genesis

    • Finish benchmarking and tuning the fast-path ChainSync Jumping prototype
    • Expand and optimize the self-contained implementation of the Disconnect Rule +(including density comparisons and the LoE)
    • Develop documentation and smoke tests for these components.
    • Start modifying the ChainSync Client for the LoP and LoR.

    Support

    • Help the Network team with diagnosing performance regression in block +production.

    Tech debt

    • Fix property-test failures concerning iterators (#3999 and +#4183).

    Fostering collaboration

    Risks

    UTxO HD

    • Moving other parts of the ledger state to disk might require a major redesign +of the prototype. For instance, if it turns out that the epoch change rules +require access to the full ledger state. If this is the case, we might +accept this risk and do the redesign after the initial release of UTxO-HD.
    • Integration with downstream clients might require more work than we +anticipate.
    • Access to the benchmarking's team time and resources.
    • Benchmarking results might show significant performance degradation, which +will require additional work if such performance degradation is not accepted +by other stakeholders.
    • The prototype's performance might not be accepted by other stakeholders. Here +we need to clearly communicate that this is necessary to ensure that as the +blockchain size grows, the node can operate within reasonable memory +constraints.
    + + + + \ No newline at end of file diff --git a/quarterly/2023-04-03-ledger/index.html b/quarterly/2023-04-03-ledger/index.html new file mode 100644 index 00000000000..8e7686b78c8 --- /dev/null +++ b/quarterly/2023-04-03-ledger/index.html @@ -0,0 +1,164 @@ + + + + + +Ledger Team Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Ledger Team Update

    · 7 min read
    Jared Corduan

    Ledger Quarterly Update

    2023-01 - 2023-03

    Main achievements

    CIPs

    • Entering the Voltaire phase - +CIP-1694 received a major update after participation in the design has expanded to +more and more people, including those who attended the Colorado workshop. +See CIP-1694.
    • Ledger CIP category - +The ledger team continues to embrace the CIP process, and has begun the process of +registering the ledger as an official CIP category. +See CIP-84.
    • Ledger serialization - +A CIP for the ledger serialization deprecation cycle has been accepted. +See CIP-80.

    Formal ledger model

    Our new formal specifications backed by Agda have seen a lot of progress. +The majority of the ideas in CIP-1694 are now present, and we have made enough progress +that we can now safely say that the PDF produced by the Agda model will be the +official ledger specification for the Conway ledger era. +See the repository.

    Conway ledger era

    Progress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model. +The major component still missing is the DRep stake distribution, which still presents some +technical challenges.

    [pull-3176] +[pull-3216] +[pull-3226] +[pull-3291] +[pull-3326] +[pull-3330] +[pull-3339]

    DRep stake distribution computation

    Adding another large stake distribution to the ledger state must proceed with caution. +We do not want the memory used by the node to increase too much, +and performance problems can lead to reduced block production. +We have prototyped, tested, and benchmarked several approaches that could give us +the current DRep stake distribution at each epoch boundary. +This has very important implications, since we want every ADA holder to be able to at any +time (such as during a contentious vote) register themselves as a DRep and still have time +to vote themselves on the issue.

    [pull-3344] +[pull-3353] +[pull-3364]

    Integration work

    The ledger has made some wonderful improvements over the past six months, +but which entail a significant amount of integration efforts:

    • Our new versioned CBOR schemes
    • Individual deposit tracking
    • An improved cross-era interface utilizing lenses
    • A new ledger API
    • Re-arranging the ledger stake in preparation for CIP-1694
    • Versioning our Haskell packages +using CHaPs.
    • Consistent conventions for variable names

    [pull-3279] +[pull-3282] +[pull-3288] +[pull-3289] +[pull-3292] +[pull-3297] +[pull-3298] +[pull-3299] +[pull-3300] +[pull-3302] +[pull-3303] +[pull-3308] +[pull-3342] +[pull-3345] +[pull-3356] +[pull-3357] +[pull-3360] +[pull-3361] +[pull-3363] +[pull-4349] +[pull-378] +[pull-376] +[pull-373] +[pull-370] +[pull-361] +[pull-4976] +[pull-5013]

    Deposit tracking

    Individual deposits (for stake credential and stake pool registrations) were not tracked by the ledger. +Deposits were returned according to the current protocol parameters. +When the values of these two protocol parameters change, the deposit pot +is adjusted by adding to, or removing from, the reserves.

    This has several problems:

    • Most people expect a deposit to be paid back exactly.
    • We cannot increase the deposit amount once the reserves hits zero.
    • If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials.
    • Because of the problems above, it is going to be incredibly hard to ever change the values.
    • There is a serious issue involving hard forks. +The consensus layer makes the decision about whether or not to enact a hard fork based on +the protocol parameter update state two stability windows before the end of the epoch. +However, the ledger will reject a protocol parameter update on the epoch boundary +if the deposit pot adjustments cannot be reconciled with the reseve pot. +This means that if quorum is met regarding changing the major protocol version, +but the update is rejected on the epoch boundary, consensus will change the era but the +ledger will not change the major protocol version, leaving the ledger in a split-brain state.

    Because we never actually changed the values of the two deposits amounts in the protocol parameters +on mainnet, we were able to retroactively change the behavior. +We made the following changes:

    • Individual deposits are tracked in the DState.
    • The amount deposited is always returned.

    [pull-3195] +[pull-3202] +[pull-3217]

    New ledger API

    We have significantly built up the ledger API. +We will eventually replace much of the cardano-api in the node repository with this ledger API.

    [pull-3242] +[pull-3248] +[pull-3328]

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We have a new declaritive infrastructure for building constraint-based generators, +which instead generate a random ledger state representative of not just an initial state, +but also those representative of the end result of a long sequence of valid blocks. +Moreover, these generators are very fast and are much more random than our old generators. +Before we can start using them for our existing property tests, however, we still need to +expand them to generate a valid block for a given ledger state.

    [pull-3219]

    Technical debt

    We continued to address technical debt as much as we can.

    [pull-3167] +[pull-3170] +[pull-3172] +[pull-3175] +[pull-3184] +[pull-3205] +[pull-3208] +[pull-3210] +[pull-3212] +[pull-3218] +[pull-3222] +[pull-3223] +[pull-3224] +[pull-3225] +[pull-3229] +[pull-3239] +[pull-3241] +[pull-3244] +[pull-3245] +[pull-3249] +[pull-3260] +[pull-3263] +[pull-3264] +[pull-3268] +[pull-3269] +[pull-3270] +[pull-3274] +[pull-3276] +[pull-3277] +[pull-3286] +[pull-3290] +[pull-3295] +[pull-3296] +[pull-3306] +[pull-3307] +[pull-3310] +[pull-3311] +[pull-3316] +[pull-3320] +[pull-3323] +[pull-3327] +[pull-3331] +[pull-3332] +[pull-3333] +[pull-3338] +[pull-3341] +[pull-3347] +[pull-3350] +[pull-3351] +[pull-3352] +[pull-3354]

    Critical fixes

    We fixed two critical issues:

    • Growing block production delay on the epoch boundary: [pull-3209]
    • Unexpected node shutdown from balanceR: [pull-3343]

    Next steps

    • Conway spec - +Complete the first version of the conway formal specification.
    • DRep stake distribution - +Have the ledger compute the DRep stake distribution with acceptible performance.
    • Devnet ready - +Have the Haskell implementation of the conway era in sync with the formal specification, +and integrate the changes with consensus and node. +All the details might not be finalized, but the wire specification and the API should +be stable so that conway can be placed on a devnet for tool builders to start integrating with.
    • Plutus V3 - +Integrate Plutus V3 into the ledger, including a new script context which supports DReps.

    More details

    This quarterly report was based off of the following fortnightly ones:

    + + + + \ No newline at end of file diff --git a/quarterly/2023-04-04-network/index.html b/quarterly/2023-04-04-network/index.html new file mode 100644 index 00000000000..cf78e91cdcb --- /dev/null +++ b/quarterly/2023-04-04-network/index.html @@ -0,0 +1,38 @@ + + + + + +Network Q1 2023 Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Network Q1 2023 Update

    · 3 min read
    Marcin Szamotulski

    2023-01 - 2023-03

    Main achievements

    Gradual dynamic P2P release on mainnet

    We released two version of cardano-node with dynamic P2P capabilities:

    • 1.35.6
      • we found and fixed a bug in exception handling in peer-state-actionspull-4357
      • we found and fixed a busy loop when demoting a peer from hot to warm pull-4385
    • 1.35.7
      • includes interoperability in the legacy non-p2p network stack pull-4467
    • we fixed a busy loop of demotion & promotions: warm -> hot -> warm[pull-4485] /it will be included in cardano-node-8.0.0 release/.

    Currently there are more than 200 P2P relays on mainnet.

    Peer Sharing

    We implemented /peer sharing/ pull-4019 which will be available as an +experimental feature in one of the future cardano-node releases.

    We implemented /light peer sharing/, e.g. adding inbound connections to the set +of known peers of the outbound governor, which allows to bootstrap relays not +registered on chain. This complements peer sharing. The pull-4277 is in +late review stages.

    Eclipse Evasion

    We finalised design of eclipse evasion and we started implementing it. We +have an initial implementation (not merged). We are in the process of extending +our test suite to cover new implementation details: issue-3886, pull-4462.

    Cardano Network Service Assurance

    Galois has been making progress on Cardano Network Service Assurance project.

    • In cardano-node, they have developed a datapoint abstraction that creates +a queue of (existing) log events, they now have two such datapoints (of log +events) implemented.

    • They have developed a datapoint client executable that can connect to a node +which serves the "new tracing".

    • They have been exploring approaches for the consolidation and analysis of +datapoint data to extract actionable network health status.

    Cardano-Node

    • We made it possible to configure accepted connections limit pull-4902.

    Testing improvements

    • We fixed a bug in network simulation implementation of TCP simultaneous open pull-4265.

    • We introduced header-body split in the diffusion simulation pull-4419 (in review).

    • We introduced initiator only nodes in the diffusion simulation pull-4280.

    • We fixed a connection-manager test failure issue-4370.

    Technical Debt

    • We refactored Snocket interface decoupling it from the multiplexer +pull-4260. This simplified some aspects of the KES agent implementation.

    • We introduces a record for CBOR codecs which are used for various data +structures by mini-protocol codecs pull-4430.

    Documentation

    • We explained some limitations of CDDL in our technical report pull-4351.

    IO-Sim

    • We fixed implementation of MVar's pull-70.

    NoThunks

    • We published a new version of nothunks library to Hackage.

    Next steps

    • Finish implementation & testing of eclipse evasion issue-3886.
    • Optimise connectivity to peers behind firewall issue-4381.
    • Finish the work on enabling block production dynamically to allow using P2P +on block producers issue-3159.
    • If time permits we would like also to reserve some time for finishing +publication of io-sim to Hackage.
    + + + + \ No newline at end of file diff --git a/quarterly/2023-04-25-consensus/index.html b/quarterly/2023-04-25-consensus/index.html new file mode 100644 index 00000000000..041014faa85 --- /dev/null +++ b/quarterly/2023-04-25-consensus/index.html @@ -0,0 +1,43 @@ + + + + + +Consensus Quarterly Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Consensus Quarterly Update

    · 3 min read
    Damian Nadales

    Consensus Quarterly Update

    2023-01 - 2023-03

    Main achievements

    UTxO HD

    • We finished the testing activities for the prototype, which involved adding +new tests, and fixing and enabling temporarily disabled tests.
    • We spent a substantial amount of effort refactoring and cleaning the +prototype.
    • We audited the UTxO HD prototype to make sure it can accommodate the migration +of other tables (eg stake-keys registration) from memory to disk. The result +of the audit was positive.
    • We ran ad-hoc benchmarks for reading keys and flushing values to disk. No +unexpected costs found.
    • We ran the first system level benchmarks. The performance regressions reported +were due to an unrealistic snapshotting rate. We need to re-run them again +after we design a more fine grained locking mechanism.

    Genesis

    • We elaborated a roadmap of the remaining work for Genesis.
    • We presented the design to the IOG Researchers and PNSol on February 20. The +design was well received. We updated the Genesis design with the researcher's +feedback.
      • We plugged the new DoS vector identified during the aforementioned +presentation.
    • We developed a generator for adversarial leader schedules that satisfy key +Ouroboros properties, which will be used to test the Genesis design.
      • The generator enables use of smaller Ouroboros parameters, which makes +extrema more likely and counterxamples easier interpret.
    • We wrote up the latest design iteration.
    • We continued benchmarking the Chain Sync Jumping prototype. In particular:
      • We debugged the prototype's performance regression, and unmasked the +actual cause by patching our initial theory (bad queuing behavior)
      • We identified and validated the actual cause (a pathological case in +BlockFetch tiebreaker).

    Support

    • We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother +to serve a local immutable DB.

    Conway era

    • We integrated the Conway era into consensus.

    Technical debt

    • We fixed a bug with followers, which was discovered by property tests.
    • We developed a DSL for specifying and running ChainDB test cases.
    • We fixed failing tests with iterators.
    • We created micro-benchmarks for adding transactions to the mempool.

    Fostering collaboration

    • We released a new technical documentation site for consensus.
    • We factored out several packages to external repositories. Some of this work +originated in the UTxO HD workstream.

    Next steps

    UTxO HD

    Genesis

    Support

    • Design Consensus side of hardfork-enactment in the Voltaire phase +(#4180).
    • Estimate the number of file descriptors Consensus needs +#20.

    Tech debt

    • Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define +for consensus. Pick one and implement benchmarks for it.

    Fostering collaboration

    • Onboard a new team member.
    + + + + \ No newline at end of file diff --git a/quarterly/2023-Q2-consensus/index.html b/quarterly/2023-Q2-consensus/index.html new file mode 100644 index 00000000000..2b1f7070c47 --- /dev/null +++ b/quarterly/2023-Q2-consensus/index.html @@ -0,0 +1,32 @@ + + + + + +Consensus Q2 2023 Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Consensus Q2 2023 Update

    · 5 min read
    Damian Nadales

    2023-04 -- 2023-06

    Main achievements

    UTxO HD

    • We finished a major prototype refactoring, which includes:
      • A better and finer grained DB lock mechanism.
      • Elimination of race conditions.
      • Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance.
      • Architectural simplifications and performance improvements.
    • We implemented a new package to support db-sync integration with UTxO-HD.
    • We ran another set of ad-hoc benchmarks:
      • We uncovered a performance regression on the Network component when using GHC-9.2/9.4.
      • The synchronization and replay speed are as expected.
      • However, we uncovered memory consumption issues (see figure below).
        • The in-memory backend is consuming more memory than the baseline.
        • The LMDB backend shows an unexpected memory usage peak.
        • Investigation on these issues is ongoing.
    • We integrated the latest changes in main branch.
      • This required a re-design of the mempool to include the mempool fairness +improvement.

    Genesis

    • The Genesis work for this PI focused on an high-priority issue from the IOG Researchers' feedback on the proposal.
      • This particular question was not anticipated when the Q2 PI was planned.
      • As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized.
      • That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package.
    • The IOG Researchers' feedback on the design was very valuable. It had two primary effects.
    • Outcome 1: We re-introduced distinct behaviors when the node is "syncing" versus when it is "caught up".
      • This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated.
      • The additional design complexity is relatively small.
    • Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.
      • The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era.
      • All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras.
      • Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later.
      • The primary invention was a model for bounding how much benefit the adversary's long-range attack could possibly gain from Praos's natural short forks.
    • Relevant questions that the IOG Researchers are still assessing.
      • These do not block the Genesis implementation, but do affect the ultimate values of specific parameters.
      • Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?
      • Question 2: what is the upper bound on how much grinding can improve the adversary's leader schedule within some Genesis window?

    Support

    • We performed an analysis on number of file descriptors used by Consensus, this +information can be used by the node operators to check if the number of file +descriptors they want to support are enough, thus improving the user (eg node +operator) experience.
    • We implemented a mempool fairness improvement, by which transactions are +guaranteed to be processed irrespective of their size.

    Technical debt

    • We fixed a bug in followers logic, which was discovered by our QuickCheck +property tests.
    • We created an immutable DB +server. This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results.
    • We created a db-truncater tool, which can be used in disaster recovery and benchmarking scenarios.
    • We created a benchmarks comparison tool that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance improvements introduced by the Ledger team in version 0.6.0.0 of Consensus wrt version 0.5.0.0.

    Fostering collaboration

    • We released fs-sim as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project.
    • We migrated the consensus code to a new repository, splitting +it from the ouroboros-network repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases).
    • We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users).
    • We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.

    Next steps

    UTxO HD

    Genesis

    • We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work.
    + + + + \ No newline at end of file diff --git a/quarterly/2023-Q2-network/index.html b/quarterly/2023-Q2-network/index.html new file mode 100644 index 00000000000..b2153c5d957 --- /dev/null +++ b/quarterly/2023-Q2-network/index.html @@ -0,0 +1,77 @@ + + + + + +Network Q2 2023 Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Network Q2 2023 Update

    · 6 min read
    Marcin Szamotulski

    2023-04 - 2023-06

    Main achievements

    Eclipse Evasion

    We finalised the design of eclipse evasion and implemented its mechanism which +relays on connectivity to big ledger peers. Big ledger peers are the +largest ledger peers which accumulate 90% of stake (currently there are less +than 1000 of them). The outbound governor has new targets for known, +established and active big ledger peers which work in a similar way that +such targets work for ledger peers. The ouroboros-network#4662 PR is +currently in review.

    As part of this work we also identified a bug which would prevent a node to +connect to itself. Such connections are not easily detectable and are expected +to be dropped by the churn mechanism, nonetheless they should not be buggy. +The failure was discovered thanks to our e2e simulation of diffusion using +io-sim & property based testing.

    The PR also refactors the heart of the ouroboros-network interface reducing +technical debt that would otherwise accumulate.

    We also identified a possible improvement in the churn mechanism, which will be +implemented in Q3. Churn needs to await for peers to terminate, we can +improve the synchronisation. [ouroboros-network#4617]

    Ecosystem P2P Deployment Progress

    We reached 50% of stake in hands of SPOs who run at least on P2P relay. Now +also Emurgo and CF are running some P2P relays. Also 20% of IOG relays are +running in P2P mode.

    P2P Progress

    Peer Sharing

    We implemented bootstrapping for peer sharing (also known as light peer +sharing). New downstream (inbound) peers are now added to the known peers of +the outbound governor. Together with peer sharing this allows for non +registered relays to propagate through the network. ouroboros-network#3596

    Please note that peer sharing is disabled by default and is not considered safe +until Bootstrap Peers (see below) or Genesis is implemented.

    Diffusion (P2P)

    • We designed a feature which will reduce the load on IOG relays (in future +also run by CF & Emurgo). The feature consists of two parts. A new source +of peers called bootstrap peers (obtained from via an https request), the +ability to switch from bootstrap peers to ledger peers if the node is synced +(we are collaborating with the consensus team on the interface Bootstrap +Peers IER). This feature will be completed in Q3. +ouroboros-network#4530

    • We published a blog post about P2P design & implementation.

    • Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections: +ouroboros-network#4559.

    • We merged changes which allow the consensus layer to start / stop block +forging thread. This will allow to deploy P2P block producing nodes which +serve as a live backup node. ouroboros-consensus#140

    • We fixed a few bugs in local root peers DNS resolution service: +ouroboros-network#4583, ouroboros-network#4571.

    • We limited concurrency of DNS name resolutions: ouroboros-network#4596.

    • Galois Inc implemented query option for Handshake: ouroboros-network#4256.

    • We fixed handshake query timeout: ouroboros-network#4608.

    • We implemented warm valency for local root peers. This can help when using +DNS names in local root peers which resolve to many IP addresses. ouroboros-network#4575

    • We merged handshake changes which allow query protocol versions. Thanks to +James Parker from Galois Inc.: ouroboros-network#4256, cardano-cli#30.

    Other Improvements & Developments

    CDDL

    • We added node-to-node and node-to-client CDDL specs / tests for encoding +of NodeToNodeVersionData and NodeToClientVersionData.

    • We clarified an inconsistency between CDDL spec and implementation which is +highly polymorphic. We designed and implemented a fix for tx-submission +and local-tx-submission mini-protocols. Specs for other mini-protocols will +be improved at a later stage. ouroboros-network#4580

    Cardano Ping

    IOSim

    Typed Protocols

    Cardano Client

    • We fixed a bug in cardano-client-0.1.0.2 release which results in clients +(e.g. db-sync) negotiate an experimental protocol version.

    Technical debt

    CI improvements

    GHC 9.4 & 9.6

    We made all repositories under our control compile with ghc-9.4 and ghc-9.6 +which includes ouroboros-network, io-sim, typed-protocols and +Win32-network.

    Next steps

    We will continue towards our aspirational roadmap.

    • We will continue reviewing eclipse evasion.
    • As ouroboros-consensus#140 was merged, we are making progress towards +releasing P2P on block production nodes. We hope to analyse performance +regression on such nodes observed on the benchmarking cluster. roadmap-3887
    • We are also focused on roadmap-3969. Note that it was expanded in Q2.
    + + + + \ No newline at end of file diff --git a/quarterly/2023-Q2-sre/index.html b/quarterly/2023-Q2-sre/index.html new file mode 100644 index 00000000000..7089b89d77d --- /dev/null +++ b/quarterly/2023-Q2-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Q2 2023 Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    SRE Q2 2023 Update

    · One min read
    John Lotoski

    2023-04 - 2023-06

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Expanding the darwin CI cluster and adding aarch64 builder support
    • Adding bare metal capability to bitte clusters
    • Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality
    • Creation of pool performance analysis queries and scripting
    • Migration of testnet metadata server to cardano-world
    • Cardano shelley qa migration to cardano-world
    • Cardano sanchonet environment spin up to test Conway era functionality
    • Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature

    Next steps

    • Continue with the conversion of mainnet to using p2p topology
    + + + + \ No newline at end of file diff --git a/quarterly/2023-Q3-performance-and-tracing/index.html b/quarterly/2023-Q3-performance-and-tracing/index.html new file mode 100644 index 00000000000..1231a99bfa7 --- /dev/null +++ b/quarterly/2023-Q3-performance-and-tracing/index.html @@ -0,0 +1,34 @@ + + + + + +Performance & Tracing Q3 2023 Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    Performance & Tracing Q3 2023 Update

    · 4 min read
    Michael Karg

    2023-07 - 2023-09

    Main achievements

    • Release benchmarking
    • Developing and running UTxO-HD benchmarks - in-memory flavour
    • P2P benchmarks, facilitating rollout
    • Production-readiness of the new Nomad cluster has been reached
    • Optimization of and introspection capability for the new tracing system
    • GHC9 performance investigation (and possible remedy)
    • Conensus QTAs: first real-world application of prototype

    Release benchmarking

    Ongoing release benchmarking is a crucial safeguard to cardano-node's release cycle from a performance perspective. We've performed and analyzed benchmarks for node versions 8.2.x to 8.5 throughout Q3.

    UTxO-HD benchmarks

    Targeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery.

    P2P benchmarks

    In Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature.

    New nomad cluster

    The new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received +various rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest +of our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it +ready for production use.

    New tracing system

    Our new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that +it is roughly on par with the legacy system while offering a richer feature set and greater flexibility.

    Additionally, in Q3 we equipped the system with an introspection capability. This is now used for generating +end user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system.

    GHC9 performance

    In Q3, a joint investigation with DevX into GHC9's behaviour revealed where and how GHC9 misses opportunities for +optimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable +those optimizations - which is still being validated.

    Consensus QTAs

    In collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations' +performance characteristics. It's now applicable, and being applied, to a real-world task - namely +gathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds.

    Next steps

    Benchmarking:

    In Q4, the focus will be on:

    • facilitating the next mainnet release
    • benchmarking runs in the Conway era
    • developing benchmarks / workloads for Conway-exclusive actions
    • implementing a specialized benchmark setup for the UTxO-HD on-disk variant
    • developing new Plutus benchmarks to safeguard Plutus V3
    • benchmarks regarding the rollout of P2P

    Performance

    For certain blocking performance issues we've located the cause, or even found a solution in a cross-team effort. In Q4 we'll advance that work to ensure the ongoing +release cycle for mainnet, as well as make GHC9 become a viable release platform.

    New tracing system

    For the new tracing system, we'll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support.

    UTxO-HD monitoring

    We'll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way.

    Nomad backend

    From Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad.

    Workbench

    We will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with cardano-node.

    Consensus component QTAs (co-development)

    In Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation.

    + + + + \ No newline at end of file diff --git a/quarterly/2023-Q3-sre/index.html b/quarterly/2023-Q3-sre/index.html new file mode 100644 index 00000000000..063d675fa60 --- /dev/null +++ b/quarterly/2023-Q3-sre/index.html @@ -0,0 +1,24 @@ + + + + + +SRE Q3 2023 Update | Cardano Development Updates + + + + + + + + + + + + +
    +

    SRE Q3 2023 Update

    · One min read
    John Lotoski

    2023-07 - 2023-09

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Completion of mainnet relay networking conversion to p2p topology
    • Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality
    • Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines
    • Creation of a nix content addressed packages repository, capkgs:
      • To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells
    • Creation of a cardano performance benchmarking cluster, cardano-perf:
      • To replace legacy cluster benchmark tooling
    • Creation of a cardano cluster composition repository, cardano-parts:
      • For enabling multi-cluster, multi-role cardano network deployments
    • Creation of a cardano testnets repository, cardano-playground:
      • Utilizing cardano-parts for testnet deployments
    • Creation of a sanchonet demo repository, sanchonet-demo:
      • Utilizing cardano-parts for fast sanchonet test environment and demo purposes

    Next steps

    • Continue with migration of cardano-world testnets to cardano-playground
    • Proceed with spinup of mainnet p2p bootstrap cluster
    • Scale down mainnet non-p2p legacy cluster at the appropriate time
    + + + + \ No newline at end of file diff --git a/quarterly/archive/index.html b/quarterly/archive/index.html new file mode 100644 index 00000000000..3f7e8b7d202 --- /dev/null +++ b/quarterly/archive/index.html @@ -0,0 +1,24 @@ + + + + + +Archive | Cardano Development Updates + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/quarterly/atom.xml b/quarterly/atom.xml new file mode 100644 index 00000000000..30b85a2694e --- /dev/null +++ b/quarterly/atom.xml @@ -0,0 +1,620 @@ + + + https://input-output-hk.github.io/cardano-updates/quarterly + Cardano Development Updates Blog + 2023-12-07T21:19:58.000Z + https://github.com/jpmonette/feed + + Cardano Development Updates Blog + https://input-output-hk.github.io/cardano-updates/img/favicon.ico + + <![CDATA[Consensus Q2 2023 Update]]> + 2023-Q2-consensus + + 2023-12-07T21:19:58.000Z + + 2023-04 -- 2023-06

    Main achievements

    UTxO HD

    • We finished a major prototype refactoring, which includes:
      • A better and finer grained DB lock mechanism.
      • Elimination of race conditions.
      • Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance.
      • Architectural simplifications and performance improvements.
    • We implemented a new package to support db-sync integration with UTxO-HD.
    • We ran another set of ad-hoc benchmarks:
      • We uncovered a performance regression on the Network component when using GHC-9.2/9.4.
      • The synchronization and replay speed are as expected.
      • However, we uncovered memory consumption issues (see figure below).
        • The in-memory backend is consuming more memory than the baseline.
        • The LMDB backend shows an unexpected memory usage peak.
        • Investigation on these issues is ongoing.
    • We integrated the latest changes in main branch.
      • This required a re-design of the mempool to include the mempool fairness +improvement.

    Genesis

    • The Genesis work for this PI focused on an high-priority issue from the IOG Researchers' feedback on the proposal.
      • This particular question was not anticipated when the Q2 PI was planned.
      • As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized.
      • That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package.
    • The IOG Researchers' feedback on the design was very valuable. It had two primary effects.
    • Outcome 1: We re-introduced distinct behaviors when the node is "syncing" versus when it is "caught up".
      • This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated.
      • The additional design complexity is relatively small.
    • Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.
      • The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era.
      • All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras.
      • Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later.
      • The primary invention was a model for bounding how much benefit the adversary's long-range attack could possibly gain from Praos's natural short forks.
    • Relevant questions that the IOG Researchers are still assessing.
      • These do not block the Genesis implementation, but do affect the ultimate values of specific parameters.
      • Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?
      • Question 2: what is the upper bound on how much grinding can improve the adversary's leader schedule within some Genesis window?

    Support

    • We performed an analysis on number of file descriptors used by Consensus, this +information can be used by the node operators to check if the number of file +descriptors they want to support are enough, thus improving the user (eg node +operator) experience.
    • We implemented a mempool fairness improvement, by which transactions are +guaranteed to be processed irrespective of their size.

    Technical debt

    • We fixed a bug in followers logic, which was discovered by our QuickCheck +property tests.
    • We created an immutable DB +server. This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results.
    • We created a db-truncater tool, which can be used in disaster recovery and benchmarking scenarios.
    • We created a benchmarks comparison tool that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance improvements introduced by the Ledger team in version 0.6.0.0 of Consensus wrt version 0.5.0.0.

    Fostering collaboration

    • We released fs-sim as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project.
    • We migrated the consensus code to a new repository, splitting +it from the ouroboros-network repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases).
    • We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users).
    • We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.

    Next steps

    UTxO HD

    Genesis

    • We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work.
    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Network Q2 2023 Update]]> + 2023-Q2-network + + 2023-12-07T21:19:58.000Z + + 2023-04 - 2023-06

    Main achievements

    Eclipse Evasion

    We finalised the design of eclipse evasion and implemented its mechanism which +relays on connectivity to big ledger peers. Big ledger peers are the +largest ledger peers which accumulate 90% of stake (currently there are less +than 1000 of them). The outbound governor has new targets for known, +established and active big ledger peers which work in a similar way that +such targets work for ledger peers. The ouroboros-network#4662 PR is +currently in review.

    As part of this work we also identified a bug which would prevent a node to +connect to itself. Such connections are not easily detectable and are expected +to be dropped by the churn mechanism, nonetheless they should not be buggy. +The failure was discovered thanks to our e2e simulation of diffusion using +io-sim & property based testing.

    The PR also refactors the heart of the ouroboros-network interface reducing +technical debt that would otherwise accumulate.

    We also identified a possible improvement in the churn mechanism, which will be +implemented in Q3. Churn needs to await for peers to terminate, we can +improve the synchronisation. [ouroboros-network#4617]

    Ecosystem P2P Deployment Progress

    We reached 50% of stake in hands of SPOs who run at least on P2P relay. Now +also Emurgo and CF are running some P2P relays. Also 20% of IOG relays are +running in P2P mode.

    P2P Progress

    Peer Sharing

    We implemented bootstrapping for peer sharing (also known as light peer +sharing). New downstream (inbound) peers are now added to the known peers of +the outbound governor. Together with peer sharing this allows for non +registered relays to propagate through the network. ouroboros-network#3596

    Please note that peer sharing is disabled by default and is not considered safe +until Bootstrap Peers (see below) or Genesis is implemented.

    Diffusion (P2P)

    • We designed a feature which will reduce the load on IOG relays (in future +also run by CF & Emurgo). The feature consists of two parts. A new source +of peers called bootstrap peers (obtained from via an https request), the +ability to switch from bootstrap peers to ledger peers if the node is synced +(we are collaborating with the consensus team on the interface Bootstrap +Peers IER). This feature will be completed in Q3. +ouroboros-network#4530

    • We published a blog post about P2P design & implementation.

    • Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections: +ouroboros-network#4559.

    • We merged changes which allow the consensus layer to start / stop block +forging thread. This will allow to deploy P2P block producing nodes which +serve as a live backup node. ouroboros-consensus#140

    • We fixed a few bugs in local root peers DNS resolution service: +ouroboros-network#4583, ouroboros-network#4571.

    • We limited concurrency of DNS name resolutions: ouroboros-network#4596.

    • Galois Inc implemented query option for Handshake: ouroboros-network#4256.

    • We fixed handshake query timeout: ouroboros-network#4608.

    • We implemented warm valency for local root peers. This can help when using +DNS names in local root peers which resolve to many IP addresses. ouroboros-network#4575

    • We merged handshake changes which allow query protocol versions. Thanks to +James Parker from Galois Inc.: ouroboros-network#4256, cardano-cli#30.

    Other Improvements & Developments

    CDDL

    • We added node-to-node and node-to-client CDDL specs / tests for encoding +of NodeToNodeVersionData and NodeToClientVersionData.

    • We clarified an inconsistency between CDDL spec and implementation which is +highly polymorphic. We designed and implemented a fix for tx-submission +and local-tx-submission mini-protocols. Specs for other mini-protocols will +be improved at a later stage. ouroboros-network#4580

    Cardano Ping

    IOSim

    Typed Protocols

    Cardano Client

    • We fixed a bug in cardano-client-0.1.0.2 release which results in clients +(e.g. db-sync) negotiate an experimental protocol version.

    Technical debt

    CI improvements

    GHC 9.4 & 9.6

    We made all repositories under our control compile with ghc-9.4 and ghc-9.6 +which includes ouroboros-network, io-sim, typed-protocols and +Win32-network.

    Next steps

    We will continue towards our aspirational roadmap.

    • We will continue reviewing eclipse evasion.
    • As ouroboros-consensus#140 was merged, we are making progress towards +releasing P2P on block production nodes. We hope to analyse performance +regression on such nodes observed on the benchmarking cluster. roadmap-3887
    • We are also focused on roadmap-3969. Note that it was expanded in Q2.
    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[SRE Q2 2023 Update]]> + 2023-Q2-sre + + 2023-12-07T21:19:58.000Z + + 2023-04 - 2023-06

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Expanding the darwin CI cluster and adding aarch64 builder support
    • Adding bare metal capability to bitte clusters
    • Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality
    • Creation of pool performance analysis queries and scripting
    • Migration of testnet metadata server to cardano-world
    • Cardano shelley qa migration to cardano-world
    • Cardano sanchonet environment spin up to test Conway era functionality
    • Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature

    Next steps

    • Continue with the conversion of mainnet to using p2p topology
    ]]>
    + + John Lotoski + https://github.com/johnalotoski + + +
    + + <![CDATA[Performance & Tracing Q3 2023 Update]]> + 2023-Q3-performance-and-tracing + + 2023-12-07T21:19:58.000Z + + 2023-07 - 2023-09

    Main achievements

    • Release benchmarking
    • Developing and running UTxO-HD benchmarks - in-memory flavour
    • P2P benchmarks, facilitating rollout
    • Production-readiness of the new Nomad cluster has been reached
    • Optimization of and introspection capability for the new tracing system
    • GHC9 performance investigation (and possible remedy)
    • Conensus QTAs: first real-world application of prototype

    Release benchmarking

    Ongoing release benchmarking is a crucial safeguard to cardano-node's release cycle from a performance perspective. We've performed and analyzed benchmarks for node versions 8.2.x to 8.5 throughout Q3.

    UTxO-HD benchmarks

    Targeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery.

    P2P benchmarks

    In Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature.

    New nomad cluster

    The new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received +various rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest +of our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it +ready for production use.

    New tracing system

    Our new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that +it is roughly on par with the legacy system while offering a richer feature set and greater flexibility.

    Additionally, in Q3 we equipped the system with an introspection capability. This is now used for generating +end user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system.

    GHC9 performance

    In Q3, a joint investigation with DevX into GHC9's behaviour revealed where and how GHC9 misses opportunities for +optimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable +those optimizations - which is still being validated.

    Consensus QTAs

    In collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations' +performance characteristics. It's now applicable, and being applied, to a real-world task - namely +gathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds.

    Next steps

    Benchmarking:

    In Q4, the focus will be on:

    • facilitating the next mainnet release
    • benchmarking runs in the Conway era
    • developing benchmarks / workloads for Conway-exclusive actions
    • implementing a specialized benchmark setup for the UTxO-HD on-disk variant
    • developing new Plutus benchmarks to safeguard Plutus V3
    • benchmarks regarding the rollout of P2P

    Performance

    For certain blocking performance issues we've located the cause, or even found a solution in a cross-team effort. In Q4 we'll advance that work to ensure the ongoing +release cycle for mainnet, as well as make GHC9 become a viable release platform.

    New tracing system

    For the new tracing system, we'll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support.

    UTxO-HD monitoring

    We'll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way.

    Nomad backend

    From Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad.

    Workbench

    We will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with cardano-node.

    Consensus component QTAs (co-development)

    In Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation.

    ]]>
    + + Michael Karg + https://github.com/mgmeier + + +
    + + <![CDATA[SRE Q3 2023 Update]]> + 2023-Q3-sre + + 2023-12-07T21:19:58.000Z + + 2023-07 - 2023-09

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Completion of mainnet relay networking conversion to p2p topology
    • Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality
    • Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines
    • Creation of a nix content addressed packages repository, capkgs:
      • To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells
    • Creation of a cardano performance benchmarking cluster, cardano-perf:
      • To replace legacy cluster benchmark tooling
    • Creation of a cardano cluster composition repository, cardano-parts:
      • For enabling multi-cluster, multi-role cardano network deployments
    • Creation of a cardano testnets repository, cardano-playground:
      • Utilizing cardano-parts for testnet deployments
    • Creation of a sanchonet demo repository, sanchonet-demo:
      • Utilizing cardano-parts for fast sanchonet test environment and demo purposes

    Next steps

    • Continue with migration of cardano-world testnets to cardano-playground
    • Proceed with spinup of mainnet p2p bootstrap cluster
    • Scale down mainnet non-p2p legacy cluster at the appropriate time
    ]]>
    + + John Lotoski + https://github.com/johnalotoski + + +
    + + <![CDATA[Consensus Quarterly Update]]> + 2023-04-25-consensus + + 2023-04-25T00:00:00.000Z + + Consensus Quarterly Update

    2023-01 - 2023-03

    Main achievements

    UTxO HD

    • We finished the testing activities for the prototype, which involved adding +new tests, and fixing and enabling temporarily disabled tests.
    • We spent a substantial amount of effort refactoring and cleaning the +prototype.
    • We audited the UTxO HD prototype to make sure it can accommodate the migration +of other tables (eg stake-keys registration) from memory to disk. The result +of the audit was positive.
    • We ran ad-hoc benchmarks for reading keys and flushing values to disk. No +unexpected costs found.
    • We ran the first system level benchmarks. The performance regressions reported +were due to an unrealistic snapshotting rate. We need to re-run them again +after we design a more fine grained locking mechanism.

    Genesis

    • We elaborated a roadmap of the remaining work for Genesis.
    • We presented the design to the IOG Researchers and PNSol on February 20. The +design was well received. We updated the Genesis design with the researcher's +feedback.
      • We plugged the new DoS vector identified during the aforementioned +presentation.
    • We developed a generator for adversarial leader schedules that satisfy key +Ouroboros properties, which will be used to test the Genesis design.
      • The generator enables use of smaller Ouroboros parameters, which makes +extrema more likely and counterxamples easier interpret.
    • We wrote up the latest design iteration.
    • We continued benchmarking the Chain Sync Jumping prototype. In particular:
      • We debugged the prototype's performance regression, and unmasked the +actual cause by patching our initial theory (bad queuing behavior)
      • We identified and validated the actual cause (a pathological case in +BlockFetch tiebreaker).

    Support

    • We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother +to serve a local immutable DB.

    Conway era

    • We integrated the Conway era into consensus.

    Technical debt

    • We fixed a bug with followers, which was discovered by property tests.
    • We developed a DSL for specifying and running ChainDB test cases.
    • We fixed failing tests with iterators.
    • We created micro-benchmarks for adding transactions to the mempool.

    Fostering collaboration

    • We released a new technical documentation site for consensus.
    • We factored out several packages to external repositories. Some of this work +originated in the UTxO HD workstream.

    Next steps

    UTxO HD

    Genesis

    Support

    • Design Consensus side of hardfork-enactment in the Voltaire phase +(#4180).
    • Estimate the number of file descriptors Consensus needs +#20.

    Tech debt

    • Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define +for consensus. Pick one and implement benchmarks for it.

    Fostering collaboration

    • Onboard a new team member.
    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Network Q1 2023 Update]]> + 2023-04-04-network + + 2023-04-04T00:00:00.000Z + + 2023-01 - 2023-03

    Main achievements

    Gradual dynamic P2P release on mainnet

    We released two version of cardano-node with dynamic P2P capabilities:

    • 1.35.6
      • we found and fixed a bug in exception handling in peer-state-actionspull-4357
      • we found and fixed a busy loop when demoting a peer from hot to warm pull-4385
    • 1.35.7
      • includes interoperability in the legacy non-p2p network stack pull-4467
    • we fixed a busy loop of demotion & promotions: warm -> hot -> warm[pull-4485] /it will be included in cardano-node-8.0.0 release/.

    Currently there are more than 200 P2P relays on mainnet.

    Peer Sharing

    We implemented /peer sharing/ pull-4019 which will be available as an +experimental feature in one of the future cardano-node releases.

    We implemented /light peer sharing/, e.g. adding inbound connections to the set +of known peers of the outbound governor, which allows to bootstrap relays not +registered on chain. This complements peer sharing. The pull-4277 is in +late review stages.

    Eclipse Evasion

    We finalised design of eclipse evasion and we started implementing it. We +have an initial implementation (not merged). We are in the process of extending +our test suite to cover new implementation details: issue-3886, pull-4462.

    Cardano Network Service Assurance

    Galois has been making progress on Cardano Network Service Assurance project.

    • In cardano-node, they have developed a datapoint abstraction that creates +a queue of (existing) log events, they now have two such datapoints (of log +events) implemented.

    • They have developed a datapoint client executable that can connect to a node +which serves the "new tracing".

    • They have been exploring approaches for the consolidation and analysis of +datapoint data to extract actionable network health status.

    Cardano-Node

    • We made it possible to configure accepted connections limit pull-4902.

    Testing improvements

    • We fixed a bug in network simulation implementation of TCP simultaneous open pull-4265.

    • We introduced header-body split in the diffusion simulation pull-4419 (in review).

    • We introduced initiator only nodes in the diffusion simulation pull-4280.

    • We fixed a connection-manager test failure issue-4370.

    Technical Debt

    • We refactored Snocket interface decoupling it from the multiplexer +pull-4260. This simplified some aspects of the KES agent implementation.

    • We introduces a record for CBOR codecs which are used for various data +structures by mini-protocol codecs pull-4430.

    Documentation

    • We explained some limitations of CDDL in our technical report pull-4351.

    IO-Sim

    • We fixed implementation of MVar's pull-70.

    NoThunks

    • We published a new version of nothunks library to Hackage.

    Next steps

    • Finish implementation & testing of eclipse evasion issue-3886.
    • Optimise connectivity to peers behind firewall issue-4381.
    • Finish the work on enabling block production dynamically to allow using P2P +on block producers issue-3159.
    • If time permits we would like also to reserve some time for finishing +publication of io-sim to Hackage.
    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Ledger Team Update]]> + 2023-04-03-ledger + + 2023-04-03T00:00:00.000Z + + Ledger Quarterly Update

    2023-01 - 2023-03

    Main achievements

    CIPs

    • Entering the Voltaire phase - +CIP-1694 received a major update after participation in the design has expanded to +more and more people, including those who attended the Colorado workshop. +See CIP-1694.
    • Ledger CIP category - +The ledger team continues to embrace the CIP process, and has begun the process of +registering the ledger as an official CIP category. +See CIP-84.
    • Ledger serialization - +A CIP for the ledger serialization deprecation cycle has been accepted. +See CIP-80.

    Formal ledger model

    Our new formal specifications backed by Agda have seen a lot of progress. +The majority of the ideas in CIP-1694 are now present, and we have made enough progress +that we can now safely say that the PDF produced by the Agda model will be the +official ledger specification for the Conway ledger era. +See the repository.

    Conway ledger era

    Progress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model. +The major component still missing is the DRep stake distribution, which still presents some +technical challenges.

    [pull-3176] +[pull-3216] +[pull-3226] +[pull-3291] +[pull-3326] +[pull-3330] +[pull-3339]

    DRep stake distribution computation

    Adding another large stake distribution to the ledger state must proceed with caution. +We do not want the memory used by the node to increase too much, +and performance problems can lead to reduced block production. +We have prototyped, tested, and benchmarked several approaches that could give us +the current DRep stake distribution at each epoch boundary. +This has very important implications, since we want every ADA holder to be able to at any +time (such as during a contentious vote) register themselves as a DRep and still have time +to vote themselves on the issue.

    [pull-3344] +[pull-3353] +[pull-3364]

    Integration work

    The ledger has made some wonderful improvements over the past six months, +but which entail a significant amount of integration efforts:

    • Our new versioned CBOR schemes
    • Individual deposit tracking
    • An improved cross-era interface utilizing lenses
    • A new ledger API
    • Re-arranging the ledger stake in preparation for CIP-1694
    • Versioning our Haskell packages +using CHaPs.
    • Consistent conventions for variable names

    [pull-3279] +[pull-3282] +[pull-3288] +[pull-3289] +[pull-3292] +[pull-3297] +[pull-3298] +[pull-3299] +[pull-3300] +[pull-3302] +[pull-3303] +[pull-3308] +[pull-3342] +[pull-3345] +[pull-3356] +[pull-3357] +[pull-3360] +[pull-3361] +[pull-3363] +[pull-4349] +[pull-378] +[pull-376] +[pull-373] +[pull-370] +[pull-361] +[pull-4976] +[pull-5013]

    Deposit tracking

    Individual deposits (for stake credential and stake pool registrations) were not tracked by the ledger. +Deposits were returned according to the current protocol parameters. +When the values of these two protocol parameters change, the deposit pot +is adjusted by adding to, or removing from, the reserves.

    This has several problems:

    • Most people expect a deposit to be paid back exactly.
    • We cannot increase the deposit amount once the reserves hits zero.
    • If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials.
    • Because of the problems above, it is going to be incredibly hard to ever change the values.
    • There is a serious issue involving hard forks. +The consensus layer makes the decision about whether or not to enact a hard fork based on +the protocol parameter update state two stability windows before the end of the epoch. +However, the ledger will reject a protocol parameter update on the epoch boundary +if the deposit pot adjustments cannot be reconciled with the reseve pot. +This means that if quorum is met regarding changing the major protocol version, +but the update is rejected on the epoch boundary, consensus will change the era but the +ledger will not change the major protocol version, leaving the ledger in a split-brain state.

    Because we never actually changed the values of the two deposits amounts in the protocol parameters +on mainnet, we were able to retroactively change the behavior. +We made the following changes:

    • Individual deposits are tracked in the DState.
    • The amount deposited is always returned.

    [pull-3195] +[pull-3202] +[pull-3217]

    New ledger API

    We have significantly built up the ledger API. +We will eventually replace much of the cardano-api in the node repository with this ledger API.

    [pull-3242] +[pull-3248] +[pull-3328]

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We have a new declaritive infrastructure for building constraint-based generators, +which instead generate a random ledger state representative of not just an initial state, +but also those representative of the end result of a long sequence of valid blocks. +Moreover, these generators are very fast and are much more random than our old generators. +Before we can start using them for our existing property tests, however, we still need to +expand them to generate a valid block for a given ledger state.

    [pull-3219]

    Technical debt

    We continued to address technical debt as much as we can.

    [pull-3167] +[pull-3170] +[pull-3172] +[pull-3175] +[pull-3184] +[pull-3205] +[pull-3208] +[pull-3210] +[pull-3212] +[pull-3218] +[pull-3222] +[pull-3223] +[pull-3224] +[pull-3225] +[pull-3229] +[pull-3239] +[pull-3241] +[pull-3244] +[pull-3245] +[pull-3249] +[pull-3260] +[pull-3263] +[pull-3264] +[pull-3268] +[pull-3269] +[pull-3270] +[pull-3274] +[pull-3276] +[pull-3277] +[pull-3286] +[pull-3290] +[pull-3295] +[pull-3296] +[pull-3306] +[pull-3307] +[pull-3310] +[pull-3311] +[pull-3316] +[pull-3320] +[pull-3323] +[pull-3327] +[pull-3331] +[pull-3332] +[pull-3333] +[pull-3338] +[pull-3341] +[pull-3347] +[pull-3350] +[pull-3351] +[pull-3352] +[pull-3354]

    Critical fixes

    We fixed two critical issues:

    • Growing block production delay on the epoch boundary: [pull-3209]
    • Unexpected node shutdown from balanceR: [pull-3343]

    Next steps

    • Conway spec - +Complete the first version of the conway formal specification.
    • DRep stake distribution - +Have the ledger compute the DRep stake distribution with acceptible performance.
    • Devnet ready - +Have the Haskell implementation of the conway era in sync with the formal specification, +and integrate the changes with consensus and node. +All the details might not be finalized, but the wire specification and the API should +be stable so that conway can be placed on a devnet for tool builders to start integrating with.
    • Plutus V3 - +Integrate Plutus V3 into the ledger, including a new script context which supports DReps.

    More details

    This quarterly report was based off of the following fortnightly ones:

    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Consensus Quarterly Update]]> + 2023-01-18-consensus + + 2023-01-18T00:00:00.000Z + + Consensus Quarterly Update

    2022-12 - 2023-01

    Main achievements

    UTxO HD

    The prototype is feature complete and thoroughly tested at the consensus level. +In particular, we invested a lot of time in writing property-test for the +mempool, and other crucial new parts of the prototype. Now we are ready to run +integration tests and system-level benchmarks.

    Genesis

    We identified and fixed a slowdown in cross-era forecasting that was inhibiting +our efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7% +speedup in full sync times in the baseline.

    We also started prototyping a self-contained implementation of the Genesis +dynamics (in particular of the parts intentionally not part of the ChainSync +Jumping prototype) that furthered our understanding of subtleties and edge +cases.

    Support

    • We worked on designing integration of new VRF and KES crypto into consensus.
      • Crypto class was split into two parts: Crypto and HeaderCrypto.
      • With the Ledger team's help, we refactored cardano-ledger to use a proxy +type for VRF.

    Conway era

    • PR went through its second review round. It is about to be merged, but it got +delayed due to people's availability during Christmas break.

    Technical debt

    • We improved the capabilities of our io-sim library, which is key for testing +and simulating Cardano components.
    • We removed thunks from epoch translations in the ledger, which is important +for reducing memory consumption of the Cardano node.

    Fostering collaboration

    • We added a tutorial on how to instantiate the Consensus layer to run custom +ledgers. This should be a valuable resource to people looking to roll their +own custom blockchain (either for commercial or research purposes).
    • We added an overview of consensus to the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    Next steps

    UTxO HD

    • Evaluate the extensibility of the prototype. Moving the UTxO to disk is only +the first step towards reducing the memory requirements of Cardano node, and +ensuring its long term sustainability. In the future, we plan on moving other +large maps, such as delegation maps. The prototype should be able to +accommodate these changes without any major modifications.
    • Start the integration with other downstream components, such as the wallet and +db-sync. The idea is to identify and address any potential pain points that +might arise during this integration.
    • Run integration tests and system-level benchmarks.

    Genesis

    • Finish benchmarking and tuning the fast-path ChainSync Jumping prototype
    • Expand and optimize the self-contained implementation of the Disconnect Rule +(including density comparisons and the LoE)
    • Develop documentation and smoke tests for these components.
    • Start modifying the ChainSync Client for the LoP and LoR.

    Support

    • Help the Network team with diagnosing performance regression in block +production.

    Tech debt

    • Fix property-test failures concerning iterators (#3999 and +#4183).

    Fostering collaboration

    Risks

    UTxO HD

    • Moving other parts of the ledger state to disk might require a major redesign +of the prototype. For instance, if it turns out that the epoch change rules +require access to the full ledger state. If this is the case, we might +accept this risk and do the redesign after the initial release of UTxO-HD.
    • Integration with downstream clients might require more work than we +anticipate.
    • Access to the benchmarking's team time and resources.
    • Benchmarking results might show significant performance degradation, which +will require additional work if such performance degradation is not accepted +by other stakeholders.
    • The prototype's performance might not be accepted by other stakeholders. Here +we need to clearly communicate that this is necessary to ensure that as the +blockchain size grows, the node can operate within reasonable memory +constraints.
    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Network Quarterly Update]]> + 2023-01-13-network + + 2023-01-13T00:00:00.000Z + + Network Quarterly Update

    2022-11 - 2023-01

    Summary

    The primary goal of the networking team was to focus on the single relay +release of P2P. We fixed a number of small late bugs, and concluded QA +& performance testing. Although it was discovered a regression in performance +of block production when P2P is enabled, relaying with P2P performs better +comparing to a non p2p. We concluded that this is not a blocker for the Single +Relay Release which is planned shortly.

    Peer sharing has gone through review and final review is +just being done right now. After merging it will still be disabled (hidden +behind a flag) as it's not safe without eclipse evasion. We started +implementing light peer sharing (i.e. include inbound peers into known peer set +of the outbound governor).

    We started a detailed eclipse evasion design, it will continue in the next +quarter.

    We also made a major revision of package structure of the network packages. We +ended up with a very clean dependency graph (pr #4155).

    Armando Santos delivered a talk at the ODOPIS 2022 conference on principles +of distributed systems in Brussels. The slides are available here.

    Neil Davies gave an invited seminar on DeltaQ at Université Catholique de +Louvain.

    We also found and fixed a few of bugs:

    • a bug in keep alive mini-protocol which resulted in warm to cold transitions +to be always executed through a timeout path rather than do a clean demotion +([pr #4168]).

    • fixed an assetion failure in the outbound governor (issue #4177)

    Next steps

    We will work towards the next release of P2P for block producer nodes. This includes:

    • analysing performance regression for BP nodes when using P2P
    • finish the work on controlling the block forger through node kernel (pr #3800)
    • address issue #3907 and write a script to analyse deployment of P2P relays

    We would like also to push forward eclipse evasion. Although most of the work +has be done already the release of io-sim on Hackage will happen in the +next quarter.

    We would also like to address chain-sync timeout issue recently +diagnosed by Karl Knutsson.

    If time permits we would also like to address some technical debt, especially:

    Risks

    The performance regression for block producer with P2P needs to be investigated +in the near future. This is blocker for the release of P2P on BP nodes.

    Detailed log

    Contributions to Ouroboros-Network

    • We added TraceDemoteLocalAsynchronous, which enables notification of critical issues for SPOs
    • We fixed cardano-ping compatibility with NodeToNodeV_10 (P2P, pr #4165)
    • We fixed a bug in demotion peers to cold which affected P2P nodes (commit-61058aa5c2)
    • Karl Knutsson enhanced SendFetchRequest (commit-bb1c3dddee), open-source contribution)
    • We turned SizeInBytes into a newtype.
    • We extended CONTRIBUTING.md, README.md, added CODE_OF_CONDUCT.
    • We fixed DNS test failure issue #4191
    • We fixed a simulation bug found in issue #4258
    • [pr #4168]
    • issue #4177

    Contributions to Cardano-Node

    • We maintained the Single Relay Release pr #4612, (e.g. fixing CI issues, +Rebasing it when necessary, publishing packages to Cardano Haskell Packages);
    • We enhanced JSON serialisation / deserialisation of NodeToNodeVersion and NodeToClientVersion;

    Contributions to IOSim

    • We started to use Cardano Haskell Packages for IOSim (pr #48)
    • We updated change log files
    • We added support of ghc-9.4 (pr #50)

    We also addressed the following issues in pr #57 in order to prepare the package for publication on Hackage:

    • refactored io-classes timers API (issue #46);
    • created a new package si-timers which exposes an interface using SI units +and is safe on 32-bit systems (issue #59);
    • added monad transformers instances for classes defined in io-classes (issue #58);
    • created io-classes-mtl package which includes (experimental) instances for monad transformers;
    • provide MonadMonotonicTimeNSec in io-classes and MonadMonotonicTime in si-timers (so that io-classes follow the base package);
    • added registerCancellableDelay in si-timers (which allowed us to hide fancy timer api and clean io-classes)
    • added support for js_HOST_ARCH (the new GHC JS backend)

    Note the pr #57 contains almost 40 commits, and was a major step forward for +io-sim ecosystem. We also prepared a draft pr #4281 which updates +ouroboros-network.

    Other changes for 1.0.0.0 release on Hackage:

    • Refactored test suite (pr #47)
    • Updated documentation, cabal files, CONTRIBUTING, SECURITY documents, etc in pr #60, currently under review.
    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Open-Source Update]]> + 2023-01-13-open-source + + 2023-01-13T00:00:00.000Z + + Open Source Quarterly Update

    2022-11 - 2023-01

    Summary

    In the last quarter the open-source initiative delivered a comprehensive report +on the state of our repositories. As part of this work stream we +identified the key open-source repositories for the cardano project across all +the projects From a list of more than 500 repositories (some of which are +forks) we identified key repositories which constitute the core of Cardano. +20 of them were identified as to be transferred to the future MBO which will +govern Cardano development. Some where excluded (like io-sim and +typed-protocols), to be govern by IOG, since they have a much broader +application than Cardano itself, and thus we think their open-source future +will be better outside of the Cardano umbrella.

    Christian Taylor identified a number of ways we can improve our repositories to +make them more attractive for open-source contributions by analysing each of +them. This includes adding or improving various documentation files, like +CONTRIBUTING files, adding code of conduct, improving readme files, issue +& pull request templates etc. Christian also computed various interesting +metrics which gives a very good insight into the development practices: e.g. +average merge ratio, average number of reviews, comments and many more! The +presentation is available here.

    We followed with work on the Cardano Engineering Handbook. We included +a standard code of conduct which is now used by most important projects in the +Cardano space. We included cardano-node's security policy and added +a responsible disclosure policy. We also described how roles and +responsibilities should be clarified. This progress was made by +a collaborative effort of the Cardano Core, Plutus and Architecture teams, and +it wouldn't be possible without Michael Peyton Jones, Arnaud Bailly, Kevin +Hammond, Jared Corduan and Marcin Szamotulski.

    We also improved the documentation of key repositories, by adding description, +improving their README file & CONTRIBUTING files, adding code of conducts +following the Cardano Engineering Handbook. This includes improvements to:

    And also

    The work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan.

    In this quarter we also identified a number of projects which can be published to +Hackage (Haskell's package repository) or crate (Rust package repository). +The list contains 21 packages, 2 of which (hedgehog-extras and +quickcheck-dynamic) are already published on Hackage and another 5 (from +the io-sim repository) are close to be published.

    Detailed log

    The progress of the open-source project is tracked in this project.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Consensus Quarterly Update]]> + 2022-11-15-consensus + + 2022-11-15T00:00:00.000Z + + Consensus Quarterly Update

    2022-09 - 2022-11

    Main achievements

    UTxO HD

    • As a consequence of the errors observed when running distributed mempool +benchmarks, we re-designed the UTxO HD mempool integration, which fixed these +errors and lead to a simpler and more maintainable design.

    • We focused on increasing test coverage for the UTxO-HD prototype. In +particular, we added property tests for:

      • Backing store (work ongoing)
      • Era transitions
    • The property tests we added uncovered several bugs, which is a great result +given the exponential increase in the cost of finding bugs as they are closer +to deployment.

    • One of the errors found by our tests required us to work on improvements in +the Haskell bindings for LMDB. This work is ongoing.

    • We started working on the mempool property tests that will exercise the new +code paths that UTxO HD introduced.

    • We developed, benchmarked and tested an implementation of sequences of +differences based on "anti-diffs". Performance results of diff sequence +operations show that we achieved a speedup of about 4x across several +scenarios. Note: this speedup is taking into account diff sequence operations +only, so the consensus-wide speedup is less than 4x.

    • We integrated the "anti-diff" prototype into the UTxO HD feature branch.

    Genesis

    • We wrote a simulator that demonstrates soundness of an abstract implementation +of the new chain selection rule.
    • We elaborated a draft specification for the Genesis implementation (currently +awaiting feedback from other architects).
    • We elaborated a draft specification for the ChainSync Jumping optimization. In +particular, this includes a proof sketch that the latter preserves liveness +and safety in all cases.
    • With the Networking team, we co-designed the eclipse avoidance mechanism, +specifically its coherence with the Genesis implementation plan's security +and its dependence on the new ChainSync Jumping optimization.
    • We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a +performance degradation wrt the baseline. Our optimization attempts so far +have brought the performance closer to the baseline, but not yet to parity.

    Conway era

    • We did most of the heavy lifting required to integrate the Conway era into the +Consensus layer.

    Technical debt

    • We started working on enabling CI nightly tests, which revealed several test +failures due to thunks being found it data structures used by the ledger and +consensus. We made a lot of progress fixing those thunk errors, but some +errors still remain.

    • We elaborated a db-analyser benchmark for the ledger operations. This led us +to the identification of high processing time at epoch boundaries, and we +could not observe any performance degradation that can be attributed to era +changes.

    • We fixed a source of flakiness in the ChainDB QSM test.

    • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    • We fixed a bug in the maximum-allowed ledger major protocol version.

    Fostering collaboration

    • We spent time making cardano-updates the central source of information for +the core teams stakeholders.
    • We went through the Galois gap analysis and extracted actionable points to +take on next.
    • Bart and Yogesh continued with their onboarding and stated making substantial +contributions to consensus.

    Next steps

    UTxO HD

    • Finish the mempool property tests.
    • Benchmark the latest version of the prototype.
    • Elaborate a document that describes new integration test scenarios and pass it +to the SDET team.
    • Bring query UTxO by address command performance on par with the baseline +version.

    Genesis

    • Receive and incorporate Duncan's feedback on the first draft specification for +the Genesis implementation.
    • Begin prototyping the first genesis implementation, unless the first draft +needs major changes.
    • Draft a second revision of the Genesis report.
    • Review the second revision with a wider audience, which includes at least +Alexander Russell. That feedback will drive a third and hopefully final +revision.
    • Investigate how to mitigate the ~30% slowdown we have observed so far in the +ChainSync jumping prototype, and try to mitigate it. In particular, we might +need to optimize the existing BlockFetch logic.

    Tech debt

    • Enabling nightly CI tests.

    Fostering collaboration

    • Merge the tutorial document Galois wrote; requires CI integration.
    • Come up with our own documentation improvements, many of which were suggested +in the Galois gap analysis.
    • Try to hire a new team member.
    ]]>
    + + Damian Nadales + https://github.com/dnadales + + +
    + + <![CDATA[Network Team Update]]> + 2022-11-09-network + + 2022-11-09T00:00:00.000Z + + Network Quarterly Update

    2022-09 - 2022-11

    Summary of most important improvements

    During this quarter the networking team delivered low level specification of +peer sharing & eclipse evasion. We held a session with the consensus & the +scientists; we got a positive feedback on the design.

    Further we focused on implementation of peer sharing. We produced a detail +design and an early implementation.

    We prepared the P2P Single Relay Release (cardano-node-1.35.5). It +includes over 130 patches of network stack improvements over the +previous version 1.35.4, which were accomplished over a longer period of +time. Among them are both bug fixes and UX improvements for stake pool +operators like simplified format of the topology file, or +improvements in the logged messages:

    We also provide better integration with systemd (socket +activation improvements) or improvements in the networking stack:

    • exit policies,
    • peer metrics improvements,
    • DNS TTL improvements (which make it harder to misconfigure the +system, an issue discovered by the performance & monitoring team),
    • do not trigger inbound idle timeout for node-to-client connections (pr +#3844), an issue reported to us by Matthias Benkort from +Cardano Foundation.

    Duncan has been making progress with the input endorsers demo. His simulation +provides a useful animated visualisation and live quantification of behaviour +of the modeled design.

    We also improved our e2e diffusion simulation by implementing header-body +split, similar to what the real implementation does.

    We also made some advances towards our future goals of P2P release for block +producer nodes (pr #3800 - in review) & for Daedalus users +(pr #3690 - merged).

    Detailed log

    • We expanded diffusion simulation with block-fetch protocol bringing it closer +to the production system.

    • We addressed some additional technical depth in diffusion simulation

    • We slightly improved documentation & CI of io-sim and typed-protocols +repositories for open-source contributors.

    • We closed a number of issues towards publishing io-sim on Hackage (only two +essential issues are left open).

    • We pushed a branch of typed-protocols which captures one of the developer UX +problems in the API which we need to solve.

    • We identified and fixed an issue related to systemd sockets.

    • We identified and fixed an issue in consensus initialisation not giving +feedback on early errors.

    • We deployed RT View, identified a number of issues which were communicated to +the performance & monitoring team.

    • We finished high level & detailed design of peer sharing, very early +implementation of peer sharing is done (note that peer sharing cannot be +safely deployed without eclipse evasion & genesis).

    • We finished high level design of eclipse evasion, and started working on +a detailed design.

    • We were assigned the role of release engineer for 1.35.5 release (the P2P +single relay release); we prepared a cardano-node for 1.35.5 release which +contains more than 130 patches of just network stack improvements done over +last few months.

    • We diagnosed and fixed an tricky bug in the peer state actions (a component +which sits between outbound governor and connection manager). That bug was +introduced earlier this year and never released. It was caught by the QA +testing framework. We expanded our diffusion simulation to cover such case and +also mitigated a chance for reintroducing such a bug in future.

    • We identified and quite likely mitigated a misconfiguration in the +benchmarking cluster (next benchmarking run will confirm our hypothesis).

    • We simplified the format of p2p topology file, we got positive feedback from +SPOs.

    • We raised severities of some of the logging messages, which is an important +improvement for SPOs, exchanges and other users of the system.

    • We worked on input endorsers simulation which gives both animated and +quantified live feedback on network operation, using a simplified model of +a TCP/IP network.

    Next quarter

    • Release the Single Relay P2P Release 1.35.5.

    • Carry on with Peer Sharing (review, testing).

    • Deliver a talk at Conference on Principles of Distributed Systems 2022 in Brussels, Belgium.

    • Present Detailed Design of Eclipse Evasion and start implementation phase.

    • Work on P2P Block Producer release.

    • Carry on with publishing of io-sim on Hackage.

    ]]>
    + + Marcin Szamotulski + https://github.com/coot + + +
    + + <![CDATA[Ledger Team Update]]> + 2022-11-07-ledger + + 2022-11-07T00:00:00.000Z + + Ledger Quarterly Update

    2022-09 - 2022-11-04

    • We finished a minimal ledger era capable of master key rotation. +This will be re-purposed our upcoming work.
    • We have the humble beginnings of a proper ledger API.
    • We improved the problematic cost model serialization +(recall the song and dance about updating the cost model one epoch after the hard fork).
    • We have added benchmarks for problematic areas.
    • Massive repository restructure and cleanup.
      • Unified and consistent variable name schemes (not completely finished, but nearly there).
      • Massive reduction in type constraints, which causes a lot of developer friction, +in our code and also downstream.
      • More organized module structures.
      • Improved generators for our property tests.
      • We removed our dependency on cardano-prelude.
    • The formal ledger model has come a long way.
      • We created a fork of Agda that provides some meta-programming support for the ledger rules.
      • We have a large amount of the basic UTxO support in the model.
      • We can generate a good looking PDF from the model.
      • We can produce Haskell from the model.
      • We have a nice finite set theory library that we can use for many of the ledger rules.
      • We have nix support for the model.

    Next steps

    • Individual tracking of deposits. [issue-3113]
    • Versioned CBOR encoders/decoders. [issue-3014]
    • New ledger era transaction body (and the surround work associated with it).
    • Designs for the next ledger era.
    ]]>
    + + Jared Corduan + https://github.com/JaredCorduan + + +
    + + <![CDATA[Node API & CLI Team Update]]> + 2022-10-07-node-cli-api + + 2022-11-07T00:00:00.000Z + + Node-Api-Cli Quarterly Update

    2022-09 - 2022-11-04

    • Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0
    • Major clean up of stale iusses + PRs.
    • Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs
    • cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node.
    • cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation.
    • General documentation updates and improvements
    • Addition of tx-mempool command which allows users to:
      • Query the node about the current mempool's capacity and sizes
      • Request the next transaction from the mempool's current list
      • Query if a particular transaction exists in the mempool
    • Initial refactoring of cardano-testnet

    Next quarter

    • cardano-api
      • Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately.
    • cardano-testnet
    • Serenity
      • Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above.
    • General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new.
    ]]>
    + + Jordan Millar + https://github.com/Jimbo4350 + + +
    +
    \ No newline at end of file diff --git a/quarterly/index.html b/quarterly/index.html new file mode 100644 index 00000000000..8d90f95c386 --- /dev/null +++ b/quarterly/index.html @@ -0,0 +1,326 @@ + + + + + +Blog | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 5 min read
    Damian Nadales

    2023-04 -- 2023-06

    Main achievements

    UTxO HD

    • We finished a major prototype refactoring, which includes:
      • A better and finer grained DB lock mechanism.
      • Elimination of race conditions.
      • Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance.
      • Architectural simplifications and performance improvements.
    • We implemented a new package to support db-sync integration with UTxO-HD.
    • We ran another set of ad-hoc benchmarks:
      • We uncovered a performance regression on the Network component when using GHC-9.2/9.4.
      • The synchronization and replay speed are as expected.
      • However, we uncovered memory consumption issues (see figure below).
        • The in-memory backend is consuming more memory than the baseline.
        • The LMDB backend shows an unexpected memory usage peak.
        • Investigation on these issues is ongoing.
    • We integrated the latest changes in main branch.
      • This required a re-design of the mempool to include the mempool fairness +improvement.

    Genesis

    • The Genesis work for this PI focused on an high-priority issue from the IOG Researchers' feedback on the proposal.
      • This particular question was not anticipated when the Q2 PI was planned.
      • As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized.
      • That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package.
    • The IOG Researchers' feedback on the design was very valuable. It had two primary effects.
    • Outcome 1: We re-introduced distinct behaviors when the node is "syncing" versus when it is "caught up".
      • This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated.
      • The additional design complexity is relatively small.
    • Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.
      • The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era.
      • All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras.
      • Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later.
      • The primary invention was a model for bounding how much benefit the adversary's long-range attack could possibly gain from Praos's natural short forks.
    • Relevant questions that the IOG Researchers are still assessing.
      • These do not block the Genesis implementation, but do affect the ultimate values of specific parameters.
      • Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?
      • Question 2: what is the upper bound on how much grinding can improve the adversary's leader schedule within some Genesis window?

    Support

    • We performed an analysis on number of file descriptors used by Consensus, this +information can be used by the node operators to check if the number of file +descriptors they want to support are enough, thus improving the user (eg node +operator) experience.
    • We implemented a mempool fairness improvement, by which transactions are +guaranteed to be processed irrespective of their size.

    Technical debt

    • We fixed a bug in followers logic, which was discovered by our QuickCheck +property tests.
    • We created an immutable DB +server. This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results.
    • We created a db-truncater tool, which can be used in disaster recovery and benchmarking scenarios.
    • We created a benchmarks comparison tool that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance improvements introduced by the Ledger team in version 0.6.0.0 of Consensus wrt version 0.5.0.0.

    Fostering collaboration

    • We released fs-sim as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project.
    • We migrated the consensus code to a new repository, splitting +it from the ouroboros-network repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases).
    • We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users).
    • We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.

    Next steps

    UTxO HD

    Genesis

    • We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work.

    · 6 min read
    Marcin Szamotulski

    2023-04 - 2023-06

    Main achievements

    Eclipse Evasion

    We finalised the design of eclipse evasion and implemented its mechanism which +relays on connectivity to big ledger peers. Big ledger peers are the +largest ledger peers which accumulate 90% of stake (currently there are less +than 1000 of them). The outbound governor has new targets for known, +established and active big ledger peers which work in a similar way that +such targets work for ledger peers. The ouroboros-network#4662 PR is +currently in review.

    As part of this work we also identified a bug which would prevent a node to +connect to itself. Such connections are not easily detectable and are expected +to be dropped by the churn mechanism, nonetheless they should not be buggy. +The failure was discovered thanks to our e2e simulation of diffusion using +io-sim & property based testing.

    The PR also refactors the heart of the ouroboros-network interface reducing +technical debt that would otherwise accumulate.

    We also identified a possible improvement in the churn mechanism, which will be +implemented in Q3. Churn needs to await for peers to terminate, we can +improve the synchronisation. [ouroboros-network#4617]

    Ecosystem P2P Deployment Progress

    We reached 50% of stake in hands of SPOs who run at least on P2P relay. Now +also Emurgo and CF are running some P2P relays. Also 20% of IOG relays are +running in P2P mode.

    P2P Progress

    Peer Sharing

    We implemented bootstrapping for peer sharing (also known as light peer +sharing). New downstream (inbound) peers are now added to the known peers of +the outbound governor. Together with peer sharing this allows for non +registered relays to propagate through the network. ouroboros-network#3596

    Please note that peer sharing is disabled by default and is not considered safe +until Bootstrap Peers (see below) or Genesis is implemented.

    Diffusion (P2P)

    • We designed a feature which will reduce the load on IOG relays (in future +also run by CF & Emurgo). The feature consists of two parts. A new source +of peers called bootstrap peers (obtained from via an https request), the +ability to switch from bootstrap peers to ledger peers if the node is synced +(we are collaborating with the consensus team on the interface Bootstrap +Peers IER). This feature will be completed in Q3. +ouroboros-network#4530

    • We published a blog post about P2P design & implementation.

    • Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections: +ouroboros-network#4559.

    • We merged changes which allow the consensus layer to start / stop block +forging thread. This will allow to deploy P2P block producing nodes which +serve as a live backup node. ouroboros-consensus#140

    • We fixed a few bugs in local root peers DNS resolution service: +ouroboros-network#4583, ouroboros-network#4571.

    • We limited concurrency of DNS name resolutions: ouroboros-network#4596.

    • Galois Inc implemented query option for Handshake: ouroboros-network#4256.

    • We fixed handshake query timeout: ouroboros-network#4608.

    • We implemented warm valency for local root peers. This can help when using +DNS names in local root peers which resolve to many IP addresses. ouroboros-network#4575

    • We merged handshake changes which allow query protocol versions. Thanks to +James Parker from Galois Inc.: ouroboros-network#4256, cardano-cli#30.

    Other Improvements & Developments

    CDDL

    • We added node-to-node and node-to-client CDDL specs / tests for encoding +of NodeToNodeVersionData and NodeToClientVersionData.

    • We clarified an inconsistency between CDDL spec and implementation which is +highly polymorphic. We designed and implemented a fix for tx-submission +and local-tx-submission mini-protocols. Specs for other mini-protocols will +be improved at a later stage. ouroboros-network#4580

    Cardano Ping

    IOSim

    Typed Protocols

    Cardano Client

    • We fixed a bug in cardano-client-0.1.0.2 release which results in clients +(e.g. db-sync) negotiate an experimental protocol version.

    Technical debt

    CI improvements

    GHC 9.4 & 9.6

    We made all repositories under our control compile with ghc-9.4 and ghc-9.6 +which includes ouroboros-network, io-sim, typed-protocols and +Win32-network.

    Next steps

    We will continue towards our aspirational roadmap.

    • We will continue reviewing eclipse evasion.
    • As ouroboros-consensus#140 was merged, we are making progress towards +releasing P2P on block production nodes. We hope to analyse performance +regression on such nodes observed on the benchmarking cluster. roadmap-3887
    • We are also focused on roadmap-3969. Note that it was expanded in Q2.

    · One min read
    John Lotoski

    2023-04 - 2023-06

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Expanding the darwin CI cluster and adding aarch64 builder support
    • Adding bare metal capability to bitte clusters
    • Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality
    • Creation of pool performance analysis queries and scripting
    • Migration of testnet metadata server to cardano-world
    • Cardano shelley qa migration to cardano-world
    • Cardano sanchonet environment spin up to test Conway era functionality
    • Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature

    Next steps

    • Continue with the conversion of mainnet to using p2p topology

    · 4 min read
    Michael Karg

    2023-07 - 2023-09

    Main achievements

    • Release benchmarking
    • Developing and running UTxO-HD benchmarks - in-memory flavour
    • P2P benchmarks, facilitating rollout
    • Production-readiness of the new Nomad cluster has been reached
    • Optimization of and introspection capability for the new tracing system
    • GHC9 performance investigation (and possible remedy)
    • Conensus QTAs: first real-world application of prototype

    Release benchmarking

    Ongoing release benchmarking is a crucial safeguard to cardano-node's release cycle from a performance perspective. We've performed and analyzed benchmarks for node versions 8.2.x to 8.5 throughout Q3.

    UTxO-HD benchmarks

    Targeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery.

    P2P benchmarks

    In Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature.

    New nomad cluster

    The new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received +various rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest +of our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it +ready for production use.

    New tracing system

    Our new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that +it is roughly on par with the legacy system while offering a richer feature set and greater flexibility.

    Additionally, in Q3 we equipped the system with an introspection capability. This is now used for generating +end user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system.

    GHC9 performance

    In Q3, a joint investigation with DevX into GHC9's behaviour revealed where and how GHC9 misses opportunities for +optimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable +those optimizations - which is still being validated.

    Consensus QTAs

    In collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations' +performance characteristics. It's now applicable, and being applied, to a real-world task - namely +gathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds.

    Next steps

    Benchmarking:

    In Q4, the focus will be on:

    • facilitating the next mainnet release
    • benchmarking runs in the Conway era
    • developing benchmarks / workloads for Conway-exclusive actions
    • implementing a specialized benchmark setup for the UTxO-HD on-disk variant
    • developing new Plutus benchmarks to safeguard Plutus V3
    • benchmarks regarding the rollout of P2P

    Performance

    For certain blocking performance issues we've located the cause, or even found a solution in a cross-team effort. In Q4 we'll advance that work to ensure the ongoing +release cycle for mainnet, as well as make GHC9 become a viable release platform.

    New tracing system

    For the new tracing system, we'll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support.

    UTxO-HD monitoring

    We'll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way.

    Nomad backend

    From Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad.

    Workbench

    We will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with cardano-node.

    Consensus component QTAs (co-development)

    In Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation.

    · One min read
    John Lotoski

    2023-07 - 2023-09

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Completion of mainnet relay networking conversion to p2p topology
    • Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality
    • Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines
    • Creation of a nix content addressed packages repository, capkgs:
      • To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells
    • Creation of a cardano performance benchmarking cluster, cardano-perf:
      • To replace legacy cluster benchmark tooling
    • Creation of a cardano cluster composition repository, cardano-parts:
      • For enabling multi-cluster, multi-role cardano network deployments
    • Creation of a cardano testnets repository, cardano-playground:
      • Utilizing cardano-parts for testnet deployments
    • Creation of a sanchonet demo repository, sanchonet-demo:
      • Utilizing cardano-parts for fast sanchonet test environment and demo purposes

    Next steps

    • Continue with migration of cardano-world testnets to cardano-playground
    • Proceed with spinup of mainnet p2p bootstrap cluster
    • Scale down mainnet non-p2p legacy cluster at the appropriate time

    · 3 min read
    Damian Nadales

    Consensus Quarterly Update

    2023-01 - 2023-03

    Main achievements

    UTxO HD

    • We finished the testing activities for the prototype, which involved adding +new tests, and fixing and enabling temporarily disabled tests.
    • We spent a substantial amount of effort refactoring and cleaning the +prototype.
    • We audited the UTxO HD prototype to make sure it can accommodate the migration +of other tables (eg stake-keys registration) from memory to disk. The result +of the audit was positive.
    • We ran ad-hoc benchmarks for reading keys and flushing values to disk. No +unexpected costs found.
    • We ran the first system level benchmarks. The performance regressions reported +were due to an unrealistic snapshotting rate. We need to re-run them again +after we design a more fine grained locking mechanism.

    Genesis

    • We elaborated a roadmap of the remaining work for Genesis.
    • We presented the design to the IOG Researchers and PNSol on February 20. The +design was well received. We updated the Genesis design with the researcher's +feedback.
      • We plugged the new DoS vector identified during the aforementioned +presentation.
    • We developed a generator for adversarial leader schedules that satisfy key +Ouroboros properties, which will be used to test the Genesis design.
      • The generator enables use of smaller Ouroboros parameters, which makes +extrema more likely and counterxamples easier interpret.
    • We wrote up the latest design iteration.
    • We continued benchmarking the Chain Sync Jumping prototype. In particular:
      • We debugged the prototype's performance regression, and unmasked the +actual cause by patching our initial theory (bad queuing behavior)
      • We identified and validated the actual cause (a pathological case in +BlockFetch tiebreaker).

    Support

    • We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother +to serve a local immutable DB.

    Conway era

    • We integrated the Conway era into consensus.

    Technical debt

    • We fixed a bug with followers, which was discovered by property tests.
    • We developed a DSL for specifying and running ChainDB test cases.
    • We fixed failing tests with iterators.
    • We created micro-benchmarks for adding transactions to the mempool.

    Fostering collaboration

    • We released a new technical documentation site for consensus.
    • We factored out several packages to external repositories. Some of this work +originated in the UTxO HD workstream.

    Next steps

    UTxO HD

    Genesis

    Support

    • Design Consensus side of hardfork-enactment in the Voltaire phase +(#4180).
    • Estimate the number of file descriptors Consensus needs +#20.

    Tech debt

    • Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define +for consensus. Pick one and implement benchmarks for it.

    Fostering collaboration

    • Onboard a new team member.

    · 3 min read
    Marcin Szamotulski

    2023-01 - 2023-03

    Main achievements

    Gradual dynamic P2P release on mainnet

    We released two version of cardano-node with dynamic P2P capabilities:

    • 1.35.6
      • we found and fixed a bug in exception handling in peer-state-actionspull-4357
      • we found and fixed a busy loop when demoting a peer from hot to warm pull-4385
    • 1.35.7
      • includes interoperability in the legacy non-p2p network stack pull-4467
    • we fixed a busy loop of demotion & promotions: warm -> hot -> warm[pull-4485] /it will be included in cardano-node-8.0.0 release/.

    Currently there are more than 200 P2P relays on mainnet.

    Peer Sharing

    We implemented /peer sharing/ pull-4019 which will be available as an +experimental feature in one of the future cardano-node releases.

    We implemented /light peer sharing/, e.g. adding inbound connections to the set +of known peers of the outbound governor, which allows to bootstrap relays not +registered on chain. This complements peer sharing. The pull-4277 is in +late review stages.

    Eclipse Evasion

    We finalised design of eclipse evasion and we started implementing it. We +have an initial implementation (not merged). We are in the process of extending +our test suite to cover new implementation details: issue-3886, pull-4462.

    Cardano Network Service Assurance

    Galois has been making progress on Cardano Network Service Assurance project.

    • In cardano-node, they have developed a datapoint abstraction that creates +a queue of (existing) log events, they now have two such datapoints (of log +events) implemented.

    • They have developed a datapoint client executable that can connect to a node +which serves the "new tracing".

    • They have been exploring approaches for the consolidation and analysis of +datapoint data to extract actionable network health status.

    Cardano-Node

    • We made it possible to configure accepted connections limit pull-4902.

    Testing improvements

    • We fixed a bug in network simulation implementation of TCP simultaneous open pull-4265.

    • We introduced header-body split in the diffusion simulation pull-4419 (in review).

    • We introduced initiator only nodes in the diffusion simulation pull-4280.

    • We fixed a connection-manager test failure issue-4370.

    Technical Debt

    • We refactored Snocket interface decoupling it from the multiplexer +pull-4260. This simplified some aspects of the KES agent implementation.

    • We introduces a record for CBOR codecs which are used for various data +structures by mini-protocol codecs pull-4430.

    Documentation

    • We explained some limitations of CDDL in our technical report pull-4351.

    IO-Sim

    • We fixed implementation of MVar's pull-70.

    NoThunks

    • We published a new version of nothunks library to Hackage.

    Next steps

    • Finish implementation & testing of eclipse evasion issue-3886.
    • Optimise connectivity to peers behind firewall issue-4381.
    • Finish the work on enabling block production dynamically to allow using P2P +on block producers issue-3159.
    • If time permits we would like also to reserve some time for finishing +publication of io-sim to Hackage.

    · 7 min read
    Jared Corduan

    Ledger Quarterly Update

    2023-01 - 2023-03

    Main achievements

    CIPs

    • Entering the Voltaire phase - +CIP-1694 received a major update after participation in the design has expanded to +more and more people, including those who attended the Colorado workshop. +See CIP-1694.
    • Ledger CIP category - +The ledger team continues to embrace the CIP process, and has begun the process of +registering the ledger as an official CIP category. +See CIP-84.
    • Ledger serialization - +A CIP for the ledger serialization deprecation cycle has been accepted. +See CIP-80.

    Formal ledger model

    Our new formal specifications backed by Agda have seen a lot of progress. +The majority of the ideas in CIP-1694 are now present, and we have made enough progress +that we can now safely say that the PDF produced by the Agda model will be the +official ledger specification for the Conway ledger era. +See the repository.

    Conway ledger era

    Progress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model. +The major component still missing is the DRep stake distribution, which still presents some +technical challenges.

    [pull-3176] +[pull-3216] +[pull-3226] +[pull-3291] +[pull-3326] +[pull-3330] +[pull-3339]

    DRep stake distribution computation

    Adding another large stake distribution to the ledger state must proceed with caution. +We do not want the memory used by the node to increase too much, +and performance problems can lead to reduced block production. +We have prototyped, tested, and benchmarked several approaches that could give us +the current DRep stake distribution at each epoch boundary. +This has very important implications, since we want every ADA holder to be able to at any +time (such as during a contentious vote) register themselves as a DRep and still have time +to vote themselves on the issue.

    [pull-3344] +[pull-3353] +[pull-3364]

    Integration work

    The ledger has made some wonderful improvements over the past six months, +but which entail a significant amount of integration efforts:

    • Our new versioned CBOR schemes
    • Individual deposit tracking
    • An improved cross-era interface utilizing lenses
    • A new ledger API
    • Re-arranging the ledger stake in preparation for CIP-1694
    • Versioning our Haskell packages +using CHaPs.
    • Consistent conventions for variable names

    [pull-3279] +[pull-3282] +[pull-3288] +[pull-3289] +[pull-3292] +[pull-3297] +[pull-3298] +[pull-3299] +[pull-3300] +[pull-3302] +[pull-3303] +[pull-3308] +[pull-3342] +[pull-3345] +[pull-3356] +[pull-3357] +[pull-3360] +[pull-3361] +[pull-3363] +[pull-4349] +[pull-378] +[pull-376] +[pull-373] +[pull-370] +[pull-361] +[pull-4976] +[pull-5013]

    Deposit tracking

    Individual deposits (for stake credential and stake pool registrations) were not tracked by the ledger. +Deposits were returned according to the current protocol parameters. +When the values of these two protocol parameters change, the deposit pot +is adjusted by adding to, or removing from, the reserves.

    This has several problems:

    • Most people expect a deposit to be paid back exactly.
    • We cannot increase the deposit amount once the reserves hits zero.
    • If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials.
    • Because of the problems above, it is going to be incredibly hard to ever change the values.
    • There is a serious issue involving hard forks. +The consensus layer makes the decision about whether or not to enact a hard fork based on +the protocol parameter update state two stability windows before the end of the epoch. +However, the ledger will reject a protocol parameter update on the epoch boundary +if the deposit pot adjustments cannot be reconciled with the reseve pot. +This means that if quorum is met regarding changing the major protocol version, +but the update is rejected on the epoch boundary, consensus will change the era but the +ledger will not change the major protocol version, leaving the ledger in a split-brain state.

    Because we never actually changed the values of the two deposits amounts in the protocol parameters +on mainnet, we were able to retroactively change the behavior. +We made the following changes:

    • Individual deposits are tracked in the DState.
    • The amount deposited is always returned.

    [pull-3195] +[pull-3202] +[pull-3217]

    New ledger API

    We have significantly built up the ledger API. +We will eventually replace much of the cardano-api in the node repository with this ledger API.

    [pull-3242] +[pull-3248] +[pull-3328]

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We have a new declaritive infrastructure for building constraint-based generators, +which instead generate a random ledger state representative of not just an initial state, +but also those representative of the end result of a long sequence of valid blocks. +Moreover, these generators are very fast and are much more random than our old generators. +Before we can start using them for our existing property tests, however, we still need to +expand them to generate a valid block for a given ledger state.

    [pull-3219]

    Technical debt

    We continued to address technical debt as much as we can.

    [pull-3167] +[pull-3170] +[pull-3172] +[pull-3175] +[pull-3184] +[pull-3205] +[pull-3208] +[pull-3210] +[pull-3212] +[pull-3218] +[pull-3222] +[pull-3223] +[pull-3224] +[pull-3225] +[pull-3229] +[pull-3239] +[pull-3241] +[pull-3244] +[pull-3245] +[pull-3249] +[pull-3260] +[pull-3263] +[pull-3264] +[pull-3268] +[pull-3269] +[pull-3270] +[pull-3274] +[pull-3276] +[pull-3277] +[pull-3286] +[pull-3290] +[pull-3295] +[pull-3296] +[pull-3306] +[pull-3307] +[pull-3310] +[pull-3311] +[pull-3316] +[pull-3320] +[pull-3323] +[pull-3327] +[pull-3331] +[pull-3332] +[pull-3333] +[pull-3338] +[pull-3341] +[pull-3347] +[pull-3350] +[pull-3351] +[pull-3352] +[pull-3354]

    Critical fixes

    We fixed two critical issues:

    • Growing block production delay on the epoch boundary: [pull-3209]
    • Unexpected node shutdown from balanceR: [pull-3343]

    Next steps

    • Conway spec - +Complete the first version of the conway formal specification.
    • DRep stake distribution - +Have the ledger compute the DRep stake distribution with acceptible performance.
    • Devnet ready - +Have the Haskell implementation of the conway era in sync with the formal specification, +and integrate the changes with consensus and node. +All the details might not be finalized, but the wire specification and the API should +be stable so that conway can be placed on a devnet for tool builders to start integrating with.
    • Plutus V3 - +Integrate Plutus V3 into the ledger, including a new script context which supports DReps.

    More details

    This quarterly report was based off of the following fortnightly ones:

    · 4 min read
    Damian Nadales

    Consensus Quarterly Update

    2022-12 - 2023-01

    Main achievements

    UTxO HD

    The prototype is feature complete and thoroughly tested at the consensus level. +In particular, we invested a lot of time in writing property-test for the +mempool, and other crucial new parts of the prototype. Now we are ready to run +integration tests and system-level benchmarks.

    Genesis

    We identified and fixed a slowdown in cross-era forecasting that was inhibiting +our efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7% +speedup in full sync times in the baseline.

    We also started prototyping a self-contained implementation of the Genesis +dynamics (in particular of the parts intentionally not part of the ChainSync +Jumping prototype) that furthered our understanding of subtleties and edge +cases.

    Support

    • We worked on designing integration of new VRF and KES crypto into consensus.
      • Crypto class was split into two parts: Crypto and HeaderCrypto.
      • With the Ledger team's help, we refactored cardano-ledger to use a proxy +type for VRF.

    Conway era

    • PR went through its second review round. It is about to be merged, but it got +delayed due to people's availability during Christmas break.

    Technical debt

    • We improved the capabilities of our io-sim library, which is key for testing +and simulating Cardano components.
    • We removed thunks from epoch translations in the ledger, which is important +for reducing memory consumption of the Cardano node.

    Fostering collaboration

    • We added a tutorial on how to instantiate the Consensus layer to run custom +ledgers. This should be a valuable resource to people looking to roll their +own custom blockchain (either for commercial or research purposes).
    • We added an overview of consensus to the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    Next steps

    UTxO HD

    • Evaluate the extensibility of the prototype. Moving the UTxO to disk is only +the first step towards reducing the memory requirements of Cardano node, and +ensuring its long term sustainability. In the future, we plan on moving other +large maps, such as delegation maps. The prototype should be able to +accommodate these changes without any major modifications.
    • Start the integration with other downstream components, such as the wallet and +db-sync. The idea is to identify and address any potential pain points that +might arise during this integration.
    • Run integration tests and system-level benchmarks.

    Genesis

    • Finish benchmarking and tuning the fast-path ChainSync Jumping prototype
    • Expand and optimize the self-contained implementation of the Disconnect Rule +(including density comparisons and the LoE)
    • Develop documentation and smoke tests for these components.
    • Start modifying the ChainSync Client for the LoP and LoR.

    Support

    • Help the Network team with diagnosing performance regression in block +production.

    Tech debt

    • Fix property-test failures concerning iterators (#3999 and +#4183).

    Fostering collaboration

    Risks

    UTxO HD

    • Moving other parts of the ledger state to disk might require a major redesign +of the prototype. For instance, if it turns out that the epoch change rules +require access to the full ledger state. If this is the case, we might +accept this risk and do the redesign after the initial release of UTxO-HD.
    • Integration with downstream clients might require more work than we +anticipate.
    • Access to the benchmarking's team time and resources.
    • Benchmarking results might show significant performance degradation, which +will require additional work if such performance degradation is not accepted +by other stakeholders.
    • The prototype's performance might not be accepted by other stakeholders. Here +we need to clearly communicate that this is necessary to ensure that as the +blockchain size grows, the node can operate within reasonable memory +constraints.

    · 5 min read
    Marcin Szamotulski

    Network Quarterly Update

    2022-11 - 2023-01

    Summary

    The primary goal of the networking team was to focus on the single relay +release of P2P. We fixed a number of small late bugs, and concluded QA +& performance testing. Although it was discovered a regression in performance +of block production when P2P is enabled, relaying with P2P performs better +comparing to a non p2p. We concluded that this is not a blocker for the Single +Relay Release which is planned shortly.

    Peer sharing has gone through review and final review is +just being done right now. After merging it will still be disabled (hidden +behind a flag) as it's not safe without eclipse evasion. We started +implementing light peer sharing (i.e. include inbound peers into known peer set +of the outbound governor).

    We started a detailed eclipse evasion design, it will continue in the next +quarter.

    We also made a major revision of package structure of the network packages. We +ended up with a very clean dependency graph (pr #4155).

    Armando Santos delivered a talk at the ODOPIS 2022 conference on principles +of distributed systems in Brussels. The slides are available here.

    Neil Davies gave an invited seminar on DeltaQ at Université Catholique de +Louvain.

    We also found and fixed a few of bugs:

    • a bug in keep alive mini-protocol which resulted in warm to cold transitions +to be always executed through a timeout path rather than do a clean demotion +([pr #4168]).

    • fixed an assetion failure in the outbound governor (issue #4177)

    Next steps

    We will work towards the next release of P2P for block producer nodes. This includes:

    • analysing performance regression for BP nodes when using P2P
    • finish the work on controlling the block forger through node kernel (pr #3800)
    • address issue #3907 and write a script to analyse deployment of P2P relays

    We would like also to push forward eclipse evasion. Although most of the work +has be done already the release of io-sim on Hackage will happen in the +next quarter.

    We would also like to address chain-sync timeout issue recently +diagnosed by Karl Knutsson.

    If time permits we would also like to address some technical debt, especially:

    Risks

    The performance regression for block producer with P2P needs to be investigated +in the near future. This is blocker for the release of P2P on BP nodes.

    Detailed log

    Contributions to Ouroboros-Network

    • We added TraceDemoteLocalAsynchronous, which enables notification of critical issues for SPOs
    • We fixed cardano-ping compatibility with NodeToNodeV_10 (P2P, pr #4165)
    • We fixed a bug in demotion peers to cold which affected P2P nodes (commit-61058aa5c2)
    • Karl Knutsson enhanced SendFetchRequest (commit-bb1c3dddee), open-source contribution)
    • We turned SizeInBytes into a newtype.
    • We extended CONTRIBUTING.md, README.md, added CODE_OF_CONDUCT.
    • We fixed DNS test failure issue #4191
    • We fixed a simulation bug found in issue #4258
    • [pr #4168]
    • issue #4177

    Contributions to Cardano-Node

    • We maintained the Single Relay Release pr #4612, (e.g. fixing CI issues, +Rebasing it when necessary, publishing packages to Cardano Haskell Packages);
    • We enhanced JSON serialisation / deserialisation of NodeToNodeVersion and NodeToClientVersion;

    Contributions to IOSim

    • We started to use Cardano Haskell Packages for IOSim (pr #48)
    • We updated change log files
    • We added support of ghc-9.4 (pr #50)

    We also addressed the following issues in pr #57 in order to prepare the package for publication on Hackage:

    • refactored io-classes timers API (issue #46);
    • created a new package si-timers which exposes an interface using SI units +and is safe on 32-bit systems (issue #59);
    • added monad transformers instances for classes defined in io-classes (issue #58);
    • created io-classes-mtl package which includes (experimental) instances for monad transformers;
    • provide MonadMonotonicTimeNSec in io-classes and MonadMonotonicTime in si-timers (so that io-classes follow the base package);
    • added registerCancellableDelay in si-timers (which allowed us to hide fancy timer api and clean io-classes)
    • added support for js_HOST_ARCH (the new GHC JS backend)

    Note the pr #57 contains almost 40 commits, and was a major step forward for +io-sim ecosystem. We also prepared a draft pr #4281 which updates +ouroboros-network.

    Other changes for 1.0.0.0 release on Hackage:

    • Refactored test suite (pr #47)
    • Updated documentation, cabal files, CONTRIBUTING, SECURITY documents, etc in pr #60, currently under review.
    + + + + \ No newline at end of file diff --git a/quarterly/page/2/index.html b/quarterly/page/2/index.html new file mode 100644 index 00000000000..c08dc6db0ae --- /dev/null +++ b/quarterly/page/2/index.html @@ -0,0 +1,137 @@ + + + + + +Blog | Cardano Development Updates + + + + + + + + + + + + +
    +

    · 3 min read
    Marcin Szamotulski

    Open Source Quarterly Update

    2022-11 - 2023-01

    Summary

    In the last quarter the open-source initiative delivered a comprehensive report +on the state of our repositories. As part of this work stream we +identified the key open-source repositories for the cardano project across all +the projects From a list of more than 500 repositories (some of which are +forks) we identified key repositories which constitute the core of Cardano. +20 of them were identified as to be transferred to the future MBO which will +govern Cardano development. Some where excluded (like io-sim and +typed-protocols), to be govern by IOG, since they have a much broader +application than Cardano itself, and thus we think their open-source future +will be better outside of the Cardano umbrella.

    Christian Taylor identified a number of ways we can improve our repositories to +make them more attractive for open-source contributions by analysing each of +them. This includes adding or improving various documentation files, like +CONTRIBUTING files, adding code of conduct, improving readme files, issue +& pull request templates etc. Christian also computed various interesting +metrics which gives a very good insight into the development practices: e.g. +average merge ratio, average number of reviews, comments and many more! The +presentation is available here.

    We followed with work on the Cardano Engineering Handbook. We included +a standard code of conduct which is now used by most important projects in the +Cardano space. We included cardano-node's security policy and added +a responsible disclosure policy. We also described how roles and +responsibilities should be clarified. This progress was made by +a collaborative effort of the Cardano Core, Plutus and Architecture teams, and +it wouldn't be possible without Michael Peyton Jones, Arnaud Bailly, Kevin +Hammond, Jared Corduan and Marcin Szamotulski.

    We also improved the documentation of key repositories, by adding description, +improving their README file & CONTRIBUTING files, adding code of conducts +following the Cardano Engineering Handbook. This includes improvements to:

    And also

    The work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan.

    In this quarter we also identified a number of projects which can be published to +Hackage (Haskell's package repository) or crate (Rust package repository). +The list contains 21 packages, 2 of which (hedgehog-extras and +quickcheck-dynamic) are already published on Hackage and another 5 (from +the io-sim repository) are close to be published.

    Detailed log

    The progress of the open-source project is tracked in this project.

    · 4 min read
    Damian Nadales

    Consensus Quarterly Update

    2022-09 - 2022-11

    Main achievements

    UTxO HD

    • As a consequence of the errors observed when running distributed mempool +benchmarks, we re-designed the UTxO HD mempool integration, which fixed these +errors and lead to a simpler and more maintainable design.

    • We focused on increasing test coverage for the UTxO-HD prototype. In +particular, we added property tests for:

      • Backing store (work ongoing)
      • Era transitions
    • The property tests we added uncovered several bugs, which is a great result +given the exponential increase in the cost of finding bugs as they are closer +to deployment.

    • One of the errors found by our tests required us to work on improvements in +the Haskell bindings for LMDB. This work is ongoing.

    • We started working on the mempool property tests that will exercise the new +code paths that UTxO HD introduced.

    • We developed, benchmarked and tested an implementation of sequences of +differences based on "anti-diffs". Performance results of diff sequence +operations show that we achieved a speedup of about 4x across several +scenarios. Note: this speedup is taking into account diff sequence operations +only, so the consensus-wide speedup is less than 4x.

    • We integrated the "anti-diff" prototype into the UTxO HD feature branch.

    Genesis

    • We wrote a simulator that demonstrates soundness of an abstract implementation +of the new chain selection rule.
    • We elaborated a draft specification for the Genesis implementation (currently +awaiting feedback from other architects).
    • We elaborated a draft specification for the ChainSync Jumping optimization. In +particular, this includes a proof sketch that the latter preserves liveness +and safety in all cases.
    • With the Networking team, we co-designed the eclipse avoidance mechanism, +specifically its coherence with the Genesis implementation plan's security +and its dependence on the new ChainSync Jumping optimization.
    • We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a +performance degradation wrt the baseline. Our optimization attempts so far +have brought the performance closer to the baseline, but not yet to parity.

    Conway era

    • We did most of the heavy lifting required to integrate the Conway era into the +Consensus layer.

    Technical debt

    • We started working on enabling CI nightly tests, which revealed several test +failures due to thunks being found it data structures used by the ledger and +consensus. We made a lot of progress fixing those thunk errors, but some +errors still remain.

    • We elaborated a db-analyser benchmark for the ledger operations. This led us +to the identification of high processing time at epoch boundaries, and we +could not observe any performance degradation that can be attributed to era +changes.

    • We fixed a source of flakiness in the ChainDB QSM test.

    • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    • We fixed a bug in the maximum-allowed ledger major protocol version.

    Fostering collaboration

    • We spent time making cardano-updates the central source of information for +the core teams stakeholders.
    • We went through the Galois gap analysis and extracted actionable points to +take on next.
    • Bart and Yogesh continued with their onboarding and stated making substantial +contributions to consensus.

    Next steps

    UTxO HD

    • Finish the mempool property tests.
    • Benchmark the latest version of the prototype.
    • Elaborate a document that describes new integration test scenarios and pass it +to the SDET team.
    • Bring query UTxO by address command performance on par with the baseline +version.

    Genesis

    • Receive and incorporate Duncan's feedback on the first draft specification for +the Genesis implementation.
    • Begin prototyping the first genesis implementation, unless the first draft +needs major changes.
    • Draft a second revision of the Genesis report.
    • Review the second revision with a wider audience, which includes at least +Alexander Russell. That feedback will drive a third and hopefully final +revision.
    • Investigate how to mitigate the ~30% slowdown we have observed so far in the +ChainSync jumping prototype, and try to mitigate it. In particular, we might +need to optimize the existing BlockFetch logic.

    Tech debt

    • Enabling nightly CI tests.

    Fostering collaboration

    • Merge the tutorial document Galois wrote; requires CI integration.
    • Come up with our own documentation improvements, many of which were suggested +in the Galois gap analysis.
    • Try to hire a new team member.

    · 4 min read
    Marcin Szamotulski

    Network Quarterly Update

    2022-09 - 2022-11

    Summary of most important improvements

    During this quarter the networking team delivered low level specification of +peer sharing & eclipse evasion. We held a session with the consensus & the +scientists; we got a positive feedback on the design.

    Further we focused on implementation of peer sharing. We produced a detail +design and an early implementation.

    We prepared the P2P Single Relay Release (cardano-node-1.35.5). It +includes over 130 patches of network stack improvements over the +previous version 1.35.4, which were accomplished over a longer period of +time. Among them are both bug fixes and UX improvements for stake pool +operators like simplified format of the topology file, or +improvements in the logged messages:

    We also provide better integration with systemd (socket +activation improvements) or improvements in the networking stack:

    • exit policies,
    • peer metrics improvements,
    • DNS TTL improvements (which make it harder to misconfigure the +system, an issue discovered by the performance & monitoring team),
    • do not trigger inbound idle timeout for node-to-client connections (pr +#3844), an issue reported to us by Matthias Benkort from +Cardano Foundation.

    Duncan has been making progress with the input endorsers demo. His simulation +provides a useful animated visualisation and live quantification of behaviour +of the modeled design.

    We also improved our e2e diffusion simulation by implementing header-body +split, similar to what the real implementation does.

    We also made some advances towards our future goals of P2P release for block +producer nodes (pr #3800 - in review) & for Daedalus users +(pr #3690 - merged).

    Detailed log

    • We expanded diffusion simulation with block-fetch protocol bringing it closer +to the production system.

    • We addressed some additional technical depth in diffusion simulation

    • We slightly improved documentation & CI of io-sim and typed-protocols +repositories for open-source contributors.

    • We closed a number of issues towards publishing io-sim on Hackage (only two +essential issues are left open).

    • We pushed a branch of typed-protocols which captures one of the developer UX +problems in the API which we need to solve.

    • We identified and fixed an issue related to systemd sockets.

    • We identified and fixed an issue in consensus initialisation not giving +feedback on early errors.

    • We deployed RT View, identified a number of issues which were communicated to +the performance & monitoring team.

    • We finished high level & detailed design of peer sharing, very early +implementation of peer sharing is done (note that peer sharing cannot be +safely deployed without eclipse evasion & genesis).

    • We finished high level design of eclipse evasion, and started working on +a detailed design.

    • We were assigned the role of release engineer for 1.35.5 release (the P2P +single relay release); we prepared a cardano-node for 1.35.5 release which +contains more than 130 patches of just network stack improvements done over +last few months.

    • We diagnosed and fixed an tricky bug in the peer state actions (a component +which sits between outbound governor and connection manager). That bug was +introduced earlier this year and never released. It was caught by the QA +testing framework. We expanded our diffusion simulation to cover such case and +also mitigated a chance for reintroducing such a bug in future.

    • We identified and quite likely mitigated a misconfiguration in the +benchmarking cluster (next benchmarking run will confirm our hypothesis).

    • We simplified the format of p2p topology file, we got positive feedback from +SPOs.

    • We raised severities of some of the logging messages, which is an important +improvement for SPOs, exchanges and other users of the system.

    • We worked on input endorsers simulation which gives both animated and +quantified live feedback on network operation, using a simplified model of +a TCP/IP network.

    Next quarter

    • Release the Single Relay P2P Release 1.35.5.

    • Carry on with Peer Sharing (review, testing).

    • Deliver a talk at Conference on Principles of Distributed Systems 2022 in Brussels, Belgium.

    • Present Detailed Design of Eclipse Evasion and start implementation phase.

    • Work on P2P Block Producer release.

    • Carry on with publishing of io-sim on Hackage.

    · 2 min read
    Jared Corduan

    Ledger Quarterly Update

    2022-09 - 2022-11-04

    • We finished a minimal ledger era capable of master key rotation. +This will be re-purposed our upcoming work.
    • We have the humble beginnings of a proper ledger API.
    • We improved the problematic cost model serialization +(recall the song and dance about updating the cost model one epoch after the hard fork).
    • We have added benchmarks for problematic areas.
    • Massive repository restructure and cleanup.
      • Unified and consistent variable name schemes (not completely finished, but nearly there).
      • Massive reduction in type constraints, which causes a lot of developer friction, +in our code and also downstream.
      • More organized module structures.
      • Improved generators for our property tests.
      • We removed our dependency on cardano-prelude.
    • The formal ledger model has come a long way.
      • We created a fork of Agda that provides some meta-programming support for the ledger rules.
      • We have a large amount of the basic UTxO support in the model.
      • We can generate a good looking PDF from the model.
      • We can produce Haskell from the model.
      • We have a nice finite set theory library that we can use for many of the ledger rules.
      • We have nix support for the model.

    Next steps

    • Individual tracking of deposits. [issue-3113]
    • Versioned CBOR encoders/decoders. [issue-3014]
    • New ledger era transaction body (and the surround work associated with it).
    • Designs for the next ledger era.

    · 2 min read
    Jordan Millar

    Node-Api-Cli Quarterly Update

    2022-09 - 2022-11-04

    • Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0
    • Major clean up of stale iusses + PRs.
    • Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs
    • cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node.
    • cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation.
    • General documentation updates and improvements
    • Addition of tx-mempool command which allows users to:
      • Query the node about the current mempool's capacity and sizes
      • Request the next transaction from the mempool's current list
      • Query if a particular transaction exists in the mempool
    • Initial refactoring of cardano-testnet

    Next quarter

    • cardano-api
      • Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately.
    • cardano-testnet
    • Serenity
      • Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above.
    • General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new.
    + + + + \ No newline at end of file diff --git a/quarterly/rss.xml b/quarterly/rss.xml new file mode 100644 index 00000000000..9c033e530ca --- /dev/null +++ b/quarterly/rss.xml @@ -0,0 +1,562 @@ + + + + Cardano Development Updates Blog + https://input-output-hk.github.io/cardano-updates/quarterly + Cardano Development Updates Blog + Thu, 07 Dec 2023 21:19:58 GMT + https://validator.w3.org/feed/docs/rss2.html + https://github.com/jpmonette/feed + en + + <![CDATA[Consensus Q2 2023 Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q2-consensus + 2023-Q2-consensus + Thu, 07 Dec 2023 21:19:58 GMT + + 2023-04 -- 2023-06

    Main achievements

    UTxO HD

    • We finished a major prototype refactoring, which includes:
      • A better and finer grained DB lock mechanism.
      • Elimination of race conditions.
      • Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance.
      • Architectural simplifications and performance improvements.
    • We implemented a new package to support db-sync integration with UTxO-HD.
    • We ran another set of ad-hoc benchmarks:
      • We uncovered a performance regression on the Network component when using GHC-9.2/9.4.
      • The synchronization and replay speed are as expected.
      • However, we uncovered memory consumption issues (see figure below).
        • The in-memory backend is consuming more memory than the baseline.
        • The LMDB backend shows an unexpected memory usage peak.
        • Investigation on these issues is ongoing.
    • We integrated the latest changes in main branch.
      • This required a re-design of the mempool to include the mempool fairness +improvement.

    Genesis

    • The Genesis work for this PI focused on an high-priority issue from the IOG Researchers' feedback on the proposal.
      • This particular question was not anticipated when the Q2 PI was planned.
      • As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized.
      • That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package.
    • The IOG Researchers' feedback on the design was very valuable. It had two primary effects.
    • Outcome 1: We re-introduced distinct behaviors when the node is "syncing" versus when it is "caught up".
      • This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated.
      • The additional design complexity is relatively small.
    • Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.
      • The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era.
      • All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras.
      • Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later.
      • The primary invention was a model for bounding how much benefit the adversary's long-range attack could possibly gain from Praos's natural short forks.
    • Relevant questions that the IOG Researchers are still assessing.
      • These do not block the Genesis implementation, but do affect the ultimate values of specific parameters.
      • Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?
      • Question 2: what is the upper bound on how much grinding can improve the adversary's leader schedule within some Genesis window?

    Support

    • We performed an analysis on number of file descriptors used by Consensus, this +information can be used by the node operators to check if the number of file +descriptors they want to support are enough, thus improving the user (eg node +operator) experience.
    • We implemented a mempool fairness improvement, by which transactions are +guaranteed to be processed irrespective of their size.

    Technical debt

    • We fixed a bug in followers logic, which was discovered by our QuickCheck +property tests.
    • We created an immutable DB +server. This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results.
    • We created a db-truncater tool, which can be used in disaster recovery and benchmarking scenarios.
    • We created a benchmarks comparison tool that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance improvements introduced by the Ledger team in version 0.6.0.0 of Consensus wrt version 0.5.0.0.

    Fostering collaboration

    • We released fs-sim as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project.
    • We migrated the consensus code to a new repository, splitting +it from the ouroboros-network repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases).
    • We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users).
    • We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.

    Next steps

    UTxO HD

    Genesis

    • We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work.
    ]]>
    + consensus +
    + + <![CDATA[Network Q2 2023 Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q2-network + 2023-Q2-network + Thu, 07 Dec 2023 21:19:58 GMT + + 2023-04 - 2023-06

    Main achievements

    Eclipse Evasion

    We finalised the design of eclipse evasion and implemented its mechanism which +relays on connectivity to big ledger peers. Big ledger peers are the +largest ledger peers which accumulate 90% of stake (currently there are less +than 1000 of them). The outbound governor has new targets for known, +established and active big ledger peers which work in a similar way that +such targets work for ledger peers. The ouroboros-network#4662 PR is +currently in review.

    As part of this work we also identified a bug which would prevent a node to +connect to itself. Such connections are not easily detectable and are expected +to be dropped by the churn mechanism, nonetheless they should not be buggy. +The failure was discovered thanks to our e2e simulation of diffusion using +io-sim & property based testing.

    The PR also refactors the heart of the ouroboros-network interface reducing +technical debt that would otherwise accumulate.

    We also identified a possible improvement in the churn mechanism, which will be +implemented in Q3. Churn needs to await for peers to terminate, we can +improve the synchronisation. [ouroboros-network#4617]

    Ecosystem P2P Deployment Progress

    We reached 50% of stake in hands of SPOs who run at least on P2P relay. Now +also Emurgo and CF are running some P2P relays. Also 20% of IOG relays are +running in P2P mode.

    P2P Progress

    Peer Sharing

    We implemented bootstrapping for peer sharing (also known as light peer +sharing). New downstream (inbound) peers are now added to the known peers of +the outbound governor. Together with peer sharing this allows for non +registered relays to propagate through the network. ouroboros-network#3596

    Please note that peer sharing is disabled by default and is not considered safe +until Bootstrap Peers (see below) or Genesis is implemented.

    Diffusion (P2P)

    • We designed a feature which will reduce the load on IOG relays (in future +also run by CF & Emurgo). The feature consists of two parts. A new source +of peers called bootstrap peers (obtained from via an https request), the +ability to switch from bootstrap peers to ledger peers if the node is synced +(we are collaborating with the consensus team on the interface Bootstrap +Peers IER). This feature will be completed in Q3. +ouroboros-network#4530

    • We published a blog post about P2P design & implementation.

    • Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections: +ouroboros-network#4559.

    • We merged changes which allow the consensus layer to start / stop block +forging thread. This will allow to deploy P2P block producing nodes which +serve as a live backup node. ouroboros-consensus#140

    • We fixed a few bugs in local root peers DNS resolution service: +ouroboros-network#4583, ouroboros-network#4571.

    • We limited concurrency of DNS name resolutions: ouroboros-network#4596.

    • Galois Inc implemented query option for Handshake: ouroboros-network#4256.

    • We fixed handshake query timeout: ouroboros-network#4608.

    • We implemented warm valency for local root peers. This can help when using +DNS names in local root peers which resolve to many IP addresses. ouroboros-network#4575

    • We merged handshake changes which allow query protocol versions. Thanks to +James Parker from Galois Inc.: ouroboros-network#4256, cardano-cli#30.

    Other Improvements & Developments

    CDDL

    • We added node-to-node and node-to-client CDDL specs / tests for encoding +of NodeToNodeVersionData and NodeToClientVersionData.

    • We clarified an inconsistency between CDDL spec and implementation which is +highly polymorphic. We designed and implemented a fix for tx-submission +and local-tx-submission mini-protocols. Specs for other mini-protocols will +be improved at a later stage. ouroboros-network#4580

    Cardano Ping

    IOSim

    Typed Protocols

    Cardano Client

    • We fixed a bug in cardano-client-0.1.0.2 release which results in clients +(e.g. db-sync) negotiate an experimental protocol version.

    Technical debt

    CI improvements

    GHC 9.4 & 9.6

    We made all repositories under our control compile with ghc-9.4 and ghc-9.6 +which includes ouroboros-network, io-sim, typed-protocols and +Win32-network.

    Next steps

    We will continue towards our aspirational roadmap.

    • We will continue reviewing eclipse evasion.
    • As ouroboros-consensus#140 was merged, we are making progress towards +releasing P2P on block production nodes. We hope to analyse performance +regression on such nodes observed on the benchmarking cluster. roadmap-3887
    • We are also focused on roadmap-3969. Note that it was expanded in Q2.
    ]]>
    + network +
    + + <![CDATA[SRE Q2 2023 Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q2-sre + 2023-Q2-sre + Thu, 07 Dec 2023 21:19:58 GMT + + 2023-04 - 2023-06

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Expanding the darwin CI cluster and adding aarch64 builder support
    • Adding bare metal capability to bitte clusters
    • Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality
    • Creation of pool performance analysis queries and scripting
    • Migration of testnet metadata server to cardano-world
    • Cardano shelley qa migration to cardano-world
    • Cardano sanchonet environment spin up to test Conway era functionality
    • Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature

    Next steps

    • Continue with the conversion of mainnet to using p2p topology
    ]]>
    + sre +
    + + <![CDATA[Performance & Tracing Q3 2023 Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q3-performance-and-tracing + 2023-Q3-performance-and-tracing + Thu, 07 Dec 2023 21:19:58 GMT + + 2023-07 - 2023-09

    Main achievements

    • Release benchmarking
    • Developing and running UTxO-HD benchmarks - in-memory flavour
    • P2P benchmarks, facilitating rollout
    • Production-readiness of the new Nomad cluster has been reached
    • Optimization of and introspection capability for the new tracing system
    • GHC9 performance investigation (and possible remedy)
    • Conensus QTAs: first real-world application of prototype

    Release benchmarking

    Ongoing release benchmarking is a crucial safeguard to cardano-node's release cycle from a performance perspective. We've performed and analyzed benchmarks for node versions 8.2.x to 8.5 throughout Q3.

    UTxO-HD benchmarks

    Targeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery.

    P2P benchmarks

    In Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature.

    New nomad cluster

    The new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received +various rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest +of our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it +ready for production use.

    New tracing system

    Our new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that +it is roughly on par with the legacy system while offering a richer feature set and greater flexibility.

    Additionally, in Q3 we equipped the system with an introspection capability. This is now used for generating +end user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system.

    GHC9 performance

    In Q3, a joint investigation with DevX into GHC9's behaviour revealed where and how GHC9 misses opportunities for +optimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable +those optimizations - which is still being validated.

    Consensus QTAs

    In collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations' +performance characteristics. It's now applicable, and being applied, to a real-world task - namely +gathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds.

    Next steps

    Benchmarking:

    In Q4, the focus will be on:

    • facilitating the next mainnet release
    • benchmarking runs in the Conway era
    • developing benchmarks / workloads for Conway-exclusive actions
    • implementing a specialized benchmark setup for the UTxO-HD on-disk variant
    • developing new Plutus benchmarks to safeguard Plutus V3
    • benchmarks regarding the rollout of P2P

    Performance

    For certain blocking performance issues we've located the cause, or even found a solution in a cross-team effort. In Q4 we'll advance that work to ensure the ongoing +release cycle for mainnet, as well as make GHC9 become a viable release platform.

    New tracing system

    For the new tracing system, we'll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support.

    UTxO-HD monitoring

    We'll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way.

    Nomad backend

    From Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad.

    Workbench

    We will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with cardano-node.

    Consensus component QTAs (co-development)

    In Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation.

    ]]>
    + performance-tracing +
    + + <![CDATA[SRE Q3 2023 Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q3-sre + 2023-Q3-sre + Thu, 07 Dec 2023 21:19:58 GMT + + 2023-07 - 2023-09

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Completion of mainnet relay networking conversion to p2p topology
    • Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality
    • Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines
    • Creation of a nix content addressed packages repository, capkgs:
      • To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells
    • Creation of a cardano performance benchmarking cluster, cardano-perf:
      • To replace legacy cluster benchmark tooling
    • Creation of a cardano cluster composition repository, cardano-parts:
      • For enabling multi-cluster, multi-role cardano network deployments
    • Creation of a cardano testnets repository, cardano-playground:
      • Utilizing cardano-parts for testnet deployments
    • Creation of a sanchonet demo repository, sanchonet-demo:
      • Utilizing cardano-parts for fast sanchonet test environment and demo purposes

    Next steps

    • Continue with migration of cardano-world testnets to cardano-playground
    • Proceed with spinup of mainnet p2p bootstrap cluster
    • Scale down mainnet non-p2p legacy cluster at the appropriate time
    ]]>
    + sre +
    + + <![CDATA[Consensus Quarterly Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-04-25-consensus + 2023-04-25-consensus + Tue, 25 Apr 2023 00:00:00 GMT + + Consensus Quarterly Update

    2023-01 - 2023-03

    Main achievements

    UTxO HD

    • We finished the testing activities for the prototype, which involved adding +new tests, and fixing and enabling temporarily disabled tests.
    • We spent a substantial amount of effort refactoring and cleaning the +prototype.
    • We audited the UTxO HD prototype to make sure it can accommodate the migration +of other tables (eg stake-keys registration) from memory to disk. The result +of the audit was positive.
    • We ran ad-hoc benchmarks for reading keys and flushing values to disk. No +unexpected costs found.
    • We ran the first system level benchmarks. The performance regressions reported +were due to an unrealistic snapshotting rate. We need to re-run them again +after we design a more fine grained locking mechanism.

    Genesis

    • We elaborated a roadmap of the remaining work for Genesis.
    • We presented the design to the IOG Researchers and PNSol on February 20. The +design was well received. We updated the Genesis design with the researcher's +feedback.
      • We plugged the new DoS vector identified during the aforementioned +presentation.
    • We developed a generator for adversarial leader schedules that satisfy key +Ouroboros properties, which will be used to test the Genesis design.
      • The generator enables use of smaller Ouroboros parameters, which makes +extrema more likely and counterxamples easier interpret.
    • We wrote up the latest design iteration.
    • We continued benchmarking the Chain Sync Jumping prototype. In particular:
      • We debugged the prototype's performance regression, and unmasked the +actual cause by patching our initial theory (bad queuing behavior)
      • We identified and validated the actual cause (a pathological case in +BlockFetch tiebreaker).

    Support

    • We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother +to serve a local immutable DB.

    Conway era

    • We integrated the Conway era into consensus.

    Technical debt

    • We fixed a bug with followers, which was discovered by property tests.
    • We developed a DSL for specifying and running ChainDB test cases.
    • We fixed failing tests with iterators.
    • We created micro-benchmarks for adding transactions to the mempool.

    Fostering collaboration

    • We released a new technical documentation site for consensus.
    • We factored out several packages to external repositories. Some of this work +originated in the UTxO HD workstream.

    Next steps

    UTxO HD

    Genesis

    Support

    • Design Consensus side of hardfork-enactment in the Voltaire phase +(#4180).
    • Estimate the number of file descriptors Consensus needs +#20.

    Tech debt

    • Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define +for consensus. Pick one and implement benchmarks for it.

    Fostering collaboration

    • Onboard a new team member.
    ]]>
    + consensus +
    + + <![CDATA[Network Q1 2023 Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-04-04-network + 2023-04-04-network + Tue, 04 Apr 2023 00:00:00 GMT + + 2023-01 - 2023-03

    Main achievements

    Gradual dynamic P2P release on mainnet

    We released two version of cardano-node with dynamic P2P capabilities:

    • 1.35.6
      • we found and fixed a bug in exception handling in peer-state-actionspull-4357
      • we found and fixed a busy loop when demoting a peer from hot to warm pull-4385
    • 1.35.7
      • includes interoperability in the legacy non-p2p network stack pull-4467
    • we fixed a busy loop of demotion & promotions: warm -> hot -> warm[pull-4485] /it will be included in cardano-node-8.0.0 release/.

    Currently there are more than 200 P2P relays on mainnet.

    Peer Sharing

    We implemented /peer sharing/ pull-4019 which will be available as an +experimental feature in one of the future cardano-node releases.

    We implemented /light peer sharing/, e.g. adding inbound connections to the set +of known peers of the outbound governor, which allows to bootstrap relays not +registered on chain. This complements peer sharing. The pull-4277 is in +late review stages.

    Eclipse Evasion

    We finalised design of eclipse evasion and we started implementing it. We +have an initial implementation (not merged). We are in the process of extending +our test suite to cover new implementation details: issue-3886, pull-4462.

    Cardano Network Service Assurance

    Galois has been making progress on Cardano Network Service Assurance project.

    • In cardano-node, they have developed a datapoint abstraction that creates +a queue of (existing) log events, they now have two such datapoints (of log +events) implemented.

    • They have developed a datapoint client executable that can connect to a node +which serves the "new tracing".

    • They have been exploring approaches for the consolidation and analysis of +datapoint data to extract actionable network health status.

    Cardano-Node

    • We made it possible to configure accepted connections limit pull-4902.

    Testing improvements

    • We fixed a bug in network simulation implementation of TCP simultaneous open pull-4265.

    • We introduced header-body split in the diffusion simulation pull-4419 (in review).

    • We introduced initiator only nodes in the diffusion simulation pull-4280.

    • We fixed a connection-manager test failure issue-4370.

    Technical Debt

    • We refactored Snocket interface decoupling it from the multiplexer +pull-4260. This simplified some aspects of the KES agent implementation.

    • We introduces a record for CBOR codecs which are used for various data +structures by mini-protocol codecs pull-4430.

    Documentation

    • We explained some limitations of CDDL in our technical report pull-4351.

    IO-Sim

    • We fixed implementation of MVar's pull-70.

    NoThunks

    • We published a new version of nothunks library to Hackage.

    Next steps

    • Finish implementation & testing of eclipse evasion issue-3886.
    • Optimise connectivity to peers behind firewall issue-4381.
    • Finish the work on enabling block production dynamically to allow using P2P +on block producers issue-3159.
    • If time permits we would like also to reserve some time for finishing +publication of io-sim to Hackage.
    ]]>
    + network +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-04-03-ledger + 2023-04-03-ledger + Mon, 03 Apr 2023 00:00:00 GMT + + Ledger Quarterly Update

    2023-01 - 2023-03

    Main achievements

    CIPs

    • Entering the Voltaire phase - +CIP-1694 received a major update after participation in the design has expanded to +more and more people, including those who attended the Colorado workshop. +See CIP-1694.
    • Ledger CIP category - +The ledger team continues to embrace the CIP process, and has begun the process of +registering the ledger as an official CIP category. +See CIP-84.
    • Ledger serialization - +A CIP for the ledger serialization deprecation cycle has been accepted. +See CIP-80.

    Formal ledger model

    Our new formal specifications backed by Agda have seen a lot of progress. +The majority of the ideas in CIP-1694 are now present, and we have made enough progress +that we can now safely say that the PDF produced by the Agda model will be the +official ledger specification for the Conway ledger era. +See the repository.

    Conway ledger era

    Progress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model. +The major component still missing is the DRep stake distribution, which still presents some +technical challenges.

    [pull-3176] +[pull-3216] +[pull-3226] +[pull-3291] +[pull-3326] +[pull-3330] +[pull-3339]

    DRep stake distribution computation

    Adding another large stake distribution to the ledger state must proceed with caution. +We do not want the memory used by the node to increase too much, +and performance problems can lead to reduced block production. +We have prototyped, tested, and benchmarked several approaches that could give us +the current DRep stake distribution at each epoch boundary. +This has very important implications, since we want every ADA holder to be able to at any +time (such as during a contentious vote) register themselves as a DRep and still have time +to vote themselves on the issue.

    [pull-3344] +[pull-3353] +[pull-3364]

    Integration work

    The ledger has made some wonderful improvements over the past six months, +but which entail a significant amount of integration efforts:

    • Our new versioned CBOR schemes
    • Individual deposit tracking
    • An improved cross-era interface utilizing lenses
    • A new ledger API
    • Re-arranging the ledger stake in preparation for CIP-1694
    • Versioning our Haskell packages +using CHaPs.
    • Consistent conventions for variable names

    [pull-3279] +[pull-3282] +[pull-3288] +[pull-3289] +[pull-3292] +[pull-3297] +[pull-3298] +[pull-3299] +[pull-3300] +[pull-3302] +[pull-3303] +[pull-3308] +[pull-3342] +[pull-3345] +[pull-3356] +[pull-3357] +[pull-3360] +[pull-3361] +[pull-3363] +[pull-4349] +[pull-378] +[pull-376] +[pull-373] +[pull-370] +[pull-361] +[pull-4976] +[pull-5013]

    Deposit tracking

    Individual deposits (for stake credential and stake pool registrations) were not tracked by the ledger. +Deposits were returned according to the current protocol parameters. +When the values of these two protocol parameters change, the deposit pot +is adjusted by adding to, or removing from, the reserves.

    This has several problems:

    • Most people expect a deposit to be paid back exactly.
    • We cannot increase the deposit amount once the reserves hits zero.
    • If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials.
    • Because of the problems above, it is going to be incredibly hard to ever change the values.
    • There is a serious issue involving hard forks. +The consensus layer makes the decision about whether or not to enact a hard fork based on +the protocol parameter update state two stability windows before the end of the epoch. +However, the ledger will reject a protocol parameter update on the epoch boundary +if the deposit pot adjustments cannot be reconciled with the reseve pot. +This means that if quorum is met regarding changing the major protocol version, +but the update is rejected on the epoch boundary, consensus will change the era but the +ledger will not change the major protocol version, leaving the ledger in a split-brain state.

    Because we never actually changed the values of the two deposits amounts in the protocol parameters +on mainnet, we were able to retroactively change the behavior. +We made the following changes:

    • Individual deposits are tracked in the DState.
    • The amount deposited is always returned.

    [pull-3195] +[pull-3202] +[pull-3217]

    New ledger API

    We have significantly built up the ledger API. +We will eventually replace much of the cardano-api in the node repository with this ledger API.

    [pull-3242] +[pull-3248] +[pull-3328]

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We have a new declaritive infrastructure for building constraint-based generators, +which instead generate a random ledger state representative of not just an initial state, +but also those representative of the end result of a long sequence of valid blocks. +Moreover, these generators are very fast and are much more random than our old generators. +Before we can start using them for our existing property tests, however, we still need to +expand them to generate a valid block for a given ledger state.

    [pull-3219]

    Technical debt

    We continued to address technical debt as much as we can.

    [pull-3167] +[pull-3170] +[pull-3172] +[pull-3175] +[pull-3184] +[pull-3205] +[pull-3208] +[pull-3210] +[pull-3212] +[pull-3218] +[pull-3222] +[pull-3223] +[pull-3224] +[pull-3225] +[pull-3229] +[pull-3239] +[pull-3241] +[pull-3244] +[pull-3245] +[pull-3249] +[pull-3260] +[pull-3263] +[pull-3264] +[pull-3268] +[pull-3269] +[pull-3270] +[pull-3274] +[pull-3276] +[pull-3277] +[pull-3286] +[pull-3290] +[pull-3295] +[pull-3296] +[pull-3306] +[pull-3307] +[pull-3310] +[pull-3311] +[pull-3316] +[pull-3320] +[pull-3323] +[pull-3327] +[pull-3331] +[pull-3332] +[pull-3333] +[pull-3338] +[pull-3341] +[pull-3347] +[pull-3350] +[pull-3351] +[pull-3352] +[pull-3354]

    Critical fixes

    We fixed two critical issues:

    • Growing block production delay on the epoch boundary: [pull-3209]
    • Unexpected node shutdown from balanceR: [pull-3343]

    Next steps

    • Conway spec - +Complete the first version of the conway formal specification.
    • DRep stake distribution - +Have the ledger compute the DRep stake distribution with acceptible performance.
    • Devnet ready - +Have the Haskell implementation of the conway era in sync with the formal specification, +and integrate the changes with consensus and node. +All the details might not be finalized, but the wire specification and the API should +be stable so that conway can be placed on a devnet for tool builders to start integrating with.
    • Plutus V3 - +Integrate Plutus V3 into the ledger, including a new script context which supports DReps.

    More details

    This quarterly report was based off of the following fortnightly ones:

    ]]>
    + ledger +
    + + <![CDATA[Consensus Quarterly Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-01-18-consensus + 2023-01-18-consensus + Wed, 18 Jan 2023 00:00:00 GMT + + Consensus Quarterly Update

    2022-12 - 2023-01

    Main achievements

    UTxO HD

    The prototype is feature complete and thoroughly tested at the consensus level. +In particular, we invested a lot of time in writing property-test for the +mempool, and other crucial new parts of the prototype. Now we are ready to run +integration tests and system-level benchmarks.

    Genesis

    We identified and fixed a slowdown in cross-era forecasting that was inhibiting +our efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7% +speedup in full sync times in the baseline.

    We also started prototyping a self-contained implementation of the Genesis +dynamics (in particular of the parts intentionally not part of the ChainSync +Jumping prototype) that furthered our understanding of subtleties and edge +cases.

    Support

    • We worked on designing integration of new VRF and KES crypto into consensus.
      • Crypto class was split into two parts: Crypto and HeaderCrypto.
      • With the Ledger team's help, we refactored cardano-ledger to use a proxy +type for VRF.

    Conway era

    • PR went through its second review round. It is about to be merged, but it got +delayed due to people's availability during Christmas break.

    Technical debt

    • We improved the capabilities of our io-sim library, which is key for testing +and simulating Cardano components.
    • We removed thunks from epoch translations in the ledger, which is important +for reducing memory consumption of the Cardano node.

    Fostering collaboration

    • We added a tutorial on how to instantiate the Consensus layer to run custom +ledgers. This should be a valuable resource to people looking to roll their +own custom blockchain (either for commercial or research purposes).
    • We added an overview of consensus to the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    Next steps

    UTxO HD

    • Evaluate the extensibility of the prototype. Moving the UTxO to disk is only +the first step towards reducing the memory requirements of Cardano node, and +ensuring its long term sustainability. In the future, we plan on moving other +large maps, such as delegation maps. The prototype should be able to +accommodate these changes without any major modifications.
    • Start the integration with other downstream components, such as the wallet and +db-sync. The idea is to identify and address any potential pain points that +might arise during this integration.
    • Run integration tests and system-level benchmarks.

    Genesis

    • Finish benchmarking and tuning the fast-path ChainSync Jumping prototype
    • Expand and optimize the self-contained implementation of the Disconnect Rule +(including density comparisons and the LoE)
    • Develop documentation and smoke tests for these components.
    • Start modifying the ChainSync Client for the LoP and LoR.

    Support

    • Help the Network team with diagnosing performance regression in block +production.

    Tech debt

    • Fix property-test failures concerning iterators (#3999 and +#4183).

    Fostering collaboration

    Risks

    UTxO HD

    • Moving other parts of the ledger state to disk might require a major redesign +of the prototype. For instance, if it turns out that the epoch change rules +require access to the full ledger state. If this is the case, we might +accept this risk and do the redesign after the initial release of UTxO-HD.
    • Integration with downstream clients might require more work than we +anticipate.
    • Access to the benchmarking's team time and resources.
    • Benchmarking results might show significant performance degradation, which +will require additional work if such performance degradation is not accepted +by other stakeholders.
    • The prototype's performance might not be accepted by other stakeholders. Here +we need to clearly communicate that this is necessary to ensure that as the +blockchain size grows, the node can operate within reasonable memory +constraints.
    ]]>
    + consensus +
    + + <![CDATA[Network Quarterly Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-01-13-network + 2023-01-13-network + Fri, 13 Jan 2023 00:00:00 GMT + + Network Quarterly Update

    2022-11 - 2023-01

    Summary

    The primary goal of the networking team was to focus on the single relay +release of P2P. We fixed a number of small late bugs, and concluded QA +& performance testing. Although it was discovered a regression in performance +of block production when P2P is enabled, relaying with P2P performs better +comparing to a non p2p. We concluded that this is not a blocker for the Single +Relay Release which is planned shortly.

    Peer sharing has gone through review and final review is +just being done right now. After merging it will still be disabled (hidden +behind a flag) as it's not safe without eclipse evasion. We started +implementing light peer sharing (i.e. include inbound peers into known peer set +of the outbound governor).

    We started a detailed eclipse evasion design, it will continue in the next +quarter.

    We also made a major revision of package structure of the network packages. We +ended up with a very clean dependency graph (pr #4155).

    Armando Santos delivered a talk at the ODOPIS 2022 conference on principles +of distributed systems in Brussels. The slides are available here.

    Neil Davies gave an invited seminar on DeltaQ at Université Catholique de +Louvain.

    We also found and fixed a few of bugs:

    • a bug in keep alive mini-protocol which resulted in warm to cold transitions +to be always executed through a timeout path rather than do a clean demotion +([pr #4168]).

    • fixed an assetion failure in the outbound governor (issue #4177)

    Next steps

    We will work towards the next release of P2P for block producer nodes. This includes:

    • analysing performance regression for BP nodes when using P2P
    • finish the work on controlling the block forger through node kernel (pr #3800)
    • address issue #3907 and write a script to analyse deployment of P2P relays

    We would like also to push forward eclipse evasion. Although most of the work +has be done already the release of io-sim on Hackage will happen in the +next quarter.

    We would also like to address chain-sync timeout issue recently +diagnosed by Karl Knutsson.

    If time permits we would also like to address some technical debt, especially:

    Risks

    The performance regression for block producer with P2P needs to be investigated +in the near future. This is blocker for the release of P2P on BP nodes.

    Detailed log

    Contributions to Ouroboros-Network

    • We added TraceDemoteLocalAsynchronous, which enables notification of critical issues for SPOs
    • We fixed cardano-ping compatibility with NodeToNodeV_10 (P2P, pr #4165)
    • We fixed a bug in demotion peers to cold which affected P2P nodes (commit-61058aa5c2)
    • Karl Knutsson enhanced SendFetchRequest (commit-bb1c3dddee), open-source contribution)
    • We turned SizeInBytes into a newtype.
    • We extended CONTRIBUTING.md, README.md, added CODE_OF_CONDUCT.
    • We fixed DNS test failure issue #4191
    • We fixed a simulation bug found in issue #4258
    • [pr #4168]
    • issue #4177

    Contributions to Cardano-Node

    • We maintained the Single Relay Release pr #4612, (e.g. fixing CI issues, +Rebasing it when necessary, publishing packages to Cardano Haskell Packages);
    • We enhanced JSON serialisation / deserialisation of NodeToNodeVersion and NodeToClientVersion;

    Contributions to IOSim

    • We started to use Cardano Haskell Packages for IOSim (pr #48)
    • We updated change log files
    • We added support of ghc-9.4 (pr #50)

    We also addressed the following issues in pr #57 in order to prepare the package for publication on Hackage:

    • refactored io-classes timers API (issue #46);
    • created a new package si-timers which exposes an interface using SI units +and is safe on 32-bit systems (issue #59);
    • added monad transformers instances for classes defined in io-classes (issue #58);
    • created io-classes-mtl package which includes (experimental) instances for monad transformers;
    • provide MonadMonotonicTimeNSec in io-classes and MonadMonotonicTime in si-timers (so that io-classes follow the base package);
    • added registerCancellableDelay in si-timers (which allowed us to hide fancy timer api and clean io-classes)
    • added support for js_HOST_ARCH (the new GHC JS backend)

    Note the pr #57 contains almost 40 commits, and was a major step forward for +io-sim ecosystem. We also prepared a draft pr #4281 which updates +ouroboros-network.

    Other changes for 1.0.0.0 release on Hackage:

    • Refactored test suite (pr #47)
    • Updated documentation, cabal files, CONTRIBUTING, SECURITY documents, etc in pr #60, currently under review.
    ]]>
    + network +
    + + <![CDATA[Open-Source Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2023-01-13-open-source + 2023-01-13-open-source + Fri, 13 Jan 2023 00:00:00 GMT + + Open Source Quarterly Update

    2022-11 - 2023-01

    Summary

    In the last quarter the open-source initiative delivered a comprehensive report +on the state of our repositories. As part of this work stream we +identified the key open-source repositories for the cardano project across all +the projects From a list of more than 500 repositories (some of which are +forks) we identified key repositories which constitute the core of Cardano. +20 of them were identified as to be transferred to the future MBO which will +govern Cardano development. Some where excluded (like io-sim and +typed-protocols), to be govern by IOG, since they have a much broader +application than Cardano itself, and thus we think their open-source future +will be better outside of the Cardano umbrella.

    Christian Taylor identified a number of ways we can improve our repositories to +make them more attractive for open-source contributions by analysing each of +them. This includes adding or improving various documentation files, like +CONTRIBUTING files, adding code of conduct, improving readme files, issue +& pull request templates etc. Christian also computed various interesting +metrics which gives a very good insight into the development practices: e.g. +average merge ratio, average number of reviews, comments and many more! The +presentation is available here.

    We followed with work on the Cardano Engineering Handbook. We included +a standard code of conduct which is now used by most important projects in the +Cardano space. We included cardano-node's security policy and added +a responsible disclosure policy. We also described how roles and +responsibilities should be clarified. This progress was made by +a collaborative effort of the Cardano Core, Plutus and Architecture teams, and +it wouldn't be possible without Michael Peyton Jones, Arnaud Bailly, Kevin +Hammond, Jared Corduan and Marcin Szamotulski.

    We also improved the documentation of key repositories, by adding description, +improving their README file & CONTRIBUTING files, adding code of conducts +following the Cardano Engineering Handbook. This includes improvements to:

    And also

    The work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan.

    In this quarter we also identified a number of projects which can be published to +Hackage (Haskell's package repository) or crate (Rust package repository). +The list contains 21 packages, 2 of which (hedgehog-extras and +quickcheck-dynamic) are already published on Hackage and another 5 (from +the io-sim repository) are close to be published.

    Detailed log

    The progress of the open-source project is tracked in this project.

    ]]>
    + open-source +
    + + <![CDATA[Consensus Quarterly Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2022-11-15-consensus + 2022-11-15-consensus + Tue, 15 Nov 2022 00:00:00 GMT + + Consensus Quarterly Update

    2022-09 - 2022-11

    Main achievements

    UTxO HD

    • As a consequence of the errors observed when running distributed mempool +benchmarks, we re-designed the UTxO HD mempool integration, which fixed these +errors and lead to a simpler and more maintainable design.

    • We focused on increasing test coverage for the UTxO-HD prototype. In +particular, we added property tests for:

      • Backing store (work ongoing)
      • Era transitions
    • The property tests we added uncovered several bugs, which is a great result +given the exponential increase in the cost of finding bugs as they are closer +to deployment.

    • One of the errors found by our tests required us to work on improvements in +the Haskell bindings for LMDB. This work is ongoing.

    • We started working on the mempool property tests that will exercise the new +code paths that UTxO HD introduced.

    • We developed, benchmarked and tested an implementation of sequences of +differences based on "anti-diffs". Performance results of diff sequence +operations show that we achieved a speedup of about 4x across several +scenarios. Note: this speedup is taking into account diff sequence operations +only, so the consensus-wide speedup is less than 4x.

    • We integrated the "anti-diff" prototype into the UTxO HD feature branch.

    Genesis

    • We wrote a simulator that demonstrates soundness of an abstract implementation +of the new chain selection rule.
    • We elaborated a draft specification for the Genesis implementation (currently +awaiting feedback from other architects).
    • We elaborated a draft specification for the ChainSync Jumping optimization. In +particular, this includes a proof sketch that the latter preserves liveness +and safety in all cases.
    • With the Networking team, we co-designed the eclipse avoidance mechanism, +specifically its coherence with the Genesis implementation plan's security +and its dependence on the new ChainSync Jumping optimization.
    • We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a +performance degradation wrt the baseline. Our optimization attempts so far +have brought the performance closer to the baseline, but not yet to parity.

    Conway era

    • We did most of the heavy lifting required to integrate the Conway era into the +Consensus layer.

    Technical debt

    • We started working on enabling CI nightly tests, which revealed several test +failures due to thunks being found it data structures used by the ledger and +consensus. We made a lot of progress fixing those thunk errors, but some +errors still remain.

    • We elaborated a db-analyser benchmark for the ledger operations. This led us +to the identification of high processing time at epoch boundaries, and we +could not observe any performance degradation that can be attributed to era +changes.

    • We fixed a source of flakiness in the ChainDB QSM test.

    • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    • We fixed a bug in the maximum-allowed ledger major protocol version.

    Fostering collaboration

    • We spent time making cardano-updates the central source of information for +the core teams stakeholders.
    • We went through the Galois gap analysis and extracted actionable points to +take on next.
    • Bart and Yogesh continued with their onboarding and stated making substantial +contributions to consensus.

    Next steps

    UTxO HD

    • Finish the mempool property tests.
    • Benchmark the latest version of the prototype.
    • Elaborate a document that describes new integration test scenarios and pass it +to the SDET team.
    • Bring query UTxO by address command performance on par with the baseline +version.

    Genesis

    • Receive and incorporate Duncan's feedback on the first draft specification for +the Genesis implementation.
    • Begin prototyping the first genesis implementation, unless the first draft +needs major changes.
    • Draft a second revision of the Genesis report.
    • Review the second revision with a wider audience, which includes at least +Alexander Russell. That feedback will drive a third and hopefully final +revision.
    • Investigate how to mitigate the ~30% slowdown we have observed so far in the +ChainSync jumping prototype, and try to mitigate it. In particular, we might +need to optimize the existing BlockFetch logic.

    Tech debt

    • Enabling nightly CI tests.

    Fostering collaboration

    • Merge the tutorial document Galois wrote; requires CI integration.
    • Come up with our own documentation improvements, many of which were suggested +in the Galois gap analysis.
    • Try to hire a new team member.
    ]]>
    + consensus +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2022-11-09-network + 2022-11-09-network + Wed, 09 Nov 2022 00:00:00 GMT + + Network Quarterly Update

    2022-09 - 2022-11

    Summary of most important improvements

    During this quarter the networking team delivered low level specification of +peer sharing & eclipse evasion. We held a session with the consensus & the +scientists; we got a positive feedback on the design.

    Further we focused on implementation of peer sharing. We produced a detail +design and an early implementation.

    We prepared the P2P Single Relay Release (cardano-node-1.35.5). It +includes over 130 patches of network stack improvements over the +previous version 1.35.4, which were accomplished over a longer period of +time. Among them are both bug fixes and UX improvements for stake pool +operators like simplified format of the topology file, or +improvements in the logged messages:

    We also provide better integration with systemd (socket +activation improvements) or improvements in the networking stack:

    • exit policies,
    • peer metrics improvements,
    • DNS TTL improvements (which make it harder to misconfigure the +system, an issue discovered by the performance & monitoring team),
    • do not trigger inbound idle timeout for node-to-client connections (pr +#3844), an issue reported to us by Matthias Benkort from +Cardano Foundation.

    Duncan has been making progress with the input endorsers demo. His simulation +provides a useful animated visualisation and live quantification of behaviour +of the modeled design.

    We also improved our e2e diffusion simulation by implementing header-body +split, similar to what the real implementation does.

    We also made some advances towards our future goals of P2P release for block +producer nodes (pr #3800 - in review) & for Daedalus users +(pr #3690 - merged).

    Detailed log

    • We expanded diffusion simulation with block-fetch protocol bringing it closer +to the production system.

    • We addressed some additional technical depth in diffusion simulation

    • We slightly improved documentation & CI of io-sim and typed-protocols +repositories for open-source contributors.

    • We closed a number of issues towards publishing io-sim on Hackage (only two +essential issues are left open).

    • We pushed a branch of typed-protocols which captures one of the developer UX +problems in the API which we need to solve.

    • We identified and fixed an issue related to systemd sockets.

    • We identified and fixed an issue in consensus initialisation not giving +feedback on early errors.

    • We deployed RT View, identified a number of issues which were communicated to +the performance & monitoring team.

    • We finished high level & detailed design of peer sharing, very early +implementation of peer sharing is done (note that peer sharing cannot be +safely deployed without eclipse evasion & genesis).

    • We finished high level design of eclipse evasion, and started working on +a detailed design.

    • We were assigned the role of release engineer for 1.35.5 release (the P2P +single relay release); we prepared a cardano-node for 1.35.5 release which +contains more than 130 patches of just network stack improvements done over +last few months.

    • We diagnosed and fixed an tricky bug in the peer state actions (a component +which sits between outbound governor and connection manager). That bug was +introduced earlier this year and never released. It was caught by the QA +testing framework. We expanded our diffusion simulation to cover such case and +also mitigated a chance for reintroducing such a bug in future.

    • We identified and quite likely mitigated a misconfiguration in the +benchmarking cluster (next benchmarking run will confirm our hypothesis).

    • We simplified the format of p2p topology file, we got positive feedback from +SPOs.

    • We raised severities of some of the logging messages, which is an important +improvement for SPOs, exchanges and other users of the system.

    • We worked on input endorsers simulation which gives both animated and +quantified live feedback on network operation, using a simplified model of +a TCP/IP network.

    Next quarter

    • Release the Single Relay P2P Release 1.35.5.

    • Carry on with Peer Sharing (review, testing).

    • Deliver a talk at Conference on Principles of Distributed Systems 2022 in Brussels, Belgium.

    • Present Detailed Design of Eclipse Evasion and start implementation phase.

    • Work on P2P Block Producer release.

    • Carry on with publishing of io-sim on Hackage.

    ]]>
    + network +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2022-11-07-ledger + 2022-11-07-ledger + Mon, 07 Nov 2022 00:00:00 GMT + + Ledger Quarterly Update

    2022-09 - 2022-11-04

    • We finished a minimal ledger era capable of master key rotation. +This will be re-purposed our upcoming work.
    • We have the humble beginnings of a proper ledger API.
    • We improved the problematic cost model serialization +(recall the song and dance about updating the cost model one epoch after the hard fork).
    • We have added benchmarks for problematic areas.
    • Massive repository restructure and cleanup.
      • Unified and consistent variable name schemes (not completely finished, but nearly there).
      • Massive reduction in type constraints, which causes a lot of developer friction, +in our code and also downstream.
      • More organized module structures.
      • Improved generators for our property tests.
      • We removed our dependency on cardano-prelude.
    • The formal ledger model has come a long way.
      • We created a fork of Agda that provides some meta-programming support for the ledger rules.
      • We have a large amount of the basic UTxO support in the model.
      • We can generate a good looking PDF from the model.
      • We can produce Haskell from the model.
      • We have a nice finite set theory library that we can use for many of the ledger rules.
      • We have nix support for the model.

    Next steps

    • Individual tracking of deposits. [issue-3113]
    • Versioned CBOR encoders/decoders. [issue-3014]
    • New ledger era transaction body (and the surround work associated with it).
    • Designs for the next ledger era.
    ]]>
    + ledger +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/quarterly/2022-10-07-node-cli-api + 2022-10-07-node-cli-api + Mon, 07 Nov 2022 00:00:00 GMT + + Node-Api-Cli Quarterly Update

    2022-09 - 2022-11-04

    • Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0
    • Major clean up of stale iusses + PRs.
    • Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs
    • cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node.
    • cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation.
    • General documentation updates and improvements
    • Addition of tx-mempool command which allows users to:
      • Query the node about the current mempool's capacity and sizes
      • Request the next transaction from the mempool's current list
      • Query if a particular transaction exists in the mempool
    • Initial refactoring of cardano-testnet

    Next quarter

    • cardano-api
      • Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately.
    • cardano-testnet
    • Serenity
      • Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above.
    • General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new.
    ]]>
    + cli-api-quarterly +
    +
    +
    \ No newline at end of file diff --git a/quarterly/tags/cli-api-quarterly/index.html b/quarterly/tags/cli-api-quarterly/index.html new file mode 100644 index 00000000000..c482f52416d --- /dev/null +++ b/quarterly/tags/cli-api-quarterly/index.html @@ -0,0 +1,24 @@ + + + + + +One post tagged with "cli-api-quarterly" | Cardano Development Updates + + + + + + + + + + + + +
    +

    One post tagged with "cli-api-quarterly"

    View All Tags

    · 2 min read
    Jordan Millar

    Node-Api-Cli Quarterly Update

    2022-09 - 2022-11-04

    • Various improvements to tests/CI/GHC 9.2.4 preparations/upgrade to cabal-3.8.1.0
    • Major clean up of stale iusses + PRs.
    • Implementation of stale-bot to mitigate against a proliferation of outdated issues and PRs
    • cardano-api refactoring with the aim of exposing more user friendly functions, particularly concerning transaction construction and querying the node.
    • cardano-cli refactoring with the aim of moving reusable functions to cardano-api. We have made strides here and have managed to improve the interface of transaction construction and validation.
    • General documentation updates and improvements
    • Addition of tx-mempool command which allows users to:
      • Query the node about the current mempool's capacity and sizes
      • Request the next transaction from the mempool's current list
      • Query if a particular transaction exists in the mempool
    • Initial refactoring of cardano-testnet

    Next quarter

    • cardano-api
      • Working with Konstantinos and his team to make cardano-api better for dapp developers - we have a google doc for this, I can send it to you privately.
    • cardano-testnet
    • Serenity
      • Continued refactoring of cardano-api and cardano-cli, with the particular focus on extracting re-usable components of cardano-cli and moving them to cardano-api. This is harder to define but will manifest in stuff moving from cardano-cli to cardano-api and is tied in to the cardano-api work specified above.
    • General bug fixing and smaller feature requests for the api/cli that are always coming in. Robert is primarily handling this at the moment as he is relatively new.
    + + + + \ No newline at end of file diff --git a/quarterly/tags/consensus/index.html b/quarterly/tags/consensus/index.html new file mode 100644 index 00000000000..135d9733244 --- /dev/null +++ b/quarterly/tags/consensus/index.html @@ -0,0 +1,125 @@ + + + + + +4 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    4 posts tagged with "consensus"

    View All Tags

    · 5 min read
    Damian Nadales

    2023-04 -- 2023-06

    Main achievements

    UTxO HD

    • We finished a major prototype refactoring, which includes:
      • A better and finer grained DB lock mechanism.
      • Elimination of race conditions.
      • Support for configuring batch query size and flushing rate. This is crucial to allow node users to tweak performance.
      • Architectural simplifications and performance improvements.
    • We implemented a new package to support db-sync integration with UTxO-HD.
    • We ran another set of ad-hoc benchmarks:
      • We uncovered a performance regression on the Network component when using GHC-9.2/9.4.
      • The synchronization and replay speed are as expected.
      • However, we uncovered memory consumption issues (see figure below).
        • The in-memory backend is consuming more memory than the baseline.
        • The LMDB backend shows an unexpected memory usage peak.
        • Investigation on these issues is ongoing.
    • We integrated the latest changes in main branch.
      • This required a re-design of the mempool to include the mempool fairness +improvement.

    Genesis

    • The Genesis work for this PI focused on an high-priority issue from the IOG Researchers' feedback on the proposal.
      • This particular question was not anticipated when the Q2 PI was planned.
      • As a result, the chain generators work, the ChainSync Jumping performance work, and the Genesis node prototype work were deprioritized.
      • That work has accordingly been rolled over into the Statement of Work for the first Genesis vendor work package.
    • The IOG Researchers' feedback on the design was very valuable. It had two primary effects.
    • Outcome 1: We re-introduced distinct behaviors when the node is "syncing" versus when it is "caught up".
      • This eliminated a DoS vector introduced by the proposal, instead of having to argue that it was well-mitigated.
      • The additional design complexity is relatively small.
    • Outcome 2: The issue that was unanticipated is whether the Cardano chain is consistently dense enough to rely on Genesis without any checkpointing.
      • The determination so far is that---assuming the adversary never controls more than four of the seven genesis keys---the most vulnerable segment is in the pure Praos era.
      • All the preceding windows are significantly more robust, including the entire Byron and Transitional Praos eras.
      • Thus checkpointing is not necessary for the initial Genesis release, though it still may be a reasonable addition later.
      • The primary invention was a model for bounding how much benefit the adversary's long-range attack could possibly gain from Praos's natural short forks.
    • Relevant questions that the IOG Researchers are still assessing.
      • These do not block the Genesis implementation, but do affect the ultimate values of specific parameters.
      • Question 1: what is the upper bound on the duration of an eclipse that a healthy Praos node will survive?
      • Question 2: what is the upper bound on how much grinding can improve the adversary's leader schedule within some Genesis window?

    Support

    • We performed an analysis on number of file descriptors used by Consensus, this +information can be used by the node operators to check if the number of file +descriptors they want to support are enough, thus improving the user (eg node +operator) experience.
    • We implemented a mempool fairness improvement, by which transactions are +guaranteed to be processed irrespective of their size.

    Technical debt

    • We fixed a bug in followers logic, which was discovered by our QuickCheck +property tests.
    • We created an immutable DB +server. This tool allows to serve blocks from the immutable DB to a node that connects to it. This has a remarkable value for testing and benchmarking purposes. For instance, by using this component, we can benchmark the performance of different aspects of Consensus, such as syncing from scratch, without adding Network interference in the performance results.
    • We created a db-truncater tool, which can be used in disaster recovery and benchmarking scenarios.
    • We created a benchmarks comparison tool that we plan on using for comparing the performance of two Consensus releases. This will allow us to catch performance regressions early on in the process, before they make it to the node (and show in the system level benchmark tests), thus greatly saving development costs. As an example, the graph below shows the performance improvements introduced by the Ledger team in version 0.6.0.0 of Consensus wrt version 0.5.0.0.

    Fostering collaboration

    • We released fs-sim as open-source repository. This lowers the barrier to entry for external contributors, which will indirectly benefit the Cardano project.
    • We migrated the consensus code to a new repository, splitting +it from the ouroboros-network repository. This will save development effort for both the Network and the Consensus teams, since there will be less interference (for instance when making releases).
    • We made several improvements to our release processes, which will translate in time savings. As an example, we went from 16 to 4 packages, which makes the release process simpler and smother. Our release process now makes it easier to align versions and make releases (both for us and for our downstream users).
    • We added an explanation of the hardfork-combinator forecast horizon, that will benefit not only our team, but future external contributors.

    Next steps

    UTxO HD

    Genesis

    • We will regularly liaise with the vendor(s) satisfying the Genesis Statement(s) of Work.

    · 3 min read
    Damian Nadales

    Consensus Quarterly Update

    2023-01 - 2023-03

    Main achievements

    UTxO HD

    • We finished the testing activities for the prototype, which involved adding +new tests, and fixing and enabling temporarily disabled tests.
    • We spent a substantial amount of effort refactoring and cleaning the +prototype.
    • We audited the UTxO HD prototype to make sure it can accommodate the migration +of other tables (eg stake-keys registration) from memory to disk. The result +of the audit was positive.
    • We ran ad-hoc benchmarks for reading keys and flushing values to disk. No +unexpected costs found.
    • We ran the first system level benchmarks. The performance regressions reported +were due to an unrealistic snapshotting rate. We need to re-run them again +after we design a more fine grained locking mechanism.

    Genesis

    • We elaborated a roadmap of the remaining work for Genesis.
    • We presented the design to the IOG Researchers and PNSol on February 20. The +design was well received. We updated the Genesis design with the researcher's +feedback.
      • We plugged the new DoS vector identified during the aforementioned +presentation.
    • We developed a generator for adversarial leader schedules that satisfy key +Ouroboros properties, which will be used to test the Genesis design.
      • The generator enables use of smaller Ouroboros parameters, which makes +extrema more likely and counterxamples easier interpret.
    • We wrote up the latest design iteration.
    • We continued benchmarking the Chain Sync Jumping prototype. In particular:
      • We debugged the prototype's performance regression, and unmasked the +actual cause by patching our initial theory (bad queuing behavior)
      • We identified and validated the actual cause (a pathological case in +BlockFetch tiebreaker).

    Support

    • We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother +to serve a local immutable DB.

    Conway era

    • We integrated the Conway era into consensus.

    Technical debt

    • We fixed a bug with followers, which was discovered by property tests.
    • We developed a DSL for specifying and running ChainDB test cases.
    • We fixed failing tests with iterators.
    • We created micro-benchmarks for adding transactions to the mempool.

    Fostering collaboration

    • We released a new technical documentation site for consensus.
    • We factored out several packages to external repositories. Some of this work +originated in the UTxO HD workstream.

    Next steps

    UTxO HD

    Genesis

    Support

    • Design Consensus side of hardfork-enactment in the Voltaire phase +(#4180).
    • Estimate the number of file descriptors Consensus needs +#20.

    Tech debt

    • Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define +for consensus. Pick one and implement benchmarks for it.

    Fostering collaboration

    • Onboard a new team member.

    · 4 min read
    Damian Nadales

    Consensus Quarterly Update

    2022-12 - 2023-01

    Main achievements

    UTxO HD

    The prototype is feature complete and thoroughly tested at the consensus level. +In particular, we invested a lot of time in writing property-test for the +mempool, and other crucial new parts of the prototype. Now we are ready to run +integration tests and system-level benchmarks.

    Genesis

    We identified and fixed a slowdown in cross-era forecasting that was inhibiting +our efforts to benchmark the ChainSync Jumping prototype. This resulted in a 7% +speedup in full sync times in the baseline.

    We also started prototyping a self-contained implementation of the Genesis +dynamics (in particular of the parts intentionally not part of the ChainSync +Jumping prototype) that furthered our understanding of subtleties and edge +cases.

    Support

    • We worked on designing integration of new VRF and KES crypto into consensus.
      • Crypto class was split into two parts: Crypto and HeaderCrypto.
      • With the Ledger team's help, we refactored cardano-ledger to use a proxy +type for VRF.

    Conway era

    • PR went through its second review round. It is about to be merged, but it got +delayed due to people's availability during Christmas break.

    Technical debt

    • We improved the capabilities of our io-sim library, which is key for testing +and simulating Cardano components.
    • We removed thunks from epoch translations in the ledger, which is important +for reducing memory consumption of the Cardano node.

    Fostering collaboration

    • We added a tutorial on how to instantiate the Consensus layer to run custom +ledgers. This should be a valuable resource to people looking to roll their +own custom blockchain (either for commercial or research purposes).
    • We added an overview of consensus to the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    Next steps

    UTxO HD

    • Evaluate the extensibility of the prototype. Moving the UTxO to disk is only +the first step towards reducing the memory requirements of Cardano node, and +ensuring its long term sustainability. In the future, we plan on moving other +large maps, such as delegation maps. The prototype should be able to +accommodate these changes without any major modifications.
    • Start the integration with other downstream components, such as the wallet and +db-sync. The idea is to identify and address any potential pain points that +might arise during this integration.
    • Run integration tests and system-level benchmarks.

    Genesis

    • Finish benchmarking and tuning the fast-path ChainSync Jumping prototype
    • Expand and optimize the self-contained implementation of the Disconnect Rule +(including density comparisons and the LoE)
    • Develop documentation and smoke tests for these components.
    • Start modifying the ChainSync Client for the LoP and LoR.

    Support

    • Help the Network team with diagnosing performance regression in block +production.

    Tech debt

    • Fix property-test failures concerning iterators (#3999 and +#4183).

    Fostering collaboration

    Risks

    UTxO HD

    • Moving other parts of the ledger state to disk might require a major redesign +of the prototype. For instance, if it turns out that the epoch change rules +require access to the full ledger state. If this is the case, we might +accept this risk and do the redesign after the initial release of UTxO-HD.
    • Integration with downstream clients might require more work than we +anticipate.
    • Access to the benchmarking's team time and resources.
    • Benchmarking results might show significant performance degradation, which +will require additional work if such performance degradation is not accepted +by other stakeholders.
    • The prototype's performance might not be accepted by other stakeholders. Here +we need to clearly communicate that this is necessary to ensure that as the +blockchain size grows, the node can operate within reasonable memory +constraints.

    · 4 min read
    Damian Nadales

    Consensus Quarterly Update

    2022-09 - 2022-11

    Main achievements

    UTxO HD

    • As a consequence of the errors observed when running distributed mempool +benchmarks, we re-designed the UTxO HD mempool integration, which fixed these +errors and lead to a simpler and more maintainable design.

    • We focused on increasing test coverage for the UTxO-HD prototype. In +particular, we added property tests for:

      • Backing store (work ongoing)
      • Era transitions
    • The property tests we added uncovered several bugs, which is a great result +given the exponential increase in the cost of finding bugs as they are closer +to deployment.

    • One of the errors found by our tests required us to work on improvements in +the Haskell bindings for LMDB. This work is ongoing.

    • We started working on the mempool property tests that will exercise the new +code paths that UTxO HD introduced.

    • We developed, benchmarked and tested an implementation of sequences of +differences based on "anti-diffs". Performance results of diff sequence +operations show that we achieved a speedup of about 4x across several +scenarios. Note: this speedup is taking into account diff sequence operations +only, so the consensus-wide speedup is less than 4x.

    • We integrated the "anti-diff" prototype into the UTxO HD feature branch.

    Genesis

    • We wrote a simulator that demonstrates soundness of an abstract implementation +of the new chain selection rule.
    • We elaborated a draft specification for the Genesis implementation (currently +awaiting feedback from other architects).
    • We elaborated a draft specification for the ChainSync Jumping optimization. In +particular, this includes a proof sketch that the latter preserves liveness +and safety in all cases.
    • With the Networking team, we co-designed the eclipse avoidance mechanism, +specifically its coherence with the Genesis implementation plan's security +and its dependence on the new ChainSync Jumping optimization.
    • We implemented a prototype for ChainSync Jumping. Initial benchmarks showed a +performance degradation wrt the baseline. Our optimization attempts so far +have brought the performance closer to the baseline, but not yet to parity.

    Conway era

    • We did most of the heavy lifting required to integrate the Conway era into the +Consensus layer.

    Technical debt

    • We started working on enabling CI nightly tests, which revealed several test +failures due to thunks being found it data structures used by the ledger and +consensus. We made a lot of progress fixing those thunk errors, but some +errors still remain.

    • We elaborated a db-analyser benchmark for the ledger operations. This led us +to the identification of high processing time at epoch boundaries, and we +could not observe any performance degradation that can be attributed to era +changes.

    • We fixed a source of flakiness in the ChainDB QSM test.

    • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    • We fixed a bug in the maximum-allowed ledger major protocol version.

    Fostering collaboration

    • We spent time making cardano-updates the central source of information for +the core teams stakeholders.
    • We went through the Galois gap analysis and extracted actionable points to +take on next.
    • Bart and Yogesh continued with their onboarding and stated making substantial +contributions to consensus.

    Next steps

    UTxO HD

    • Finish the mempool property tests.
    • Benchmark the latest version of the prototype.
    • Elaborate a document that describes new integration test scenarios and pass it +to the SDET team.
    • Bring query UTxO by address command performance on par with the baseline +version.

    Genesis

    • Receive and incorporate Duncan's feedback on the first draft specification for +the Genesis implementation.
    • Begin prototyping the first genesis implementation, unless the first draft +needs major changes.
    • Draft a second revision of the Genesis report.
    • Review the second revision with a wider audience, which includes at least +Alexander Russell. That feedback will drive a third and hopefully final +revision.
    • Investigate how to mitigate the ~30% slowdown we have observed so far in the +ChainSync jumping prototype, and try to mitigate it. In particular, we might +need to optimize the existing BlockFetch logic.

    Tech debt

    • Enabling nightly CI tests.

    Fostering collaboration

    • Merge the tutorial document Galois wrote; requires CI integration.
    • Come up with our own documentation improvements, many of which were suggested +in the Galois gap analysis.
    • Try to hire a new team member.
    + + + + \ No newline at end of file diff --git a/quarterly/tags/index.html b/quarterly/tags/index.html new file mode 100644 index 00000000000..bc2af96bf7c --- /dev/null +++ b/quarterly/tags/index.html @@ -0,0 +1,24 @@ + + + + + +Tags | Cardano Development Updates + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/quarterly/tags/ledger/index.html b/quarterly/tags/ledger/index.html new file mode 100644 index 00000000000..871224752c1 --- /dev/null +++ b/quarterly/tags/ledger/index.html @@ -0,0 +1,167 @@ + + + + + +2 posts tagged with "ledger" | Cardano Development Updates + + + + + + + + + + + + +
    +

    2 posts tagged with "ledger"

    View All Tags

    · 7 min read
    Jared Corduan

    Ledger Quarterly Update

    2023-01 - 2023-03

    Main achievements

    CIPs

    • Entering the Voltaire phase - +CIP-1694 received a major update after participation in the design has expanded to +more and more people, including those who attended the Colorado workshop. +See CIP-1694.
    • Ledger CIP category - +The ledger team continues to embrace the CIP process, and has begun the process of +registering the ledger as an official CIP category. +See CIP-84.
    • Ledger serialization - +A CIP for the ledger serialization deprecation cycle has been accepted. +See CIP-80.

    Formal ledger model

    Our new formal specifications backed by Agda have seen a lot of progress. +The majority of the ideas in CIP-1694 are now present, and we have made enough progress +that we can now safely say that the PDF produced by the Agda model will be the +official ledger specification for the Conway ledger era. +See the repository.

    Conway ledger era

    Progress on the Haskell implementation of CIP-1694 has gone hand in hand with the formal model. +The major component still missing is the DRep stake distribution, which still presents some +technical challenges.

    [pull-3176] +[pull-3216] +[pull-3226] +[pull-3291] +[pull-3326] +[pull-3330] +[pull-3339]

    DRep stake distribution computation

    Adding another large stake distribution to the ledger state must proceed with caution. +We do not want the memory used by the node to increase too much, +and performance problems can lead to reduced block production. +We have prototyped, tested, and benchmarked several approaches that could give us +the current DRep stake distribution at each epoch boundary. +This has very important implications, since we want every ADA holder to be able to at any +time (such as during a contentious vote) register themselves as a DRep and still have time +to vote themselves on the issue.

    [pull-3344] +[pull-3353] +[pull-3364]

    Integration work

    The ledger has made some wonderful improvements over the past six months, +but which entail a significant amount of integration efforts:

    • Our new versioned CBOR schemes
    • Individual deposit tracking
    • An improved cross-era interface utilizing lenses
    • A new ledger API
    • Re-arranging the ledger stake in preparation for CIP-1694
    • Versioning our Haskell packages +using CHaPs.
    • Consistent conventions for variable names

    [pull-3279] +[pull-3282] +[pull-3288] +[pull-3289] +[pull-3292] +[pull-3297] +[pull-3298] +[pull-3299] +[pull-3300] +[pull-3302] +[pull-3303] +[pull-3308] +[pull-3342] +[pull-3345] +[pull-3356] +[pull-3357] +[pull-3360] +[pull-3361] +[pull-3363] +[pull-4349] +[pull-378] +[pull-376] +[pull-373] +[pull-370] +[pull-361] +[pull-4976] +[pull-5013]

    Deposit tracking

    Individual deposits (for stake credential and stake pool registrations) were not tracked by the ledger. +Deposits were returned according to the current protocol parameters. +When the values of these two protocol parameters change, the deposit pot +is adjusted by adding to, or removing from, the reserves.

    This has several problems:

    • Most people expect a deposit to be paid back exactly.
    • We cannot increase the deposit amount once the reserves hits zero.
    • If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials.
    • Because of the problems above, it is going to be incredibly hard to ever change the values.
    • There is a serious issue involving hard forks. +The consensus layer makes the decision about whether or not to enact a hard fork based on +the protocol parameter update state two stability windows before the end of the epoch. +However, the ledger will reject a protocol parameter update on the epoch boundary +if the deposit pot adjustments cannot be reconciled with the reseve pot. +This means that if quorum is met regarding changing the major protocol version, +but the update is rejected on the epoch boundary, consensus will change the era but the +ledger will not change the major protocol version, leaving the ledger in a split-brain state.

    Because we never actually changed the values of the two deposits amounts in the protocol parameters +on mainnet, we were able to retroactively change the behavior. +We made the following changes:

    • Individual deposits are tracked in the DState.
    • The amount deposited is always returned.

    [pull-3195] +[pull-3202] +[pull-3217]

    New ledger API

    We have significantly built up the ledger API. +We will eventually replace much of the cardano-api in the node repository with this ledger API.

    [pull-3242] +[pull-3248] +[pull-3328]

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We have a new declaritive infrastructure for building constraint-based generators, +which instead generate a random ledger state representative of not just an initial state, +but also those representative of the end result of a long sequence of valid blocks. +Moreover, these generators are very fast and are much more random than our old generators. +Before we can start using them for our existing property tests, however, we still need to +expand them to generate a valid block for a given ledger state.

    [pull-3219]

    Technical debt

    We continued to address technical debt as much as we can.

    [pull-3167] +[pull-3170] +[pull-3172] +[pull-3175] +[pull-3184] +[pull-3205] +[pull-3208] +[pull-3210] +[pull-3212] +[pull-3218] +[pull-3222] +[pull-3223] +[pull-3224] +[pull-3225] +[pull-3229] +[pull-3239] +[pull-3241] +[pull-3244] +[pull-3245] +[pull-3249] +[pull-3260] +[pull-3263] +[pull-3264] +[pull-3268] +[pull-3269] +[pull-3270] +[pull-3274] +[pull-3276] +[pull-3277] +[pull-3286] +[pull-3290] +[pull-3295] +[pull-3296] +[pull-3306] +[pull-3307] +[pull-3310] +[pull-3311] +[pull-3316] +[pull-3320] +[pull-3323] +[pull-3327] +[pull-3331] +[pull-3332] +[pull-3333] +[pull-3338] +[pull-3341] +[pull-3347] +[pull-3350] +[pull-3351] +[pull-3352] +[pull-3354]

    Critical fixes

    We fixed two critical issues:

    • Growing block production delay on the epoch boundary: [pull-3209]
    • Unexpected node shutdown from balanceR: [pull-3343]

    Next steps

    • Conway spec - +Complete the first version of the conway formal specification.
    • DRep stake distribution - +Have the ledger compute the DRep stake distribution with acceptible performance.
    • Devnet ready - +Have the Haskell implementation of the conway era in sync with the formal specification, +and integrate the changes with consensus and node. +All the details might not be finalized, but the wire specification and the API should +be stable so that conway can be placed on a devnet for tool builders to start integrating with.
    • Plutus V3 - +Integrate Plutus V3 into the ledger, including a new script context which supports DReps.

    More details

    This quarterly report was based off of the following fortnightly ones:

    · 2 min read
    Jared Corduan

    Ledger Quarterly Update

    2022-09 - 2022-11-04

    • We finished a minimal ledger era capable of master key rotation. +This will be re-purposed our upcoming work.
    • We have the humble beginnings of a proper ledger API.
    • We improved the problematic cost model serialization +(recall the song and dance about updating the cost model one epoch after the hard fork).
    • We have added benchmarks for problematic areas.
    • Massive repository restructure and cleanup.
      • Unified and consistent variable name schemes (not completely finished, but nearly there).
      • Massive reduction in type constraints, which causes a lot of developer friction, +in our code and also downstream.
      • More organized module structures.
      • Improved generators for our property tests.
      • We removed our dependency on cardano-prelude.
    • The formal ledger model has come a long way.
      • We created a fork of Agda that provides some meta-programming support for the ledger rules.
      • We have a large amount of the basic UTxO support in the model.
      • We can generate a good looking PDF from the model.
      • We can produce Haskell from the model.
      • We have a nice finite set theory library that we can use for many of the ledger rules.
      • We have nix support for the model.

    Next steps

    • Individual tracking of deposits. [issue-3113]
    • Versioned CBOR encoders/decoders. [issue-3014]
    • New ledger era transaction body (and the surround work associated with it).
    • Designs for the next ledger era.
    + + + + \ No newline at end of file diff --git a/quarterly/tags/network/index.html b/quarterly/tags/network/index.html new file mode 100644 index 00000000000..6bc5996df39 --- /dev/null +++ b/quarterly/tags/network/index.html @@ -0,0 +1,156 @@ + + + + + +4 posts tagged with "network" | Cardano Development Updates + + + + + + + + + + + + +
    +

    4 posts tagged with "network"

    View All Tags

    · 6 min read
    Marcin Szamotulski

    2023-04 - 2023-06

    Main achievements

    Eclipse Evasion

    We finalised the design of eclipse evasion and implemented its mechanism which +relays on connectivity to big ledger peers. Big ledger peers are the +largest ledger peers which accumulate 90% of stake (currently there are less +than 1000 of them). The outbound governor has new targets for known, +established and active big ledger peers which work in a similar way that +such targets work for ledger peers. The ouroboros-network#4662 PR is +currently in review.

    As part of this work we also identified a bug which would prevent a node to +connect to itself. Such connections are not easily detectable and are expected +to be dropped by the churn mechanism, nonetheless they should not be buggy. +The failure was discovered thanks to our e2e simulation of diffusion using +io-sim & property based testing.

    The PR also refactors the heart of the ouroboros-network interface reducing +technical debt that would otherwise accumulate.

    We also identified a possible improvement in the churn mechanism, which will be +implemented in Q3. Churn needs to await for peers to terminate, we can +improve the synchronisation. [ouroboros-network#4617]

    Ecosystem P2P Deployment Progress

    We reached 50% of stake in hands of SPOs who run at least on P2P relay. Now +also Emurgo and CF are running some P2P relays. Also 20% of IOG relays are +running in P2P mode.

    P2P Progress

    Peer Sharing

    We implemented bootstrapping for peer sharing (also known as light peer +sharing). New downstream (inbound) peers are now added to the known peers of +the outbound governor. Together with peer sharing this allows for non +registered relays to propagate through the network. ouroboros-network#3596

    Please note that peer sharing is disabled by default and is not considered safe +until Bootstrap Peers (see below) or Genesis is implemented.

    Diffusion (P2P)

    • We designed a feature which will reduce the load on IOG relays (in future +also run by CF & Emurgo). The feature consists of two parts. A new source +of peers called bootstrap peers (obtained from via an https request), the +ability to switch from bootstrap peers to ledger peers if the node is synced +(we are collaborating with the consensus team on the interface Bootstrap +Peers IER). This feature will be completed in Q3. +ouroboros-network#4530

    • We published a blog post about P2P design & implementation.

    • Karl Knutsson (CF) fixed an issue observed on a relay with a lot of outbound connections: +ouroboros-network#4559.

    • We merged changes which allow the consensus layer to start / stop block +forging thread. This will allow to deploy P2P block producing nodes which +serve as a live backup node. ouroboros-consensus#140

    • We fixed a few bugs in local root peers DNS resolution service: +ouroboros-network#4583, ouroboros-network#4571.

    • We limited concurrency of DNS name resolutions: ouroboros-network#4596.

    • Galois Inc implemented query option for Handshake: ouroboros-network#4256.

    • We fixed handshake query timeout: ouroboros-network#4608.

    • We implemented warm valency for local root peers. This can help when using +DNS names in local root peers which resolve to many IP addresses. ouroboros-network#4575

    • We merged handshake changes which allow query protocol versions. Thanks to +James Parker from Galois Inc.: ouroboros-network#4256, cardano-cli#30.

    Other Improvements & Developments

    CDDL

    • We added node-to-node and node-to-client CDDL specs / tests for encoding +of NodeToNodeVersionData and NodeToClientVersionData.

    • We clarified an inconsistency between CDDL spec and implementation which is +highly polymorphic. We designed and implemented a fix for tx-submission +and local-tx-submission mini-protocols. Specs for other mini-protocols will +be improved at a later stage. ouroboros-network#4580

    Cardano Ping

    IOSim

    Typed Protocols

    Cardano Client

    • We fixed a bug in cardano-client-0.1.0.2 release which results in clients +(e.g. db-sync) negotiate an experimental protocol version.

    Technical debt

    CI improvements

    GHC 9.4 & 9.6

    We made all repositories under our control compile with ghc-9.4 and ghc-9.6 +which includes ouroboros-network, io-sim, typed-protocols and +Win32-network.

    Next steps

    We will continue towards our aspirational roadmap.

    • We will continue reviewing eclipse evasion.
    • As ouroboros-consensus#140 was merged, we are making progress towards +releasing P2P on block production nodes. We hope to analyse performance +regression on such nodes observed on the benchmarking cluster. roadmap-3887
    • We are also focused on roadmap-3969. Note that it was expanded in Q2.

    · 3 min read
    Marcin Szamotulski

    2023-01 - 2023-03

    Main achievements

    Gradual dynamic P2P release on mainnet

    We released two version of cardano-node with dynamic P2P capabilities:

    • 1.35.6
      • we found and fixed a bug in exception handling in peer-state-actionspull-4357
      • we found and fixed a busy loop when demoting a peer from hot to warm pull-4385
    • 1.35.7
      • includes interoperability in the legacy non-p2p network stack pull-4467
    • we fixed a busy loop of demotion & promotions: warm -> hot -> warm[pull-4485] /it will be included in cardano-node-8.0.0 release/.

    Currently there are more than 200 P2P relays on mainnet.

    Peer Sharing

    We implemented /peer sharing/ pull-4019 which will be available as an +experimental feature in one of the future cardano-node releases.

    We implemented /light peer sharing/, e.g. adding inbound connections to the set +of known peers of the outbound governor, which allows to bootstrap relays not +registered on chain. This complements peer sharing. The pull-4277 is in +late review stages.

    Eclipse Evasion

    We finalised design of eclipse evasion and we started implementing it. We +have an initial implementation (not merged). We are in the process of extending +our test suite to cover new implementation details: issue-3886, pull-4462.

    Cardano Network Service Assurance

    Galois has been making progress on Cardano Network Service Assurance project.

    • In cardano-node, they have developed a datapoint abstraction that creates +a queue of (existing) log events, they now have two such datapoints (of log +events) implemented.

    • They have developed a datapoint client executable that can connect to a node +which serves the "new tracing".

    • They have been exploring approaches for the consolidation and analysis of +datapoint data to extract actionable network health status.

    Cardano-Node

    • We made it possible to configure accepted connections limit pull-4902.

    Testing improvements

    • We fixed a bug in network simulation implementation of TCP simultaneous open pull-4265.

    • We introduced header-body split in the diffusion simulation pull-4419 (in review).

    • We introduced initiator only nodes in the diffusion simulation pull-4280.

    • We fixed a connection-manager test failure issue-4370.

    Technical Debt

    • We refactored Snocket interface decoupling it from the multiplexer +pull-4260. This simplified some aspects of the KES agent implementation.

    • We introduces a record for CBOR codecs which are used for various data +structures by mini-protocol codecs pull-4430.

    Documentation

    • We explained some limitations of CDDL in our technical report pull-4351.

    IO-Sim

    • We fixed implementation of MVar's pull-70.

    NoThunks

    • We published a new version of nothunks library to Hackage.

    Next steps

    • Finish implementation & testing of eclipse evasion issue-3886.
    • Optimise connectivity to peers behind firewall issue-4381.
    • Finish the work on enabling block production dynamically to allow using P2P +on block producers issue-3159.
    • If time permits we would like also to reserve some time for finishing +publication of io-sim to Hackage.

    · 5 min read
    Marcin Szamotulski

    Network Quarterly Update

    2022-11 - 2023-01

    Summary

    The primary goal of the networking team was to focus on the single relay +release of P2P. We fixed a number of small late bugs, and concluded QA +& performance testing. Although it was discovered a regression in performance +of block production when P2P is enabled, relaying with P2P performs better +comparing to a non p2p. We concluded that this is not a blocker for the Single +Relay Release which is planned shortly.

    Peer sharing has gone through review and final review is +just being done right now. After merging it will still be disabled (hidden +behind a flag) as it's not safe without eclipse evasion. We started +implementing light peer sharing (i.e. include inbound peers into known peer set +of the outbound governor).

    We started a detailed eclipse evasion design, it will continue in the next +quarter.

    We also made a major revision of package structure of the network packages. We +ended up with a very clean dependency graph (pr #4155).

    Armando Santos delivered a talk at the ODOPIS 2022 conference on principles +of distributed systems in Brussels. The slides are available here.

    Neil Davies gave an invited seminar on DeltaQ at Université Catholique de +Louvain.

    We also found and fixed a few of bugs:

    • a bug in keep alive mini-protocol which resulted in warm to cold transitions +to be always executed through a timeout path rather than do a clean demotion +([pr #4168]).

    • fixed an assetion failure in the outbound governor (issue #4177)

    Next steps

    We will work towards the next release of P2P for block producer nodes. This includes:

    • analysing performance regression for BP nodes when using P2P
    • finish the work on controlling the block forger through node kernel (pr #3800)
    • address issue #3907 and write a script to analyse deployment of P2P relays

    We would like also to push forward eclipse evasion. Although most of the work +has be done already the release of io-sim on Hackage will happen in the +next quarter.

    We would also like to address chain-sync timeout issue recently +diagnosed by Karl Knutsson.

    If time permits we would also like to address some technical debt, especially:

    Risks

    The performance regression for block producer with P2P needs to be investigated +in the near future. This is blocker for the release of P2P on BP nodes.

    Detailed log

    Contributions to Ouroboros-Network

    • We added TraceDemoteLocalAsynchronous, which enables notification of critical issues for SPOs
    • We fixed cardano-ping compatibility with NodeToNodeV_10 (P2P, pr #4165)
    • We fixed a bug in demotion peers to cold which affected P2P nodes (commit-61058aa5c2)
    • Karl Knutsson enhanced SendFetchRequest (commit-bb1c3dddee), open-source contribution)
    • We turned SizeInBytes into a newtype.
    • We extended CONTRIBUTING.md, README.md, added CODE_OF_CONDUCT.
    • We fixed DNS test failure issue #4191
    • We fixed a simulation bug found in issue #4258
    • [pr #4168]
    • issue #4177

    Contributions to Cardano-Node

    • We maintained the Single Relay Release pr #4612, (e.g. fixing CI issues, +Rebasing it when necessary, publishing packages to Cardano Haskell Packages);
    • We enhanced JSON serialisation / deserialisation of NodeToNodeVersion and NodeToClientVersion;

    Contributions to IOSim

    • We started to use Cardano Haskell Packages for IOSim (pr #48)
    • We updated change log files
    • We added support of ghc-9.4 (pr #50)

    We also addressed the following issues in pr #57 in order to prepare the package for publication on Hackage:

    • refactored io-classes timers API (issue #46);
    • created a new package si-timers which exposes an interface using SI units +and is safe on 32-bit systems (issue #59);
    • added monad transformers instances for classes defined in io-classes (issue #58);
    • created io-classes-mtl package which includes (experimental) instances for monad transformers;
    • provide MonadMonotonicTimeNSec in io-classes and MonadMonotonicTime in si-timers (so that io-classes follow the base package);
    • added registerCancellableDelay in si-timers (which allowed us to hide fancy timer api and clean io-classes)
    • added support for js_HOST_ARCH (the new GHC JS backend)

    Note the pr #57 contains almost 40 commits, and was a major step forward for +io-sim ecosystem. We also prepared a draft pr #4281 which updates +ouroboros-network.

    Other changes for 1.0.0.0 release on Hackage:

    • Refactored test suite (pr #47)
    • Updated documentation, cabal files, CONTRIBUTING, SECURITY documents, etc in pr #60, currently under review.

    · 4 min read
    Marcin Szamotulski

    Network Quarterly Update

    2022-09 - 2022-11

    Summary of most important improvements

    During this quarter the networking team delivered low level specification of +peer sharing & eclipse evasion. We held a session with the consensus & the +scientists; we got a positive feedback on the design.

    Further we focused on implementation of peer sharing. We produced a detail +design and an early implementation.

    We prepared the P2P Single Relay Release (cardano-node-1.35.5). It +includes over 130 patches of network stack improvements over the +previous version 1.35.4, which were accomplished over a longer period of +time. Among them are both bug fixes and UX improvements for stake pool +operators like simplified format of the topology file, or +improvements in the logged messages:

    We also provide better integration with systemd (socket +activation improvements) or improvements in the networking stack:

    • exit policies,
    • peer metrics improvements,
    • DNS TTL improvements (which make it harder to misconfigure the +system, an issue discovered by the performance & monitoring team),
    • do not trigger inbound idle timeout for node-to-client connections (pr +#3844), an issue reported to us by Matthias Benkort from +Cardano Foundation.

    Duncan has been making progress with the input endorsers demo. His simulation +provides a useful animated visualisation and live quantification of behaviour +of the modeled design.

    We also improved our e2e diffusion simulation by implementing header-body +split, similar to what the real implementation does.

    We also made some advances towards our future goals of P2P release for block +producer nodes (pr #3800 - in review) & for Daedalus users +(pr #3690 - merged).

    Detailed log

    • We expanded diffusion simulation with block-fetch protocol bringing it closer +to the production system.

    • We addressed some additional technical depth in diffusion simulation

    • We slightly improved documentation & CI of io-sim and typed-protocols +repositories for open-source contributors.

    • We closed a number of issues towards publishing io-sim on Hackage (only two +essential issues are left open).

    • We pushed a branch of typed-protocols which captures one of the developer UX +problems in the API which we need to solve.

    • We identified and fixed an issue related to systemd sockets.

    • We identified and fixed an issue in consensus initialisation not giving +feedback on early errors.

    • We deployed RT View, identified a number of issues which were communicated to +the performance & monitoring team.

    • We finished high level & detailed design of peer sharing, very early +implementation of peer sharing is done (note that peer sharing cannot be +safely deployed without eclipse evasion & genesis).

    • We finished high level design of eclipse evasion, and started working on +a detailed design.

    • We were assigned the role of release engineer for 1.35.5 release (the P2P +single relay release); we prepared a cardano-node for 1.35.5 release which +contains more than 130 patches of just network stack improvements done over +last few months.

    • We diagnosed and fixed an tricky bug in the peer state actions (a component +which sits between outbound governor and connection manager). That bug was +introduced earlier this year and never released. It was caught by the QA +testing framework. We expanded our diffusion simulation to cover such case and +also mitigated a chance for reintroducing such a bug in future.

    • We identified and quite likely mitigated a misconfiguration in the +benchmarking cluster (next benchmarking run will confirm our hypothesis).

    • We simplified the format of p2p topology file, we got positive feedback from +SPOs.

    • We raised severities of some of the logging messages, which is an important +improvement for SPOs, exchanges and other users of the system.

    • We worked on input endorsers simulation which gives both animated and +quantified live feedback on network operation, using a simplified model of +a TCP/IP network.

    Next quarter

    • Release the Single Relay P2P Release 1.35.5.

    • Carry on with Peer Sharing (review, testing).

    • Deliver a talk at Conference on Principles of Distributed Systems 2022 in Brussels, Belgium.

    • Present Detailed Design of Eclipse Evasion and start implementation phase.

    • Work on P2P Block Producer release.

    • Carry on with publishing of io-sim on Hackage.

    + + + + \ No newline at end of file diff --git a/quarterly/tags/open-source/index.html b/quarterly/tags/open-source/index.html new file mode 100644 index 00000000000..df5fdda17dd --- /dev/null +++ b/quarterly/tags/open-source/index.html @@ -0,0 +1,53 @@ + + + + + +One post tagged with "open-source" | Cardano Development Updates + + + + + + + + + + + + +
    +

    One post tagged with "open-source"

    View All Tags

    · 3 min read
    Marcin Szamotulski

    Open Source Quarterly Update

    2022-11 - 2023-01

    Summary

    In the last quarter the open-source initiative delivered a comprehensive report +on the state of our repositories. As part of this work stream we +identified the key open-source repositories for the cardano project across all +the projects From a list of more than 500 repositories (some of which are +forks) we identified key repositories which constitute the core of Cardano. +20 of them were identified as to be transferred to the future MBO which will +govern Cardano development. Some where excluded (like io-sim and +typed-protocols), to be govern by IOG, since they have a much broader +application than Cardano itself, and thus we think their open-source future +will be better outside of the Cardano umbrella.

    Christian Taylor identified a number of ways we can improve our repositories to +make them more attractive for open-source contributions by analysing each of +them. This includes adding or improving various documentation files, like +CONTRIBUTING files, adding code of conduct, improving readme files, issue +& pull request templates etc. Christian also computed various interesting +metrics which gives a very good insight into the development practices: e.g. +average merge ratio, average number of reviews, comments and many more! The +presentation is available here.

    We followed with work on the Cardano Engineering Handbook. We included +a standard code of conduct which is now used by most important projects in the +Cardano space. We included cardano-node's security policy and added +a responsible disclosure policy. We also described how roles and +responsibilities should be clarified. This progress was made by +a collaborative effort of the Cardano Core, Plutus and Architecture teams, and +it wouldn't be possible without Michael Peyton Jones, Arnaud Bailly, Kevin +Hammond, Jared Corduan and Marcin Szamotulski.

    We also improved the documentation of key repositories, by adding description, +improving their README file & CONTRIBUTING files, adding code of conducts +following the Cardano Engineering Handbook. This includes improvements to:

    And also

    The work was carried by Marcin Szamotulski, Addie Girouard and Jared Corduan.

    In this quarter we also identified a number of projects which can be published to +Hackage (Haskell's package repository) or crate (Rust package repository). +The list contains 21 packages, 2 of which (hedgehog-extras and +quickcheck-dynamic) are already published on Hackage and another 5 (from +the io-sim repository) are close to be published.

    Detailed log

    The progress of the open-source project is tracked in this project.

    + + + + \ No newline at end of file diff --git a/quarterly/tags/performance-tracing/index.html b/quarterly/tags/performance-tracing/index.html new file mode 100644 index 00000000000..d4ad9a665a0 --- /dev/null +++ b/quarterly/tags/performance-tracing/index.html @@ -0,0 +1,34 @@ + + + + + +One post tagged with "performance-tracing" | Cardano Development Updates + + + + + + + + + + + + +
    +

    One post tagged with "performance-tracing"

    View All Tags

    · 4 min read
    Michael Karg

    2023-07 - 2023-09

    Main achievements

    • Release benchmarking
    • Developing and running UTxO-HD benchmarks - in-memory flavour
    • P2P benchmarks, facilitating rollout
    • Production-readiness of the new Nomad cluster has been reached
    • Optimization of and introspection capability for the new tracing system
    • GHC9 performance investigation (and possible remedy)
    • Conensus QTAs: first real-world application of prototype

    Release benchmarking

    Ongoing release benchmarking is a crucial safeguard to cardano-node's release cycle from a performance perspective. We've performed and analyzed benchmarks for node versions 8.2.x to 8.5 throughout Q3.

    UTxO-HD benchmarks

    Targeting a specific new feature in benchmarks requires development effort and fine-tuning the machinery. In Q3, we achieved that for the in-memory flavour of UTxO-HD, enabling benchmark delivery.

    P2P benchmarks

    In Q3, we performed additional P2P benchmarks to facilitate the comprehensive rollout of that feature.

    New nomad cluster

    The new hardware cluster for benchmarks, which is controlled through the new nomad backend, has received +various rounds of validation and adjustments in Q3 - in addition to finalizing integration with the rest +of our pipeline. The confidence in metrics gathered on the cluster is now sufficient for us to consider it +ready for production use.

    New tracing system

    Our new tracing system has received various rounds of optimization in Q3. We could verify in our benchmarks that +it is roughly on par with the legacy system while offering a richer feature set and greater flexibility.

    Additionally, in Q3 we equipped the system with an introspection capability. This is now used for generating +end user documentation that stays in-sync with definitions in code, and for automated consistency checking of the entire system.

    GHC9 performance

    In Q3, a joint investigation with DevX into GHC9's behaviour revealed where and how GHC9 misses opportunities for +optimization of generated code. This led to an approach to annotate our codebase accordingly to re-enable +those optimizations - which is still being validated.

    Consensus QTAs

    In collaboration with Consensus and DevX, we advanced the Consensus QTAs prototype capturing ledger operations' +performance characteristics. It's now applicable, and being applied, to a real-world task - namely +gathering evidence of the effect of aforementioned changes allowing for performant GHC9 builds.

    Next steps

    Benchmarking:

    In Q4, the focus will be on:

    • facilitating the next mainnet release
    • benchmarking runs in the Conway era
    • developing benchmarks / workloads for Conway-exclusive actions
    • implementing a specialized benchmark setup for the UTxO-HD on-disk variant
    • developing new Plutus benchmarks to safeguard Plutus V3
    • benchmarks regarding the rollout of P2P

    Performance

    For certain blocking performance issues we've located the cause, or even found a solution in a cross-team effort. In Q4 we'll advance that work to ensure the ongoing +release cycle for mainnet, as well as make GHC9 become a viable release platform.

    New tracing system

    For the new tracing system, we'll finalize optimization - current results are already on par with the legacy system. Furthermore, we will finish up comprehensive documentation, as well as description of a recommended setup, for which we can provide initial support.

    UTxO-HD monitoring

    We'll augment our analysis pipeline so it can process monitoring data from UTxO-HD nodes connected to mainnet in a meaningful way.

    Nomad backend

    From Q4 on, this backend will be in production use. We plan on adding various UX and flexibility improvements, and further fine-tuning some profiles for nomad.

    Workbench

    We will prepare for a future move of our performance workbench into a separate project. This entails restructuring, refactoring and reimplementation of certain few components that currently assume to always be in sync with cardano-node.

    Consensus component QTAs (co-development)

    In Q4 there will be ongoing work with and support for the existing prototype. We plan to identify a fixed set of input data that yields results of high informative value, and to formalize the process to a point that enables future automation.

    + + + + \ No newline at end of file diff --git a/quarterly/tags/sre/index.html b/quarterly/tags/sre/index.html new file mode 100644 index 00000000000..3599a0a9841 --- /dev/null +++ b/quarterly/tags/sre/index.html @@ -0,0 +1,24 @@ + + + + + +2 posts tagged with "sre" | Cardano Development Updates + + + + + + + + + + + + +
    +

    2 posts tagged with "sre"

    View All Tags

    · One min read
    John Lotoski

    2023-04 - 2023-06

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Expanding the darwin CI cluster and adding aarch64 builder support
    • Adding bare metal capability to bitte clusters
    • Creating a devx-ci cluster containing a Hydra build server and Linux build farm which is intended to replace Cicero functionality
    • Creation of pool performance analysis queries and scripting
    • Migration of testnet metadata server to cardano-world
    • Cardano shelley qa migration to cardano-world
    • Cardano sanchonet environment spin up to test Conway era functionality
    • Mainnet relay conversion to p2p topology usage is progressing with 50% of mainnet relays now using p2p topology and networking feature

    Next steps

    • Continue with the conversion of mainnet to using p2p topology

    · One min read
    John Lotoski

    2023-07 - 2023-09

    Main achievements

    In addition to ongoing general maintenance and support of cardano environments, main SRE achievements for this quarter include:

    • Completion of mainnet relay networking conversion to p2p topology
    • Cardano sanchonet environment respins for testing new cardano-node pre-release Conway era functionality
    • Stabilization of cardano-explorer in cardano-world using high IOPS bare metal machines
    • Creation of a nix content addressed packages repository, capkgs:
      • To provide lightweight release binaries thereby avoiding sluggish nix flakes and devShells
    • Creation of a cardano performance benchmarking cluster, cardano-perf:
      • To replace legacy cluster benchmark tooling
    • Creation of a cardano cluster composition repository, cardano-parts:
      • For enabling multi-cluster, multi-role cardano network deployments
    • Creation of a cardano testnets repository, cardano-playground:
      • Utilizing cardano-parts for testnet deployments
    • Creation of a sanchonet demo repository, sanchonet-demo:
      • Utilizing cardano-parts for fast sanchonet test environment and demo purposes

    Next steps

    • Continue with migration of cardano-world testnets to cardano-playground
    • Proceed with spinup of mainnet p2p bootstrap cluster
    • Scale down mainnet non-p2p legacy cluster at the appropriate time
    + + + + \ No newline at end of file diff --git a/rss.xml b/rss.xml new file mode 100644 index 00000000000..bd8555903cb --- /dev/null +++ b/rss.xml @@ -0,0 +1,5003 @@ + + + + Cardano Updates Feed + https://input-output-hk.github.io/cardano-updates/ + Regular updates from Cardano Development Teams + Wed, 06 Dec 2023 00:00:00 GMT + https://validator.w3.org/feed/docs/rss2.html + https://github.com/jpmonette/feed + en + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-12-06-ledger + 2023-12-06-ledger + Wed, 06 Dec 2023 00:00:00 GMT + + High level summary

    This period we reached a major milestone, namely we now have an initial version of Conway +conformance testing working. We are now able to generate random valid data with the help +of constraint based testing framework, apply that data to Conway Ledger rules and verify +that the output matches to the one produced by the executable version of the Formal Ledger +Specification, when it is applied to the same random data.

    We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get +Constitutional Committee query is complete and tested. Various improvements to the +testing tools. Addition of more test cases.

    Low level summary

    Conway

    • pull-3888 - Add checks for valid ProtVer when a proposal is a HardFork
    • pull-3902 - Fix pvCanFollow usage in Conway and improve clarity in Shelley
    • pull-3855 - Remove unreachable proposals
    • pull-3903 - Add lenient decoder for Addr
    • pull-3878 - Committee query - implement next epoch change

    Testing

    • pull-3893 - Move tree-diff dependency to tests together with all instances
    • pull-3896 - Fix Brute force failure
    • pull-3904 - New ListWhere Pred added to the Constrained Solver.
    • pull-3907 - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file
    • pull-3883 - Committee QuerySpec Imp Test
    • pull-3909 - Make impAnn a bit more useful, by making the logs scoped by impAnn
    • pull-3908 - Use upstream testing instances for very basic types
    • pull-3912 - Removed call to tail, and the 'watchPulser' test
    • pull-3852 - Added constrained generators to conformance tests - Part 1

    Improvements and releasing

    ]]>
    + ledger +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-12-06-mithril + 2023-12-06-mithril + Wed, 06 Dec 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking.

    Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io.

    Low level overview

    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Create a test network on Sanchonet #1173
    • Worked on the issue Upgrade breaking changes crates #1357
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Completed the issue Enhance aggregator REST API performances #1327
    • Completed the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Make mithril-client examples full crates #1385
    • Completed the issue Manual publication to crates.io with GitHub action #1380
    • Completed the issue Remove sqlite dependency from mithril-client crate #1390
    ]]>
    + mithril +
    + + <![CDATA[Performance & Tracing Update]]> + https://input-output-hk.github.io/cardano-updates/2023-12-04-performance-and-tracing + 2023-12-04-performance-and-tracing + Mon, 04 Dec 2023 00:00:00 GMT + + High level summary
    • Benchmarking: Release benchmarking for node 8.7.0. Also, we performed the first-ever Conway benchmarks.
    • Development: Conway capability of our workload generator has been implemented and merged to master.
    • Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data.
    • Tracing: Quality-of-life improvements to tracing output and addition of a test suite.
    • Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.

    Low level overview

    Benchmarking

    A full set of benchmarks for node 8.7.0 has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of 8.7.0 over 8.6.0, and can confirm no regressions have been introduced.

    Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version. +Only Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty.

    Development

    Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era. +Currently, we're looking into adding Conway-exclusive features, such as DRep registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining DRep sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying.

    Infrastructure

    As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've +improved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data.

    Tracing

    The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages. +Additionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system.

    Nomad backend

    We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases.

    ]]>
    + performance-tracing +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-12-01-hydra + 2023-12-01-hydra + Fri, 01 Dec 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team conducted a packed Monthly Review meeting, +featuring demonstrations and the preparation of the monthly report. They +addressed flakiness in tests and enhanced the logs json schema, +improving overall test reliability. Additionally, the team successfully +built MacOS ARM64 (aarch64-darwin) binaries in CI, expanding platform +support. They further improved the network configuration by detecting +incompatible persisted states, contributing to overall system +robustness. Finally, the team released version 0.14.0, highlighting +their commitment to delivering regular updates and improvements.

    What did the team achieve this week

    • Monthly Review +meeting +packed with demonstrations and prepared monthly report +#1189
    • Fixed several flaky tests and improved the logs json schema +#1188#1190#1192
    • Built MacOS ARM64 (aarch64-darwin) binaries in CI +#1182
    • Improved network configuration by detecting incompatible persisted +states #1174
    • Released version 0.14.0

    What are the goals of next week

    • Start work on incremental decommit
    • Continue shepherding contributed PRs to completion
    • Finish stateless-observation work
    • Open a head on a Conway network
    ]]>
    + hydra +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-29-consensus + 2023-11-29-consensus + Wed, 29 Nov 2023 00:00:00 GMT + + High level summary

    The Consensus team implemented and tested a patch that does not propagate future headers. +It is under review, and we expect it can be released in the next Cardano node version. +On the UTxO-HD front, we finished prototyping the LedgerDB and BackingStore redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend. +With this prototype finished we can start integrating the rest of the code. +We investigated the unexpected performance degradation observed when acquiring the block context. +We also released Cardano node 8.7.0 and moved tree-diff outside cardano-ledger libraries.

    ]]>
    + consensus +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-29-mithril + 2023-11-29-mithril + Wed, 29 Nov 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team released the initial version of the Mithril client library, enabling developers to integrate core Mithril features into their applications. They also released a new distribution, 2347.0, which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements.

    The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance.

    Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users.

    Low level overview

    • Release of the mithril-client library crate
    • Publication of a dev blog post about the released Mithril library
    • Released the new distribution 2347.0
    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Support P2P relay in infrastructure #1361
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue mithril-client verbosity not following usage menu #1325
    • Completed the issue Error message for mithril-client snapshot download #1375
    ]]>
    + mithril +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-24-hydra + 2023-11-24-hydra + Fri, 24 Nov 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team spent significant time opening a head among +themselves on mainnet using the release candidate, revealing and +addressing lurking bugs such as +#1174. Also +required was this change to dynamically calculate the min utxo value +#1176, a +necessary adjustment following the switch to inline datums. The team +engaged with cardano-cli / cardano-api maintainers to discuss recent +changes and collaborated on drafting feature ideas, including providing +Conway support +for the Hydra roadmap. As part of ongoing improvements, they +experimented with writing the specification in markdown instead of +LaTex.

    What did the team achieve this week

    • Opened head among us on mainnet and uncovered a few lurking bugs like +#1174 in the +release candidate
    • Calculate the min utxo value instead of hard-coding it +#1176, which is +needed since we switched to inline datums.
    • Met with the cardano-cli / cardano-api maintainers to discuss +recent changes and way forward
    • Drafted features ideas to provide Conway +support on the +Hydra roadmap
    • Experimented in writing the specification in markdown instead of LaTex

    What are the goals of next week

    • Have the Monthly review meeting with several demos
    • Release version 0.14.0 with this +scope
    • Complete tidying up chain layer via stateless observation changes in +hydra-node +#1096
    • Update dependencies to prepare for Conway +#1114
    ]]>
    + hydra +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-24-sre + 2023-11-24-sre + Fri, 24 Nov 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • The cardano-node nixos service now supports SIGHUP p2p topology reloading when the useSystemdReload option is enabled

    Lower level summary

    Capkgs

    • Update cardano-db-sync and offchain-metadata-tools package paths and/or references: capkgs-compare

    Cardano-node

    • Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: cardano-node-pull-5537
      • Creates a useSystemdReload bool option for the cardano-node nixos service
      • This will move the topology file(s) to /etc/cardano-node/topology-$i.yaml and inject systemd reload hooks for p2p configured cardano-node instances
      • Moving topology files to /etc also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired

    Cardano-parts

    • Adds a metadata server profile and a number of other features and improvements: cardano-parts-pull-20
      • Adds a new metadata-service profile
      • Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile
      • Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish
      • Adds extra node list producers and public producers for cardano-node-topology profile
      • Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch
      • Adds select systemd metrics reporting to grafana-agent profile
      • Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS
      • Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation
      • Adds support for grafana recording rules in the template files
      • Improves cardano-group profile handling of producers with respect to multiple instance nodes
      • Improves grafana-agent profile metrics handling for multi-instance cardano-node servers
      • Improves smash service preStart handling while waiting for a node socket
      • Updates Justfile for ERA_CMD demo support
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Defaults cardano-postgres profile psqlrc use to false

    Cardano-playground

    • Adds a new testnet metadata server, cluster webserver, and other improvements: cardano-playground-pull-6
      • Adds a new metadata server
      • Adds a new webserver for the cluster's static virtualhost needs
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds systemd metrics monitoring to the cluster
      • Resizes sanchonet machines to support the growing chain
      • Completes migration of preprod from world
      • Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes
      • Updates Justfile for ERA_CMD demo support
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Migrates book static code to playground from world, with refactor, cleanup and updates
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules

    Offchain-metadata-tools

    • Adds db password option with obfuscation plus misc improvements: offchain-metadata-tools-pull-61
      • Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services
      • Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile
      • Moves from std use in the nix flake to standard flake schema
      • Fixes hydra CI failures
      • Builds update-docs in hydra to avoid long local build times
      • Removes deprecated tullia
      • Removes deprecated check-hydra from pkgs
      • Removes deprecated bors files and references
    ]]>
    + sre +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-22-ledger + 2023-11-22-ledger + Wed, 22 Nov 2023 00:00:00 GMT + + High level summary

    Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of +CDDL specification. Important bugfixes include:

    • Fix deserialization of ValueNotConservedUTxO predicate failure that could not +previously report zero ADA.
    • Fix deserialization of CostModels in the PParamsUpdate. Invalid CostModels are no +longer allowed, only CostModels for unrecognized Plutus versions are allowed starting +with Conway
    • Fix returning of Deposits for ProposalProcedures

    Testing tooling has been improved and new tests have been implemented for Conway era.

    Low level summary

    Conway

    • pull-3858 - Restructure computing Refunds and Deposits in a TxBody across all eras
    • pull-3860 - Removed mock/crypto.cddl, added optional tag to sets
    • pull-3864 - Fix Proposal deposits and add deposit tests to imp tests
    • pull-3859 - Rename ProposalsSnapshot to Proposals
    • pull-3867 - MaryValue fixes
    • pull-3869 - Indicate that tag 258 is optional for OSet. Fix rational CDDL
    • pull-3863 - Improve deposits refunds re-usability
    • pull-3861 - Fail PParamsUpdate deserialization for invalid costmodels in Conway
    • pull-3875 - Fix cddl spec for CostModels in Conway
    • pull-3876 - Change 4 PParam fields from EpochNo to EpochInterval
    • pull-3884 - Relax requirement on the Set tag 258 to be enforced in the next era

    Testing

    • pull-3868 - Improvements to support property tests on Traces with simple Tx with DRep related Certs
    • pull-3792 - RATIFY and GOV constraint tests
    • pull-3885 - Added a test for genTxAndNewEpoch
    • pull-3886 - QuickCheck Imp integration

    Improvements and releasing

    ]]>
    + ledger +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-22-mithril + 2023-11-22-mithril + Wed, 22 Nov 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer.

    Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release.

    Low level overview

    • Completed the issue Prototype a P2P relay with libp2p #1326
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Worked on the issue Support P2P relay in infrastructure #1361
    • Completed the issue mithril-client fails to extract archive #1352
    ]]>
    + mithril +
    + + <![CDATA[Initial CIP 1694 Security Analysis and Responses]]> + https://input-output-hk.github.io/cardano-updates/2023-11-20-cip1694 + 2023-11-20-cip1694 + Mon, 20 Nov 2023 00:00:00 GMT + + High level summary

    We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

    Initial CIP-1694 Security Analysis and Responses

    Section: The constitutional committee


    • “For example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

    There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


    Section: Size of the constitutional committee


    • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

    Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


    Section: Terms


    • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

    Thanks. Yes, that suggestion is a bit easier to read.


    Section: Registered DReps


    • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

    Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


    Section: Ratification


    • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

    These correspond exactly to the groups that are administered by the Parameter Committee.


    • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

    Yes, it’s not about harming the system, since Info +actions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

    Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


    Section: Content


    • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

    Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


    Section: Protocol Parameter groups


    • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

    These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


    • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

    All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


    Section: Votes


    • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

    They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


    Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


    • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

    There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


    Section: Changes post Edinburgh workshop (July 2023)


    • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

    It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


    Section: Reduced deposits for some government actions


    • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

    Indeed. We have no plans for this at the moment.

    ]]>
    + ledger + cip1694 + security +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-17-hydra + 2023-11-17-hydra + Fri, 17 Nov 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team made several impactful updates. They addressed +misleading errors regarding collect com transactions, resolved a security +advisory (CVE-2023-42806), and simplified the Hydra Head protocol by using +inline datums. The team also tackled minor inconsistencies in specifications and +implementation, documented reasons for potentially dropped close transactions by +the cardano-node, and collaborated with SundaeLabs on an offline mode for +hydra-node. Additionally, they engaged in discussions with researchers about +incremental de-/commits.

    What did the team achieve this week

    • Removed misleading errors about collect com transactions #839
    • Addressed security advisory CVE-2023-42806 in PR #1161
    • Changed the head protocol to use inline datums, simplifying things in the hydra-node #1162
    • Addressed minor inconsistencies in spec and implementation #1104
    • Documented why close transacations might be dropped by the cardano-node (cant fix) #1039
    • Tidy up a few things here and there
    • Worked with SundaeLabs on the offline mode for hydra-node
    • Discussed incremental de-/commits with researchers

    What are the goals of next week

    • Start work on incremental decommits protocol specification #1057
    • Provide support to Hypix
    • Address all open bugs
    • Release version 0.14.0 with this scope
    • Update dependencies to prepare for Conway #1114
    • Shepherd off-line mode PR over the finish line
    • Complete tidying up chain layer via stateless observation changes in hydra-node #1096
    ]]>
    + hydra +
    + + <![CDATA[Performance & Tracing Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-17-performance-and-tracing + 2023-11-17-performance-and-tracing + Fri, 17 Nov 2023 00:00:00 GMT + + High level summary
    • Benchmarking: Release benchmarking for node 8.6.0 as well as benchmarks scrutinizing GHC versions and the new tracing system.
    • Development: PlutusV3 capability of our workload generator has been implemented.
    • Tracing: First round of optimization of the cardano-tracer service has completed, awaiting validation.
    • Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.
    • Workbench: Configurable remote environments and improvements to run documentation have been merged to master.

    Low level overview

    Benchmarking

    We've performed and analyzed a full set of benchmarks for node 8.6.0, both in comparison to recent release tags +and mainnet version 8.1.2. A lot of development work has entered the system since then, so it is crucial +we can rule out any potential performance risks for the next mainnet release.

    Additionally, we've been benchmarking GHC9.6.3 builds of cardano-node. Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform.

    A last set of benchmarks was dedicated to the new tracing system with node 8.6.0. We were able to show that +there is no performance risk to enabling the new system, even when forwarding all trace messages to a cardano-tracer +service on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.

    Development

    For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes +to the execution budgets by developing specialized workloads.

    Tracing

    The cardano-tracer service has received its first batch of optimizations. Profiling output is promising; to measure +performance for a long service run time, we're currently equipping the service binary with the same capability to +emit regular resource traces as cardano-node. Analysis of those will be the basis for validating this and possible future optimization efforts.

    Nomad backend

    Many improvements for the nomad backend have been implemented and merged to master. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service, +more detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables +our team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.

    Workbench

    Our performance workbench has seen upgrades in documenting and reporting cardano-node builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler. +When alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential.

    Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance.

    ]]>
    + performance-tracing +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-16-network + 2023-11-16-network + Thu, 16 Nov 2023 00:00:00 GMT + + High-level overview of sprint 48

    Bootstrap Peers

    We continued reviewing bootstrap peers, ouroboros-network#4555.

    IOClasses / IOSim

    We prepared slides for a Haskell meetup were we presented a talk on IOSimPOR. +The recording will be availble on YouTube.

    We also used the opportunity to do some refactoring of the IOSim code base: io-sim#117. +We released io-sim-1.3.0.0 on Hackage: io-sim#119.

    We also added forkFinally to MonadFork (not included in 1.3.0.0 release): io-sim#123.

    Tech debt

    We refactored Resource used by the DNS subsystem: ouroboros-network#4707. +We continued reviewing the ouroboros-network#4625 PR, which refactors +RootPeersDNS module.

    ]]>
    + network +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-15-consensus + 2023-11-15-consensus + Wed, 15 Nov 2023 00:00:00 GMT + + High level summary

    Over the last two weeks, we managed to run a UTxO-HD capable node in legacy mode, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does). +This legacy mode could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not. +However, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter. +On the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node. +Therefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.

    On the Genesis front, we reviewed the peer simulator for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.

    We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.

    Javier Sagredo continues his cycle as release engineer, and he is working on version 8.7 of Cardano node.

    ]]>
    + consensus +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-15-mithril + 2023-11-15-mithril + Wed, 15 Nov 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Completed the issue Light Wallet: Release mithril-client library #1311
    • Completed the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Completed the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Fix certificate hashes re-computation in aggregator #1343
    • Completed the issue Remove unstable tag in unstable release #1235
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    ]]>
    + mithril +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-14-node-cli-api + 2023-11-14-node-cli-api + Tue, 14 Nov 2023 00:00:00 GMT + + 2023-11-01 - 2023-11-14

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Improve golden tests
    • Clean-up of conway era commands

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-10-hydra + 2023-11-10-hydra + Fri, 10 Nov 2023 00:00:00 GMT + + High-level summary

    The last two weeks, the Hydra team achieved several milestones. They published +the monthly report for October, providing updates on project developments. The +team delivered a presentation and workshop at the Cardano Summit, contributing +to community engagement. They implemented a \"dirt road\" solution for the +\"Ignored init tx\" notification and moved the hydra-poll example project to a +dedicated repository. Additionally, the team built a hydra-chain-observer tool +for Hydra Heads, updated the toolchain to GHC 9.6.3, and made various +improvements to tooling and code formatting. They addressed specific issues, +such as fixing the gen-hydra-keys command and resolving concerns with the +rewritten hydra-tui. The team also enhanced the hydra-cluster smoke test +suite by fetching network configurations dynamically. Lastly, they actively +reviewed pull requests and architectural decision records from the community, +including contributions from SundaeSwap. An experiment, the Hydra tally, was +completed and successfully deployed to the mainnet by the Cardano Foundation.

    What did the team achieve this week

    • Published the monthly report for +october
    • Given a presentation / workshop at the Cardano summit +#1109
    • Dirt road implementation for \"Ignored init tx\" notification +#529 (without +stateless observation)
    • Completed and moved hydra-poll example project into a +dedicated +repository
    • Built a first version of a chain observation tool for Hydra Heads +#1096
    • Switched toolchain to GHC 9.6.3 and various improvements on tooling +and code formatting +#1135#1152#1151#1154
    • Fix gen-hydra-keys command to not overwrite existing +keys #1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Fetch network configurations instead of packaging them into +hydra-cluster (smoke) test suite +#1156
    • Reviewing PRs and ADRs from the community (SundaeSwap) +#1118#1157
    • Hydra tally experiment (Cardano Foundation) deployed to mainnet

    What are the goals of next week

    • Tackle reported bugs
    • Shepherd contributed off-line mode PR to the main codeline
    • Improve chain observation tool to include more data and refactor +existing code towards more stateless observation
    • Start work on incremental decommits
    ]]>
    + hydra +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-10-sre + 2023-11-10-sre + Fri, 10 Nov 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the cardano-playground stack

    Lower level summary

    Capkgs

    Cardano-parts

    • General migration support PR for cardano-world to cardano-playground cardano-parts-pull-18
      • Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground
      • Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes
      • Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains
      • The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state
      • The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable
      • Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0
      • For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true
      • Template updates include:
        • Adds optional TF AZ declaration on ec2 resources
        • Adds a cardano node p2p dashboard to the grafana cloud stack
        • Adds a dbsync pool performance analysis query
        • Updates python distribute and delegation scripts from world for playground compatibility
        • Starts a python script lib to reduce shared code among the python scripts
        • Several justfile improvements and new recipes
      • More detail is available in the PR description
    • Update submit action script for 8.6 cardano-parts-pull-19
    • Update scripts for 8.6.0-pre cardano-parts-pull-21
      • Fixes subcommand names based on ERA_CMD
      • Adds deposits to some commands
      • Separates CC cold/hot key generation as host authorization has to occur after action is approved
      • CC voting enabled in vote job

    Cardano-playground

    • Migration PR to largely complete the network migration from cardano-world to cardano-playground: cardano-playground-pull-5
      • Adds re-spun private chain network
      • Migrates shelley-qa chain network from world
      • Justfile improvements and new recipes
      • Improve concurrent environment chain support
      • More detail is available in the PR description

    Iohk-nix

    • Migration to play: iohk-nix-pull-561
      • Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org
      • Remove deprecated cardano-lib p2p network environment
      • Update sanchonet chain with respin changes
      • Update private chain with respin changes
      • Bump private and shelley-qa chains to sanchonet equivalent conway genesis
      • Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing

    Sanchonet-demo

    ]]>
    + sre +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-09-db-sync + 2023-11-09-db-sync + Thu, 09 Nov 2023 00:00:00 GMT + + High level summary

    We have created new tag sancho-2-2-0, which integrates missing Conway feautures and some minor fix +tags sancho-2-1-0, sancho-2-0-1. +We have completed the initial implementation for the bootstrap instance objective.

    Lower level summary

    • Add a new --disable-gov flag which disabled Conway ferautures +#1558
    • Fix of the committee key size +#1544
    • Workaround a ledger issue with unregistered pools +#1542
    • Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs +#1539
    • Rename offline to offchain +#1533
    • Transfer existing tests to Conway era +#1529#1547
    ]]>
    + db-sync +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-08-ledger + 2023-11-08-ledger + Wed, 08 Nov 2023 00:00:00 GMT + + High level summary

    This update contains mostly improvements to quality of Conway era implementation and +tooling that we use for testing Ledger. Major Conway bugs that were discovered and +squashed are:

    • PParamsUpdate proposals will now correctly use DRep thresholds for ratification
    • Treasury withdrawals are now properly enacted.
    • Corrected snapshotting and DRep Stake Distribution Pulser initialization
    • Delegation to non-existent Stake pool is no longer possible

    Other important quality of life improvements are addition of reusable interfaces for an +ordered set OSet and ordered map OMap. Which allowed us to disable duplicate +certificates and proposals in a transaction. As a precursor to PlutusV3 integration, a +serious reorganization of Plutus related functionality was performed.

    Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on +expired proposals, addition of Anchor to Constitutional Committee resignation proposals.

    Significant improvements have been made to a specialized "Imp" test library that allows us +writing concise stateful unit tests for verifying the Ledger logic. Serious progress has +been made on the conformance testing, where we can now interface with Haskell generated +code from the Agda specification. Serialization testing has been extended to increase +binary conformance coverage.

    Low level summary

    Conway

    • pull-3808 - Enhance CommitteeMembersState query to return quorum and NoConfidence
    • pull-3801 - Fix epoch rule and tests
    • pull-3803 - Fix delegation validation
    • pull-3759 - Reshuffle things to the DRepPulser incorporates some snap shot things
    • pull-3779 - Prevent duplicate certs and proposals
    • pull-3794 - Added anchor to resign certs
    • pull-3797 - Cleanup JSON instances for Conway governance
    • pull-3848 - Plutus modules restructure
    • pull-3840 - Fix anomalies in Deposits in the Conway Era
    • pull-3856 - Add governance related ledger events
    • pull-3825 - Prevent voting on expired GovActions
    • pull-3831 - Treasury withdrawal fix
    • pull-3791 - Use a Data.OMap.Strict to replace ProposalsSnapshot
    • pull-3836 - PParamsUpdate enactment fix
    • pull-3846 - Revert argument order swap.

    Testing

    • pull-3782 - Move ImpTest to Shelley testlib
    • pull-3842 - Imp improvements
    • pull-3844 - Add mappings to Agda types
    • pull-3853 - Fix strange assertion failure, which hides real Block too big problem.
    • pull-3809 - CDDL roundtrip testing
    • pull-3832 - Treasury withdrawals tests
    • pull-3839 - Added cardano-ledger-conformance
    • pull-3841 - Add sha256 to cardano-ledger-executable-spec

    Improvements and releasing

    • pull-3843 - Add ...WithLogs versions of evalScripts and friends
    • pull-3795 - Bump plutus to 1.15
    • pull-3798 - Bump urllib3 from 1.26.17 to 1.26.18 in /doc
    • pull-3799 - Changes needed for 8.6 release
    • pull-3807 - Add invalidBeforeL and invalidHereAfterL functions
    • pull-3819 - Fixups needed for a release
    • pull-3829 - Post release CHANGELOG version bumps
    • pull-3830 - Bump aeson to 2.2
    • pull-3833 - Backport release cardano-ledger-conway-1.10.1.0
    • pull-3828 - Add changelog for node release 8.6
    ]]>
    + ledger +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-08-mithril + 2023-11-08-mithril + Wed, 08 Nov 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client Docker package is incorrect #1322
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-01-consensus + 2023-11-01-consensus + Wed, 01 Nov 2023 00:00:00 GMT + + High level summary

    This week the Consensus team made progress on two fronts: the question of survivable eclipse duration, which is part of our work supporting Genesis delivery, and how to improve the handling of blocks from the future. +Regarding the UTxO-HD branch, we managed to run a node with legacy blocks, which is syncing with mainnet, up to including Alonzo. +We also investigated a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release.

    ]]>
    + consensus +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-11-01-mithril + 2023-11-01-mithril + Wed, 01 Nov 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the release-mainnet aggregator.

    Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Fix devnet Mithril Docker images [#1272](https://github.com/input-output-hk/mithril/issues/1272
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client regressions in snapshot list and download #1321
    ]]>
    + mithril +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-27-hydra + 2023-10-27-hydra + Fri, 27 Oct 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team fixed the gen-hydra-keys command to avoid +overwriting existing keys, and resolved issues related to the rewritten +hydra-tui. They also worked on a \"dirt road\" implementation for the +\"Ignored init tx\" notification, improving the robustness of the system.

    The team finalized preparations for the Cardano Summit presentation, including +implementation of the hydra-poll example DApp.

    If you happen to read this and attend the Summit in Dubai, make sure to check +out our Masterclass about \"Developing Hydra + Mithril for Scaling Cardano\" on +Friday, November 3 at 14:00-15:30 local time in the \"Al Dar\" room!

    What did the team achieve this week

    • Fix gen-hydra-keys command to not overwrite existing keys +#1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Finalized cardano summit preparation +#1109
    • Implemented the hydra-poll example DApp link to +repository
    • Dirt road implementation for \"Ignored init tx\" notification +#529

    What are the goals of next week

    • Attend cardano summit and deliver presentation
    • Clarify / close user created issues
    • Build aarch64-darwin binaries in CI
    ]]>
    + hydra +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-27-network + 2023-10-27-network + Fri, 27 Oct 2023 00:00:00 GMT + + High-level overview of sprint 47

    Bootstrap Peers

    We continued to review the process of bootstrap peers, see ouroboros-network#4555

    CI / Tests

    We investigated our CI issues. We found a memory leak in typed-protocols +function used for testing codecs which triggered out of memory manager (OOM) on +some platforms (typed-protocols#43); we also found a bug in the connection manager which resulted in CI +timeouts (see connection-manager-fix).

    KeepAlive client

    We found two small issues with the keep-alive client, which were addressed +by Karl Knutsson (Cardano Foundation), ouroboros-network#4689.

    Galois

    We merged two large PRs prepared by Galois:

    Cardano Network Service Assurance (CNSA)

    Galois made the following progress on CNSA:

    • a simple [InfuxDB] database backend has been added;
    • the documentation has been updated;
    • internal improvements to the code;
    • progress on a new "CSNA analysis" that provides, for each sampler node, the +block download throughput in bytes over time.

    New CHaP Release

    We cut a new release of ouroboros-netowrk packages to CHaP: chap#547

    More details

    CI / Tests

    We improved the memory footprint of some of our tests by analysing a stream of +IOSim traces without retaining them, see ouroboros-network#4696

    As a safety measure, we introduced an upper bound for heap memory used by test +artefacts in our nix tests. We use 200MB limit for all tests except for +network-mux tests which use 350MB limit, see ouroboros-network#4702.

    We refactored one of our tests to use ephemeral ports thus allowing it to +run concurrently, see ouroboros-network#4702.

    We merged ouroboros-network#4623 which fixes a bunch of test failures.

    All of them were due to a bug in test logic rather than a bug in production +code.

    Release Process

    We updated our release process & associated scripts, see +ouroboros-network#4705.

    ]]>
    + network +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-27-sre + 2023-10-27-sre + Fri, 27 Oct 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the cardano-playground stack

    Lower level summary

    Capkgs

    • Adds offchain-metadata-tools, dbsync sanchonet updates: capkgs-compare

    Cardano-parts

    • General package updates, modules improvements and template recipes to support network migration from world to playground cardano-parts-pull-17
      • Bumps cardano-db-sync-ng to sancho-2-0-0 tag
      • Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play
      • Adds more machine system bins and devShell bins for scripting and debug purposes
      • Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module
      • Adds profile-cardano-node-topology module for a simplified interface to most common topology needs
      • Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs
      • Adds a topology function to filter self from group machines with an allowList for matching infixes
      • Adds metadata-server and related offchain-metadata-tools bins from capkgs
      • Updates justfile template with:
        • a new query-all recipe for getting status of multiple concurrent running environments
        • a new set-default-cardano-env recipe for fast switching between environments
        • a new start-demo recipe for forking a custom env into conway
        • a new start-node recipe for generic environment start
        • a new stop-node recipe for generic environment stop
        • updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions
        • updated query-tip recipe to a generic query tip compatible with each environment

    Cardano-playground

    ]]>
    + sre +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-25-mithril + 2023-10-25-mithril + Wed, 25 Oct 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team released a new distribution 2342.0. This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes.

    They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files.

    Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the release-mainnet aggregator, and enhanced the Mithril explorer UI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Completed the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Worked on the issue Fix devnet Mithril Docker images #1272
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Worked on the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Display a summary of signers before the full list in explorer #1133
    • Completed the issue Add certificates list in explorer #1184
    • Completed the issue CoreVerifier setup does not compute total_stake correctly #1306
    ]]>
    + mithril +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-24-node-cli-api + 2023-10-24-node-cli-api + Tue, 24 Oct 2023 00:00:00 GMT + + 2023-10-11 - 2023-10-24

    High level summary

    CARDANO-CLI

    • Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified.
    • stake-address-info now shows deposits balance.
    • Added conway governance action view to allow to inspect governance action files before submitting them on a transaction.
    • build-raw support for --vote-file and --proposal-file

    CARDANO-API

    • Support DRep extended keys
    • Support Plutus V1 in Conway

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-20-hydra + 2023-10-20-hydra + Fri, 20 Oct 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023.

    In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON. +This improvement offers users greater flexibility and ease of interaction with the API.

    Finally, the team has followed up on the TUI brick upgrade to version 1.10. +This effort has resulted in addressing minor details and enhancing the overall user experience with the TUI.

    What did the team achieve this week

    • Prepare presentation and workshop for Cardano Summit.
    • More TUI fixes and improvements.
    • Upgrade GHC from 9.2.8 -> 9.6.2 #1105
    • Solved user issue related to submitting transactions in cbor format #1111.
    • Fix hydraw connection issue making it more stable #1121.

    What are the goals of next week

    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.
    ]]>
    + hydra +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-18-consensus + 2023-10-18-consensus + Wed, 18 Oct 2023 00:00:00 GMT + + High level summary

    During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node.

    UTxO-HD

    • The Plutus workload benchmark for the in-memory backend showed no regressions for the metrics of interest, but it does show an increase in resource usage.
    • We got additional ad-hoc measurements on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB.
    • We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.

    Genesis

    • We produced the first draft for a Survivable Eclipse Duration Model (422).

    Support

    • Esgen finished his cycle as release engineer. Node 8.5.0 has been released.
    • We resumed work on the subpar handling of block from the future (4251).
    • We prepared the integration of new tracing events for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned issue).
    ]]>
    + consensus +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-18-mithril + 2023-10-18-mithril + Wed, 18 Oct 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay.

    Finally, they enhanced the CI/CD to publish multiple packages to crates.io and started improving the developer experience with the Mithril devnet.

    Low level overview

    • Published the security advisory Mithril relay could expose Cardano block producer internal IP when updated #GHSA-9m3h-72xj-x2gq
    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Publish multiple packages to crates.io #1298
    • Completed the issue Rename public key published in releases #1292
    • Completed the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Fix devnet Mithril Docker images #1272
    ]]>
    + mithril +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-15-network + 2023-10-15-network + Sun, 15 Oct 2023 00:00:00 GMT + + High-level overview of sprint 46

    Bootstrap Peers

    We continued reviewing of bootstrap peers, see ouroboros-network#4555.

    Towards Typed Protocols 0.2.0.0

    We diagnosed the performance regression of the new design. The work on +typed-protocols will be postponed. For more details see the +typed-protocols#3. As an outcome of the performance debugging we prepared +PR which updates the demo-ping-pong and +demo-chain-sync applications.

    Peer Sharing

    We made progress in review of ouroboros-network#4644, which simplifies the +peer sharing and fixes the ouroboros-network#4642 issue.

    Tech Debt

    We reviewed the ouroboros-network#3836 PR which inspects all the uses of +error in ouroboros-network. The PR was prepared by Galois.

    ]]>
    + network +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-13-hydra + 2023-10-13-hydra + Fri, 13 Oct 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity.

    They also completed the exploration of potentially moving the Plutus validator scripts to Aiken.

    Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project.

    What did the team achieve this week

    • Network Resilience Persistence (#1101)[https://github.com/input-output-hk/hydra/pull/1101].
    • Upgrade brick on TUI (#1103)[https://github.com/input-output-hk/hydra/pull/1103].
    • Aiken commit validator translation (#1072)[https://github.com/input-output-hk/hydra/pull/1072].
    • Fixed some bugs in our TUI client.

    What are the goals of next week

    • Prepare presentation and workshop for Cardano Summit.
    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-13-ledger + 2023-10-13-ledger + Fri, 13 Oct 2023 00:00:00 GMT + + High level summary

    The Ledger team has been shifting focus from implementing Conway related features to +testing. For this reason there is a very little amount features that are reported this +time aorund. Notable Conway related changes are a specialized ledger query for getting +Constitutional Committee state and prevention of submitting proposal procedures that have +no valid path to enactment.

    Testing related work was mainly on a constraint base system as well as on roundtrip +serialization. As a result of this extra testing a bug in Conway Genesis serialization +was eliminated.

    Low level summary

    Conway era

    Integration and releasing

    Testing

    • pull-3769 - Add roundtrip testing by validating FlatTerm
    • pull-3783 - Update TranslationInstance.hs
    • pull-3775 - Refactor and improve constraint based STS tests
    • pull-3793 - Fix sums with negative RHS.
    ]]>
    + ledger +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-13-sre + 2023-10-13-sre + Fri, 13 Oct 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was updated to 8.5.0-pre.
    • Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring

    Lower level summary

    Capkgs

    • Various improvements and fixes including:
      • Add GHA cron schedule
      • Add nix auto-gc to avoid running out of storage during large package set builds
      • Add new packages to capkgs
      • Reduce runner storage requirement leaving more room for builds
      • Restructure capkgs attribute names to avoid package name collisions
      • Return to non-musl builds for cardano packages to retain journald compatability
      • Update cache usage to from file level to folder level to reduce network and latency overhead
      • Commit diff: capkgs-compare

    Cardano-parts

    • Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: cardano-parts-pull-16
    • Dbsync, smash, faucet and more: cardano-parts-pull-15
      • Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes
      • Adds nginx vhost metrics exporter profile
      • Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down
      • Adds bash *-ng autocompletion compatible wrappers
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds downstream grafana cloud dashboard as templates
      • Adds downstream grafana cloud alerts as templates
      • Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish
      • Updates the basic profile with IOG cache and commonly used bins
      • Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks
      • Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration
      • Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion
      • Updates the colmena template with dbsync, smash, faucet machines profiles and roles
      • Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns
      • Bumps capkgs node-ng to 8.5.0-pre

    Cardano-playground

    • Dbsync, smash, faucet and more: cardano-playground-pull-3
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts
      • Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change
      • Optimizes machine sizes
      • Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion
      • Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration

    Cardano-world

    Sanchonet-demo

    • Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: sanchonet-demo-commit
    ]]>
    + sre +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-11-mithril + 2023-10-11-mithril + Wed, 11 Oct 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on crates.io, the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures.

    Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI.

    Low level overview

    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Update Rust compiler in nix CI #1282
    • Worked on the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    ]]>
    + mithril +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-10-node-cli-api + 2023-10-10-node-cli-api + Tue, 10 Oct 2023 00:00:00 GMT + + 2023-09-27 - 2023-10-10

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Depracated governance query commands and moved all governance related queries to cardano-cli <era> query
    • Drep registration certificates now allow to include an anchor
    • Integrated Drep retirement ceriticates
    • clean up of Drep registration certificates.

    CARDANO-API

    • Add support for committee hot key witnesses
    • Require conway onwards for voting
    • Conway drep registration: expose ledger anchor parameter
    • Add certs to txbody of Conway transactions

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-06-hydra + 2023-10-06-hydra + Fri, 06 Oct 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums.

    The team also delivered the first version of the network resilience layer, significantly increasing head availability.

    Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra.

    Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra.

    What did the team achieve this week

    • Release 0.13.0
    • Published vulnerability reports #1088
    • Merged network resilience work part I #1074
    • Planning for Cardano Summit participation
    • Discussions with funded Catalyst projects wanting to build on Hydra for support
    • Merged typos fix PR from @omahs #1095

    What are the goals of next week

    • Complete Aiken commit validator script #1072
    • Complete Kupo integration #1078
    • Brick upgrade on TUI #1103
    • Clean backlog
    • Prepare and rehearse demo and talk for Cardano Summit
    ]]>
    + hydra +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-06-performance-and-tracing + 2023-10-06-performance-and-tracing + Fri, 06 Oct 2023 00:00:00 GMT + + High level summary
    • Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system.
    • Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7.
    • Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store.
    • Tracing: The machine-readable tracer configuration has been merged. Optimization of cardano-tracer started.
    • Nomad backend: Ongoing variance analysis and refined cluster topology.

    Low level overview

    Benchmarking

    Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the +performance of the in-memory backing store and evaluate possible optimizations (or regressions) for it.

    Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results +show all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the cardano-tracer service.

    Consensus QTAs

    The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The +feedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype.

    Development

    Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort.

    PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time, +we'd like to validate the many improvements that have gone into the Plutus evaluator.

    Tracing

    The focus for further optimization of the new tracing system has shifted to cardano-tracer - the service +receiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in cardano-node is +more performance critical, the receiving service must still minimize its resource footprint. Moreover, it can +generate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations.

    Nomad backend

    Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated +the same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery.

    ]]>
    + performance-tracing +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-04-consensus + 2023-10-04-consensus + Wed, 04 Oct 2023 00:00:00 GMT + + High level summary

    The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the in-memory backend.

    On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain. +We also merged a fix for the Babbage to Conway transition, and released a new version of Consensus.

    Genesis

    • We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (392).

    Support

    • We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (366).
    • We enabled richer tracers in cardano-node that can be useful in future debugging (384).
    • Esgen continues with his release engineer activities, and created a new Consensus release.

    Fostering collaboration

    • We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (369).
    ]]>
    + consensus +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-04-mithril + 2023-10-04-mithril + Wed, 04 Oct 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion on implementing Mithril in a light wallet to receive feedback and contributions from the community.

    They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks.

    Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs.

    Low level overview

    • Created the discussion Implement Mithril in a light wallet #1273
    • Completed the issue Run client in browser WASM PoC #1254
    • Completed the issue Benchmark aggregator performances #1220
    • Worked on the issue Add SPO tickers in explorer #1185
    • Completed the issue Add a non 404 status code on the aggregator endpoint #1103
    • Completed the issue Use source attribute in errors #1265
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Completed the issue Configure status page and alerting #1277
    • Completed the issue Upgrade dependencies #1274
    ]]>
    + mithril +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-10-02-network + 2023-10-02-network + Mon, 02 Oct 2023 00:00:00 GMT + + High-level overview of sprint 45

    Bootstrap Peers

    We started reviewing the bootstrap peers PR, ouroboros-network#4615.

    Towards Typed Protocols 0.2.0.0

    We discovered a performance regression when using typed-protocols-0.2.0.0, and we +started investigating where it comes from. Currently, we see that +typed-protocols-0.2.0.0 can outperform typed-protocols-0.1.0.0 when running +in isolation with a simple ping-pong protocol, so the regression might be in +the new block fetch implementation which comes with typed-protocols-0.2.0.0 +See typed-protocols#3.

    Tech Debt

    We merged two PRs written by Galois engineers:

    • a pull request which refactors the main entry function for P2P, see ouroboros-network#3834;
    • a pull request which reviews usage of unsafe function in the network code based.

    Galois also made progress with the following two issues:

    IO-Sim

    IOSimPOR

    We found and fixed a bug in IOSimPOR. We'd like to thank Prof. John Hughes +(Quviq AB) for helping us with debugging the issue.

    We also provided a more uniform API for IOSimPOR, and added ways to make the +debugging similar problems in the future easier.

    Technical Details on IOSim refactoring
    We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future.

    IOSim

    To prepare for the next release, we consolidate packages taking advantage of +the public sublibraries supported now both by cabal and Hackage. This is +a work in progress, io-sim#114.

    Cardano Newtork Service Assurance

    Galois made the following progress:

    • A test run of spinning up a CNSA instance was done, as a result documentation +was updated.
    • Based on the IOG code review of the CNSA code, updates to the CNSA code were +made.
    • Galois has started the design for adding a CNSA analysis for "fetched bytes +over time while node is syncing".

    P2P adoption

    In the last two weeks, we've seen increase in P2P adoption. +P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays. +node versions

    Open Source

    We upstreamed our FFI bindings to Windows named pipes to Win32 package, the +PR was accepted and merged.

    We also received an external contribution which enhanced our documentation, see +ouroboros-network#4676.

    ]]>
    + network +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-29-goedel + 2023-09-29-goedel + Fri, 29 Sep 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and testing the +performance analysis tool

    Details

    • drafting processs calculus semantics of mini protocol programs

    • testing the new performance modelling tool

    • further work on specification of mini protocols

    • extension of mini protocol framework to support communication of +programs with local environments via synchronous channels

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-29-hydra + 2023-09-29-hydra + Fri, 29 Sep 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team mainly focused on having a working new reliability +network layer; and specified its expected behavior in a new ADR.

    They also revisited the security policy and vulnerability disclosure policy on +how to handle security vulnerability within Hydra, and in particular how to +handle so-called "Silent fixes".

    What did the team achieve this week

    • Updated security policy and vulnerability disclosure policy #1088
    • Adr/network reliability #1082

    What are the goals of next week

    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-29-ledger + 2023-09-29-ledger + Fri, 29 Sep 2023 00:00:00 GMT + + High level summary

    Few important Conway related features were completed in this two week period:

    • Constitutional Committee was the last missing Conway related entity that has now been +fully implemented.
    • Treasury withdrawals governance actions have been fixed and now behave as expected.
    • Current treasury amount supplied in the transaction is now enforced by the rules.
    • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no +proposals to vote on.
    • Semantics of how CostModels are updated with Protocol Parameters have been changed to +allow for individual Plutus language version updates, rather than requiring a complete +replacement of all CostModels

    Besides the new features there were also important performance and testing improvements:

    • In particular stake distribution computation and native script handling received some +optimizations.
    • New testing DSL has been implemented that drastically simplifies writing unit tests for +ledger rules.
    • Integration tests and benchmarks are now possible for Conway era because of the overhaul +of functionality for initial funds and staking injection whenever node starts up in +Conway, while bypassing all previous eras.

    Low level summary

    Conway era

    • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
    • pull-3739 - Rename some PParams to be consistent with Agda specification
    • pull-3743 - Move DRepDistr from VState to ConwayGovState
    • pull-3746 - Implement tcTranslationContextL for Shelley
    • pull-3737 - Implement EraTransition
    • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
    • pull-3748 - Apply enacted treasury withdrawals
    • pull-3745 - Constitutional Committee Ratification
    • pull-3763 - Plutus interface improvements
    • pull-3771 - Changed how costmodel updates are applied
    • pull-3766 - Prevent updating protocol version with PParamUpdate

    Performance

    • pull-3765 - Improve native script handling
    • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
    • pull-3758 - Cardano-Perf regression: UMap.size regression fix
    • pull-3754 - Use Alonzo-style TxOut encoder when possible

    Releasing

    • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
    • pull-3744 - Changelog 8.4
    • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
    • pull-3753 - Minor cleanup and changelog entries
    • pull-3760 - Fixup issues for release
    • pull-3764 - Bump plutus deps to 1.13

    Testing

    • pull-3734 - Removed Shaped instance for Rep
    • pull-3735 - Simplify the implementations of hasOrd and hasEq
    • pull-3728 - STS tests based on constraints
    • pull-3714 - Implement the remaining upgradable families
    • pull-3733 - Add some unit tests for Conway features
    • pull-3762 - Update CDDL for praos headers.
    ]]>
    + ledger +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-29-sre + 2023-09-29-sre + Fri, 29 Sep 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node 8.4.0-pre.
    • The use of cardano-node docker hub will be deprecated in preference of GHCR

    Lower level summary

    Capkgs

    • Refactor parsing scripts, add github action automation, various bugfixes and cleanup: capkgs-compare

    Cardano-parts

    • Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: cardano-parts-pull-8

    Cardano-playground

    • Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: cardano-playground

    Cardano-world

    ]]>
    + sre +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-27-mithril + 2023-09-27-mithril + Wed, 27 Sep 2023 00:00:00 GMT + + High level overview

    The Mithril team has released a new distribution 2337.0, which includes the following enhancements: support for zstandard compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator.

    They also completed the refactoring and standardization of the errors in the Mithril nodes and published an Architectural decision record on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure.

    Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs.

    Low level overview

    • Completed the issue Release new 2337 distribution #1219
    • Completed the issue Errors refactoring #798
    • Completed the issue Client traffic creates performance bottleneck in aggregator #1207
    • Completed the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Worked on the issue Spike: Run client in browser WASM PoC #1254
    • Worked on the issue Benchmark aggregator performances #1220
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    ]]>
    + mithril +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-26-node-cli-api + 2023-09-26-node-cli-api + Tue, 26 Sep 2023 00:00:00 GMT + + 2023-09-13 - 2023-09-26

    High level summary

    • cardano-node 8.4.0-pre release suitable for SanchoNet.
    • CLI continues making progress integrating governance features. During this sprint we integrated the info and new-committee governance actions.
    • The team continued moving to the ERA top-level commands structure. Removed --conway-era flag from the legacy commands making conway era commands only accessible via cardano-cli conway.
    • stake-pool command is now under the ERA top level structure.
    • API continues integration with governance features, it is worth to higlight that now ProposeNewCommitee uses the right key type (cc-cold)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-22-hydra + 2023-09-22-hydra + Fri, 22 Sep 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team conducted the monthly review meeting in +collaboration with Mithril, enhancing project coordination.

    The team improved the gen-hydra-key node command for smoother usability +and identified concrete steps to enhance network resiliency in feature +items #188, +#1080, and +#1079. +Additionally, they contributed the aiken-mode editor integration to the +aiken-lang organization, updated dependencies to utilize cardano-api +8.20, and published the Hydra security advisory CVE-2023-42806 with a +workaround available for users.

    These efforts demonstrate the team\'s commitment to project improvement, +security, and open-source community collaboration.

    What did the team achieve this week

    • Conducted the monthly review meeting together with Mithril
    • Improved gen-hydra-key node command +#1077
    • Established a clear plan to improve resiliency of network and manifested +feature items #188, +#1080 and +#1079
    • Moved aiken-mode (created by SN) +to aiken-lang organization
    • Updated dependencies to using cardano-api 8.20 +#1075
    • Published security advisory +CVE-2023-42806 +(workaround available)

    What are the goals of next week

    • Write-up the monthly report for September
    • Finish "network resilience to disconnects" +#188
    • Finish kupo integration with hydra +#1078
    • Discuss and decide on using aiken or not
    • Address the published security advisory +CVE-2023-42806 +(to not require workaround)
    • Ideally, release 0.13.0
    ]]>
    + hydra +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-22-performance-and-tracing + 2023-09-22-performance-and-tracing + Fri, 22 Sep 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters.
    • Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time.
    • Tracing: Work on machine-readable tracing of tracer configuration is ongoing.
    • Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster.
    • Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Blöndal!

    Low level overview

    Benchmarking

    As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking +backend with means to measure and document network latency for each run. Furthermore we've implemented means to +capture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences +in the behaviour of the underlying networking stack at OS level.

    Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided +to compare standard deviations instead to validate the measurements from nomad.

    Infrastructure

    Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline +have been merged to master. They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis.

    Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for trace-dispatcher and tx-generator we were able to address those issues.

    Tracing

    After various steps in constructing a configuration upon node startup, it is vital to document +which runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML +trace message for that purpose.

    This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node.

    Nomad backend

    As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it +produces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an +impact on our measurements, as we'd be basically using two different instruments to take them.

    Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service +or the slightly different system architecture of the new cluster.

    New team member

    Baldur Blöndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team. +So I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on cardano-tracer, the component receiving, processing and making available node traces and metrics.

    ]]>
    + performance-tracing +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-20-consensus + 2023-09-20-consensus + Wed, 20 Sep 2023 00:00:00 GMT + + High level summary

    We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks. +We are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough. +On the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain. +We also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway.

    UTxO-HD

    • We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (349). System level benchmark results are pending.
    • Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (344), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run.
    • We also brought the UTxO-HD branch up to date with node version 8.4.0.

    Genesis

    • We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain. +We are now drafting the final self-contained argument. (4157)

    Support

    • We debugged a bad parameter update on the Babbage to Conway transition in the SanchoNet testnet (339). +A superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (340, 354, and 355) +However we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ConsensusProtocol type class and the HardForkBlock combinator (345 and 346). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.
    ]]>
    + consensus +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-20-mithril + 2023-09-20-mithril + Wed, 20 Sep 2023 00:00:00 GMT + + High level overview

    This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports.

    Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution.

    Low level overview

    • Completed the issue Add snapshot compression parameters in infrastructure deployments #1200
    • Completed the issue Add Cloudflare protection of infrastructure #986
    • Worked on the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Worked on the issue Error refactoring #798
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    • Worked on the issue Release new 2337 distribution #1219
    • Completed the issue Upgrade dependencies #1238
    ]]>
    + mithril +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-15-goedel + 2023-09-15-goedel + Fri, 15 Sep 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • working on collating and open sourcing performance analysis prototype

    • improvements to Ouroboros Praos specification in Isabelle

    • working on formalising chain sync mini-protocol

    • reviewing an alternatice semantics for DeltaQ

    • Seminar talk at U. Bergen on algebraic properties of timeliness

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-15-hydra + 2023-09-15-hydra + Fri, 15 Sep 2023 00:00:00 GMT + + High-level summary

    This week, most of the Hydra team was attending a cardano scaling workshop in +Nantes, France. They used this oportunity to meet fellow mithril team and spend +some time together to hack on some code and, as always, reflect on the past work +and find optimal path forward for both projects. They also fixed a bug that +caused hydra-node to crash when querying L1, worked on a new network resillience +proof-of-concept and accepted a new ADR related to stateless transaction +observation.

    What did the team achieve this week

    • Cardano scaling workshop with members of hydra and mithril teams
    • Accepted user contribution for possible new use-case #1048
    • Fix for the hydra-node crash related to internal wallet query #1053
    • Collected experimental CI findings #1070
    • Propose first POC for the network resilience #1074

    What are the goals of next week

    • Monthly review meeting & report including updates from Mithril
    • Review POC and discuss our options for the network resilience
    • Update cardano-api to version 8.20
    • Address TODOs on aiken commit validator #1072
    • Complete hydra-support in kupo kupo#117
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-15-ledger + 2023-09-15-ledger + Fri, 15 Sep 2023 00:00:00 GMT + + High level summary

    The Ledger team's focus is still mainly on the Conway era implementation.

    We were able to add ability to specify initial Constitutional Comittee and the initial +version of Constitution. Priority in which Governance Action are now enacted matches the +specification. DRep's deposits are now properly accounted for. Governance actions that are +not allowed to be voted on by Stake Pool operators and Constitutional Committee members +are prevented by transaction submission failure, rather than simply being ignored. There +was a few important CDDL fixes as well as a lot of new round trip serialization +tests. Constraint based testing framework has also received a lot of improvements.

    Low level summary

    Conway era

    • pull-3681 - Conway Genesis additions
    • pull-3690 - Preserve the order of ProposalProcedures
    • pull-3705 - Removed ProtVer from EnactState
    • pull-3700 - Add conway-specific certs to deposit/refunds
    • pull-3704 - Add comments on deprecating certs to Conway CDDL
    • pull-3698 - Reordering of governance actions
    • pull-3712 - Disallow empty fields in ConwayTxBodyRaw
    • pull-3716 - Abstract threshold calculation
    • pull-3725 - Fix mistaken use of dollar sign in cddl files
    • pull-3718 - Predicate failure for mismatched Voter GovAction
    • pull-3721 - Committee expiration, validation and modification

    Improvements and releasing

    Testing

    • pull-3730 - Implement Show instance for Rep using IsTypeable
    • pull-3697 - Rewrite testEql using Typeable to make it impossible to forget cases
    • pull-3709 - Add many new features to the Constrained modues in cardano-ledger-test
    • pull-3726 - Conway and other eras serialization roundtrip tests
    • pull-3713 - Improve CI resiliency against GitHub issues
    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-15-network + 2023-09-15-network + Fri, 15 Sep 2023 00:00:00 GMT + + High-level overview of sprint 44

    Bootstrap Peers

    In this sprint, we focused on developing bootstrap peers.

    Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we +identified a possible improvement to bootstrap peers. A more detailed +description is available here.

    Cardano-Node-8.4.0 Release

    We also were responsible for the cardano-node-8.4.0-pre release. A final +integration PR is currently being merged. We published +new versions of ouroboros-consensus, cardano-api and cardano-cli.

    Towards Typed Protocols 0.2.0.0

    We also updated the future typed-protocols-0.2.0.0 and its integration with +cardano-node. This is towards our goal which we planned for the next +quarter. The identified tasks are to fix breaking tests, and then measure and +address possible performance regressions.

    Tech Debt

    Mark Tullsen (Galois) submitted two more PRs: ouroboros-network-#4663, +ouroboros-network-#4664. We provided feedback on their other pull requests: ouroboros-network-#4661 and +ouroboros-network-#4660.

    P2P adoption

    In the last two weeks, there was a regression in P2P adoption concerning +the number of SPOs or stakes, although the number of overall P2P relays has +increased. Karl Knutsson (Cardano Foundation) is investigating +this issue. +P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

    Data has been kindly provided by Cardano Foundation and their mainnet +monitoring infrastructure.

    Open Source

    We are in the process of upstreaming our ffi to Windows Named Pipes API to the Win32 package, see [win32-220].

    ]]>
    + network +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-15-sre + 2023-09-15-sre + Fri, 15 Sep 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet environment was updated to 8.3.0-pre.
    • Cardano-parts now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is here.

    Lower level summary

    Capkgs

    • Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: capkgs-compare

    Cardano-ops

    Cardano-parts

    • Utilize content addressed binaries to significantly improve eval, build and devShell performance: cardano-parts-pull-8
    • Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: cardano-parts-pull-10
    • Fix warns thrown during some builds and devShell usage: cardano-parts-pull-11
    • Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: cardano-parts-pull-12
    • Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: cardano-parts-pull-13

    Cardano-perf

    • Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: cardano-perf-compare

    Cardano-playground

    Cardano-world

    ]]>
    + sre +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-14-db-sync + 2023-09-14-db-sync + Thu, 14 Sep 2023 00:00:00 GMT + + High level summary

    We have created a DBSync tag sancho-1-1-0 which can follow sanchonet. Also +the team has ran a number of benchmarks and tests for the new options/flavours of DBSync +and prepared a blogpost which summorises them, for downstream components.

    Lower level summary

    • Integration of node-8.3.x and support for Sanchonet on Conway +#1498
    • Simplifications of new feautures +#1496
    • Makes it impossible to restart DBSync with different schema options and adds +tests for them +#1466
    • CI fixes +#1494#1491
    • Prepared a blogpost about different DBSync options +blog
    ]]>
    + db-sync +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-12-node-cli-api + 2023-09-12-node-cli-api + Tue, 12 Sep 2023 00:00:00 GMT + + 2023-08-30 - 2023-09-12

    High level summary

    Release of Cardano-node 8.3.0-pre for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs. +This release completes phase 2 of SanchoNet feature roll out plan

    CLI continues on its migration to a era-based top-level commands. This sprint we moved text-view, key, query, genesis, node, stake-address, transaction and address into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints.

    We are moving the drep delegation-certificate to the stake-address command so delegating to a drep is done via stake-addres vote-delegation-certificate. Along the same lines, we are renaming +stake-address delegation-certificate (delagating to a stake pool) to stake-address stake-delegation-certificate to distinguish between stake delegation to a pool and votes delegation to a drep. On top +of that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly stake-address stake-and-vote-delegation-certificate. Note that change is not included on 8.3 but will come on 8.4. +Removing --conway-era flag from all the transaction sub-commands.

    Update description fields in delegation certificates from Stake Address Delegation Certificate to respectively (Conway onwards):

    • Stake Delegation Certificate
    • Vote Delegation Certificate
    • Stake and Vote Delegation Certificate

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-08-hydra + 2023-09-08-hydra + Fri, 08 Sep 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team improved the commit process with support for inline +datums. They simplified the chain layer by refactoring how the chain state is +persisted. Updates to the Hydra tutorial were completed, including CI workflows +to keep it up-to-date. The team engaged in discussions with researchers about +incremental commits & decommits, and drafted an architectural decision record +for a resource-based API. They also explored simpler solutions for the upcoming +network resilience feature.

    What did the team achieve this week

    • Support InlineScriptDatum in commit +#1043
    • Refactored chain state persistency +#1049
    • Completed tutorial updates (by adding CI and some cleanup) +#997
    • Intersect Open Source committee meeting
    • Experimented with various models to better express the \"Network +resilience problem\" to find a KISS solution for +#188
    • Drafted and discussed incremental de-/commit features within team +and with researchers +#199 and +#1057
    • Created ADR for a resource based overhaul of the API +#1028

    What are the goals of next week

    • Meetup of Hydra & Mithril contributors in Nantes, France
    • Integrated cardano-api 8.15 to have GHC 9.6 support
    • A clear design for incremental commits (decommits are already +understood)
    • An ADR for improving tx construction & observation to not need chain +state
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-07-mithril + 2023-09-07-mithril + Thu, 07 Sep 2023 00:00:00 GMT + + High level overview

    The Mithril team has released a new distribution 2335.0 which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information.

    They have also worked on snapshots enhancements: implementation of the zstandard compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes.

    Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client.

    Low level overview

    • Completed the issue Use 'zstandard' compression for snapshot archives #876
    • Completed the issue Design & implement stress test tool for aggregator - phase 2 #1155
    • Completed the issue Provide progress information with '--json' option in Client #1095
    • Completed the issue Make client download and extract the archive simultaneously #1115
    • Completed the issue Add aggregator Cardano node version in snapshot artifact #948
    • Completed the issue Make Cardano node version part of the Mithril network configuration #947
    • Completed the issue Post deployment 'mainnet' infrastructure #1091
    • Worked on the issue Errors refactoring #798
    • Worked on the issue Add Cloudflare protection of infrastructure #986
    • Completed the issue Failed to restore recent snapshot with strange error #1160
    • Completed the issue Update 'ed25519-dalek' to '2.0.0' #1188
    • Completed the issue Add target networks blocks in release notes #1151
    • Completed the issue Fix end to end 'wait_for_the_expected_time' test #1191
    • Completed the issue Fix docs 'git checkout' command #1174
    ]]>
    + mithril +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-07-performance-and-tracing + 2023-09-07-performance-and-tracing + Thu, 07 Sep 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack.
    • Infrastructure: Various improvements of our analysis pipeline have been merged to master, supporting safe log truncation.
    • Tracing: Namespace consistency checks have been merged to master along with a curated configuration for benchmarking.
    • Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.

    Low level overview

    Benchmarking

    We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer.

    With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance.

    The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack.

    Infrastructure

    As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation +operation that keeps the interdependencies of block events intact.

    Truncation might happen at a slightly different point +in time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time.

    Tracing

    Consistency checking of namespace implementation and configuration when using the new system has been completed. +This feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a cardano-node shows inconsistencies with the namespaces the system provides - and hence needs attention.

    Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many +detailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable.

    Nomad backend

    The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the +first real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend.

    ]]>
    + performance-tracing +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-06-consensus + 2023-09-06-consensus + Wed, 06 Sep 2023 00:00:00 GMT + + High level summary

    We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation. +On the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers. +The Consensus release engineer finished his rotation: version 8.3.0-pre of cardano-node is releasing 2023 September 5.

    UTxO-HD

    • We ran the first successful system-level benchmarks for UTxO-HD (see #203) using the in-memory backend.
      • We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot.
      • After the mempool regression is fixed the benchmarks need to be ran again.
      • System-level UTxO-HD benchmarks with the LMDB are still pending.
    • UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see #344).
    • We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in GetUTxOByAddress (see this comment). Preliminary results are promising.
    • Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (#344), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.

    Tech debt

    • We added tests that Consensus emits valid CBOR (#3099). This helped us detect a couple of serialization bugs. The tests still need to be merged into the main branch (#323).

    Support

    • Nick Frisby finished his release engineer rotation; cardano-node 8.3.0-pre is releasing 2023 September 5.
    • We helped to investigate a protocol version bug in Sanchonet (see #3491).
    • We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see #91.
    ]]>
    + consensus +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-01-goedel + 2023-09-01-goedel + Fri, 01 Sep 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • finalising a presenting performance analysis internship work to the +formal methods team

    • developed a new Isabelle mini-protocol framework and examples

    • planning an extended version of the ICE DeltaQ paper

    • working on algebraic rules for properisation of any-to-finish

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-01-hydra + 2023-09-01-hydra + Fri, 01 Sep 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team focused primarily on changes needed in the network +layer and have the first draft document related to needed design. They also +improved the user experience by allowing a commit using inline datums. +Discussed the off-chain governance with researchers and improved internal model +tests.

    What did the team achieve this week

    • Monthly report published
    • Small changes to hydraw and tutorial in light of the Masterclass
    • Investigated a bug and saw it was solved by recent developments
    • Improved the model tests by fully validating L1 transactions
    • Enhanced the /commit API to also allow commit from scripts with inline datums (user request)
    • Discussed off-chain governance with IOG and CF researchers
    • Drafted a first network specification document in the context of Network resilience

    What are the goals of next week

    • Have a clear understanding of the changes we need for the "Improve network resiliency" feature
    • Groomed and agreed plan on incremental commits/decommits
    • Updated tutorials including CI workflows to check consistency
    • Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-01-ledger + 2023-09-01-ledger + Fri, 01 Sep 2023 00:00:00 GMT + + High level summary

    Broadly speaking the Ledger team focused on a few main areas of Conway era:

    • Creation of voting state snapshots in order to correctly delay ratification for one epoch
    • Validation of the Governance Actions sequencing and ordering
    • Proper expiry of DReps and Proposal Procedures
    • Expanding Conway Genesis functionality
    • Utilization of some of the new Protocol Parameters in ledger validation rules

    Low level summary

    Conway era

    • pull-3659 - Validate Network for ProposalProcedure and TreasuryWithdrawal
    • pull-3637 - Avoid using sequence of tuples, by adding GovActionId to GovActionState
    • pull-3651 - Inactive DReps
    • pull-3664 - Track proposal expiry
    • pull-3668 - Add min committee size predicate to NewCommittee
    • pull-3669 - Add Proposal deposit check against PParam
    • pull-3676 - Fix inactive PoolStake not counting as Drep Stake
    • pull-3635 - Make snapshots of GovActionsState
    • pull-3670 - Validate previously enacted govAction
    • pull-3694 - Improve error reporting on the positive coin decoder
    • pull-3674 - Added RATIFY thresholds
    • pull-3684 - Add proposal delaying, remove predicate failure from ENACT
    • pull-3688 - DRep Refunds and update evalTransactionBalance

    Improvements and releasing

    • pull-3677 - Minor patch that fixes the DRep distribution computation
    • pull-3686 - Post patch release fixup
    • pull-3695 - Changelog for cardano-node-8.3 release
    • pull-3683 - Add two new bench mark programs

    Testing

    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-01-network + 2023-09-01-network + Fri, 01 Sep 2023 00:00:00 GMT + + High-level overview of sprint 43

    In this sprint, we received contributions from CF & Galois. Karl Knutsson +(CF) has addressed various issues regarding peer churning in P2P, timeouts +and our WireShark dissector. While the Galois developers focused on +addressing issues from their review last year. See below for more details.

    We continued working on bootstrap peers ouroboros-network-#4661.

    We refactored our test suites: they are split into io-tests which require to +be run natively on all platforms (these tests mostly contain tests that +require IO system calls) and sim-tests which are platform independent. We +run io-tests on all supported platforms (e.g. x86_64-linux, +x86-64-darwin, aarch64-darwin and x86_64-w64-mingw32 (Windows)) natively. +The sim-tests are not executed on Windows due to memory limitations on +GitHub Actions runners. ouroboros-network-#4653

    We also started rebasing typed-protocols refactoring branches.

    Marcin was appointed as the cardano-node release engineer for the 8.4.0-pre +version. So far he integrated cardano-ledger-conway-1.8 and +ouroboros-network-0.9.1.0 to ouroboros-consensus, cardano-cli and +cardano-api. Once we will have an integration branch for cardano-node, +cardano-ledger-conway-1.8 and ouroboros-consensus packages can be released +to CHaP and PRs can be merged once they go through review & CI.

    We also fixed some smaller issues regarding peer sharing (both were discovered +by Karl from CF). More details are included below.

    Progress on P2P addoption

    SPO relays

    There are currently ~2000 relays running P2P +enabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On +16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil +Ada.

    P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

    Data has been kindly provided by CF and their mainnet monitoring +infrastructure.

    IOG relays

    As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all +IOG relays will be running P2P.

    Detailed description

    In this sprint, we got a few contributions from CF:

    • Karl made peer churning mechanism less aggressive ouroboros-network-#4656; and
    • he added timeouts for idle states in ChainSync & KeepAlive +miniprotocols. These timeouts help a node remove idle connections from the +responder (server) side ouroboros-network-#4648.
    • he improved the WireShark dissector by adding support for the peer-sharing mini-protocol ouroboros-network-#4656.

    Galois has been making progress in addressing some of the issues they raised in their review (last year):

    Peer Sharing

    • Light peer sharing is only enabled when peer sharing is turned on ouroboros-network-#4652;
    • Handshake incorrectly reports peer sharing value. It's supposed to relay the +remote value, but instead, it returns the local value. ouroboros-network-#4642 (in review).

    Async Demotion Test Fix

    • We fixed an async demotion test failure which turned out to be a weakness of +the test itself rather than a bug in the connection manager. ouroboros-network-#4655
    ]]>
    + network +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-09-01-sre + 2023-09-01-sre + Fri, 01 Sep 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes
    • Work on a new capkgs repository started -- "Content Addressed Packages"
      • This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output
      • These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do
      • Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers

    Lower level summary

    Capkgs

    • Content addressed packages -- new repo: capkgs

    Cardano-ops

    • Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: cardano-ops-compare

    Cardano-parts

    Cardano-perf

    Cardano-world

    Sanchonet-demo

    ]]>
    + sre +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-29-node-cli-api + 2023-08-29-node-cli-api + Tue, 29 Aug 2023 00:00:00 GMT + + 2023-08-16 - 2023-08-29

    High level summary

    CLI is making progress towards phases 3 and 4 of SanchoNet.

    • Ability to create info, no-confidence and new committee governance actions.

    • Voting as DREP is possible now on the CLI

    • API is now using Ledger's PParams and VotingProcedures

    • Expose following queries from consensus:

      - GetGovState
      - GetDRepState
      - GetDRepStakeDistr
      - GetCommitteeState
      - GetConstitution

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-28-mithril + 2023-08-28-mithril + Mon, 28 Aug 2023 00:00:00 GMT + + High level overview

    The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of zstandard compression of the snapshot archive, and streaming its download and decompression in the client.

    Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer.

    Low level overview

    • Completed the issue Create explorer page with registered signers #1097
    • Completed the issue Simplify logs on the Signer/Aggregator #1106
    • Completed the issue Refactor (de)serialization of crypto entities #668
    • Completed the issue Mithril client last snapshot download #1078
    • Completed the issue Use the '/signers/registered' route to verify if a signer is registered #1152
    • Worked on the issue Provide progress information with '--json' option in Client #1095
    • Worked on the issue Use 'zstandard' compression for snapshot archives #876
    • Worked on the issue Make client download and extract the archive simultaneously #1115
    ]]>
    + mithril +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-25-hydra + 2023-08-25-hydra + Fri, 25 Aug 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team conducted the monthly review meeting for Agust,which +continously ensures transparent communication and project evaluation.

    In terms of community engagement, the Hydra team gave a Hydra master-class at +RareEvo workshop as an educational initiative for the community. +Additionally, the team updated the Hydra demo and tutorial to include Mithril +and latest release changes.

    They also focused on exploring the Hydra network resiliance in order to improve +hydra-node availability, as it becomes stuck very easily and that leads to a +bad user experience.

    What did the team achieve this week

    • Hydra master-class at RareEvo workshop!
    • Monthly report & review meeting
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Groomed network resilience and explorer features #188
    • New ADR for “Resourced based API” #1028

    What are the goals of next week

    • Have a poc on network resilience working #188
    • Fix issue #931: “Chain state in head state not updated on replayed observation”
    • Fix issue #1039: "Close transaction dropped from cardano-node"
    ]]>
    + hydra +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-24-performance-and-tracing + 2023-08-24-performance-and-tracing + Thu, 24 Aug 2023 00:00:00 GMT + + High level summary
    • Benchmarking: Benchmarking node version 8.2.1 has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD.
    • Infrastructure: Our analysis pipeline has received improvements reducing memory footprint.
    • Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing.
    • Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.

    Low level overview

    Benchmarking

    We've performed and analysed the benchmarks for the 8.2.1 version of cardano-node as part of our release benchmarking cycle.

    Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths.

    Infrastructure

    As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held +in memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline.

    Tracing

    The next portion of optimizations has been completed and merged to master, getting rid of Haskell's native String representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by cardano-node.

    The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup.

    Nomad backend

    The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster +and porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend.

    ]]>
    + performance-tracing +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-23-consensus + 2023-08-23-consensus + Wed, 23 Aug 2023 00:00:00 GMT + + High level summary

    On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests. +On the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base.

    UTxO-HD

    • We addressed the issues that came from the benchmarking and testing phase (see #314).
      • We fixed the operational-certificate update exception (#305).

    Tech debt

    • We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see this branch).
    • We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see this branch).
    • We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see #275).
    • We decreased the flakiness for our test suite (#284).
    • We incorporated and merged the pull-request on query versioning (#273).
    • We started working on new performance-based regression tests for mempool operations.

    Support

    • Nick Frisby continues with his engineer responsibilities. Notably getting the Consensus release out for node pre-release 8.3. Nick also began integrating it into downstream branches (cardano{-api,-cli,-node}). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:
    ]]>
    + consensus +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-18-goedel + 2023-08-18-goedel + Fri, 18 Aug 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • Development of an automated prover for showing conformance of +programs to state machines (as part of the mini-protocol framework)

    • Completion of the documentation of the (current state of the) +mini-protocol framework

    • Discussion about two DeltaQ lectures with two practical sessions as part +of 4th year masters course on distributed systemsby colleagues at UC +Louvain in the Autumn

    • Discussion about four DeltaQ lectures by colleagues at U. Bergen as part +of a 5th year Masters course in the Autumn

    • Adapted original DeltaQ implementation to the new typeclasses and +wrote property tests for its algebraic laws

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-18-hydra + 2023-08-18-hydra + Fri, 18 Aug 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team released version 0.12.0, a significant update that +brings support for cardano-node 8.1.2, along with performance enhancements and +various API improvements. Additionally, the team successfully onboarded a new +contributor who is now actively participating in operating a Hydra Head. They +took part in a meeting of the Intersect open source committee and prepared the +Hydra master-class for RareEvo, an educational initiative for the community.

    If you happen to be at RareEvo, register for the Hydra master-class using this +form. +We hope to make it possible to follow along on-line as well and will announce +details on the Hydra announcements channel on the IOG discord +server.

    What did the team achieve this week

    • Released version 0.12.0 which adds support for cardano-node 8.1.2, performance +and several API improvements. Release notes
    • Replaced commit via websocket with external draft + submit. #954
    • Onboarded new contributor to the point where he actively participates in operating a Head now.
    • Joined a first meeting of the Intersect open source committee
    • Prepared the Hydra master-class for RareEvo.

    What are the goals of next week

    • Monthly review meeting
    • Run the Hydra master-class at RareEvo!
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Clear out red bin items (technical debt)
    • Groom network resilience and explorer features
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-18-ledger + 2023-08-18-ledger + Fri, 18 Aug 2023 00:00:00 GMT + + High level summary

    The ledger team made great progress in advancing Conway era forward. In particular, voting +for DRep and Stake Pool Operators is now at the state that can be used by downstream +components. Addition of new ledger state queries makes it possible to verify changes to +the governance state, such as placement of votes, submission of governance proposals, +inspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the +ability to enact all of the governance actions, except for the hard fork initiation.

    Low level summary

    Conway progress

    • pull-3577 - Move PParams to GovState
    • pull-3609 - Adjust thresholds for sanchonet
    • pull-3604 - README: update CIP-1694 link
    • pull-3616 - Switch TreasuryWithdrawals to use RewardAcnt
    • pull-3599 - Add governance action well-formedness check
    • pull-3607 - Rename governance to gov
    • pull-3601 - Added DRep anchors
    • pull-3615 - Add optional previous GovActionId in some ProposalProcedures
    • pull-3596 - Upgradeable families
    • pull-3625 - Change constitution to use Anchor
    • pull-3592 - Added pulsing incremental computation of the DRep distribution
    • pull-3523 - Treasury donations
    • pull-3633 - Prevent state changes on phase2 failure
    • pull-3634 - Disable serialization of protocolVersion param update
    • pull-3630 - Implemented DRep refreshing
    • pull-3640 - Remove crypto parameterization from AnchorData
    • pull-3636 - Implement DRep ratification with an "always passing"; threshold
    • pull-3648 - Governance queries
    • pull-3650 - Change environment for ShelleyPOOLREAP rule
    • pull-3658 - Set DRep ratify threshold to 51%
    • pull-3628 - DELEG, POOL, GOVCERT conformance with Spec v0.8

    Testing

    Improvements and releasing

    • pull-3660 - Fix bounds and versions
    • pull-3661 - Adjust versions, bounds and CHANGELOGs to account for the latest release
    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-18-network + 2023-08-18-network + Fri, 18 Aug 2023 00:00:00 GMT + + High-level overview of sprint 42

    Eclipse Evasion

    We merged and released a new version of the ouroboros-network package (version +0.9.0.0) which includes big ledger peers feature. +This is the primary peer selection mechanism to defend against eclipses. We +also prepared a PR to updated ouroboros-cosnensus +and ekg-forward packages.

    CDDL specs for protocol codecs

    We made the cddl spec for network codec more inline with the implementation +which is highly polymorphic. cddl doesn't have the notion of polymorphism, +but has any which can generate any valid cbor term. We matched it with an +Any type on the Haskell side and made all remaining tests & specs use it. +This simplified the specifications and made it easier to understand which parts +are defined in the spec, and which parts are left unspecified. See +ouroboros-network#4595.

    Ouroboros-Network-Framework API changes

    We also released ouroboros-network-framework and other network components. +The ouroboros-network-framework package contains a redesign of API exposed to +ouroboros-consensus. We consolidated, cleaned it and made it easier to +extend in the future if there will be new arguments that need to be passed to +mini-protocol initiator and responders which comes from the low-level network +layer.

    Nix setup (CI)

    We also made a major review of our nix setup. With help from our DevX team +we ended up with a clean flake.nix file which can:

    • compile & test the code on x86_64-linux, x86_64-darwin and aarch64-darwin
    • cross-compile to Windows on x86_64-linux

    And provides a shell which contains all the build tools, including ghc-9.6, +hls, cddl, and more. See ouroboros-network#4640, +ouroboros-network#4643.

    Other contributions

    Cardano Network Service Assurance

    • The work and writeup in finishing up the CNSA, first stage (first +contract).
    • Getting Sam Cowger (Galois Inc) up to speed.
    • The IOG Networking team carried a reivew of CNSA project progress: a limitted +code & design review.

    Galois Review

    Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues

    scoping, requirements, and getting started.

    CI

    We added a nightly run for GitHub actions and made the GitHub actions test be +executed with extra concurrency ouroboros-network#4637, ouroboros-network#4649.

    We also added GitHub's dependabot ouroboros-network#4650.

    Bootstrap Peers

    We settled on implementation design of bootstrap peers which is being +implemented, ouroboros-network#4615.

    ]]>
    + network +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-18-sre + 2023-08-18-sre + Fri, 18 Aug 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet and shelley-qa environments were updated to 8.2.1-pre.
    • Work on two new repos utilizing flake parts for cardano cluster generation, automation and operation.

    Lower level summary

    Cardano-ops

    Cardano-parts

    Cardano-perf

    Cardano-playground

    Cardano-world

    Inputs-check

    • A flake parts module to check input closure sizes recursively for optimization considerations: inputs-check
    ]]>
    + sre +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-17-crypto + 2023-08-17-crypto + Thu, 17 Aug 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Include MuSig2 description in cryptography handbook
    • kes_agent: Finilising test and CI. Working on KES binary

    Low level summary

    Mithril

    • Full Node Verifier merged #939.

    MuSig2

    • Started describing MuSig2 to include it as part of the cryptography handbook

    Sidechains

    • Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in this fork.

    KES agent

    • KES agent is ready:
      • CI ready #19
      • Receipt confirmation message #20
      • KES agent binary ready #21
      • Control client implemented #11
    ]]>
    + crypto +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-17-db-sync + 2023-08-17-db-sync + Thu, 17 Aug 2023 00:00:00 GMT + + High level summary

    We have integrated many new Conway feutures and allow db-sync to sync sanchonet. +We also continued testing and improving the new db-sync options.

    Lower level summary

    • Conway integration +#1484
    • Support for Sanchonet +#1476
    • Stake distribution is computed earlier +#1484
    • Deposit ledger events are now used. This reduces the db queries and makes syncing faster +#1484
    • Testing new db-sync options +#1466
    • Added support for ghc-9.6 +#1479
    • Tech debt: improve exceptions +#1471
    ]]>
    + db-sync +
    + + <![CDATA[SECP bindings Security Issue Report]]> + https://input-output-hk.github.io/cardano-updates/2023-08-17-secp-issue + 2023-08-17-secp-issue + Thu, 17 Aug 2023 00:00:00 GMT + + Security Issue Report: SECP256k1 bug

    Date Occurred: July 15, 2022 +Severity: Potentially Very High if exploited on Mainnet +Authors: Iñigo Querejeta Azurmendi

    Date of Report: August 17, 2023

    Summary of Issue

    Criticality Level

    Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet +Context

    New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains. +How was the Issue Detected

    The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there.

    What Action was Taken

    The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod). +Fixes were applied to prevent the use of the primitives. +A full security audit was carried out on the bindings. +The rollout of the primitives was postponed to a new hard fork (Valentine)

    Potential Effect

    The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction.

    Actual Effect

    • Delay to the Vasil hard-fork
    • Temporary removal of SECP256k1 primitives
    • Additional hard-fork to introduce SECP256k1 primitives

    Ongoing Mitigations Needed, if any

    None

    Responsibility for Mitigations

    Core team

    Detailed description of Incident

    New Plutus secp256k1 cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet.

    The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing.

    • This is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an expected structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely.
    • The same happened with the Schnorr verification function. It takes as input a SECP256k1_xonly_pubkey, which is again an opaque structure that holds a parsed and valid public key.

    The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated.

    The fix was addressed in this PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts.

    Recommendations

    • Check all new Plutus bindings for correct use.
    • Audit all new Plutus built-in bindings.
    • Continue to develop specific End-to-End tests for all new Plutus features.
    • Do not assume that any existing library functions are "safe". Treat all external calls circumspectly.
    ]]>
    + crypto +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-15-node-cli-api + 2023-08-15-node-cli-api + Tue, 15 Aug 2023 00:00:00 GMT + + 2023-08-02 - 2023-08-15

    High level summary

    • cardano-node 8.2.1 (pre-release) to SanchoNet
    • Continue moving CLI into era-based top level command structure
    • Wire-up DREP key generation,
    • Fix DREP deregistration certificates
    • Implement Constitutional Committee Key generation on the CLI
    • Introducing era-based protocol parameters on the API
    • Removing depracated functions and types on the API

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    Fix broken links in docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-11-hydra + 2023-08-11-hydra + Fri, 11 Aug 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team updated hydra-node to support cardano-node version +8.1.2, ensuring compatibility with the latest mainnet release. The team also +participated in discussions about a "cardanonical" JSON schema and added it as a +submodule to the project, contributing to improved data modeling and +interoperability.

    In terms of community engagement, the team successfully onboarded a new +contributor, also participated in a RareEvo Twitter space, and continued +preparations for the Hydra master-class.

    What did the team achieve this week

    • Updated dependencies to support cardano-node 8.1.2 #1007
    • Engaged in discussions about a cardanonical json schema and +add it as submodule to the project +#1013
    • Onboarded a new contributor to the hydra project (@locallycompact)
    • Joined RareEvo twitter space and continued preparation of hydra master-class

    What are the goals of next week

    • Update & streamline tutorial to work with latest version of hydra-node
    • Remove the internal commit functionality #954
    • Release 0.12.0
    ]]>
    + hydra +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-11-performance-and-tracing + 2023-08-11-performance-and-tracing + Fri, 11 Aug 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We've concluded benchmarking node version 8.2.0.
    • Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration.
    • Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.

    Low level overview

    Benchmarking

    As part of our release benchmarking cycle, we've completed and analysed the runs for the 8.2.0 version of cardano-node. In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version.

    Tracing

    A significant amount of optimizations for the new tracing system has finally been merged to master. At the moment, +we're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding +insight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward.

    Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing.

    Nomad backend

    The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent +and reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were +able to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks.

    A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to master.

    ]]>
    + performance-tracing +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-10-mithril + 2023-08-10-mithril + Thu, 10 Aug 2023 00:00:00 GMT + + High level overview

    The Mithril team completed the Mithril protocol’s mainnet beta launch: the release-mainnet network is now consistently producing new certificates and snapshots! The team has released a new distribution 2331.1 which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the mainnet infrastructure.

    Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network.

    Low level overview

    • Released the new distribution 2331.1
    • Completed the epic Release 'mainnet' Mithril network #918
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Completed the issue Design & implement basic stress test tool for aggregator - phase 1 #991
    • Worked on the epic Post deployment 'mainnet' infrastructure #1091:
      • Completed the issue Create Production Infrastructure Runbook #1085
      • Completed the issue Ingest 'mainnet' metrics/logs in Grafana #1122
    • Worked on optimizations:
      • Completed the issue Add a 'clean' file to extracted database in client #1131
      • Worked on the issue Create explorer page with registered signers #1097
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on bugs:
      • Completed the issue Client fails to unpack some snapshot archive #1137
      • Completed the issue The 'release-preprod' network stopped producing certificates #1114
      • Completed the issue The 'release-mainnet' network does not show up in the explorer #1111
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.2' #1090
    • Worked on troubleshooting:
      • Completed the issue Signer can't sign with 'Invalid signature for party' error #1125
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-09-consensus + 2023-08-09-consensus + Wed, 09 Aug 2023 00:00:00 GMT + + High level summary

    This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of fs-sim and fs-api, and released strict-checked-vars.

    UTxO-HD

    • Rebased UTxO-HD on top of node 8.2 (issue)
    • Address new Maybe translations for UTxOs in Conway 1.6. (PR).
    • Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory.
    • Fixed an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully.
    • Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running QueryUTxOByAddress (PR).
    • Measured the speed of QueryUTxOByAddress under different queryBatchSize values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution.
    • Refactored and implemented ledgertable-related classes for the general HardforkBlock.

    Genesis

    • Frisby and Esgen continue to engage with the Researchers on grinding against the Genesis design.

    Fostering collaboration

    • Drafted a document explaining versioning of local state queries #273.

    Support

    • Frisby is the release engineer this cycle.
    • Successfully created work-in-progress ouroboros-consensus and cardano-api commits that integrate the 2023 Aug 7 tip of cardano-ledger. This will require a release of ouroboros-consensus, which hasn't happened yet.
    ]]>
    + consensus +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-04-crypto + 2023-08-04-crypto + Fri, 04 Aug 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Finalised the missing fuzz tests
    • kes_agent: engineer on PTO. Work halted

    Low level summary

    Mithril

    • Work on a mithril flaky test #1105
    • Keep working on Full Node Verifier #939. +Should be merged in the coming week.

    MuSig2

    • Finalised the fuzz tests #43

    Sidechains

    • Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.
    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-04-goedel + 2023-08-04-goedel + Fri, 04 Aug 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is formalising mini protocols and also further developing the +performance modelling prototype.

    Details

    • Developing new framework for specification and verification of +mini-protocols which is closer to the Haskell implementation.

    • Developed a new internal representation for the DeltaQ algebra that +allows for more modularity in backend implementations

    • Discussions regarding the Cardano networking specification

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-04-hydra + 2023-08-04-hydra + Fri, 04 Aug 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team achieved notable progress in various aspects of the +project. The team updated the use case section for auctions on the /unstable +branch of the website, improving the understanding of Hydras applicability.

    From the development side, the team successfully completed event-sourced +persistence, a key enhancement in the projects architecture which improves +off-chain transaction processing performance. They also added a +submit-transaction endpoint to the API.

    In addition to project-related progress, the team actively engaged in community +reviews for several catalyst proposals related to Hydra and Mithril, +contributing to the wider Cardano ecosystem.

    Finally, the full report for the month of July was also published here.

    What did the team achieve this week

    • Published the monthly report for July
    • Updated the use case section for auctions (published on /unstable branch)
    • Completed event sourced persistence #913
    • Added a submit-transaction endpoint to the API #966
    • Community reviews for several catalyst proposals related to Hydra and Mithril
    • Created a network testing tool (hydra-net) #1006

    What are the goals of next week

    • Update hydra-node to work with cardano-node version 8.x
    • Remove the internal commit functionality
    • Release version 0.12.0
    • Update & streamline tutorial to work with latest version of hydra-node
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-04-ledger + 2023-08-04-ledger + Fri, 04 Aug 2023 00:00:00 GMT + + High level summary

    The ledger team was working almost exclusively on the Conway era implementation. In +particular, the main focus was directed towards solidifying transaction related types and +their binary representation. We also directed some effort into unblocking Plutus team with +respect to PlutusV3 integration.

    Low level summary

    Conway progress

    • pull-3552 - Allow Constitutional Committee Hot Key to be ScriptHash
    • pull-3581 - Make Constitutional Committee Cold Key to be ScriptHash
    • pull-3571 - Implement a portion of the TICKF rule.
    • pull-3556 - Add Script to Constitution
    • pull-3576 - Add optional Anchor to ConwayRegDRep certificate
    • pull-3495 - Implement refund logic for Proposal deposits
    • pull-3579 - Change voting procedure in the transaction to a nested Map
    • pull-3585 - Rename CommitteeCert into a GovCert
    • pull-3587 - Remove DelegStakeTxCert from the COMPLETE pragma for TxCert
    • pull-3586 - Add CurrentTreasuryValue to TxBody
    • pull-3588 - Rename key roles
    • pull-3557 - Update NewCommittee action to use RewardAcnt and add more info
    • pull-3595 - Add ConwayUpdateDRep constructor to ConwayTxCertGov type
    • pull-3600 - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway
    • pull-3597 - Update ProposalProcedure return address to be a RewardAcnt

    Testing

    • pull-3374 - New features for generation subject to constraints
    • pull-3519 - Basic Conway features test

    Bugfixes

    Plutus integration

    • issue-3538 - A fairly complete specification was created for the PlutusV3 context
    • pull-3593 - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality

    Improvements and releasing

    • pull-3574 - Improve clarity and performance of collateral Non-ADA validation:
    • pull-3573 - Update top-level CHANGELOG.md with cardano-node relevant changes
    • pull-3555 - Bump pygments from 2.12.0 to 2.15.0 in /doc
    • pull-3575 - Bump certifi from 2022.12.7 to 2023.7.22 in /doc
    • pull-3567 - Backport mint field translation bugfix
    • pull-3568 - Fixed typo in byron ledger spec
    • pull-3572 - Release/backport tickf bugfix
    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-04-network + 2023-08-04-network + Fri, 04 Aug 2023 00:00:00 GMT + + High-level overview of sprint 41

    24th July - 6th August 2023

    We started the implementation of bootstrap peers. Bootstrap peers are designed +to provide a safety guarantee for nodes joining the network while still taking +advantage of the distributed network for nodes that are synced. This will be +an intermediate step before Genesis which will allow for further distribute the +system. The bootstrap peers will be run by some trusted partners like CF, +Emurgo or IOG. They are primarily designed for leaf nodes (e.g. full node +wallets), which often end up syncing and require access to the honest chain. See +ouroboros-network#4615 for a more detailed implementation plan.

    Other contributions

    We started to use nothunks library to discover if we have any unevaluated +thunks which can lead to memory leaks ouroboros-network#4633. We found +a small one in the peer metric component of the P2P networking stack. Fixing +it put us on a small detour of fixing the API of the strict-checked-vars +package: cardano-base#431, cardano-base#432, as well as adding NFData +instance to io-classes. We also improved nothunks +library to make debugging easier and we provided a NoThunks instance for +ThreadId which we will need in the future (see nothunks#33).

    We released a new version of io-classes (version 1.2.0.0) and related +packages to Hackage.

    We addressed all review comments on the eclipse evasion PR which introduces big +ledger peers, ouroboros-network#3886.

    We fixed how SIGHUP signal handlers are registered, so it's not possible to +shutdown a node which was starting while trying to update network topology, +see cardano-node#5421.

    I didn't mention that in the previous update, so here it goes: in the previous +sprint we released ouroboros-network-0.8.2.0 and +ouroboros-network-framework-0.7.0.0.

    ]]>
    + network +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-04-performance-and-tracing + 2023-08-04-performance-and-tracing + Fri, 04 Aug 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version 8.2.0.
    • Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing.
    • Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6.
    • Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.

    Low level overview

    Benchmarking

    The 8.2.0 version of cardano-node required adjustment of some of the sanity checks that are part of our benchmarking +cluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version.

    Tracing

    The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint +when using it as default for a running node.

    A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any +inconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node. +This feature adds another layer of robustness to the whole system.

    Infrastructure

    A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler +versions. We've future-proofed our benchmarking code.

    Nomad backend

    The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend +accordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant.

    The validation phase is ongoing. We were able to perform successful runs and analyses for various 8.x node versions, including 8.2.0-pre. With parallel runs on the current cluster, we hope to measure the same effects we've observed with the +nomad backend - which will be a big step towards production use.

    ]]>
    + performance-tracing +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-04-sre + 2023-08-04-sre + Fri, 04 Aug 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Preprod and preview envionments were updated to 8.1.2.
    • Sanchonet and shelley-qa environments were updated to 8.2.0-pre.
    • Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.

    Lower level summary

    Cardano-ops

    Cardano-perf

    Cardano-world

    ]]>
    + sre +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-08-01-node-cli-api + 2023-08-01-node-cli-api + Tue, 01 Aug 2023 00:00:00 GMT + + 2023-07-19 - 2023-08-01

    High level summary

    • Release of Node 8.2.0
      • Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694.
      • This release is phase 1 of the SanchoNet roll out
      • Allows SPOs to vote on changes to the on-chain constitution.
      • Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag.
      • Updates to the networking packages prepare the road for peer sharing.
    • cardano-cli and cardano-api continue to integrate Conway era features
    • Continue refactoring of cardano-testnet

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-31-network + 2023-07-31-network + Mon, 31 Jul 2023 00:00:00 GMT + + Network Update (Sprints 39 & 40)

    The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away. +It was great to see and talk to so many of the community members.

    Sprint 39 (Jun 26 - Jul 09)

    Major changes

    Now the following list of traces will be turned on by default:

    node-to-client protocol
    • LocalConnectionManagerTracer
    • LocalInboundGovernor
    • LocalHandshake
    • LocalServer
    node-to-node protocol
    • Server

    See cardano-node#5353. This will be released in node-8.2.0.

    We made sure that cardano-client-0.1.0.x library (which is db-sync) is not using the experimental node-to-client protocol. +The cardano-client-0.2.0.0 was not affected. +See ouroboros-network#4612.

    We merged the dynamic block production feature to ouroboros-consensus (also available in the cardano-node-8.2.0 release). +Dynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes. +See ouroboros-network#3159, [ouroboros-consensu#140].

    We continued to review the implementation of big ledger peers for eclipse evasion, see ouroboros-network#4462.

    Minor changes

    Sprint 40 (Jul 09 - Jul 23)

    Major changes

    We integrated ouroboros-network-0.8.2.0 with the master branch of cardano-node for the 8.2.0 release (the version match between ouroboros-network and cardano-node is purely accidental). +This includes:

    • integration with dynamic block production feature. +This feature is documented in the following PR.
    • Warm valency for local root peers (see below).

    For the full list of features included in the 8.2.0 release from the network side, please take a look at the pre-release nodes.

    We improved the memory footprint of peer metrics measured by the P2P stack. +Peer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation). +See ouroboros-network#4620. +The improvement will be available in cardano-node-8.2.0.

    We added an optional explicit warm valency to local root peers of the P2P topology file. +Previously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to. +The hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones. +Warm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses. +See ouroboros-network#4575, cardano-node#5409.

    ]]>
    + network +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-28-hydra + 2023-07-28-hydra + Fri, 28 Jul 2023 00:00:00 GMT + + High-level summary

    During this week, the Hydra team achieved significant progress in various areas. +They conducted the monthly review meeting for July, which continously ensures +transparent communication and project evaluation. The team migrated the core +logic of the node to an event-sourced architecture and incremental writes of +events to persistence, enhancing the projects performance and maintainability. +Furthermore, the team added the ability to read protocol parameters via the API +and fixed the CI workflows to support pull requests from forks of external +contributors, streamlining the development process for community involvement.

    What did the team achieve this week

    • Held the monthly review meeting for July (recording)
    • Migrate the core logic of the node to an event-sourced architecture #999
    • Updated persistence to faster incremental writes of events #1000
    • Added ability to read protocol parameters via API #735
    • Fix CI workflows to support pull requests from forks of external contributors #993
    • Updated to GHC 9.2.8 #1005
    • Prepared an updated use cases section on https://hydra.family (published with next release)

    What are the goals of next week

    • Publish monthly report
    • Complete user transaction submission work #966
    • Remove commit from internal wallet (deprecated) #954
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-27-mithril + 2023-07-27-mithril + Thu, 27 Jul 2023 00:00:00 GMT + + High level overview

    The Mithril team launched Mithril protocol’s mainnet beta: the release-mainnet network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch.

    They have released a new distribution 2329.0, which is running on the release-mainnet network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator.

    Finally, they have worked on enhancing the documentation for onboarding SPOs and setting up a Mithril signer, and fixing installation bugs of the binary artifacts produced in the CI.

    Low level overview

    • Created the dev blog post Mithril Protocol’s Mainnet Beta Launch
    • Released the new distribution 2329.0
    • Closed the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Deploy 'mainnet' infrastructure #988
      • Completed the issue Handle Secrets management #989
    • Worked on the epic Release 'mainnet' Mithril network #918
      • Completed the issue Prepare SPO on-boarding guide #1049
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Enhance the configuration of Mithril relay #1080
      • Completed the issue Remove legacy store adapters from aggregator #1053
      • Completed the issue Add a 'sign' sub-command to 'genesis' command in aggregator #1081
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on documentation:
      • Completed the issue Enhance 'Run a Mithril Signer node (SPO)' guide #1055
    • Worked on bugs:
      • Completed the issue Shared library error in CI binaries #1073
      • Completed the issue Debian package does not install cleanly on older ubuntu versions #834
      • Completed the issue Aggregator panics with new (de)serialization of 'ProtocolVerificationKey' #1083
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-26-consensus + 2023-07-26-consensus + Wed, 26 Jul 2023 00:00:00 GMT + + High level summary

    The db-sync team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now. +We also focused on completing tracing support for UTxO-HD in cardano-node. +Currently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further.

    The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ChainSync client as part of the onboarding efforts for the team that will implement Genesis.

    The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team.

    Genesis liaising

    Improvements to the ChainSync client:

    ]]>
    + consensus +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-21-hydra + 2023-07-21-hydra + Fri, 21 Jul 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team updated the specification to align with recent +off-chain protocol changes, completed refactoring the snapshot emission +in preparation for event-sourced protocol logic, and updated to GHC +9.2.7, resulting in improved compile times and slightly smaller Plutus +scripts.

    What did the team achieve this week

    • Updated the specification to match the recent off-chain protocol +changes to complete +#728
    • Refactored the snapshot emission logic in preparation for event +sourced protocol logic.
    • Updated to GHC 9.2.7, which led to improved compile times and +slightly smaller plutus scripts.

    What are the goals of next week

    • Monthly review meeting next wednesday and July report
    • Reflect latest information onto our roadmap.
    • Actual implemention of event-sourced persistence +#913.
    • Update the use cases section on https://hydra.family
    • Remove deprecated internal commit +#954.
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-21-ledger + 2023-07-21-ledger + Fri, 21 Jul 2023 00:00:00 GMT + + High level summary

    Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet. +All members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era. +We also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release). +Additionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available. +We also made progress on the constraint-based generators, which can now generate valid transactions and ledger states.

    What we achieved

    • [pull-3521] [pull-3554] Improved Governance model (GovernanceProcedures, ProposalProcedure)
    • [pull-3520] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert )
    • [pull-3531] Refactored and simplified code interacting with Plutus
    • [pull-3558] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix.
    • [pull-3550] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed.
    • [pull-3551] [pull-3546] [pull-3472] Updated tools and added some small improvements
    • [issue-3146] [pull-3498] Introduced Conway protocol parameters
    • [issue-2948] [pull-3499] Implemented ConwayGenesis with the new protocol parameters

    What is currently in progress

    ]]>
    + ledger +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-21-sre + 2023-07-21-sre + Fri, 21 Jul 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent improvements include:

    • Re-spin sanchonet for testing a new node version followed by fork to Conway
    • Deploying a sanchonet compatible faucet to sanchonet
    • Migrate shelley qa legacy environment to cardano-world

    Lower level summary

    Cardano-node

    Cardano-ops

    • Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: cardano-ops-compare

    Cardano-world

    Iohk-nix

    ]]>
    + sre +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-20-goedel + 2023-07-20-goedel + Thu, 20 Jul 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is working on formalising mini protocols, the performance +modelling prototype and also finishing off their ICE papers.

    Details

    • Formalization of the chain synchronization mini-protocol in the +thorn calculus

    • Final pre-publication steps for ICE 2023 papers

    • Developing approach for specification and verification of +mini-protocols

    • Started work on porting the DeltaQ framework to a new, more concrete +backend based on piecewise-polynomials

    ]]>
    + goedel +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-18-node-cli-api + 2023-07-18-node-cli-api + Tue, 18 Jul 2023 00:00:00 GMT + + 2023-07-05 - 2023-07-18

    High level summary

    • Integrate Conway certificates in cardano-api
    • Prepare cardano-cli and cardano-api for cardano-node 8.1.2
    • Tagged cardano-cli 8.3.0.0
      • Query for the hash of the constitution (Conway)
      • Ability to create votes and governance actions
    • Tagged cardano-cli 8.3.1.0
      • Make it build with ghc-9.6
    • Upgrade to optparse-applicative-fork-0.18.1.0 for parsing command line options

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-14-hydra + 2023-07-14-hydra + Fri, 14 Jul 2023 00:00:00 GMT + + High-level summary

    This week the team focused on exploring the event sourced persistence in order +to improve hydra-node performance. Because of this work the team noticed we +need to refactor the emit snapshot emission logic and update the spec in the +light of new changes. They also took the time to revisit their goals and product +plans for the next quarter as well as doing some security fixes related to +multisignatures.

    What did the team achieve this week

    • Finished spike about performance improvements of event sourced persistence #963.
    • Refactor snapshot emission in protocol logic.
    • Revisited our roadmap and goals.
    • Prepared and conducated a learning session on lean-waste.
    • Improve security of multi-signature checks, see this Github security advisory.
    • Implemented a cache friendly way to version our binaries #962.

    What are the goals of next week

    • Implement Event sourced persistence #913.
    • Remove deprecated internal commit #954 and close #728.
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-13-mithril + 2023-07-13-mithril + Thu, 13 Jul 2023 00:00:00 GMT + + High level overview

    The Mithril team created a new 2327.0 distribution. They focused on preparing the beta launch on the mainnet: they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the mainnet infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library.

    Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs.

    Low level overview

    • Released the new distribution 2327.0
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Add infrastructure monitoring #987
      • Worked on the issue Deploy 'mainnet' infrastructure #988
      • Worked on the issue Handle Secrets management #989
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Remove certificate hash from Artifact #932
      • Completed the issue Check vulnerabilities in CI #1037
      • Completed the issue Add 'created_at' in Mithril Stake Distribution messages #1030
      • Completed the issue Add a 'run-only' option in end to end test #1048
    • Worked on refactoring:
      • Completed the issue Factorize protocol crypto operations #669
      • Completed the issue Refactor aggregator dependency injection and services #1058
      • Completed the issue Build static binaries in CI #874
    • Worked on documentation:
      • Completed the issue Prepare SPO on-boarding guide #1049
      • Completed the issue Add instructions to set firewall using iptables #1040
      • Completed the issue Update ufw command to set firewall on Mithril Signer installation instructions #1041
    • Worked on bugs:
      • Completed the issue Aggregator does not detect certificate chain epoch gap #952
      • Completed the issue 'testing-preview' network does not create certificates #1015
      • Completed the issue SQLite compatibility in aggregator #837
      • Completed the issue Q&A followup fixes #1035
      • Completed the issue E2E tests are flaky in CI #1023
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-12-consensus + 2023-07-12-consensus + Wed, 12 Jul 2023 00:00:00 GMT + + High level summary

    This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a proposed fix. The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine.

    The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility.

    On the support front, the team drafted an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load.

    ]]>
    + consensus +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-12-performance-and-tracing + 2023-07-12-performance-and-tracing + Wed, 12 Jul 2023 00:00:00 GMT + + High level summary
    • Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed.
    • Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends.
    • Tracing: Optimization of the new tracing system is ongoing and yielding good performance results.
    • Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.

    Low level overview

    Benchmarking

    Our analysis of the GHC9 build of cardano-node has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation.

    In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into cardano-node. This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle.

    Infrastructure

    We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in master.

    Tracing

    Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance.

    Nomad backend

    For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run.

    Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to master.

    ]]>
    + performance-tracing +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-07-crypto + 2023-07-07-crypto + Fri, 07 Jul 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: First version of snark-based ATMS
    • mithril: Full node verifier
    • kes_agent: Keep progress, and prepare CIP and CPS
    • CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP

    Low level summary

    kes_agent

    Mithril

    • Final review of the implementation of Full Node Verifier #939. +Included benchmarks and further tests.

    Sidechains

    • Schnorr signature implemented
    • ATMS signature implemented
    • First benchmarks show that for the committe size we expect, we need 2^21 constraints.

    CIPs and community

    • Addressed some review comments in #PR506
    • Worked with the communityt on #PR524 to include Keccak as part of the next Plutus release.
    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-07-goedel + 2023-07-07-goedel + Fri, 07 Jul 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the teams have been working on finalising their ICE papers +for publication in EPTCS, formalising concensus, and investigating chain +sync.

    Details

    • Preparing final versions of ICE papers

    • Reviewing the chain sync design and documentation

    • Refactoring the thorn calculus

    • First draft of Praos specification

    • Developing bounding factors on timeouts

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-07-hydra + 2023-07-07-hydra + Fri, 07 Jul 2023 00:00:00 GMT + + High-level summary

    This week the Hydra team accomplished some nice progress. They secured the +network layer further by implementing authentication of the messages between the +peers in the Head protocol. In the process they also managed to separate +HeartBeat messages from the protocol ones which somewhat improved the quality of +code in Hydra. The team also finished work related to sending only transaction +ids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark +publishing on the website.

    What did the team achieve this week

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Add new endpoint for submitting client transactions
    • Remove commit from internal wallet
    ]]>
    + hydra +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-07-sre + 2023-07-07-sre + Fri, 07 Jul 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance.

    Some notable recent improvements include:

    • Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment
    • Explorer component updates
    • Spongix caching server rewrite for R2 Cloudflare support and various performance improvements

    Lower level summary

    Cardano-node

    Cardano-ogmios

    Cardano-ops

    • Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: cardano-ops-compare

    Cardano-rosetta

    Cardano-world

    Spongix

    • Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: spongix-simple-branch
    ]]>
    + sre +
    + + <![CDATA[Developer Experience Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-06-developer-experience + 2023-07-06-developer-experience + Thu, 06 Jul 2023 00:00:00 GMT + + High level summary

    The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements.

    Lower level summary

    build support & maintainance

    The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions.

    compiler upgrades

    Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests.

    Hydra Tools

    Our repository, input-output-hk/actions, has seen quite some improvements to facility the hydra <-> github integration.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of preliminary GHC 9.8 support.

    devx

    The devx repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our actions/devx GitHub Actions, we have a consistent set of tooling for

    • nix develop shells
    • GitHub CodeSpaces integration
    • VSCode DevContainer support
    • GitHub Actions integration

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    ]]>
    + devx +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-04-db-sync + 2023-07-04-db-sync + Tue, 04 Jul 2023 00:00:00 GMT + + High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested
    • Many devx issues resolved

    Lower level summary

    • We have improved and validated the design for the Conway integration in db-sync
    • Improved the initial integration of the UTxO-HD feauture branches which are under test
    • Prepared a new release 13.1.1.3 which supports node 8.1.1 +#1455.
    • This also fixes a bug +#1451
    • Added new tests to the new tx_out options +#1429
    • Fixed a chronic issue in db-sync related to exception handling and concurrency +This fixes many other issues and simplifies the logic in db-sync +#1447
    • A number of fixes and improvements in ci, docker, devx, docs +#1436#1442#1448#1452
    ]]>
    + db-sync +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-07-04-node-cli-api + 2023-07-04-node-cli-api + Tue, 04 Jul 2023 00:00:00 GMT + + 2023-06-21 - 2023-07-04

    High level summary

    • Started integration of conway era into the cardano-api,
    • Pre-release of cardano-cli 8.2.1 which enables creating goveranance "Update constitution" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.
    • Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities.
    • Continue refactoring cardano-testnet
    • CI and docs house keeping on the new cardnao-cli and cardano-api repositories

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-30-hydra + 2023-06-30-hydra + Fri, 30 Jun 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team wrote and published the monthly report for June, +implemented the end-to-end functionality for external commits, and tested it on +the preview environment. They also listed Hydra as a tool on the Cardano +developer portal, providing more visibility for the project. The team clarified +the path forward for L2 protocol improvements and explored an alternative CI +approach using cabal instead of nix. Additionally, they released version 0.11.0, +marking another milestone in the projects development.

    What did the team achieve this week

    • Written and published the monthly report for June
    • Implemented external commits end-to-end incl. tested it on preview #215
    • Listed Hydra as a tool on cardano developer portal
    • Cleared up path forward on L2 protocol improvements #728
    • Established an alternative CI using more cabal tools #923
    • Release version 0.11.0

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Complete ReqSn only sends transaction ids #728
    • Groom and plan last items for 0.12.0 (remove internal commit)
    • Improve reliability of benchmarks
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-29-mithril + 2023-06-29-mithril + Thu, 29 Jun 2023 00:00:00 GMT + + High level overview

    The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano mainnet infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator.

    Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1.

    Low level overview

    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Add infrastructure monitoring #987
    • Completed the epic Prepare Mithril Signer deployment model for SPO #862:
      • Completed the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
      • Completed the issue Adapt infrastructure to use Mithril Relay #1018
      • Completed the issue Announce the new signer deployment model in a dev blog post #1017
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on bugs:
      • Completed the issue Aggregator does not exit on critical error #993
      • Completed the issue Computation of master certificate of an epoch is incorrect #1006
      • Completed the issue End to end tests are flaky #954
      • Worked on the issue 'testing-preview' network does not create certificates #1015
    • Worked on optimizations:
      • Completed the issue Dates format is not standardized #946
      • Completed the issue Add 'recompute-certificates-hash' command to aggregator #1001
      • Completed the issue Add a retry mechanism for artifact creation in aggregator #984
      • Completed the issue Log node version at startup in Aggregator/Signer #944
      • Completed the issue Reactivate Publish Results job in CI #978
      • Completed the issue Clean 'pending_snapshot' directory of aggregator #983
      • Completed the issue Update OpenAPI spec examples #1000
    • Worked on refactoring:
      • Completed the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Refactoring client #982
      • Completed the issue Refactor download code in client #1010
      • Worked on the issue Factorize protocol crypto operations #669
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.1' #973
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-28-consensus + 2023-06-28-consensus + Wed, 28 Jun 2023 00:00:00 GMT + + High level summary

    During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team.

    The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components.

    Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node.

    Genesis

    • We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.

    • We decided on an approach of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team.

    UTxO-HD

    • We merged the last of the PRs that were part of UTxO-HD improvements for version 0.1: expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size.
    • We added a new "legacy" cardano block in a new ouroboros-consensus-cardano-legacy-block package that should ease the transition for some downstream packages to UTxO-HD, like db-sync. This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block.
    • We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.
    ]]>
    + consensus +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-28-performance-and-tracing + 2023-06-28-performance-and-tracing + Wed, 28 Jun 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9.
    • Infrastructure: The first batch of refactoring and documentation for our tx-generator has been merged to master.
    • Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown.
    • Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.

    Low level overview

    Benchmarking

    The compiler switch to GHC9 as the default build platform for cardano-node and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard.

    Using the forge-stress approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node.

    Infrastructure

    The tx-generator is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to master. Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base.

    Tracing

    The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue.

    Nomad backend

    With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress.

    Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend.

    ]]>
    + performance-tracing +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-23-goedel + 2023-06-23-goedel + Fri, 23 Jun 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the teams presented two papers at ICE 2023.

    Details

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-23-hydra + 2023-06-23-hydra + Fri, 23 Jun 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team shared progress updates during the monthly review +meeting (monthly report and video recording available soon) and started +experimenting on preview network with the new commit from external wallet +feature.

    What did the team achieve this week

    • Monthly report & review meeting, demonstrating commit from external +wallet
    • Published regular benchmarks for +Hydra
    • Moved forward the journey for external commits using multiple script UTxOs +#903
    • Changed the API to only put transaction id in snapshots, instead of the full +transactions #922 -> this +is now evolved into fully addressing #728
    • Fuel marking is now optional as one can now commit from an external wallet +#924
    • Add flag option to display node version on tui +#934

    What are the goals of next week

    • Complete external commits using multiple script UTxOs #903
    • New release 0.11.0
    • Dirtroad solution of improved persistence performance #913
    ]]>
    + hydra +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-23-network + 2023-06-23-network + Fri, 23 Jun 2023 00:00:00 GMT + + Network Update

    Key contributions

    We held a series of session to review the implementation of big ledger peers +(eclipse evasion). See #4462.

    We get a request from a 3rd party to clarify an inconsistency between CDDL spec +and protocol implementation. We worked out a nice solution which takes +advantage of the any notion available in CDDL. On the Haskell side we +provide Any type which gen generate almost any CBOR term (some are excluded +only because they are not decoded back to the same form, and we relay on that +property). See #4580.

    We fixed a bunch of problems of the cardano-cli ping command. It also now has +a limited support of node-to-client mini-protocol (the -c option is +ignored, as it cannot be supported by node-to-client protocol). Note that +the format of messages has changed, timestamps are printed in ISO8601 format. +See #4601, #5326, #5313, #30

    In order to provide a new flag in the topology file which enables ledger peers +when the chain is close to the tip, we continued to work on #4530. This is +currently in review, the consensus team will need to provide us with the new +api. This feature is useful for two reasons: makes it easier to maintain +a topology file, it will also limit the traffic on public roots generated by +for example full node wallets and distribute it to ledger peers.

    We also continued to work on a blog post which describes the journey of design +& implementation of the dynamic P2P network layer. Too be announced soon :).

    Other smaller changes

    We limit the concurrency of resolving dns names. Up to 8 root peers or ledger +peers DNS names are resolved concurrently, and at most 2 local root peer DNS +names. See #4596.

    We fixed handshake query timeout in #4603.

    We renamed one of the block-fetch decision constructors as requested by the +consensus team, see #4608.

    ]]>
    + network +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-23-sre + 2023-06-23-sre + Fri, 23 Jun 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:

    • A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality
    • Cardano Sanchonet environment was stood up to test Conway era functionality
    • Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case
    • Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments

    Lower level summary

    Cardano-node

    • Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: cardano-node-pull-5318

    Cardano-ops

    Cardano-world

    Ci-ops

    Ci-world

    • Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ci-world-compare

    Devx-ci

    • A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: devx-ci-repo

    Iohk-nix

    ]]>
    + sre +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-16-hydra + 2023-06-16-hydra + Fri, 16 Jun 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team focused their efforts on continuing to investigate and +experiment operating a head on mainnet. They collected several bugs and issues +and worked on fixing them. Now the team is soon to release a new version, +0.11.0, which comes with a lot of improvements and bug fixes.

    What did the team achieve this week

    • Restored and fixed a bug which stalled our head on mainnet #927
    • Solved one user issue #914
    • Reduced significantly local state size and logs by removing the full scripts from it #928
    • (pending review) Reduced snapshot size in the API, by only including tx ids #922

    What are the goals of next week

    • New release 0.11.0
    • Monthly report & review meeting.
    • Fix some minor bugs discovered when operating our head on mainnet
    • Complete journey for external commits using multiple script UTxOs #903
    • Publish benchmarks and provide regular benchmarks for Hydra #186
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-15-mithril + 2023-06-15-mithril + Thu, 15 Jun 2023 00:00:00 GMT + + High level overview

    The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client’s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet.

    Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI.

    Low level overview

    • Completed on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Create the sub-command for 'Mithril Stake Distribution' in client #896
      • Completed the issue Adapt end to end tests to handle new types of data #899
      • Completed the issue Update client documentation #897
      • Completed the issue Update architecture documentations for new types of data #898
      • Completed the issue Refactoring client #960
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Enhance terraform infrastructure #930
    • Completed the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Check performance impact of new stake distribution command on the 'mainnet' #962
    • Worked on the epic Prepare Mithril Signer deployment model for SPO #862:
      • Worked on the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
    • Worked on bugs and optimizations:
      • Completed the issue Aggregator does not always detect new immutable file #953
      • Completed the issue CI tests fail with Rust '1.70.0' #958
      • Worked on the issue End to end tests are flaky #954
      • Worked on the issue Certificate dates in metadata are not on the same timezone #946
      • Worked on the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Fix 'Mithril Client multi-platform test' with new client interface #956
      • Completed the issue Enhance 'ImmutableDigesterError::NotEnoughImmutable' error #969
      • Completed the issue Client 'snapshot download' command fails with option '--download-dir' #979
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-14-consensus + 2023-06-14-consensus + Wed, 14 Jun 2023 00:00:00 GMT + + High level summary

    The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the Byron and TPraos eras do not need to be checkpointed for an MVP. +There is one remaining question (which applies also to the Praos era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated "Limit on Patience" timeout sufficiently bounds how long the adversary can inflate a victim's overall sync time.

    On the UTxO-HD front, the prototype branch was rebased on top of the latest ouroboros-consensus main branch and integrated on top of cardano-node 8.1.1-pre. As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD. +We managed to run a node again with UTxO-HD enabled. +We also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for cardano-node, which uncovered a performance regression on the Network component when using GHC-9.2/9.4. This is being addressed.

    Regarding our support activities, we Released fs-sim-0.2.0.0 and are in the process of preparing the 8.2 release of cardano-node. We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests.

    ]]>
    + consensus +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-14-performance-and-tracing + 2023-06-14-performance-and-tracing + Wed, 14 Jun 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We've continued release benchmarking and established a new baseline for 8.0.0.
    • New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined.
    • Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.

    Low level overview

    Benchmarking

    In our release benchmarking cycle, we established a new performance baseline for 8.0.0. Additionally, we've measured +performance under various workloads for 8.1.1-pre; the results look promising and validate the optimization efforts +done on several system components.

    In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for +benchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper.

    Tracing

    The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be +meaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific +trace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles.

    Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD.

    Nomad backend

    As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs.

    This means the backend is entering validation phase, where we systematically compare all metrics taken from the new +infrastructure to the existing ones, including determining reproducibility and variance.

    ]]>
    + performance-tracing +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-12-network + 2023-06-12-network + Mon, 12 Jun 2023 00:00:00 GMT + + Network Update

    Key contributions and advances

    We merged light peer sharing feature, which allows to include inbound peers +into outbound governor known peers. This is the primary way for new +unregistered nodes to enter the network, which then can be shared using peer +sharing. Note that peer sharing is an experimental feature which is disabled +until genesis & eclipse evasion as fully implemented. See #3596.

    We are making progress reviewing eclipse evasion, #3886.

    We fixed another bug in local root peers. We found out that if the local roots +where ignored until the first domain name was resolved, see #4583. The bug +fix was backported and released in ouroboros-network-0.8.1.1.

    We re-started working on dynamically enabling block forging to address issue +#3159, which will enable us to release P2P on block producing nodes. See #140.

    New cardano-ping / cardano-cli ping release

    We prepared a new release of cardano-ping library which supports the new +query feature (query supported versions). See #4589, #4593 and #5313. +The new version of cardano-cli ping will use ISO8601 formatted +timestamps; also the formatting of ping results is slightly improved, and it +will introduce the new --query-versions (-Q) switch. If the remote site +supports the query parameter, the command will print:

    redacted-ip:port network rtt: 0.064
    redacted-ip:port handshake rtt: 0.064010896s
    redacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat
    orAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]

    otherwise it will print the negotiation results

    redacted-ip:port network rtt: 0.045
    redacted-ip:port handshake rtt: 0.101867615s
    redacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder

    Note that in that case cardano-cli ping offers InitiatorAndResponder, which +allows us to detect whether the remote side is an InitiatorOnly or +InitiatorAndResponder. Also cardano-cli ping will no longer announce +itself as InitiatorAndResponder, except for the case mentioned above.

    Other smaller contributions

    On a request from the Marlow Team, we published haddocks of typed-protocols, +which are now available here (#40, #41).

    We made a new release of strict-stm-1.1.0.1 on Hackage, which fixed a bug in +package description file, #101 .

    We also helped to debug a deadlock when using named pipes on Windows in the new +RawBearer API. The API is being used to store secret keys only in memory. +The PR #4395 is under review.

    We also have two more PRs which are under review:

    • #4530: enabling ledger peers on a fixed number of slots before the tip of the chain;
    • #4580: a PR which fixes inconsistencies in one of our cddl specs.
    ]]>
    + network +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-09-crypto + 2023-06-09-crypto + Fri, 09 Jun 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: E2E tests for BLS bindings and KES agent
    • Sidechains: Implement ECC chip and Rescue hash primitives for ATMS
    • mithril: Full node verifier

    Low level summary

    cardano-base

    • RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); blocked due to issue with windows' localSnocket. Trying to resolve.
    • Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors #317.
    • Above, blocked by the simplification of typeclasses #404.
    • Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings

    Mithril

    • Implementation of Full Node Verifier #939

    Sidechains

    • ECC chip implemented for JubJub over BLS12-381
    • Rescue chip implemented for hashing.
    • Currently working on Schnorr signature (which uses the above constraints)
    ]]>
    + crypto +
    + + <![CDATA[Developer Experience Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-09-developer-experience + 2023-06-09-developer-experience + Fri, 09 Jun 2023 00:00:00 GMT + + High level summary

    The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements.

    Lower level summary

    build support & maintainance

    Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure LoadDLL errors to blst integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like cardano-base experiencing significant reductions in CI complexity.

    compiler upgrades

    After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility.

    CHaP (cardano-haskell-packages)

    We relocated the underlying tooling, (foliage), for CHaP into the IOG organization. Furthermore, we have introduced improved tooling to quickly add constraints to packages, better error reporting for add-revision and better hackage url compatibility to facilitate easer usage of CHaP.

    GitHub Actions

    Our repository, input-output-hk/actions, now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the base and haskell install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking cabal.

    iohk-nix

    The iohk-nix repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, sodium, blst, and secp256k1, are also fixed to certain revisions within the iohk-nix repository.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to gmp.

    devx

    The relatively new devx repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The devx repository's readme has been updated to reflect its purpose and usage guidelines.

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    ]]>
    + devx +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-09-hydra + 2023-06-09-hydra + Fri, 09 Jun 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team worked on multiple fronts. They finished the +investigation about the broken head on mainnet and re-opened their persistent +head instance. The team also fixed the monthly report publication on their +website and started sketching ideas and further improvements. Also, they are on +the last mile to deliver a new feature which will allow parties to commit funds +from extern wallets. Finally the team started to work on optimizing the +performance on their benchmarks.

    What did the team achieve this week

    • Finished investigation on broken head on mainnet #897 and re-opened it.
    • Added support for externally committing regular utxo #887
    • Fix monthly report publication on docs website and published the monthly report. Odd problems when publishing monthly report:
      • Make us think about if we should change something about the website #908
      • Open issue to docusaurus #9036
    • Fixed a bug in the benchmark process #910
    • Explored performance of the hydra-node{.verbatim} and identified a +bottleneck.
    • Timed transaction feature is being used by the auction project 🎉

    What are the goals of next week

    • Complete performance analysis and start/plan improvements and provide +regular benchmarks for Hydra #186
    • Add hydra as tool to developer platform #872.
    • Authenticate network messages #727.
    • Complete journey for external commits using multiple script UTxOs #903
    • Start implementing Option B for external commits #215.
    ]]>
    + hydra +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-08-db-sync + 2023-06-08-db-sync + Thu, 08 Jun 2023 00:00:00 GMT + + High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2
    • A new hire will help us with devx issues.

    Lower level summary

    ]]>
    + db-sync +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-08-goedel + 2023-06-08-goedel + Thu, 08 Jun 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on giving and preparing public +talks, also on preparing final versions of their ICE 2023 papers, and +on analysing chain selection.

    This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

    Details

    ]]>
    + goedel +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-08-sre + 2023-06-08-sre + Thu, 08 Jun 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer.

    Lower level summary

    Bitte

    • Equinix bare metal capability was added to bitte: bitte-pull-194
    • Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: bitte-pull-201

    Bitte-cells

    Cardano-graphql

    Cardano-node

    Cardano-ops

    Cardano-world

    Ci-ops

    • Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ci-ops-pull-108

    Ci-world

    Cicero

    • Implement a cicero webhook backoff with exponential decay plus jitter: cicero-pull-79

    Iohk-nix

    Openziti

    ]]>
    + sre +
    + + <![CDATA[System Test Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-08-system-test + 2023-06-08-system-test + Thu, 08 Jun 2023 00:00:00 GMT + + High level summary

    Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.7 and 8.0.0 releases.

    Workstreams

    Full list of closed PRs

    Framework improvements:

    • Make cardano-submit-api REST API service available and run corresponding regression tests by default
    • Update cabal build testing for 8.0.0
    • Add support for testing governance SPO poll
    • Use Poetry for Python dependency management
    • Check status of known GH issues during tests runtime and finish the test accordingly
    • Generate topology files with both IP addresses and DNS names
    • Log issues like failure to start a cluster instance and report errors during tests runtime

    Testing improvements

    • Add rollback testing:
      1. global consensus is reached after rollback, in situation where less than securityParam blocks were produced since cluster split
      2. global consensus is not reached when more than securityParam blocks were produced, and the result is permanent fork
    • Add tests to governance SPO poll commands

    Node:

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests
    ]]>
    + system-test +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-07-node-cli-api + 2023-06-07-node-cli-api + Wed, 07 Jun 2023 00:00:00 GMT + + 2023-06-07 - 2023-06-20

    High level summary

    • Completed cardano-cli migration to input-output-hk/cardano-cli
    • cardano-cli ping now uses cardano-ping-0.2.0.5
    • New queries on API:
      • queryCurrentEpochState
      • queryDebugLedgerState
      • queryGenesisParameters
      • queryPoolDistribution
      • queryPoolState
      • queryProtocolParameters
      • queryProtocolParametersUpdate
      • queryProtocolState
      • queryStakeAddresses
      • queryStakeDistribution
      • queryStakePoolParameters
      • queryStakeSnapshot
    • Deprecate:
      • queryPparams
    • Export query API as functions
      • genFeatureValueInEra
      • featureInShelleyBasedEra
      • isFeatureValue
      • valueOrDefault
      • asFeatureValue
      • asFeatureValueInShelleyBasedEra
      • queryEpoch
      • requireShelleyBasedEra
    • Restructure cardano-testnet (WIP)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-02-hydra + 2023-06-02-hydra + Fri, 02 Jun 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team has put their effort on finding solutions on many +different problems, such as our broken head on mainnet +#897, our fragile monthly +report publications on the website and implementing Option A for +external commits #215. +Although most of these items are still open, huge progress has been made. To +accelerate the investigation, they improved their logging to give more precise +errors when a transition requirement fails, and to reduce duplication on effets +logged content. Last but not least, the team is exploring formal methods and +attended a workshop on formalizing cryptographic protocols in Agda.

    What did the team achieve this week

    • Continued investigating broken head and opened an issue to keep track #897.

      As part of this issue, improvements were made to the node logs:

      • Give a precise error when a transition requirement fails #895.

      • Reduce duplication for effects logged content by using sequential eventId and effectId pair #896.

    • Fixed references in the hydra specification #893.

    • Attended a workshop on formal methods and crypto in Agda.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete journey for external commits implementing Option A and start implementing Option B #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.
    • Fix monthly report publication on docs website.
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-06-01-mithril + 2023-06-01-mithril + Thu, 01 Jun 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2321.1 distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots.

    Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks.

    Low level overview

    • Released the new distribution 2321.1
    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Enhance MessageAdapter for Artifact in aggregator REST API #925
      • Completed the issue Create the sub-command for 'Cardano Immutable Files Full' in client #895
      • Completed the issue Enhance state machines Aggregator/Signer #933
      • Completed the issue Adapt the aggregator REST API to list certificates #892
      • Worked on the issue Adapt end to end tests to handle new types of data #899
      • Worked on the issue Update client documentation #897
      • Worked on the issue Update architecture documentations for new types of data #898
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Enhance terraform infrastructure #930
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Upgrade Cardano node to '8.0.0' #920
    • Completed the issue Add export path in Client CLI #512
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-31-consensus + 2023-05-31-consensus + Wed, 31 May 2023 00:00:00 GMT + + High level summary

    During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see this issue). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain.

    On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano.

    UTxO-HD

    • We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking SOP classes like HPure and HAp . In short, we implement generalised versions of important classes like Applicative and Traversable.

    Support

    • fs-sim-0.1.0.2 and fs-api-0.1.0.2 were released, which makes them now compatible with GHC up to 9.6.
    • ouroboros-consensus-0.7.0.0 was released for cardano-node 8.1, including query serialization fixes for backwards compatibility.
    ]]>
    + consensus +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-31-performance-and-tracing + 2023-05-31-performance-and-tracing + Wed, 31 May 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster.
    • New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism.
    • Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.

    Low level overview

    Benchmarking

    The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build +configuration: As it stands, the ghc-bignum package is using the Haskell native-backend as a default. We strive +to benchmark a build with the gmp-backend next.

    A variant of our forge-stress local benchmark has been set up to serve as an early indicator for the resource usage profile +we'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way +shorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great +support when evaluating different compiler versions or RTS flags incrementally.

    Tracing

    The hub of the new tracing system cardano-tracer is designed with a fixed output behaviour, which is limited to various +logging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to +directly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all.

    Nomad backend

    We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with +job definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing +benchmarking run required us to fine-tune communications with the nomad server.

    Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible +and offers more detailed insight than the previous iteration in cardano-ops. The backend will enable you to formulate +very specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met.

    ]]>
    + performance-tracing +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-26-goedel + 2023-05-26-goedel + Fri, 26 May 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

    Details

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-26-hydra + 2023-05-26-hydra + Fri, 26 May 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team accomplished several important tasks. They held their +monthly review meeting and drafted the report for May. They made progress on +implementing the first end-to-end journey for external commits using "Option A" +for normal UTxOs, while still considering "Option B". The team also integrated a +Spanish translation contributed by the community, created micro-benchmarks for +transaction validation and deserialization, and made improvements to +hydra-node's version reporting. Last but not least, they implemented the ability +to commit multiple UTxOs to a head at once.

    What did the team achieve this week

    • Held the monthly review meeting (recording + slides) & drafted the report for May.
    • Have a first end-to-end journey for external commits implementing Option A +for normal UTxOs #887 (still considering Option B).
    • Integrated the spanish translation #866.
    • Created micro-benchmarks for transaction validation and deserialization #884.
    • Improve hydra-node version reporting on non-released builds #849
    • Some minor CI improvements following up last weeks changes.
    • Allow commit transactions with multiple UTxO #774.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete external commits with script UTxOs #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-26-ledger + 2023-05-26-ledger + Fri, 26 May 2023 00:00:00 GMT + + High level summary

    The ledger team made progress on the conway ledger era. In particular, the design and implementation +of the new certificates is near complete, we refactored some of our data structures +to be able to support DReps, we cleaned up the serialization format, and renamed things to make +clearer the differences with Shelley.

    The team also completed integration work for the next node release, namely 8.1.0. +And, as always, we continue to address technical debt.

    Low level summary

    Conway progress

    • pull-3408 - Improve conway delegation certificates
    • pull-3428 - Get rid of Constitutional in favor of Genesis and Committee
    • pull-3426 - Add DRep to internal data struture (UMap)
    • pull-3425 - Improve witness logic needed for conway
    • pull-3423 - Rename ShelleyDelegCerts constructors to distinguish them from Conway
    • pull-3421 - Rename DCert -> TxCert
    • pull-3454 - conway CDDL minor fixes

    Improve testing

    • pull-3403 - Add Plutus script context golden tests

    Integration work

    • pull-3410 - Update chaps index
    • pull-3416 - Bump cardano-ledger-alonzo-test version
    • pull-3414 - Bump cardano-ledger-shelley-test minor version
    • pull-3420 - Bump cardano-ledger-shelley-ma-test version
    • pull-3441 - Release cardano-ledger-[alonzo|babbage]-1.2.1

    Technical debt

    • pull-3409 - Unit test - no such thing as a reference datum
    • pull-3407 - Fixup release process documentation
    • pull-3404 - Create TotalDeposits events during all eras
    • pull-3402 - Fix broken references in the Shelley spec
    • pull-3424 - Remove no longer used cardano-ledger-shelley-ma package
    • pull-3432 - Add an example on how to bump up versions in the changelog
    • pull-3440 - Revert back to the group serialization for ProtVer for PParams
    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-26-network + 2023-05-26-network + Fri, 26 May 2023 00:00:00 GMT + + High level summary

    We continued working on eclipse-evasion. We also analysed and fixed a bug +when using DNS names in local root peers. We continued working on engineering +blog post about P2P. We released a new version of packages for +cardano-node-8.1.0 release.

    We improved our CI, removed obsolete scripts add extra validation which checks +if CHANGELOG.md files were updated.

    We also improved release scripts.

    Detailed summary

    • Eclipse evasion: #4462
    • Local root peers bug fix: #4559
    • Release to CHaP: #4573
    • CI improvements: #4572
    • Release script improvements: #4573
    ]]>
    + network +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-24-node-cli-api + 2023-05-24-node-cli-api + Wed, 24 May 2023 00:00:00 GMT + + 2023-05-24 - 2023-06-06

    High level summary

    • The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released.
    • We provided assitance where needed in the release
    • An integration repository https://github.com/input-output-hk/fusion-flamingo was created to enable my team to more easily work on cardano-cli and cardano-api

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-19-hydra + 2023-05-19-hydra + Fri, 19 May 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the "Coding Standards" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.

    What did the team achieve this week

    • Complete validation of timed transactions feature #196.
    • Write ops instructions and troubleshooting #569 and improve logs.
    • Remove --ledger-genesis argument to hydra-node options #863.
    • Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows #877.
    • Use nix to build test binaries to increase CI speed #867.
    • Updated our Coding Standards.

    What are the goals of next week

    • Monthly report & review meeting.
    • Have a first end-to-end journey for external commits implementing "Option A" #215.
    • Integrate spanish translation #866.
    • Improve and provide regular benchmarks for Hydra #186.
    • Allow commit transactions with multiple UTxO #774.
    • Explored stateless observation and refined hydra explorer ticket #696.
    ]]>
    + hydra +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-17-consensus + 2023-05-17-consensus + Wed, 17 May 2023 00:00:00 GMT + + High level summary

    During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the [Genesis][#genesis] section for more details.

    Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our main branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain.

    We improved our tooling by releasing an immutable DB server, which can be used for testing and benchmarking purposes, and a db-truncater program, which can be used in disaster recovery and benchmarking scenarios.

    Genesis

    The consensus team working on Genesis:

    • Improved the genesis selection rule as a result of our interaction with IO Research.
    • Studied how the hard-fork combinator handles forecasting at era transitions, and improved our documentation.
    • Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP.
    • Elaborated concrete proposal for the Genesis State Machine.
    • Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).

    The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine.

    ]]>
    + consensus +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-17-mithril + 2023-05-17-mithril + Wed, 17 May 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2318.0 distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types.

    Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node 8.0.0 (along with the backward compatibility for previous 1.35.x versions).

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the handling of multiple types of signed entity in the aggregator runtime #907
      • Completed the adaptation of the signer runtime to use the signable builder service #854
      • Completed the adaptation of the aggregator runtime to use the artifact builder service #869
      • Completed the appending of the next AVK to all protocol messages #888
      • Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced #893
      • Completed the adaptation of the explorer to handle new artifact routes of the aggregator #927
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the implementation of the new stake distribution computation in the chain observer #919
      • Worked on upgrading the Cardano node to 8.0.0 #920
    ]]>
    + mithril +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-17-performance-and-tracing + 2023-05-17-performance-and-tracing + Wed, 17 May 2023 00:00:00 GMT + + High level summary
    • Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes.
    • New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due.
    • Analysis pipeline: First steps on implementing incremental analysis have been untertaken.
    • Open Sourcing: Exhaustive dataflow charts for both our analysis tool locli and our workbanch have been merged to master
    • Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster.
    • P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland.
    • Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.

    Low level overview

    Benchmarking

    As a compiler switch to GHC 9.2.7 for cardano-node's default build environment is around the corner, we're setting up our benchmarking cluster to +handle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This +also involves choosing a reliable baseline as reference point for inter-version comparisons.

    Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet, +we strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to +be balanced against resource demand for all our cluster's nodes.

    Tracing

    For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some +quality-of-life details that have changed required us to revision the system documentation.

    Analysis

    As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been +normally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a +huge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken.

    Open Sourcing

    A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking +copmonents more accessible. As a result, detailed charts for both our LogObject CLI locli and our workbench have been merged to master.

    Nomad backend

    While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting +those profiles of our workbench that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality +of the nomad cloud backend.

    Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster.

    Performance & Tracing Meetup

    We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive +days together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future. +Also, it was a great opportunity to finally meet in person.

    Offboarding

    Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation +of team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!

    ]]>
    + performance-tracing +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-12-crypto + 2023-05-12-crypto + Fri, 12 May 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: Include final tests for BLS signature. Further adaptations for KES agent.
    • Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.

    Low level summary

    cardano-base

    Sidechains

    • Opened PR in halo2curves to include BLS12-381 and JubJub, #38
    • Addition constraint over JubJub merged #10
    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-12-goedel + 2023-05-12-goedel + Fri, 12 May 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team had two paper accepted for ICE 2023 +(https://www.discotec.org/2023/ice). The event will be held in Lisbon +on 19th June 2023. The papers will be published in EPTCS.

    Details

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-12-hydra + 2023-05-12-hydra + Fri, 12 May 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team achieved a number of milestones, including the release +of the first mainnet compatible version. Besides this they also addressed +inconsistencies in rollback handling, added an architecture page to the website, +reducing the size of logs using event IDs. They also had productive discussions +with researchers on plans for incremental commits/decommits and had a whiteboard +session on DeFi and lending protocols. The goals for next week include +completing the validation of the timed transactions feature, exploring stateless +observation, refining the Hydra explorer ticket, writing ops instructions and +troubleshooting, and implementing the first end-to-end journey for external +commits.

    What did the team achieve this week

    • Released first mainnnet compatible version 0.10.0
    • Addressed inconsist handling of rollbacks #784
    • Added architecture page and fixed haddock links on our website #838
    • Opened a new hydra head on mainnet
    • Talked with researchers on initial plan for incremental commits/decommits
    • Had a Whiteboard session on DeFi and lending protocols
    • Reduced size of logs using event ids #859
    • Published the monthly report for April

    What are the goals of next week

    • Complete validation of timed transactions feature #196
    • Explored stateless observation and refined hydra explorer ticket #696
    • Write ops instructions and troubleshooting #569 and improve logs
    • Have a first end-to-end journey for external commits implemented #215
    ]]>
    + hydra +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-12-network + 2023-05-12-network + Fri, 12 May 2023 00:00:00 GMT + + High level summary

    We started working on a new way to switch between root & ledger peers (see +below). We continued to work on eclipse-evasion. We merged changes to +Handshake contributed by Galois Inc. We made improvements to our tests (fixed +a flaky test, added cddl specs for NodeToNodeVersionData and +NodeToClientVersionData). We improved our CI and automated the process of +releasing new package version to CHaP.

    Detailed summary

    We continued to work on testing eclipse-evasion.

    We came up with an idea to limit how full node wallets relay on root peers +(currently operated by IOG, in future also CF and Emurgo). We designed +a switch to use ledger peers if the node tip is close enough to the current +time. For more details see #4530.

    We merged changes to the handshake mini-protocol which allow one to query +server's node-to-node / node-to-client parameters. We are grateful to +Galois Inc. for implementing it, #4256 and #4538. We published new version +of packages to CHaP chap-#253.

    We added DiffusionError wrapper. Thanks to it, ouroboros-consensus will +not duplicate diffusion errors messages in the log, #4537.

    We fixed an issue which caused one of our tests to be flaky, #4515.

    We added cddl tests for NodeToNodeVersionData and NodeToClientVersionData: +#4540, #4544 (in review).

    We wrote scripts which will help us release packages as well as verify that we +released all the package necessary to build the newest set of packages, +#4542.

    We renamed the consensus startup tracer and make sure it doesn't log +ExitSuccess exceptions, consensus-#71.

    We reviewed PR which adds RawBearer API, #4395.

    We made series of improvements to our CI:

    • #4539: we don't need to install cryptographic libraries in CI;
    • #4545: Javier Sagredo (consensus) cleaned up CI after consensus moved +to a new repo;
    • #4546: we switched to use GitHub merge queues;
    • #4549: we made it possible to trigger building haddocks manually;
    • #4553: we fixed and enhanced caching of building dependencies.
    ]]>
    + network +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-05-ledger + 2023-05-05-ledger + Fri, 05 May 2023 00:00:00 GMT + + High level summary

    The ledger team focused mainly on the conway ledger era and node integration. +For conway, we completed a large structural change that now allows +for delegation certificates to be parameterized by era, and introducing +new certificates for the first time since Shelley. +We also continue to build out our contraint based generators that we will +use to property test the conway era. +In particular, we can now generate an entire ledger state and a +transaction which is balanced with respect to the ledger state.

    Low level summary

    Conway certificates

    Certificiates are now abstracted as a type family in the ledger codebase. +Moreover, there are new certificates in the Conway era to support CIP-1694, +and MIR certificates have been removed.

    Constraint based testing

    Our plan for property testing in the conway era is to no longer use the trace generators, +but instead generate ledger states and transactions based on constraints. +We hit a milestone this week, namely the ability to generate a balanced transaction in the context +of a ledger state, all based on our ever growing constaint language.

    Integration work

    Technical debt

    ]]>
    + ledger +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-05-node-cli-api + 2023-05-05-node-cli-api + Fri, 05 May 2023 00:00:00 GMT + + 2023-05-05 - 2023-05-23

    High level summary

    • Golden tests for cardano-cli command help output were added.
    • Documentation was updated with new libsodium installation instructions.
    • There were several updates for the cardano-cli:
      • Deletion of the deprecated shelley command group.
      • Addition of golden tests for CLI help.
      • An improvement to avoid bare IO in tests, allowing better error reporting in failed tests.
      • Generation of UTCTime test values without leap seconds (avoids erroneous test failures)
      • Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32.
    • The cardano-api underwent multiple refinements:
      • Implementing deposit handling when balancing transactions (necessary for Conway)
      • Cleaning up socket file path code.
    • Several changes were made to the cardano-testnet:
      • Adding golden tests for cardano-testnet help.
      • Removing all hardcoded yaml files in cardano-testnet
      • Improving cardano-testnet help output.
      • Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-04-mithril + 2023-05-04-mithril + Thu, 04 May 2023 00:00:00 GMT + + High level overview

    The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version 1.35.7.

    Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain.

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the implementation of the Certifier service in the aggregator #850
      • Completed the implementation of the signable builder for the Mithril Stake Distribution #851
      • Completed the implementation of the artifact builder for the Mithril Stake Distribution #870
      • Completed the implementation of the signable builder for the Full Immutables Snapshot #852
      • Completed the implementation of the artifact builder for the Full Immutables Snapshot #871
      • Completed the adaptation of the aggregator runtime to use the signable builder service #853
      • Worked on the adaptation of the signer runtime to use the signable builder service #854
      • Completed the definition of the entity service interface for verification/restoration #868
      • Completed the refactoring of the OpenMessage type #878
    • Completed the epic that simplifies the multi-signer in the aggregator #398:
      • Completed the extraction of the single signature registration from the multi-signer #643
    • Completed the upgrade of the Cardano node to version 1.35.7 #881
    • Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators #873
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-03-consensus + 2023-05-03-consensus + Wed, 03 May 2023 00:00:00 GMT + + High level summary

    During the past two weeks we made some important progress in the Genesis design. +It seems the BlockFetch logic need not be modified for Genesis, although this +needs to be confirmed. We started a DoS mitigation handbook and updated our +conceptual component diagram to guide the Genesis design. We engaged with the +IOG researchers to work on the Limit on Patience attack vector, work in this +area is still ongoing. We sketched a design to decouple the CPU load of the node +from its responsiveness to the socket. Finally, we discussed with Networking our +approach to lower the performance impact of the BlockFetch decision logic, and +got green light from them.

    We migrated the consensus code to a new +repository, splitting +it from the ouroboros-network repository, and released version 0.6 of +Consensus.

    We also merged the mempool fairness improvement to main branch.

    Another significant enhancement to our documentation was the addition of an +explanation of the hardfork combinator forecast horizon.

    See the sections below for more details.

    Genesis

    We reviewed the BlockFetch design documentation, and added some source-code +comments that emphasize certain properties of the decisions the BlockFetch +logic makes that are helping us confirm that Genesis does not require any +changes to BlockFetch. We are waiting on input from our former system +architect to verify this.

    We migrated and updated the conceptual component diagram in the ouroboros-consensus +repository which helps us situate the Genesis design and argument.

    We engaged with the IOG researchers about the Genesis design. We sketched out a +way to address the concern that the Limit on Patiente (LoP) attack vector duty +cycle is indeed low, but it's still non-trivial to ultimately conclude it's +sufficiently low.

    We also sketched a design to decouple the CPU load of the node from its +responsiveness to the socket, since the LoP is a relatively tight timeout, and +node performance bugs inducing seconds-worth of latency are unfortunately +familiar phenomena.

    Fostering collaboration

    We added an +explanation of +a question that we had to explain many times about the exact behavior of the +hardfork combinator forecast horizon.

    ]]>
    + consensus +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-03-performance-and-tracing + 2023-05-03-performance-and-tracing + Wed, 03 May 2023 00:00:00 GMT + +
  • Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.
  • New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint.
  • Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on.
  • Infrastructure: The plutus-apps flake input for cardano-node has finally been removed.
  • Nomad backend: A PR implementing placement of benchmarking clusters has been merged.
  • Benchmarking

    The performance investigations on the 8.0 release branch have lead to pinpointing and addressing incosistent behaviour. For that, +we created yet another local reproduction with the workbench's forge-stress benchmark.

    Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into 8.0 and +subsequent releases.

    Additionally, we've refined the trace-bench family of profiles that target benchmarking our own new tracing system.

    Tracing

    Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally +intended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant +conversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system.

    Infrastructure & Analysis

    Dataflow documentation

    The LogObject CLI locli is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate +further development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting.

    Remove redundant Plutus flake input

    This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input, +we simplify the dependency graph for cardano-node, as well as enable immediate feedback when developing Plutus benchmarks.

    Nomad backend

    Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking. +This capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along +with various quality-of-life improvements, has been merged to master.

    ]]>
    + performance-tracing +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-05-01-db-sync + 2023-05-01-db-sync + Mon, 01 May 2023 00:00:00 GMT + + High level summary

    Lower level summary

    • Prepared a schema change which is expected to speed up queries and help clients +#1389.
    • Ran a big number of benchmarks on the above to evaluate if this change is reasonable.
    • Performance optimization related to rewards +#1382
    • Using the cache in more places to reduce recourses usage +#1380
    • Evaluated risks related to UTXO-HD integration
    • Worked on a feauture request to split the tx_out to an address table +#1396
    • Worked on another feauture request to prune the consumed entries from the tx_out table +#1398
    • Prepared for CIP-1694 integration
    ]]>
    + db-sync +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-28-crypto + 2023-04-28-crypto + Fri, 28 Apr 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library.
    • KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction.
    • Sidechains: Started implementing ECC chip of JubJub over BLS12-381.

    Low level summary

    cardano-base

    • #255 finally merged 🎉
    • Additional tests for BLS bindings #384
    • Open PR for including test vectors created with zkscrypto's library, PR#397

    KES agent

    • Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period PR#389.
    • Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) #317.
    • Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim
    • Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes
    • Refactor MonadSodium into MonadMLock PR#388.

    Sidechains

    • Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)
    • Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo
    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-28-goedel + 2023-04-28-goedel + Fri, 28 Apr 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is working on porting an existing formalisation of Ouroboros +Praos to a newer foundation.

    Details

    ]]>
    + goedel +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-28-network + 2023-04-28-network + Fri, 28 Apr 2023 00:00:00 GMT + + High level summary

    The networking team has released the following packages to Hackage:

    We published an announcement blog post. We made progress +also on another blog post which will describes the design of the P2P networking +layer.

    After moving ouroboros-consensus to its own repository, we made +ouroboros-network compatible with GHC 9.4 and 9.6.

    We made cardano-client library independent of +ouroboros-consensus-diffusion.

    We prepared release of network packages for cardano-node-8.0.

    Detailed log

    Ouroboros-Network

    IO-Sim

    • io-classes-1.0.0.0, and following up releases: 1.0.0.1 (ghc-9.6 +support), 1.1.0.0 (documentation fix).
    • Fixed timeouts and delays in io-sim in a series of PRs: io-sim#81, +io-sim#82, io-sim#86, io-sim#87.
    • Renamed a module: io-sim#88.
    • Fixed a failing registerDelayCancellable test: [io-sim#80].
    • Use GitHub merge queue in io-sim repository.
    • CI: download stylish-haskell: io-sim#83.

    Typed Protocols

    ]]>
    + network +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-27-hydra + 2023-04-27-hydra + Thu, 27 Apr 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team held their Monthly review meeting and drafted the +report which likely is published next week. They put the spec into the +repository and website, addressed a user issue and fixed the TUI peer list. +Furthermore, they updated dependencies, conducted a Twitter space on Auctions +use cases, covered the rollback bug with tests and implemented a solution. +Looking ahead, their goals for next week include releasing 0.10.0, implementing +timed transactions support, writing a Query API ADR, and grooming work items +like off-chain benchmarks.

    What did the team achieve this week

    • Held the Monthly review meeting and drafted the report (to be published next week)
    • Added the spec into the repository +#693 and published on +the +website
    • Groom and addressed user issue #823
    • Covered the rollback bug with tests and implemented a solution (to be reviewed) #784
    • Fixed the TUI peer list
    • Updated dependencies to match cardano-node master
    • Conducted a twitter space on Auctions use cases

    What are the goals of next week

    • Release 0.10.0
    • Support timed transactions solution drafted and validated API with users
    • Write Query API ADR and groom a concrete step
    • Groom and solve PostTxOnChainFailed UX problem #832
    • Groom off-chain benchmarks idea #186 and turn it into a feature
    ]]>
    + hydra +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-21-hydra + 2023-04-21-hydra + Fri, 21 Apr 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team worked on several fronts, including fixing state +machine continuity on-chain, discussing voting project solutions, exploring +adding Hydra support to kupo, and improving API navigation with a sidebar. The +team also updated dependencies and fixed issues in their test suites. Moving +forward, the team plans to hold the next monthly review meeting, address a user +issue, prepare for the 0.10.0 release, and work on a dirt road fix for the +rollbacks issue with proper test coverage.

    What did the team achieve this week

    • Fixed scripts to enforce state machine continuity on-chain #777.
    • Took part in a twitter space on Scaling Cardano.
    • Joined a CBIA meeting to discuss Cardano network protocols & how to specify them.
    • Discussed potential solutions of ensuring vote uniqueness in the voting project.
    • Updated dependencies to match cardano-node master to prepare for upcoming releases and hard-forks
    • Explored adding Hydra support to kupo, a lightweight Cardano chain indexer - some more work required.
    • Improved navigation of the API Reference with a sidebar, see unstable API version.
    • Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)

    What are the goals of next week

    • Monthly review meeting (join via Discord or AddEvent) & report
    • Dirt road fix for rollbacks #784 properly covered by a test.
    • Groom and ideally address user issue #823.
    • Put the spec into the repo #693 and prepare release 0.10.0.
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-21-ledger + 2023-04-21-ledger + Fri, 21 Apr 2023 00:00:00 GMT + + High level summary

    We continued to make progress on CIP-1694 and the conway ledger era. +In particular, the conway era now supports Plutus V3. +Finally, we made small improvements to the ledger API and now host +our Haskell code documentation (haddocks) on github pages.

    Low level summary

    Conway ledger era

    Haddocks hosted on github pages

    Small improvements to the API

    Technical Debt

    • [pull-3367] Fix cost model json instances.
    • [pull-3371] UMap cleanup.
    • [pull-3373] Upgrade to ghc 9.2.7 and cabal 3.10.1.
    • [pull-3375] Sadly, we had to revert the TICKF optimizations. There was a regression we do not yet understand.
    • [pull-3377] Fix cabal warnings.
    • [pull-3383] Fix multi-asset test.
    ]]>
    + ledger +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-20-mithril + 2023-04-20-mithril + Thu, 20 Apr 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2315.0 distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures.

    Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network.

    Low level overview

    • Released the new distribution 2315.0
    • Completed the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the signed_entity table #816
      • Completed the creation of the signer table #814
      • Completed the migration/adaptation of the single_signature table #829
    • Worked on the epic that designs and implement generic signing/verification of entity services #780:
      • Completed the definition of the interface of the generic entity service for signing #847
      • Worked on the implementation of the Certifier service in the aggregator #850
      • Completed the extension of the SignedEntityType type #848
      • Completed the implementation of the Tick service in the aggregator #849
      • Worked on implementing the signable builder for the Mithril Stake Distribution #851
    ]]>
    + mithril +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-20-node-cli-api + 2023-04-20-node-cli-api + Thu, 20 Apr 2023 00:00:00 GMT + + 2023-04-20 - 2023-05-04

    High level summary

    • Various fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-19-consensus + 2023-04-19-consensus + Wed, 19 Apr 2023 00:00:00 GMT + + High level summary

    This week the consensus team continued working on the improved DB lock mechanism +for UTxO-HD, and modifications to the mempool benchmarks that this prototype +requires.

    On the Genesis front we validated that the fragment size calculation in +BlockFetch is a major performance sink for ChainSync Jumping. By removing it +we will get performance that is acceptably close to that of the baseline. We +also started investigating a performance fix that does not alter the existing +baseline behavior too much. In addition we reviewed our Genesis attack vector +calculations.

    On the support front we released Consensus 0.4, and we are working on improving +our release process, to support the Cardano-wide efforts in this area. We also +performed an analysis on the number of file descriptors that consensus use. This +information can be used by the node operators to check if the number of file +descriptors they want to support are enough.

    ]]>
    + consensus +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-19-performance-and-tracing + 2023-04-19-performance-and-tracing + Wed, 19 Apr 2023 00:00:00 GMT + +
  • Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.
  • New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois.
  • Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run.
  • Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench.
  • Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.
  • Benchmarking

    We have performed various cluster runs targeting the 8.0 release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile epoch-transition for local reproduction of what we observed on the benchmarking cluster.

    Furthermore, we bridged the gap between the run data from the 1.35.x releases to the the new 8.0.x release branch. This included walking the +master branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial +in locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of +benchmarks.

    Tracing

    In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still +ongoing.

    In coordination with Galois, who are developing a system assurance service by observing a number of cardano-nodes, we're working with the implementation +of data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational +burden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether cardano-tracer could be extended with a richer +feature set to that end.

    Infrastructure & Analysis

    Detailed manifest

    A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with. +These dependencies come from different package sources, have different versioning policies, and an identical package version might provide different +performance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated +by making all component bumps visible and accessible.

    GHC profiling inside workbench

    The workbench has been equipped with a new -profnix profile flavour. This enforces a -fprof-auto build for all node-related packages. The type of +profiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already +been merged to master.

    Nomad backend

    The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances. +This results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing.

    ]]>
    + performance-tracing +
    + + <![CDATA[Incident Report]]> + https://input-output-hk.github.io/cardano-updates/2023-04-17-ledger + 2023-04-17-ledger + Mon, 17 Apr 2023 00:00:00 GMT + + Incident reporting: Cardano block production temporary outage

    On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a ‘critical’ incident, thus warranting immediate response and investigation by IOG engineers. +The investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue – a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite. +Following successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version. +With the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue.

    Further Details

    You can read more details on the incident and how it was managed from SundaeSwap’s Pi Lanningham here. Thanks again to all the community for its support in identifying and fixing this bug.

    ]]>
    + ledger +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-14-goedel + 2023-04-14-goedel + Fri, 14 Apr 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has submitted two papers for publication, carried +out consultancy with other teams and has an opening for an intern.

    Details

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-14-hydra + 2023-04-14-hydra + Fri, 14 Apr 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team focused on improving the smoke test, fixing developer +tooling, and improving the API for voting use cases. They reviewed progress on +auction, payments, and voting projects and made worked on reproducing a bug with +handling rollbacks. Moving forward, the team plans to update dependencies, +implement a dirt road fix for the rollbacks bug, and explore adding Hydra +support to kupo.

    What did the team achieve this week

    • Reviewed progress on auction, payments and voting projects
    • Improved smoke tests so they can run on mainnet
    • Fixed a regression in the development environment and updated cardano-node +used in tests
    • Improved API with more configurability to unblock voting use case
      • Exclude utxo in SnapshotConfirmed outputs #808
      • Addressed a user request by only sending Greetings once #813
    • Reproduced the rollback bug by improving our model-based test suite #784

    What are the goals of next week

    • Update dependencies to match cardano-node master
    • Dirt road fix for rollbacks #784
    • Update Hydraw to maintain state locally
    • Explore adding Hydra support to kupo
    • Put disclaimer texts and closing mainnet compatibility feature #713
    ]]>
    + hydra +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-07-hydra + 2023-04-07-hydra + Fri, 07 Apr 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team published the monthly report for March, created +separate links for different versions of documentation, and clarified potential +solutions for the Rollbacks bug. The team also discussed Query API requests for +the Hydra Voting project and met with community members to answer questions +about Hydra. Moving forward, the team plans to integrate the specification into +the repository, implement a short-term fix for the Rollbacks issue, and draft a +Query API ADR.

    What did the team achieve this week

    • Published monthly reports on website
    • Separate last released and latest versions of docs (e.g. normal released vs. /unstable)
    • Discussed Query API concerns from Hydra Voting project (link)
    • Clarified rollbacks bug and defined possible solutions (short and long term) #784
    • Met with community members to answer questions about Hydra

    What are the goals of next week

    • Finally get the docs integrated into the repository #693
    • Dirt road fix for rollbacks #784
    • Disclaimer text and detail known issues about mainnet compatibility +#713
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-06-mithril + 2023-04-06-mithril + Thu, 06 Apr 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2313.0 distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages.

    Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to 1.35.6.

    Low level overview

    • Released the new distribution 2313.0
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the epoch_settings table #813
      • Completed the migration/adaptation of the signed-entity-type table #815
      • Completed the migration/adaptation of the certificate table #817
      • Completed the migration/adaptation of the open_message table #827
      • Completed the migration/adaptation of the signer_registration table #828
    • Completed the refactoring of the dependency injection of the aggregator #823
    • Completed the cleanup of the multi-signer of the aggregator #824
    • Completed the upgrade of the Cardano node to 1.35.6 #843
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-05-consensus + 2023-04-05-consensus + Wed, 05 Apr 2023 00:00:00 GMT + + High level summary

    This week the consensus team finished the UTxO-HD prototype refactoring. We are +now working on improving the DB lock mechanism to improve performance. We also +introduced several improvements to the file system abstraction and simulation +layer (fs-sim), which culminated in the release of fs-sim-0.1.0.0 and +fs-api-0.1.0.0 to CHaP.

    On the Genesis front we distributed the updated Genesis design document, +soliciting feedback from Networking Team and IOG Researchers. We also opened up +a PR for the adversarial leader schedule QuickCheck generator, which is being +reviewed.

    On the support front, we got a new Consensus version that can use different +fundamental VRF crypto primitives for Babbage and Conway eras.

    On the tech debt front we fixed an bug in the followers logic, which was +discovered by our QuickCheck property tests.

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-05-node-cli-api + 2023-04-05-node-cli-api + Wed, 05 Apr 2023 00:00:00 GMT + + 2023-04-05 - 2023-04-19

    High level summary

    • Introduce new governance commands create, answer and verify. This allows us to have onchain polls.
    • Begin making changes in cardano-api to accomodate for CIP-1694
    • Rename TestEnableDevelopmentHardForkEras to ExperimentalHardForksEnabled and TestEnableDevelopmentNetworkProtocols to ExperimentalProtocolsEnabled
    • Various bug fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-04-05-performance-and-tracing + 2023-04-05-performance-and-tracing + Wed, 05 Apr 2023 00:00:00 GMT + +
  • Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.
  • New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput.
  • Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged.
  • Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added.
  • Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.
  • Benchmarking

    We have adapted our benchmarking cluster to the requirements of the 8.0 release branch. Testing runs of a very early feature branch for 8.0 +helped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for 8.0 soon.

    Tracing

    Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very +detailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing +the highest possible throughput of data for forwarding to cardano-tracer.

    Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions +for tunneling trace forwarding from a node to cardano-tracer via an easy to manage system service, which will match the production setup of most users.

    Infrastructure & Analysis

    General

    Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance +analysis can be fed back and serve as an additional point of comparison.

    Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations.

    Plutus library

    We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles. +This will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile. +It is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit.

    Nomad backend

    The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is +being improved to minimize any friction for the backend user.

    ]]>
    + performance-tracing +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-31-crypto + 2023-03-31-crypto + Fri, 31 Mar 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Started looking into full-node verifier
    • cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties.
    • KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent.
    • Sidechains: Included BLS12-381 & JubJub to halo2curves
    • MuSig2: Final modifs to C version.

    Low level summary

    Mithril

    • Started designing how a full-node verifier would work. Issue comming in the next couple of weeks.

    cardano-base

    • BLS12-381 branch merged PR#266.
    • Testing strategy for BLS bindings:
      • Test-vectors for Groth16, and simple BLS signatures ready.
      • Test-vectors with different library, and created by different engineer.

    KES agent

    • Resolved issues of circular dependency
    • Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same.
    • Opened a PR for raw bearer branch in ouroboros network PR4395
    • Resolved a bug where the agent node did not properly closed connections
    • Updated version of IOSim allowed us to finish a first version of KES agent.

    Sidechains

    • Included BLS12-381 curve to our branch of halo2curves
    • Included JubJub to our branch of halo2curves

    MuSig2

    • Minor reorg PR#42
    • Started including fuzz testing for deserialisation PR#
    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-31-goedel + 2023-03-31-goedel + Fri, 31 Mar 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on final drafts of two papers +for internal review and planning next steps of analysis of consensus +design refiniments.

    Details

    • Preparing final draft of DeltaQSD algebra paper for internal review

    • Preparing final draft of verifying design refinements for +distributed system design for internal review

    • Planning next phase of consensus design refinement analysis

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-31-hydra + 2023-03-31-hydra + Fri, 31 Mar 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra continued work on finishing mainnet compatibility. The +semi-automated smoke tests and some missing documentation is still preventing +from calling that fully done. They fixed smaller issues and made a step in the +Head protocol more robust. Besides development, they met with interested people +from the community who want to get started collaborating on communication and +marketing materials.

    What did the team achieve this week

    • Groomed and followed-up on GetUTxO user request discussion #797
    • Fixed hydra-node crashes after forks #560
    • Made collectCom more robust and aligned with spec #786
    • Completed configurable API feature #380
    • Met potential contributors about Hydra communication and marketing materials
    • Versioned documentation: we have a unstable bleeding edge version available as well now, seperate from the last released version

    What are the goals of next week

    • Follow-up backlog and roadmap clean-up
    • Complete mainnet compatibility feature #713 (documentation updates)
    • Integrate Hydra specification into repository #693
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-31-ledger + 2023-03-31-ledger + Fri, 31 Mar 2023 00:00:00 GMT + + High level summary

    We are still heavily involved in work related to preparing the next release. +The other main thing we have worked on is experimentation about how we will +handle the DRep stake distribution for CIP-1694 in the conway ledger era. +Lastly, we merged a fix for +node-4826 +into our main branch (there will be a post-mortem shortly).

    Low level summary

    Support for the next release

    • pull-3363 - Fix problems relating to Arbitrary instances used by consensus.
    • pull-3361 - Remove the alonze genesis from the conway genesis.
    • pull-3360 - Translate bad pointer addresses to valid ones in conway.
    • pull-3357 - Fix a bug relating to zero valued ADA in the script context.
    • pull-3356 - Added needed instances (Arbitrary and Serialization) for conway integration.
    • pull-3345 - Added helper functions for the CLI.
    • pull-3342 - Fix a bug with a CLI helper function (having to do with deposit tracking).

    Experiments for DRep stake distribution

    Adding another stake distribution to the ledger state presents some new challenges. +We would like to be able to use the current stake distribution at the epoch boundary +for DRep voting so that people can always vote themselves in time for any proposal. +To this end, we have a prototype of an incremental computation based on the incremental +lambda calculus, together with tests and benchmarks (which are very promising). +See pull-3344.

    Additionally, more of the ledger state is going to need to be rearranged to accomodate +the new incremental computations. +We have two draft PRs up for possibles solution. +See pull-3353 and pull-3364.

    Technical debt and bug fixes

    Documentation changes

    • pull-3354 - Rename "optional datums" with "supplemental datums" in the alonzo spec.
    • pull-3352 - Add a section to the Shelly errata about the individual deposit tracking.
    • pull-3351 - Further clarify the details regarding the script integrity hash.
    • pull-3350 - Some cleanup of the Babbage spec.
    ]]>
    + ledger +
    + + <![CDATA[System Test Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-27-system-test + 2023-03-27-system-test + Mon, 27 Mar 2023 00:00:00 GMT + + High level summary

    Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.5 and 1.35.6 releases (and their predecessing release candidates) and ran tests on branch with the UTxO-HD functionality.

    Workstreams

    Framework improvements:

    • improvements in searching for unexpected error messages in log files during test run
    • added support for UTxO-HD testing
    • added support for the new P2P topology format
    • added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)
    • added preliminary support for the Conway era
    • added support for running tests on the Preview testnet

    Full list of closed PRs

    Node:

    • ran tests on node branch with the UTxO-HD functionality
    • tested the 1.35.5 release
    • tested the 1.35.6 release

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests
    ]]>
    + system-test +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-24-hydra + 2023-03-24-hydra + Fri, 24 Mar 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra had a team workshop and conducted the monthly review +meeting for March. They demonstrated a Hydra Head on mainnet, which was running +the hydraw demo application. While this marks an important milestone, they also +emphasized that more features are still to be added as needed for applications +to run on Hydra. Besides this, the roadmap is getting cleaned up to encourage +discussions and provide more space for user requests.

    What did the team achieve this week

    • Monthly review meeting slides/recording, full report of March next week
      • Opened a head on mainnet with hydraw demonstration
      • Hydra pay updates
    • Team workshop in Austria
      • Hydra presentation at the Cardano Foundation in Zurich
      • In-person grooming session, marked many items as candidates to be rather :idea: dicussions
      • Improved head protocol #786 and investigated a potential bug in rollback handling #784
      • Team building and retrospective

    What are the goals of next week

    • Follow-up on backlog and roadmap clean-up
    • Complete mainnet compatibility feature (documentation updates)
    • Make API more configurable #380
    • Integrate Hydra specification into repository #693
    ]]>
    + hydra +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-23-db-sync + 2023-03-23-db-sync + Thu, 23 Mar 2023 00:00:00 GMT + + High level summary

    The DBSync team worked in performance enhancements issues, on providing new db-sync options and on +technical debt and bug fixing. The DBSync team also on boarded a new member.

    Low level summary

    • Worked on an issue which causes ada_pots tables to include the values related not only to an +epoch, but also the first epoch of the last epoch. +#1367
    • Fixed an issue where the epoch table didn't rollback and caused wrong values +#1370
    • Fixed an issue were users with disable-ledger option had to provide the state dir option, even +though it was never used. Also refactored the no ledger part of the codebase. +#1378
    • Improved the perforance by using the cache more. Also provided many new options which enables or +disables parts of db-sync. In addition a new --turbo mode is enables which allows db-sync to sync +mainnet in hours. +#1379
    ]]>
    + db-sync +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-23-mithril + 2023-03-23-mithril + Thu, 23 Mar 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2310.0 distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images.

    Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano mainnet and they have fixed some bugs.

    Low level overview

    • Completed the epic that implements eras behavior switch #707:
      • Completed handling the API version switch at era transition #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed on the migration/adaptation of the stake_pool table #787
      • Worked on the migration/adaptation of the epoch_settings table #813
      • Worked on the migration/adaptation of the signed-entity-type table #815
      • Completed the creation of a stake distribution service #799
    • Completed the testing of Mithril with Cardano mainnet network #777
    • Completed qualifying the computation of the stake distribution #810
    • Completed the testing of the Docker client in the Mithril Client multi-platform test workflow #794
    • Worked on bugs and optimizations:
      • Fixed a bug that made computation of the stake distribution occur multiple times during an epoch #804
      • Fixed a bug that created deadlocks on the SQLite connection #807
      • Optimized the error message and the behavior of the signer node when KES keys have expired #820
      • Upgraded the infrastructure of the testing-preview and pre-release-preview networks #801
      • Re-genesis of the testing-preview network #803
      • Re-genesis of the pre-release-preview network #818
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-22-consensus + 2023-03-22-consensus + Wed, 22 Mar 2023 00:00:00 GMT + + High level summary

    This week the consensus team continued working on the refactoring of the UTxO HD +prototype, and design and testing of Genesis. We also extracted the fs-sim +package, which provides a file-system abstraction layer that can be used for +testing and simulation. This makes the Consensus code base smaller, while +providing a package that the community can reuse and contribute to. We also +fixed a failing property test related to iterators. We are also working on +mempool and VRF improvements.

    Low-level details

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-22-node-cli-api + 2023-03-22-node-cli-api + Wed, 22 Mar 2023 00:00:00 GMT + + 2023-03-22 - 2023-04-05

    High level summary

    • Added new cardano-cli ping command which allows users to ping remote cardano-nodes.
    • The transaction build command now can automatically balance multiassets
    • New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-22-performance-and-tracing + 2023-03-22-performance-and-tracing + Wed, 22 Mar 2023 00:00:00 GMT + +
  • Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.
  • New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users.
  • Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery.
  • Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks.
  • Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing.
  • Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.
  • Performance

    New tracing

    The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe +a slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use.

    GHC RTS parametrization

    We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies +on different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use.

    Open Sourcing

    Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases.

    Tracing

    For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well +as a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points +for users of the new system, depending on their wants and needs.

    Infrastructure & Analysis

    General

    Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will +increase confidence in specific metrics.

    Nomad backend

    We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis +is patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries.

    ]]>
    + performance-tracing +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-21-network + 2023-03-21-network + Tue, 21 Mar 2023 00:00:00 GMT + + High level summary

    In the last spring we released cardano-node-1.35.6 with dynamic P2P +functionality.

    We received reports from some SPOs who encountered problems with their non +P2P block producing nodes not being able to connect to their P2P relay. Karl +Knutsson (from Cardano Foundation) reproduced this issue between two nodes (a +non P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed +it and found a bug in the legacy non p2p code. The bug is only possible to +trigger with a P2P node which is binding its outbound connection port to +a fixed IP address and port (default in p2p). A possible solution was found. +For more information see #4465.

    We released cardano-ping-0.1.0.0 package to CHaP. cardano-ping is no +longer available as a standalone binary, but instead it will become part of +cardano-cli (see #4664)

    We are testing cardano-node with peer sharing functionality (#4019).

    We are working on eclipse evasion. We added new class of peers: big ledger +peers to the outbound governor, implemented tests and fixed found issues +(#4462). We also made the information if a given peer plays the role of +a big ledger peer to the mini-protocols. This will allow to modify +mini-protocol applications for such peers. As part of this functionality we +refactored some core types in the network code which simplifies exposed API.

    Together with Moritz Angerman we started to update io-sim to ghc-9.6.1 (see +#73).

    We merged a fix of configuration of accepted connections limit in +cardano-node (see #4902).

    ]]>
    + network +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-17-crypto + 2023-03-17-crypto + Fri, 17 Mar 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: RFP finished. Code ready for audit.
    • cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams.
    • KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing.
    • Sidechains: Preparing proving system to use the curves needed for main-net PoC.

    Low level summary

    Mithril

    • Merged PR#783
    • RFP for crypto audit ready.

    cardano-base

    • BLS12-381 branch approved PR#266. Blocker is Windown's CI. Working on it
    • Testing strategy for BLS bindings:
      • Preparing test-vectors for Groth16, and simple BLS signatures
      • Finding community projects to help write their use cases
      • Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)
    • Wrote blogpost on how using the same key for ed25519 and VRF completely breaks the security of both systems

    KES agent

    • Started integration of sockets interface used in consensus
    • Use that for de/ser
    • Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim
    • Results in having to parametrise for IOSim in KES and DSIGN for testing

    Sidechains

    • Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages.
    • Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS.
    • EdDSA over JubJub ready
    ]]>
    + crypto +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-17-hydra + 2023-03-17-hydra + Fri, 17 Mar 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team has continued work on the mainnet compatibility of the +hydra-node. They added a golden test suite for hydra-plutus scripts, added +some detection of hydra-node misconfiguration, established a limit of 100 ADA +per commit and other smaller tasks to prepare for a mainnet beta release.

    Next week there will be a small team workshop to push for demonstrating a Hydra +Head on the Cardano mainnet, ideally just in time for the monthly review +meeting. See the hydra channels on the IOG Technical Community discord server +for details.

    What did the team achieve this week

    • Implement a 100 ADA hard-coded commit limit in the hydra-node +#763
    • Pay back funds to faucet after smoke-test run +#773
    • Setup custom github runner for smoke-tests on mainnet +#775
    • Created golden tests to assure the script hash stays the same between +changes #772
    • Removed hardcoded error codes in plutus scripts +#768
    • Detect misconfiguration of a hydra-node given persistent state +#767
    • Met with potential users for hydra-pay
    • Prepared hydra workshop

    What are the goals of next week

    • Hydra monthly meeting
    • Open a multi-party head on mainnet
    • Complete mainnet compatibility feature
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-17-ledger + 2023-03-17-ledger + Fri, 17 Mar 2023 00:00:00 GMT + + High level summary

    We made further progress on the conway ledger era. +In particular, we expanded the ledger API significantly, including lots of governance features. +We also made progress on the specification and corresponding work in the Haskell implementation.

    We also continued to integrate the latest ledger packages into cardano node and addressed +technical debt.

    Low level summary

    Expanded ledger API

    The ledger API was significantly expanded to include:

    • a lot of protocol parameter support
    • versioning support (type level ledger eras and protocol versions)
    • auxiliary data support
    • many new lenses
    • support for witnesses
    • support for conway governance

    See pull-3328.

    Conway ledger rules

    We have made progress on the formal ledger specification for the Conway era. +Moreover, the corresponding Haskell updates were also completed:

    Incremental SPO/DRep stake distribution computation

    We have a working (and correct) proof of concept for how to use the incremental lambda calculus +to maintain several of the stake distributions incrementally. +For the per-SPO distribution, this is a performance improvement. +For the (conway) per-DRep distribution, this is will allow those who have delegated their votes +to a DRep to have time to react to any votes that they disapprove of. +(Sorry, no code to share just yet, more to come.)

    Technical debt

    ]]>
    + ledger +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-16-goedel + 2023-03-16-goedel + Thu, 16 Mar 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers +improving the deltaQ tutorial, consulting on performance design, and +the final version of the Djed paper.

    Details

    • Preparing draft of DeltaQSD algebra paper for ICE 2023

    • Successful outcome of Marlowe consultancy leading to substantial +improvement in performance

    • Preparing sections on the communication language and bisimulation +proofs for draft paper about verifying design refinements for +distributed system design

    • Camera ready version of Djed paper under preparation

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-10-hydra + 2023-03-10-hydra + Fri, 10 Mar 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team addressed issues with committing complex UTxOs into a +Hydra Head, prepared the hydra-node to be run on mainnet (soon) and improved +the test suite of the hydra-plutus scripts. The specification is constantly +getting improved upon reviewer feedback on overleaf - this week the graphical +notation was refined to be more transaction-focused.

    What did the team achieve this week

    • Clarified bug of committing UTxOs with reference scripts to a Hydra head #737
    • Prepare usage of hydra-node on mainnet by updating command line options #715
    • Improved our mutation test suite to all expected errors #705
    • Re-opened our persistent hydraw demo head on preprod using version 0.9.0
    • Updated on-chain graphs to be more transaction-focused in the specification

    What are the goals of next week

    • Complete mainnet compatibility feature
    • Prepare the Hydra workshop
    • Address all todo’s in the Hydra specification
    • Unblock the auctions project with commit from script a solution
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-09-mithril + 2023-03-09-mithril + Thu, 09 Mar 2023 00:00:00 GMT + + High level overview

    The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano mainnet and computes the stake distribution with the optimized unreleased Cardano CLI command.

    Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup.

    Low level overview

    • Worked on the epic that implements eras behavior switch #707:
      • Completed the deployment of the era behavior switch to the test networks #752
      • Completed the enhancement of datum generation for era markers #786
      • Worked on handling the API version with an era switch #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Worked on the migration/adaptation of the stake_pool table #787
    • Completed the refactoring of errors in the signer and aggregator state machines #665
    • Worked on testing Mithril with a mainnet Cardano network #777
    • Worked on fixing bugs with the Docker client image:
      • Fixed a bug that made the Docker client container crash at startup #769
      • Fixed a bug that prevented the restoration of a snapshot with a Docker client #791
      • Worked on testing the Docker client in the Mithril Client multi-platform test workflow #794
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-08-consensus + 2023-03-08-consensus + Wed, 08 Mar 2023 00:00:00 GMT + + High level summary

    The Consensus team continued working on refactoring and improving the UTxO-HD +prototype, and introducing improvements to the lmdb related packages. In +particular we identified an opportunity to gain performance by handling locks in +a more optimal way.

    On the Genesis front, we sketched a mitigation for an issue that PNSol and +Researchers caught. We also came op with a road map for not only testing the +Genesis prototypes, but also for enriching the tests we already have.

    Regarding technical debt, next to some minor improvements, we created +component-level micro-benchmarks for adding transactions to the mempool. The +results of these benchmarks will be published in the ouroboros-consensus web +page.

    We also finished moving the Consensus documentation to the ouroboros-consensus +repository, released ouroboros-consensus 0.3.0.0, and reduced the time +GitHub actions take in ouroboros-network.

    Workstreams

    UTxO HD Prototype

    We continued working on refactoring and improving the UTxO-HD prototype. As a +result of the first round of sytem-level benchmarks, we identified an +opportunity to optimise the way we handle locks to improve performance +(#4393).

    Also, we introduced several improvements to the lmdb related packages:

    Genesis

    We sketched out a mitigation of the issue that PNSol and Researchers caught in +the Genesis design.

    We came up with a road map for testing the Genesis prototypes, including early +milestones that are applicable to today's master branch, ie tests that are +useful before Genesis, and that will be nicely enriched when we do add Genesis.

    We developed the aforementioned tests, specifically a QuickCheck generator for +the Honest leader schedule and one as-aggressive-as-possible Adversarial +leader schedule that together satisfy the Praos properties that the Consensus +design takes as invariants.

    We investigated why the improved ChainDB queueing implementation behaves +differently in the baseline compared to the prototype, and we are close to +having a full picture of how the Consensus components interact during bulk sync.

    Technical debt

    We created component-level micro-benchmarks for adding transactions +to the mempool. We plan on extending this to more mempool actions and different +types of blocks. We store the benchmark data to make it available +to the GitHub action that publishes the benchmarks results.

    Other minor improvements include:

    • Removal of Test.Util.Classify in favour of Test.StateMachine.Labelling.
    • Addition of -Wunused-packages to the default ghc-options for Consensus +packages.

    Fostering collaboration

    We finished moving the Consensus documentation from +ouroboros-network to ouroboros-consensus, in preparation for +migrating the code to the latter repository.

    Support

    We released ouroboros-consensus 0.3.0.0.

    We reduced the load in the ouroboros-network GitHub actions, +thereby reducing the time CI jobs take.

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-08-node-cli-api + 2023-03-08-node-cli-api + Wed, 08 Mar 2023 00:00:00 GMT + + 2023-03-08 - 2023-03-21

    High level summary

    General bug fixes and some refactoring

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-08-performance-and-tracing + 2023-03-08-performance-and-tracing + Wed, 08 Mar 2023 00:00:00 GMT + +
  • Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.
  • New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.
  • Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.
  • Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.
  • Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.
  • Performance

    1.35.6 release

    Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.

    Analysis pipeline

    Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better +differentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance. +Additionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking +data more easily accessible.

    Open Sourcing

    As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable +third parties to make use of that data much more easily, by having reliable guidelines and a working example.

    Tracing

    The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make +the switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.

    Infrastructure

    Nomad backend

    The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented.

    ]]>
    + performance-tracing +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-03-crypto + 2023-03-03-crypto + Fri, 03 Mar 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.
    • cardano-base: BLS branch is now ready for review. We are workign forward its merge.
    • KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.
    • Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs

    Low level summary

    Mithril

    • Bumped to version 0.2.0 the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using mlock.
    • Opened PR#783 to update dependency
    • Improved testing for batch opening of mtree, PR#773
    • Improved testing for batch verification of STM sigs PR#774
    • RFP for crypto audit almost ready.

    cardano-base

    • BLS12-381 branch finally ready for review PR#266

    KES agent

    Team off for one week. Other progress:

    • Learning about raw direct-bearer abstraction. An interface for sockets in consensus.
    • use that for direct ser/deser
    • written those syntaxes for ouroboros (coming PR)
    • the kes agent will depend on that.

    Sidechains

    Progress with familiarisation of Halo2 library to write circuits.

    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-03-goedel + 2023-03-03-goedel + Fri, 03 Mar 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, improving the deltaQ tutorial, consulting on +performance design, and the Djed paper has been accepted for +publication.

    Details

    • Preparing draft of DeltaQSD algebra paper for FORTE 2023

    • Extending the technical report on which the above paper is based

    • Consulting with an external company on performance engineering of Plutus contracts

    • Planning improvements and collecting material for the deltaQ +tutorial based on experience with systems that manage risk at +multiple timescales

    • Preparing sections on the communication language and idempontency +laws for draft paper about verifying design refinements for +distributed system design

    • Studying Cardano chain sync protocol

    • "Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin +Protocol" has been accepted for publication at IEEE ICBC 2023

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-03-hydra + 2023-03-03-hydra + Fri, 03 Mar 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team released version +0.9.0 - a version +of the hydra-node with fully specified behavior of on-chain scripts and +off-chain head-logic, decreased costs for opening/closing a Head and scalable +contestation deadline semantics. Check out the full release notes for details.

    Furthermore, they published the monthly +report of the Hydra project +and conducted a review meeting with an increasingly wider audience. The team +plans to extend invitations through the new Hydra +#announcements discord channel for the next +months, stay tuned!

    What did the team achieve this week

    • Monthly review meeting with report published on website
    • Fixed smoke tests #726
    • Reduced the cost of opening/closing a Head (error codes #748 + head reference script #701)
    • Released version 0.9.0
    • Conducted a first experiment on mainnet compatibility #713
    • New discord category with #announcements channel
    • Received a demo about the Hydra for Voting project
    • Lightning talk on mutation-based testing (to be shared)
    • New themes view in on our roadmap and some rearranging as we align it with high-level objectives
    • Clarified things with researchers, but mostly identified action items for them

    What are the goals of next week

    • Redraw transaction graphs and address TODOs specification
    • Run hydraw with 0.9.0 on preprod
    • Make smoke tests on mainnet possible
    • Groom the explorer item
    • Unblock the auctions projecth with commit from script a solution
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-03-ledger + 2023-03-03-ledger + Fri, 03 Mar 2023 00:00:00 GMT + + High level summary

    We have focused the last two weeks on CIP-1694, integration of the last several months of ledger +work into consensus and node, and testing infrastrutcture that we will use in the conway ledger era.

    Low level summary

    Conway rules

    We made a major update to the conway era so that the implementation is now in sync with the spec +with respect to the ratification and enactment logic.

    See the notes in pull-3291 for more details.

    Constraint based generators

    This week we hit a major milestone in our efforts to build out better property based testing +support for the main ledger properties. +The new constraint based generators can now generate full ledger states with what is probably +very close to the real constraints (if anything, it is under constrained). +Next we will work on generating a transaction in the context of a ledger state, which would allow +us to actually start using these generators for real tests.

    See pull-3219.

    Preparing a release, now with proper versioning

    After quite some time, we are ready to release a version of ledger that will work with a new +version of consensus, using CHaPs.

    See pull-3308.

    Technical debt

    • We cleaned up the redeemer serialization code (to prevent future mistakes). See pull-3269.
    • We added a note to the Alonzo spec, specifying that the transaction inputs are +lexicographically ordered in the Plutus script context. See pull-3306.
    • We fixed a problem with the address deserialiazation +(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway). +See pull-3307.
    • We fixed a problem with our nix build. See pull-3311.
    • We fixed a problem with our NoThunks tests. See pull-3310.
    • We improved our nightly tests. See pull-3316.
    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-03-02-network + 2023-03-02-network + Thu, 02 Mar 2023 00:00:00 GMT + + High level summary

    In the current sprint the networking team focused on fixing bugs and pushing +forward implementation of eclipse evasion. We also found a bug in our +simulation testing setup (in integration of test node). We also overviewed the +work on extending handshake protocol which is delivered by Galois Inc.

    We published ouroboros-network-0.4.0.1 and +ouroboros-network-protocols-0.3.0.0 to CHaP.

    We also fixed a bug in cardano-node which results in not being able to +configure inbound connection limits, see PR #4902.

    Together with Karl Knutsson (CF) we realised an issue in cardano-cli: it's +validation of DNS names, IP address & ports when registering a stake pool +should be more strict to protect against common mistakes which we identified on +the chain. See issue #4929.

    Detailed work log

    In PR #4385 we fixed two bugs in peer state actions. First one results in +a busy loop if demotion from hot to warm times outs. This busy loop is +eventually exited when mux exits (we reported this in our previous report). +This fix made it to 1.35.6 release as well.

    In addition the PR #4385 also fixes another bug which results in hot -> warm +-> hot demotion / promotion busy loop.

    The PR #4385 also fixed a bug in a node only used in simulation which +resulted in not using chain-sync or block-fetch mini-protocols. In the +review process, we realised that the header-body split in the simulated node +requires further work (see PR #4419, which is under review).

    The PR #4385 also extend our generators, which together with the above fix, +cover the hot -> warm -> hot demotion / promotion busy loop.

    In PR #4419 we introduce a ChainDB for our simulation node, which plays +similar role to ChainDB in the ouroboros-consensus: a persistent (across +simulated restarts) store of blocks which does chain selection. This ensures +that the simulated node is using block-fetch to download blocks announced by +chain-sync mini-protocol.

    We also made progress with reviewing PR #4019 - peer sharing.

    We also fixed issue #4370 - a connection manager test failure, see PR #4384.

    ]]>
    + network +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-24-hydra + 2023-02-24-hydra + Fri, 24 Feb 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team continue closing many gaps and aligning the +implementation with the specification. More over, they have groomed a plan to +make Hydra Mainnet compatible. Also, they continue moving forward with the +internal auditing and have published some auditing guidelines to receive +contributions from the community.

    What did the team achieve this week

    • Completed #452 (what is +remaining in there)
    • Aligned the Head protocol logic implementation with the specification
    • Completed full minting policy implementation and spec +#720
    • Clarified message authentication with researchers
    • Groomed what is left to do for Mainnet compatibility +#713 and drafted a +0.10.0 version
    • Added a tutorial by @perturbing to the +website LINK
    • Published auditing guidelines +LINK
    • Made hydra-node work for macos +#746 and added support +for building on aarch64 +#673
    • Met with a potential customer of Hydra for Payments

    What are the goals of next week

    • Have the monthly review meeting incl. the report
    • Have smoke tests fixed and running regularly
    • Release 0.9.0 with updated scripts
    • Redraw transaction graphs for specification
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-23-mithril + 2023-02-23-mithril + Thu, 23 Feb 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2306.0 distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes’ CLI that allows generating and signing an era marker’s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI.

    Low level overview

    • Released the new distribution 2306.0
    • Completed the epic that implements signer versions deployment monitoring #718:
      • Completed the implementation an event producer/consumer via channel #738
      • Completed the creation of a database and its configuration to save the events on the consumer side #740
      • Completed the creation of events and sending them on the channel on the producer side #741
      • Completed the creation of the signer registration event #742
      • Completed the creation a query to extract the node versions stakes distribution #743
    • Worked on the epic that implements eras behavior switch #707:
      • Completed the loading of era reader adapters from config in the signer and the aggregator #732
      • Completed the implementation of an era cli command in the aggregator #755
      • Completed the implementation of a dynamic matrix of cases in CI end to end tests #760
    • Fixed some bugs:
      • Fixed the unsupported unixepoch() function #757
      • Fixed the problem that prevented some signers from signing on the testing-preview network #730
      • Update SQLite version to 3.40 in aggregator infrastructure #765
    ]]>
    + mithril +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-23-performance-and-tracing + 2023-02-23-performance-and-tracing + Thu, 23 Feb 2023 00:00:00 GMT + +
  • SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.
  • Release benchmarking: we performed a round of benchmarks for the 1.35.6 release.
  • UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup.
  • New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities.
  • Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure.
  • Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.
  • Performance

    SECP

    1. For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead.
    2. The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run.
    3. The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking.

    UTxO-HD

    1. After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop.
    2. We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.

    1.35.6 release

    Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health.

    Tracing

    Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible.

    Infrastructure

    Nomad backend

    1. Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients.
    2. Locality assumptions were removed and job monitoring was refactored.
    3. To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster.
    4. We're currently evaluating different options for genesis distribution in said cluster.

    NixOps backend

    The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery.

    ]]>
    + performance-tracing +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-22-consensus + 2023-02-22-consensus + Wed, 22 Feb 2023 00:00:00 GMT + + High level summary

    During the past two weeks we got the results from the system level benchmarks +for UTxO HD. They showed a substantial performance regression, so we spent some +time analyzing the results. We found out the frequency at which ledger snapshots +were taken was too high, so we requested the benchmarking team a new run with a +more realistic snapshotting policy. We continued refactoring and improving the +prototype, and we released UTxO-HD related packages to CHaP.

    We met with IOG researchers and networking specialists to discuss the Genesis +design, which was well received. We continued working on testing and +benchmarking different Genesis prototypes.

    We are also working on solving a test failure related to iterators. This work +derived in several improvements such as better documentation, a framework for +writing unit (and regression) tests, and the possibility of debugging +QuickCheck counter examples in the REPL.

    Finally, we released ouroboros-consensus 0.2.0.0 and +ouroboros-consensus-cardano 0.3.0.0 to CHaP

    Workstreams

    UTxO HD Prototype

    We got the results of the first system level benchmarks for UTxO HD. They seemed +to indicate a significant regression in performance. After looking into the +benchmark logs we found that the benchmark runs took ledger state snapshots too +often, due to the default snapshotting policy depending on k, and k being so +small in the benchmark runs. Therefore, the next step is to re-run the +benchmarks with a snapshotting policy that more closely resembles the one from +mainnet.

    At the same time, we continued refactoring and cleaning up the prototype.

    Also, we prepared the anti-diff packages (fingertree-rm, diff-containers, +simple-semigroupoids) and the lmdb related packages (cardano-lmdb and +cardano-lmdb-simple) to CHaP.

    Genesis

    The Genesis design was presented to the IOG researchers and Peter Thompson from +NSol. It was well received. They pointed out one blindspot, but we think it'll +be relatively simple to mitigate.

    In parallel, we continued developing test and benchmarks for the Genesis +prototypes. I particular we tested and implemented a potential fix for +increased ChainDB dequeue timings, which partly +behaved as we expected, but still needs further investigation. Also we obtained +new benchmarking data for the prototype.

    Technical debt

    Related to #4183, we developed a DSL for specifying +ChainDB unit tests. This will allow us to better understand the +counter-examples returned by QuickCheck tests, and to write regression +tests for them. Also, we added a module to enable +QuickCheck counter-examples to be run on the REPL, allowing for faster debugging +feedback. Also, we improved the documentation related to followers +(#4372).

    We are also working on a design for optimizing the way we handle blocks from the +future.

    Support

    We released ouroboros-consensus 0.2.0.0 and ouroboros-consensus-cardano +0.3.0.0 to CHaP. Remember that we decided to split the packages related to +Consensus into two bundles, one with the core functionality, Cardano-agnostic +code, and another bundle with instantiations specific to Cardano.

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-22-node-cli-api + 2023-02-22-node-cli-api + Wed, 22 Feb 2023 00:00:00 GMT + + 2023-02-22 - 2023-03-07

    High level summary

    General bug fixes

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    Documentation

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-21-db-sync + 2023-02-21-db-sync + Tue, 21 Feb 2023 00:00:00 GMT + + High level summary

    The db-sync team created a new tag 13.1.0.2 which is ready to release. +We also investigated and had the first working UTxO-HD integration which is one +of the potential future risks for db-sync.

    Low level summary

    • Integrated the UTxO-HD feauture branch in kderme/utxo-hd-1. This doesn't +use the full on disk storage but keeps things in memory and the plan is to keep +it this way for the first iteration. The integration still has some performance +issues which we investigate
    • Created tag 13.1.0.2 which upgrades the dependencies of db-sync
    • Fixed an issue related to errors appearing in SMASH +#1353
    • Continued with ghc-9.2 integration +#1339
    • Worked on an new fixing procedure for +#1348. +We try to make these procedures work also on older schema version, without the +need to migrate to newer schema, which can be very useful for fixing existing +snapshots.
    ]]>
    + db-sync +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-17-crypto + 2023-02-17-crypto + Fri, 17 Feb 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration.
    • cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: started implementation in rust.

    Low level summary

    Mithril

    • Transmute helpers merged PR#722
    • We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope.
    • We are working in a modification of KES to require caller to allocate the secret key buffer.
    • Proposed a solution for signer registration of Mithril.

    cardano-base

    • Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 proof.
      • Results are promising, with using only 23% of the execution budget to verify a realistic proof.
      • Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril.
    • KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this.
    • Conversion finally merged PR#344.

    KES agent

    • Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation
    • Figuring out how to go from fake file descriptor to write the raw bytes

    MuSig2

    • Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.
    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-17-goedel + 2023-02-17-goedel + Fri, 17 Feb 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, distributivity properties of deltaQ, and consulting +on performance design with the Marlowe team.

    Details

    • Processing reviews on performance engineering paper and planning +paper revisions accordingly

    • Investigating distributivity properties of DeltaQ

    • Preparing sections on the thorn calculus and idempotency laws for +draft paper about verifying design refinements for distributed +system design

    • Consulting on performance design with Marlowe team

    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-17-hydra + 2023-02-17-hydra + Fri, 17 Feb 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team completed work on dealing differently with contests +during the contestation period. These will now always push out the deadline and +hence contestation periods are easier to pick (depending on the network a Head +runs on). Furthermore, they added an important acceptance test and completed +internal refactoring of the protocol logic making future changes easier.

    What did the team achieve this week

    • Push contestation deadline on each contest #716
    • Wrote an acceptance (property) test can always close/fanout when collect is successful
    • Internal refactoring of our HeadLogic
    • Groomed remaining things from #452 into dedicated features

    What are the goals of next week

    • Complete full minting policy #720
    • Release 0.9.0 with updated scripts
    • Plan mainnet milestone and a 0.10.0 version
    • Redraw transaction graphs for specification (upon feedback)
    • Have smoke tests fixed and running regularly
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-17-ledger + 2023-02-17-ledger + Fri, 17 Feb 2023 00:00:00 GMT + + High level summary

    This past two weeks saw many months worth of ledger changes integrated with the cardano-base +and ouroboros-network repositories. +The vast majority of the effort involved all the changes to the ledger serialization libraries +(and the interplay with cardano-base) which now support proper versioning. +Supporting the conway ledger era, and in particular allowing the ledger state to transition +to a whole new system of governance, also played a noticeable part in the integration.

    Besides the integration work, the team continues to address technical debt, improve the +documentation, make our testing infrastructure better (such as experimenting with better +nightly tests), and formally specifying more parts of CIP-1694.

    Lower level summary

    Integration work

    Below is all the integration work completed, which will enable a release to node from +the current ledger master. Many thanks to +Alexey for this colossal undertaking!

    Technical debt

    Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted +in the CBOR specification. See pull-3241.

    We now have our .cabal files being checked for a consistent formatting given by +cabal format in our CI. See pull-3286.

    We are still experimenting with better nightly tests for our long running +property based tests. See pull-3276 and pull-3296.

    Small documentation improvements

    The hand proofs of the preservation ADA property have been added back to the +Shelley ledger specification. See pull-3295.

    We have clarified how the script integrity hash is computed in the CDDL description. +See pull-3290.

    Specifying CIP-1694

    Our new formal specifications backed by Agda have seen a lot of progress! +Upgrading to Agda 2.6.3 fixed our main build infrastructure problems, +and we no longer have to rely on our custom fork. See pull-50.

    Our progress on formally specifying CIP-1694 can be followed here:

    Constraint based testing

    We are still actively working on our new constraint based property testing framework. +We have nearly all of the constraints for an entire ledger state +hooked into generators, and tests that the generators do indeed obey the constraints. +The variable count in the constraints is over 100! +There is still much work to do on shrinking, making the generators faster, +and writing actual property tests for the ledger, but the approach still seems viable and +we are hopeful that it could replace our trace generators. +The WIP can be followed here: pull-3219.

    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-17-network + 2023-02-17-network + Fri, 17 Feb 2023 00:00:00 GMT + + High level summary

    Recently QA found a bug in P2P code, which results in busy loops. We added one +fix to 1.35.6 release, another one will likely be part of next release. The +first one is already included in ouroboros-network-0.3.0.1 release. These +bugs could only affect nodes which are out of sync and thus should not impose +risk on well maintained nodes on mainnet. We also advertise to deploy at most +one of the relays as a P2P node, which shields from possible consequences.

    We recently finished design phase of eclipse evasion and we started +implementing it (see issue #3886 for progress).

    Galois finished implementing Handshake extension which will allow to query +network protocol versions (see pr #4256).

    We also recently released a newer set of network packages to be integrated with +cardano-node master branch, this includes:

    * monoidal-synchronisation-0.1.0.2
    * cardano-client-0.1.0.2
    * network-mux-0.3.0.0
    * ouroboros-network-api-0.1.0.0
    * ouroboros-network-protocols-0.2.0.0
    * ouroboros-network-testing-0.2.0.1
    * ouroboros-network-mock-0.1.0.0
    * ouroboros-network-framework-0.3.0.0
    * ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
    in `0.3.0.1`)
    ]]>
    + network +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-10-hydra + 2023-02-10-hydra + Fri, 10 Feb 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team closed several gaps to align the Hydra scripts +implementation further with the specification. This also resulted in a slight +improvement on Hydra script size and costs. They consequently analysed the +asymptotic complexity of collect and fanout and how they relate. Also plutus-tx +profiling toolchain was evaluated and set up for future improvements on Hydra +on-chain performance. In discussions with researchers and internal auditors, +they also uncovered next steps on further securing the Head protocl using a +"full" minting policy.

    What did the team achieve this week

    • Closed several gaps to align script implementation with specification #452
      • Allow contest only once #680
      • Optimization through head output at index 0 #700
      • Value is preserved #702 + optimized exact value equality #709
    • Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to #721
    • Fixed our tooling around the Haskell language server
    • Discussed full minting policy with researchers
    • Started grooming “what we need for mainnet” on this idea ticket and milestone

    What are the goals of next week

    • Implement full minting policy
    • All remaining protocol discrepancies are implemented or groomed as individual features
    • Ideally release 0.9.0 with updated scripts
    • Discuss what we need for mainnet (milestone planning)
    • Redraw transaction graphs for specification (upon feedback)
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-09-mithril + 2023-02-09-mithril + Thu, 09 Feb 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2304.1 distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.

    Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version 1.35.5 on their devnet and infrastructure.

    Low level overview

    • Released the new distribution 2304.1
    • Fixed a bug that prevented some signers to sign with 2304.0-prerelease #716
    • Completed the implementation of an EraChecker that checks if an era is active #708
    • Completed the implementation of an EraReader that gathers era activation data #709
    • Completed the implementation of an EraReader adapter with on chain transaction as source #710
    • Completed the relational design of the aggregator store #476
    • Completed adding a new SPO on the testing-preview network #729
    • Completed the upgrade of the Cardano node to 1.35.5 #725
    • Fixed flakiness in the CI #734
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-08-consensus + 2023-02-08-consensus + Wed, 08 Feb 2023 00:00:00 GMT + + High level summary

    We continue refactoring the UTxO HD prototype while we wait for the system level +benchmarks. We have created a new repository that contains the anti-diff +packages used in this prototype.

    On the Genesis front, we are preparing another meeting with the researchers to +audit the implementation design, and we continued working on basic tests and +simplifications.

    During the past two weeks we also introduced two new tools. One for dumping CBOR +encoded blocks to JSON, and another to serve a local immutable DB.

    Workstreams

    UTxO HD Prototype

    We are in the process of refactoring the UTxO HD prototype, while we wait for +the system level benchmarks to confirm if the performance of the prototype is +satisfactory.

    We also set up a repository for the anti-diff package, which +required us to refactor the code, write documentation, and prepare a release to +CHaP.

    Genesis

    We worked on basic tests for the Limit on Eagerness property of +Genesis. We also introduced further robustness and simplifications in the +Genesis Density governor. Finally, we developed a presentation to engage again +with the researchers on our Genesis implementation design.

    Technical debt

    Fostering collaboration

    We are in the process of polishing the ouroboros-consensus +documentation site, which we will use a the entry point for Consensus related +documentation. The first version will not be complete, but we plan on +systematically improving it.

    Support

    We added a tool to ouroboros-consensus-cardano-tools which allows +to dump the Chain DB blocks or any given CBOR encoded blocks as JSON.

    We also added another tool that serves an existing immutable DB via +BlockFetch and ChainSync. This tool can help in assisting our local benchmarking +efforts (for instance Genesis' ChainSync jumping prototype).

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-08-node-cli-api + 2023-02-08-node-cli-api + Wed, 08 Feb 2023 00:00:00 GMT + + 2023-02-08 - 2023-02-21

    High level summary

    More maintenance and resolving raised issues.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-08-performance-and-tracing + 2023-02-08-performance-and-tracing + Wed, 08 Feb 2023 00:00:00 GMT + + High level summary
    1. SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions.
    2. Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks.
    3. New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node.
    4. New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide.
    5. Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live.
    6. Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on.
    7. Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.

    Performance

    We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:

    • we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,
    • after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,
    • finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.

    In addition, we started benchmarks of the 1.35.6 release.

    Tracing

    A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way.

    Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting.

    Infrastructure

    On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders.

    The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment.

    The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops.

    ]]>
    + performance-tracing +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-03-crypto + 2023-02-03-crypto + Fri, 03 Feb 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril.
    • cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.

    Low level summary

    Mithril

    • Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing PR#722
    • We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper.
    • We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.

    cardano-base

    • There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381.
    • The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner.
    • The update VRF PR#341 is finally merged, and we are ready to merge PR#344, which implements conversion functions from the compatible types between Praos and PraosBatchCompat.

    KES agent

    • Use of snockets to send the data directly from the socket to secure memory.
    • We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives
    • Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.

    MuSig2

    The GitHub Action linelint is used to check the files.

    • A new job for linting is added to the file /.github/workflows/ci.yml. The rules are configured in the file /.github/workflows/.linelint.yml. Some files from the configuration of libsecp were failing, so in the rules in .linelint.yml the failing files are denoted to be ignored by the linter.
    • Folders are reorganized. We created a folder to handle the example. This folder includes the examplemusig2.c, a distinct config.h, and helper.c. The example is enhanced by implementing the functions in the helper for the configuration given in config.h. The number of messages is different than the tests. The example is made more generic to run with a loop.
    ]]>
    + crypto +
    + + <![CDATA[Goedel Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-03-goedel + 2023-02-03-goedel + Fri, 03 Feb 2023 00:00:00 GMT + + The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been preparing several papers for peer review +and knowledge sharing and consulting within IO and the community.

    Details

    • R&D Seminar on experience participating in a member based organisation
    • Full day tutorial on performance engineering presented at HiPEAC +2023 conference
    • Finished preparing and submitted a paper on performance engineering +to an ACM workshop
    • Preparing a draft paper for future submission about verifying design +refinements for distributed system design
    • Consulting on performance design of other IO projects
    ]]>
    + goedel +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-03-hydra + 2023-02-03-hydra + Fri, 03 Feb 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team completed the Hydra specification with a section about +rollbacks and updated graphs +(#448). In a next step, +the specification will be made more approachable and an open standard. They +improved their hydra-cluster tool to launch a local --devnet sandbox +environment and continued aligning the hydra-plutus scripts with the +specification by hardening the checks on close and contest transactions.

    What did the team achieve this week

    • Completed the specification with a section about rollbacks and updated graphs +#448, with a follow-up on making it more approachable and an open standard.
    • Continued spec review with internal auditor and incorporated changes.
    • Talked to TxPipe about how Demeter and Hydra could work together
    • The hydra-cluster executable can be used to launch a local --devnet sandbox environment.
    • Reproduced the “head being stuck on network outage” bug
      • relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed.
    • Progressed with higher velocity by addressing more and more gaps #677

    What are the goals of next week

    • Upstream our JSON instances to the ledger
    • Close all transaction security related on-chain gaps
    • Ideally release 0.9.0 with updated scripts
    • Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-02-02-ledger + 2023-02-02-ledger + Thu, 02 Feb 2023 00:00:00 GMT + + High level summary

    Much of the work the past two weeks involved integration efforts, +cleaning up and debugging some serialization issues, +adding tests, and work on large projects that are still ongoing. +We also released a CIP this week that aims to make the ledger +a registered CIP category.

    Lower level summary

    Ledger evolution CIP

    We published a +CIP +that will make the Cardano ledger a registered category of the CIP process.

    Serialization issues

    We had previously thought that we had found a serialization problem with the redeemers, +but it turned out to just be particularly confusing code. +We have now clarified the issue for the future.

    See pull-3263, pull-3269, and pull-3268.

    Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps.

    See pull-3277.

    New tests

    We added a new property test suite for some of our custom containers.

    See pull-3270.

    Progress on a better cost model serialization situation.

    We are still working our way through issue-2902. +Towards this end, we are now properly gating the new flexible encoders +until version 9.

    See pull-3274.

    Nightly tests

    We are still experimenting with moving more CI actions to GitHub actions.

    See pull-3276.

    Constraint based generators

    We continue to add to our proof of concept for constraint based generators. +See the previous ledger update for more information about this project.

    ]]>
    + ledger +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-27-hydra + 2023-01-27-hydra + Fri, 27 Jan 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team had a monthly review meeting with their stakeholders, +contributors and interested people from the community. The monthly repot for +January 2023 is a digest +of the things presented and also includes a summary of the meeting. The Hydra +specification was getting discussed and the team is incorporating suggested +changes of reviewers. Last but not least, they compute and publish script +information on every PR and also on the +website +now.

    What did the team achieve this week

    • Had the monthly review meeting with a broader audience
    • Published the monthly report for January 2023
    • Reviewed the spec and discussed individual aborts with researchers
    • Compute and publish script information along benchmarks on every PR and website

    What are the goals of next week

    • Add rollback section to Hydra spec, update pictures and publish it as part of repository
    • Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository.
    • Groom & plan actions required for a maintainable Head explorer + break down align gaps feature.
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-26-mithril + 2023-01-26-mithril + Thu, 26 Jan 2023 00:00:00 GMT + + High level overview

    The Mithril team released a new 2302.0 distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes.

    Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node.

    Low level overview

    • Released the new distribution 2302.0
    • Implemented a backward/forward compatibility mechanism for API messages #688:
      • Implement the mechanism for the signer registration #689
      • Implement the mechanism for the signature registration #693
      • Implement the mechanism for epoch settings #695
      • Implement the mechanism for certificate pending #696
      • Implement the mechanism for certificate #697
      • Implement the mechanism for snapshots list #698
      • Implement the mechanism for snapshot #699
      • Update enforcement of API version with Semver #705
    • Completed the PoC implementation of backward compatibility with protobuf #677
    • Completed the PoC implementation of backward compatibility with avro #678
    • Completed the PoC to Read/Write transaction on chain for Era activations #672
    • Completed the upgrade Cardano devnet to 1.35.4 #523
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-25-consensus + 2023-01-25-consensus + Wed, 25 Jan 2023 00:00:00 GMT + + High level summary

    During the past two weeks, the consensus team finished the testing activities +around the UTxO-HD prototype. This is a very important milestone which will +enable us to run system-level tests and benchmarks, as well as start refactoring +and cleaning the prototype. Regarding our Genesis workstream, we elaborated a +roadmap that gives an indication of the remaining work. We also continued our +work on benchmarking chain-sync-jumping. We also continued working on improving +the way we handle blocks from the future, and advancing the integration of the +new VRF and KES crypto.

    Workstreams

    UTxO HD Prototype

    As the prototype is nearing its completion, it was important to have enough +confidence that we will be able to move additional parts of the ledger state +onto disk. We worked together with the Ledger team to elaborate a +sketch on how the UTxO-HD design would accommodate the migration of +additional data from memory to disk. This gave us enough confidence that the +current architecture will be extensible in the future.

    On the testing front, we added property-based tests for the UTxO-HD +type classes.

    We also enabled disabled components, and addressed several +technical debt issues:

    • Implement splitSized anti-diff split (#4269), and integrate it +into consensus (#4273).
    • Renaming of peekVal to peekMDBVal (#7).

    We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We +found a race condition in the LMDB backing store, which we fixed. +After the fix we were able to successfully run these benchmarks. The results +were published by this pull request.

    We used our db-analyser tool to benchmark the cost of reading keys and +flushing values to disk. The following plot shows the duration of these disk +operation in relation to the main ledger operations, where we can see that the +cost of the former are comparatively low. The spike at the beginning of the +graph is when, at the start of the Shelley era, the entire UTxO set is flushed +to disk.

    UTxO-HD read and flush benchmarks

    After months of hard work adding tests for the prototype, we are ready to run +end-to-end tests on the node, and system level benchmarks. This signals a very +important milestone for the UTxO-HD workstream 🎉.

    Genesis

    We elaborated a high-level decomposition of the remaining +work for Genesis. We also continued benchmarking the chain-sync-jumping +happy-path.

    Technical debt

    We continued working on improving the way we handle blocks from the future.

    Support

    We completed the mapping of Crypto to HeaderCrypto and body Crypto. +HeaderCrypto is moved to cardano-protocol-tpraos. We created a draft pull +request to facilitate compiling consensus.

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-25-node-cli-api + 2023-01-25-node-cli-api + Wed, 25 Jan 2023 00:00:00 GMT + + 2023-01-25 - 2023-02-07

    High level summary

    General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the cardano-cli query stake-snapshot command.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-20-crypto + 2023-01-20-crypto + Fri, 20 Jan 2023 00:00:00 GMT + + High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We explored whether some uses of transmute could be removed, but it resulted in considerable regression.
    • cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision.
    • KES agent: An inconsistency between contra-tracer available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the contra-tracer used by consensus.

    Low level summary

    Mithril

    • We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average PR#675. We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing.
    • We are writing a RFP for the audit of the core library.

    cardano-base

    • A problem with Nix is blocking merge of PR#341
    • Plutus team ran benchmarks of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution.
    • Team is fully digesting the Plonk paper.
    • There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used.

    KES agent

    • A little unforseen delay has been caused by a mismatch in the use of contra-tracer. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are doing the change, but still the CI is not happy.
    • The same was needed for the KES agents prerequisites PR#317.
    • We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency
    ]]>
    + crypto +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-20-hydra + 2023-01-20-hydra + Fri, 20 Jan 2023 00:00:00 GMT + + High-level summary

    This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1 +specification. Of which a first version has been aggregated and is currently +under review. They aligned the on-chain scripts of reimbursing funds on abort +like defined in the specification, improved the mutation test framework to have +more control when testing plutus scripts. The added HeadId in the API and the +TUI example client make hydra-node easier to use and a first experiment of a +Hydra Head explorer was showing the utility of this - see what Heads exist on +the preview network here.

    What did the team achieve this week

    • HeadId to API and display in the TUI #678
    • Experiment of creating a hydra explorer, first result hosted here
    • Improved mutation framework allowing to fail for the right reason #679
    • Correctly reimburse funds in abort (matching the spec) #670
    • Finished a first write-up of the Hydra HeadV1 spec: Read it on overleaf (Communication channels for feedback)

    What are the goals of next week

    • Monthly review meeting with a broader audience
    • Groom & plan actions required for a maintainable Head explorer
    • Break “align gaps” feature into smaller chunks (at least on- /off-chain) and groom it
    • Review the spec & discuss individual aborts with researchers (a bigger open question)
    ]]>
    + hydra +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-20-network + 2023-01-20-network + Fri, 20 Jan 2023 00:00:00 GMT + + High level summary

    We have been working towards cardano-node-1.35.5 release. QA & benchmarking +teams gave a green light for the release, and we made decent progress with some +CI problem which we encountered on the way (PR #4612). We are also working on +peer sharing, making improvements in our testing infrastructure, reducing +technical debt and making progress towards io-sim-1.0.0.0. Galois is making +progress on Handshake improvements.

    Low level summary

    Our diffusion simulation network now includes a mixed network of initiator +only and initiator and responder nodes. issue #4222

    We are now reviewing the peer sharing pull request.

    We are also reviewing pull request which introduces handshake query flag. PR #4256

    We fixed a bug in our network simulator. The bug was triggered when a node +died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

    We also refactored Snocket interface and removed the bearer construction from +its methods. PR #4260

    We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes +reviewing two PRs: PR #57 and PR #60 as well as writing an announcement +blog post.

    ]]>
    + network + release +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-20-sre + 2023-01-20-sre + Fri, 20 Jan 2023 00:00:00 GMT + + High level summary

    The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing +support for cardano-world.

    Lower level summary

    Cicero

    • Fixed various race conditions around transformers.
    • Brought our CI up to date.
    • Migrated to the Nomad exec driver with Nix support for many actions.
    • Moved Nix builds to the Nomad clients for much better cache locality.
    • Ongoing work on vastly improving the action matching and evaluation speed.

    Tullia

    • Made it easier to support cloning from a PR's fork
    • Update to latest std
    • Add workaround for cgroup issue: nomad#12877
    • github preset: add github.ci.remote and (read|get)Repository functions
    • Fix various issues around CUE handling

    Bitte

    • Upgrade to NixOS 22.11
    • Prototype usage of Colmena for deploys instead of deploy-rs
    • Finalized work on Equinix Metal support
    • Prototype better secrets management with ragenix instead of sops-nix
    • Improve CI and bring it up to date

    cardano-world

    • Fixd various OOM issues on preview and preprod
    • Rotated KES keys on preview and preprod
    • Optimize mainnet db-sync to cope with higher load
    • Fix an issue where PostgreSQL would fail after a reboot

    bitte-world

    • Updated to NixOS 22.11

    ci-world

    • Updated to NixOS 22.11
    • Added Equnix cluster
    • Improve caching of Nix builds
    ]]>
    + sre +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-19-ledger + 2023-01-19-ledger + Thu, 19 Jan 2023 00:00:00 GMT + + High level summary

    The ledger team completed some preliminary ground work in preparation for CIP-1694 +(restructuring the ledger state), +fixed the PDF hosting problem (mostly the formal specs), +built out more of the new user-friendly ledger API, +finished a proof of concept for constraint-based generators for property tests +(with the hopes of being able to replace our trace generators one day), +and addressed technical debt.

    Lower level summary

    Restructuring the ledger state

    The existing governance structures will be replace in the conway ledger era, +as described in CIP-1694. +In particular, the ledger rules will be restructured as follows:

       BBODY
    |
    |-------------------------------|
    v v
    TICK LEDGERS
    | |
    |---------| |
    v v v
    RUPD ~NEWEPOCH~ ~LEDGER~
    | |
    |----------| |--------|-------------------|-----------|
    v v v v v
    ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+
    | | |
    |---------|------------| v |
    v v v DELPL v
    SNAP POOLREAP -UPEC- | UTXO
    |--------| |
    v v v
    POOL DELEG ~UTXOS~

    -..- Removed
    +..+ Added
    ~..~ Modified

    Moreover, the ledger state will also be restructured in accordance with the new rules. +In the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT. +We have also adapted all the data structures in the ledger state.

    See:

    PDF hosting

    We now build all of our PDFs using a GitHub action which is triggered by pushing a tag +with a specific form, cardano-ledger-spec-YYYY-MM-DD. +The action creates a GitHub release containing the PDFs. +The links in the main ledger README now point to the PDFs in the latest release.

    See:

    Powering the new ledger API

    We have now removed all the HasField instances from the protocol parameter data types, +and replaced them with lenses. +This is probably the last major restructuring that the ledger team will do on the code base +for the API for a while +(the Plutus tools team will be working on it next, see here). +We also added a new helpful function ensureMinCoinTxOut.

    See:

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We would like to switch to tests which instead generate a random ledger state representative +of not just an initial state, generate a single random valid block, and then test our properties. +The hope is that these will be much more random and easier to maintain.

    We have finished a proof of concept are encouraged that this approach could work!

    See:

    Technical debt

    • pull-3244 massive CI speedup
    • pull-3249 better types for fees in the protocol parameters
    • pull-3264 move our annotator code to the cardano-ledger-binary package where it belongs
    • pull-3239 move the Wdrls type to the Core module.
    ]]>
    + ledger +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-14-db-sync + 2023-01-14-db-sync + Sat, 14 Jan 2023 00:00:00 GMT + + High level summary

    After spending the last months on improving DBSync and releasing 13.1.0.0 the DBSync team focused +the last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the +new leger core and ghc-9.2.4

    Lower level summary

    • Integrate CHaP +#1331
    • Integrate new ledger core 0.1.1.1 and ghc-9.2 +#1332
    • Technical debt: Add code formatter fourmolu +#1334
    • Preparing and tracking Conway and UTxO integration
    ]]>
    + db-sync +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-13-hydra + 2023-01-13-hydra + Fri, 13 Jan 2023 00:00:00 GMT + + High-level summary

    Since last weekly update before christmas, the Hydra team worked on the +technical specification, closed gaps in hydra-plutus scripts, made the unique +headId available to Hydra clients through the API, allow the hydra-node to +explicitly synchronize from genesis (if configured), and fixed smaller log and +build issues reported by new users.

    Besides this, a retrospective blog +post +was published by Matthias Benkort (CF) on Hydra, summarizing our progress made +in 2022 also an outlook where Hydra is headed for in 2023. Also, the team had +some first sessions on the voting project with Catalyst and the CF.

    A full digest monthly digest for December 2022 can be found on the hydra +website.

    What did the team achieve this week

    • Had some first sessions on the voting project with Catalyst and CF
    • Published retrospective blog +post +by Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also +an outlook where Hydra is headed for in 2023.
    • Worked on the LaTeX spec for HydraHeadV1, not final or published yet - latest +version in this repository.
    • Add unique headId to API and hence make it available to clients.
    • Allow hydra-node to explicitly synchronize from genesis using --start-chain-from 0.
    • Closed gaps in hydra-plutus scripts
      • bounded transaction validity (ADR21)
      • enforcing contract continuity via state token in output
    • Fixed JSON for some logs and smaller build issues reported by new users.

    What are the goals of next week

    • Reach out to have hydra-tutorial integrated.
    • Plan the next couple of months.
    • Complete checking reimbursing of commits in head validator.
    • Align plutus scripts to spec and simplify them (identified some simplifications)
    • Improve mutation framework to be sure we fail tests for the right reasons
    • Complete the spec except the open points (<5) and also discuss them with researchers.
    ]]>
    + hydra +
    + + <![CDATA[Node Release Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-13-release + 2023-01-13-release + Fri, 13 Jan 2023 00:00:00 GMT + + Node Reelease Update

    2022-11-02 - 2023-01-13

    Executive Summary

    A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on +release/1.35 branch and does not bump cardano-ledger.

    The team successfully integrated an interim release bump of ledger and consensus into cardano-node master. +This work will not be released in a node version, but will be continued by the current dependency bump in progress.

    We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again.

    The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress.

    Completed

    In Progress

    ]]>
    + release +
    + + <![CDATA[System Test Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-13-system-test + 2023-01-13-system-test + Fri, 13 Jan 2023 00:00:00 GMT + + High level summary

    During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the P2P Single +Relay functionality.

    We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level.

    Workstreams

    Framework improvements:

    • extended the cardano-node-tests with the ability for anybody to fork the repo and run all our System Tests on GitHub Actions
    • added 2 new nightly pipelines - nightly-mixed and nightly-p2p - details here
    • some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;

    === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) === + to + === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===

    Node:

    • ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled
    • started the preparations for testing the next tag - details here

    DB-Sync:

    • some improvements on db-sync sync tests
    ]]>
    + system-test +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-12-mithril + 2023-01-12-mithril + Thu, 12 Jan 2023 00:00:00 GMT + + High level overview

    The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ADR. They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible.

    Finally, they have worked on upgrading the devnet and fixing some flakiness in the end to end tests of the CI.

    Low level overview

    • Implemented the redaction of an ADR for handling graceful updates of the Mithril Network #671
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with protobuf #677
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with avro #678
    • Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction #672
    • Worked on upgrading the Cardano node of the Mithril devnet, as well as fixing flakiness of the CI #523
    • Prepared and tested the new 2302 distribution pre-release 2302.0-prerelease
    • Updated the documentation for SPO to build a signer node in order to better reflect the new release process #681
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-11-consensus + 2023-01-11-consensus + Wed, 11 Jan 2023 00:00:00 GMT + + High level summary

    The consensus team is resuming its activities after the Christmas break. During +these weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and +discussing with the Ledger team the changes that might be required for the next +iterations. The pull request that adds the Conway era is waiting for a second +review round and we hope to merge it soon. On the technical debt side we are +looking into a property-test failure found in the iterators. We are +investigating if this is an error in the model or in the implementation. We also +improved the documentation of our testing code.

    Workstreams

    UTxO HD Prototype

    We worked with the Ledger team to start preparing the next versions of UTxO-HD. +The Ledger team is concerned that for the remaining maps we might need the full +ledger state on epoch boundaries. Since the main consumer of the ledger rules is +Consensus, the code that requires access to a full state could be moved from the +ledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take +place in such bridge, instead of querying the ledger for the values that are +required in the epoch-transition computations.

    We relocated some UTxO-HD definitions, in preparation for merging +the prototype into master.

    We also completed updated local benchmarks comparing the replay time and memory +consumption of:

    • the baseline node (f2fc76ef45647275c98634da1718290b976ff364)
    • the UTxO-HD node with the in-memory backend
    • the UTxO-HD node with the LMDB backend

    The following plot shows the results: we can see that the LMDB node barely +reaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The +in-memory backend is about 30 minutes faster, but still slower than the baseline +version. We are aware of this phenomenon and it is inherent to the problem of +maintaining sequences of differences of the last k ledger states that allows +us to perform rollback and roll-forward. We are in the process of measuring +syncing from scratch times.

    We also added StaticEither accessors that helped us to simplify +the UTxO-HD prototype.

    New Conway era

    We incorporated the feedback of the pull request, and rebased this +branch on top of master. The PR is pending a second review round and we hope +to merge this soon.

    Technical debt

    We are investigating a property-testing failure involving +iterators. Solving this requires understanding the expected behavior of +iterators in the counterexample found by QuickCheck to determine if the error +is in the model or in the implementation.

    Fostering collaboration

    We moved the contents of docs/Testing.md closer to the code, so that the +explanations about the tests are easier to find in the relevant modules, and the +documentation is easier to keep up to date.

    ]]>
    + consensus +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-11-performance-and-tracing + 2023-01-11-performance-and-tracing + Wed, 11 Jan 2023 00:00:00 GMT + + High level summary

    Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:

    1. SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress.
    2. The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over.
    3. Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks.
    4. New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs.
    5. Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench.
    6. Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.

    Performance

    The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on.

    Tracing

    The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done.

    Infrastructure

    Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components.

    On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters. +We now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes.

    We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development. +Once this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads.

    ]]>
    + performance-tracing +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-06-crypto + 2023-01-06-crypto + Fri, 06 Jan 2023 00:00:00 GMT + + High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: The API features (error handling) has been merged.
    • Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI.
    • KES agent: We keep progressing with KES secure forgetting implementation.

    We also started working in the cryptography engineering handbook, which will be a cross team effort.

    Low level summary

    MuSig2

    • Merged the more granular error handling mechanism PR#33

    Mithril

    • Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in Version 0.1.1, which was published in crates.io.
    • Updated new KES format to mithril library PR 674
    • We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync PR 531
    • We keep progressing on reducing the use of transmute in mithril-stm.

    cardano-base

    • Nothing new to report. Still working in merging these PRs. We are only missing nix merge of PR#520 and the updates on VRF will be merged.

    KES agent

    • We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests PR#255.

    Cryptography handbook

    We have made available the (temporary) cryptography handbook https://input-output-hk.github.io/cryptography_spec/, and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives.

    ]]>
    + crypto +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2023-01-05-ledger + 2023-01-05-ledger + Thu, 05 Jan 2023 00:00:00 GMT + + High level summary

    The ledger team finished up the remaining work for tracking individual depots, +built out the new Conway era transaction body (in line with CIP-1694), +greatly reduce some problematically large calculations on the epoch boundary, +and addressed technical debt.

    Lower level summary

    Finishing the deposit tracking

    The initial work on the individual deposit tracking project focused only on correctness. +As this is a large data structure +(since its size is linear with respect to the number of registered stake credentials), +it is very important that we also reduce the memory overhead as much as possible. +Fortunately, we were able to add very little overhead for the deposits by using existing +efficient data structures. The extra tracking now only incurs one word (8 bytes) +per registered stake credential.

    See:

    New Conway era transaction

    We implemented the Conway era transaction body, which is in line with CIP-1694. +Note that the Conway era implements, losing speaking, the parts of CIP-1694 that are not +related to the liquid democracy (the "DReps"). +The new transaction body adds the new governance actions and votes, +while also deprecating the old governance structures +(i.e. the old protocol parameter updates and MIR certificates).

    We also now have the wire specification (CDDL file) and serialization code in place. +The wire specification is still subject to change while we work on the Conway era, +but it is now usable and has proper testing support +(so that, for example, the serialization round-trips, etc).

    See:

    Optimizing the TICKF transition

    Every since the release of the Shelley era, we have been working to reduce the computational load +placed on the node by the ledger at the epoch boundary. +While still not perfect, we believe that we have removed one of the final problematically long +epoch boundary computations that exacerbate situations like +this. +In particular, the problem involved the way in which the consensus layer obtains a view of the +ledger for the purposes of checking the leadership schedule in a new epoch. +We implemented a stopgap measure which now only incurs a single multi-second cost once per epoch +instead of potentially several multi-second costs while the networks waits for the first block +of a new epoch to be minted.

    See:

    Technical debt

    We closed the year out with a lot of reduction to the technical debt!

    Improved ledger event

    • pull-3212 - The ledger events are not guaranteed to appear in any given order within a block. +For this reason, motivated by the use case in db-sync, the TotalDeposits event now +includes a transaction ID and emits the change in deposits instead of the value.

    Improved type saftey

    • pull-3208 - We replaced NominalDiffTime with a newtype wrapper. The problem was that our CBOR +encoders and decoders were using the wrong level of precision, having to due with with +the Shelley genesis file. We removed the potential problem with a newtype wrapper.
    • pull-3167 - We now use a GADT to ensure consistency of the Plutus language in the types +for TransactionScriptFailure and PlutusDebug.

    Code/Module organization

    • pull-3175 - The Allegra and Mary eras had an unusual relationship in our codebase, +due to the uncertainly of release dates while we were implementing them. +In particular, they were coupled in way that is different from the rest of the code base. +With hindsight on our side, we split the combined shelley-ma Haskell package into two +separate ledger era packages, which is now consistent with the rest of the repository +and module structure.
    • pull-3184 - We created a core test sub-library, cleaning up a lot of our property test +generator code.
    • pull-3210 - We moved the KeyPair type to the test library. Outside of testing, +the ledger does not need to deal with signing keys, and since this is a topic that +deserves the utmost care, it is best to make it clear that our use of signing keys +is only for testing.
    • pull-3229 - We split the Cardano.Ledger.Alonzo.Data module, which is more consistent with the rest +of the codebase.

    Revert pointer address deprecation

    Thanks to one of our excellent internal auditors, +@jmhrpr, +we now have a better plan for deprecating pointer addresses. +This meant that we had to revert the previous work to deprecate them.

    See:

    Miscellaneous

    • pull-3205 - We removed deprecated type synonyms.
    • pull-3218 - We cleaned up the address deserialization.
    • pull-3223 - We fixed faulty address deserialization tests.
    • pull-3222 - We switched to a general type family TxOut from concrete ones, +reducing many constraints.
    • pull-3224 - ShelleyGenesis is now parameterized by crypto instead of by era.
    • pull-3170 - We set the cabal-version to 3.0 in our projects.
    • pull-3172 - We removed the now useless EncodeMint/DecodeMint classes.
    • pull-3225 - We switch from ormolu to +fourmolu. +The reason was to be able to finally have more diff friendly code!
    ]]>
    + ledger +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-28-node-cli-api + 2022-12-28-node-cli-api + Wed, 28 Dec 2022 00:00:00 GMT + + 2022-12-28 - 2023-01-10

    High level summary

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-16-hydra + 2022-12-16-hydra + Fri, 16 Dec 2022 00:00:00 GMT + + High-level summary

    This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on the website and reduced the cost for commit transactions by ~30% with the help of reference scripts.

    The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.

    What did the team achieve this week

    • Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.
    • Reduce commit transaction costs by ~30% with reference scripts.
    • Prepared an RFP for external audit of the Hydra Head solution.
    • Fixed transaction cost benchmarks for abort tx #631.
    • Recorded decision to use model-based testing (ADR22) and improved Model documentation.
      • Concluding the first increment on Validate coordinated Head protocol #194.
      • Formulated next step / follow-up on testing the Soundness property of our protocol #656.
    • Switched to using nix flakes for development setup and CI build #646.

    What are the goals of next week

    • Push ADR21 & tx validity gap over the finish line (smoke tests missing).
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Close & recap on the year with another monthly report (+ blog post).
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-15-mithril + 2022-12-15-mithril + Thu, 15 Dec 2022 00:00:00 GMT + + High level overview

    The Mithril team has released the new distribution 2248.1 of their nodes. They have published the first version of the Mithril cryptographic library on crates.io, the Rust community’s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.

    Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities.

    Low level overview

    • Implemented removing verification key and stake from single signatures #619
    • Completed the extraction of the signer registration from the multi-signer #642
    • Completed the extraction of the certificate creation from the multi-signer #638
    • Implemented a workflow to test client binaries (Linux / MacOS / Windows) #601
    • Completed the signature of the artifacts produced by the CI #587
    • Fixed the protocol parameters transition #627
    • Worked on optimizing the snapshot digest computation #510
    • Worked on enforcing the API protocol versions in the client and signer #633
    • Worked on deactivating the non certified signer registration mode #621
    • Worked on the re-genesis of the test networks #651
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-14-consensus + 2022-12-14-consensus + Wed, 14 Dec 2022 00:00:00 GMT + + High level summary

    During the past two weeks, the Consensus team finalized the QSM tests for the +backing store and Mempool on the UTxO-HD branch with important discoveries +regarding parallel QSM testing. We also worked with the Ledger team to envisage +the modifications that are required in Ledger and Consensus to accommodate the +changes in the crypto VRF and KES. The db-analyser now supports bechmarking +the ledger operations, which will allow us to identify, debug, and profile +potential performance problems. We drafted a document that defines how to manage +the versions of Consensus-related packages. The top level documentation of +ouroboros-network now features a description of the consensus components and +provides a hyperlinked map to the modules documentation.

    Workstreams

    UTxO HD prototype

    Whereas we had passing sequential state-machine tests for the mempool, the +parallel case proved to be more challenging than we thought. The operation of +adding a list of transactions to the mempool is not atomic and, as a result, +when adding a list of transactions, transactions from other processes can be +added in between. The mempool implementation handles this correctly, however +this required us to redesign the parallel model we had to take +the lack of atomicity into account.

    Backing store property tests

    We finished refactoring the backing store property tests. The second review +round is ongoing.

    LSM tree implementation

    We are working on benchmarking (in terms of time and number of IO operations) +fetching/looking up data from disk.

    Genesis

    We worked on the design of a mechanism to prevent a DoS attack on our Genesis +design related to rollbacks. This was arguably the biggest outstanding question.

    During the discussions around Genesis, we noticed a design boundary that nicely +delineates a fundamental component. We almost have a full Haskell prototype of +it. It will be very nicely self-contained, perhaps even usable in the ultimate +implementation!

    New VRF and KES crypto integration

    We collaborated with the Ledger team on preparing the ledger state and crypto +types to avoid huge allocation on the epoch boundary when changing aspects of +the crypto that will only manifest in headers, not in the ledger states.

    Technical debt

    We merged the pull-request that adds a support to db-analyser for +benchmarking ledger operations. This will allow us to identify, debug, and +profile potential performance problems. The benchmark focus on the main 5 ledger +operations that are involved in chain syncing, block forging, and block +validation, namely:

    1. Forecast.
    2. Header tick.
    3. Header application.
    4. Block tick.
    5. Block application.

    The following figure shows a plot of the benchmarking results for the first 65 +million blocks (approximately) of the Cardano chain. The thin yellow lines under +the x-axis show the epoch boundaries, whereas the thick yellow lines correspond +to the era transitions.

    As we can see in this figure, era and epoch boundaries require more computation +time. The ledger team are aware of this problem, and we are working to improve +this situation.

    Fostering collaboration

    We drafted a document motivating and defining how Consensus (and +possibly other core teams) will/should manage our package versions. This +pull-request garnered many great discussions from our team members and other +teams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et +al. We want to thank you all for your input, and we found this discussion very +enlightening!

    We merged the pull request that adds an overview of consensus to +the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    ]]>
    + consensus +
    + + <![CDATA[DB-sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-14-db-sync + 2022-12-14-db-sync + Wed, 14 Dec 2022 00:00:00 GMT + + High level summary

    The DBSync team continued testing release 13.1.0.0. The QA team has reported that no issues have +been found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.

    Lower level summary

    • Release is cherry-picked back to master, which uses the new rollback mechanism which uses +reverse indexes, same as the release +#1320 +This also fixes a bug number of issues on master.
    • Depenencies upgrade and CHaP integration +#1324
    • AdaPots fix #1323. This +fixes an issue where the per epoch AdaPots didn't match the epoch boundary, but +they also included changes from the first block of the epoch.
    • Deposits Event fix #3212. This pr +adjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the +number of queries that db-sync does during syncing an make syncing faster.
    ]]>
    + db-sync +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-14-node-cli-api + 2022-12-14-node-cli-api + Wed, 14 Dec 2022 00:00:00 GMT + + 2022-12-14 - 2022-12-27

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    ]]>
    + cli-api +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-14-performance-and-tracing + 2022-12-14-performance-and-tracing + Wed, 14 Dec 2022 00:00:00 GMT + + High level summary
    1. SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment.
    2. A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery.
    3. The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals.
    4. Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started.
    5. Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.

    Performance

    The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload.

    We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling.

    Tracing

    After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical.

    To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:

    1. We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration.
    2. The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.

    All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further.

    In addition, we're still pursuing our performance-enhancing rework of the new tracing internals.

    Infrastructure

    After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends.

    Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it. +This means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis. +This will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports.

    A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches. +Previously we only had automation for two aspects separately, so we only could either:

    • compare individual runs (used for different node configurations / versions)
    • collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version) +Naturally, combining these two capabilities was a long-desired feature of our analysis pipeline.
    ]]>
    + performance-tracing +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-12-network + 2022-12-12-network + Mon, 12 Dec 2022 00:00:00 GMT + + High level summary

    In last sprint the team focused on preparations for the conference talk at +OPODIS 2022. We also worked on preparations to publish io-sim and related +packages on Hackage (PR #57, PR #60).

    We also started reviewing:

    • ouroboros-network
    • cardano-node
    • cardano-ledger +repositories for open-source readiness (PR #4128).

    We prepared a PR which changes how node-to-node and node-to-client protocol +versiones are serialised in cardano-node log (PR #4691).

    ]]>
    + network + release +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-09-crypto + 2022-12-09-crypto + Fri, 09 Dec 2022 00:00:00 GMT + + High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency.
    • Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack.
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • [Still in progress] We are introducing a more granular error handling mechanism PR#33
    • We merged the API redesig PR#35
    • We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future PR#36

    Mithril

    • We merged the individual signature PR#620
    • We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (kes repo)

    cardano-base

    • Nothing new to report. Still working in merging these PRs.
    • We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a bug in GHC

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Fixed a 'use-after-free' bug in the KES agent.
    ]]>
    + crypto +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-09-hydra + 2022-12-09-hydra + Fri, 09 Dec 2022 00:00:00 GMT + + High-level summary

    This week, the Hydra team has worked on completing to "Validate coordinated head protocol against formal model", this is a huge step to verify the implementation is secure. They also worked on implementing ADR21 related to bounded tx validity which is now under review. HydraPay project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of issues they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced.

    What did the team achieve this week

    • Document model based testing #194 & #641
    • Got ADR21, reducing gaps between implementation and specification, under review.
    • Complete review on hydra-tutorial.
    • Complete first round of review on HydraPay work #634
    • Meeting with Director of CyberSecurity frio IOG to unblock "the RFP prepared for the external audit" #606
    • Remove vasil-dev and testnet from smoke-test because they were not working #630
    • Fix flaky plutus-merkle-tree test #642
    • Refactor NetworkSpec to improve legilibility.
    • Fix benchmark cost for abortTx #631
    • Adapt nix.conf to the recent hydra-ci nix cache migration.

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation.
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Get Cicero (new CI) working.
    • Use reference inputs to reduce the cost of the commitTx.
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-09-ledger + 2022-12-09-ledger + Fri, 09 Dec 2022 00:00:00 GMT + + High level summary

    The Plutus tools team at IOG has started helping the ledger team to build out a user friendly +cardano-ledger-api package! +A GitHub project +will be filled out in the days ahead, +people interested in the API can use it to follow along and join in on the conversations.

    The ledger team has started using +architectural decision records +to leave a record of important decisions that the team makes. +We will retroactively go back through past decisions and make ADRs for them.

    The logic to track individual deposits is now nearly in place. +We are prioritizing correctness with our first pull request, and will follow up with +performance optimizations and general cleanup next.

    Pointer addresses are being deprecated with the Cardano major protocol version 8. +See CPS-0002 +for more context.

    Lower level summary

    Cardano ledger API

    The Plutus tools team has taken our minimal cardano-ledger-api package and started filling it +out and adding much needed documentation. +They have also added doctests! +In the days to come, the Plutus tools team will map out a lot more work for the API and record +it in this +GitHub project.

    See

    Architectural Decision Records (ADRs)

    We are now providing more context and leaving a record of important decisions that are made +in the ledger. The first ADR explains the very lightweight process.

    See

    Tracking individual deposits

    See ADR-3 +for background. +We now have the logic in place to track individual deposits, and a host of property tests +to make sure that the logic is correct. +The current implementation uses more memory than it needs to, and we will address that next, +with our hope being to only use one word (8 bytes) per registered stake credential. +There is a fair amount of other cleanup needed for general maintainability.

    See

    Removing pointer addresses

    Pointer addresses, which have never seen any real use +(there are something like eleven on mainnet), are being deprecated starting at Cardano major +version 9. +CPS-0002 gives the context. +We are disabling them by first preventing transaction outputs containing them +from being serialized by the node at the moment we switch to version 9. +At the hard fork after that, we will translate the existing few pointer addresses +to enterprise addresses.

    See

    Technical debt

    • pull-3162 - Sometimes we have to put safeguards in place for hard forks which may never +be exercised. After we have passed the given hardfork, we are able to clean up the code +and simplify our logic. We removed all of the ones that we are currently easily able to.
    • pull-3165 - We improved the type safety of our code while also discovering and fixing +a serialization bug.
    • pull-3172 - We removed dead code.
    • pull-3175 - The Allegra and the Mary code used to be coupled in a particular way the we grew to +dislike. We made these two ledger eras now uniform with the rest of our code base.
    • pull-3184 - We organized our property testing code.
    • pull-3200 - The Plutus tools teams fixed an outstanding bug in the translation from the +ledger state to the Plutus script context.
    ]]>
    + ledger +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-02-hydra + 2022-12-02-hydra + Fri, 02 Dec 2022 00:00:00 GMT + + High-level summary

    This week, the Hydra team has worked on cleaning up several things in progress +after last week's summit. They have extended their model-based testing (MBT) +approach with transaction creation & observation +#410, solved +AcquirePointTooOld problems of the hydra-node with by changing the wallet +initialization #439. +Also, the Hydra researchers updated the security proofs of the Coordinated Hydra +Head, which are bound to be included in the Hydra HeadV1 specification.

    What did the team achieve this week

    • Monthly review & report - will also be published on our website #644
    • Extended the model-based testing (MBT) with transaction creation/observation #410
    • Solve AcquirePointTooOld problems with new wallet initialization #439
    • Fixed our hydraw deployments (EC2 instances)
    • Created & discussed ADR21 within tx validity work
    • Received & discussed security proofs of Coordinated Hydra Head (requires more work)

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation
    • Complete review & integrate the Hydra tutorial
    • Review latest hydra-pay work
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec
    • Get Cicero (new CI) working
    ]]>
    + hydra +
    + + <![CDATA[DB sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-01-db-sync + 2022-12-01-db-sync + Thu, 01 Dec 2022 00:00:00 GMT + + High level summary

    The DB Sync team prepared a release 13.1.0.0-rc2 which includes many improvements for db-sync, +it makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces +migrations. This release finalises the objectives that were set for db-sync for the previous +3 months period and part of the syncing speed objective set for the next period +Changelog

    Lower level summary

    • Branch release/13.1.0.x +includes all the improvements related to the release. The release is passing through the testing +phase and a number of bugs and issues have been fixed, like +#1312 +#1311. +Also many new unit tests have been added.

    • Part of the release branch is cherry-picked back into master, in a way that it respects the new +release and development process, so that it takes into account migrations +release process

    • The DB Sync team has also tagged release 13.0.6 which better supports preview and preprod for +docker.

    ]]>
    + db-sync +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-01-mithril + 2022-12-01-mithril + Thu, 01 Dec 2022 00:00:00 GMT + + High level overview

    The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes.

    Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer.

    Low level overview

    • Implemented custom Mithril SPOs on testing/pre-release networks #563
    • Deprecated Signer Declarative Pool Id registration mode #585
    • Completed the second stage of the store automatic migration process #600
    • Completed the deployment pipelines to crates.io registry #588
    • Completed automatic generation of nodes/libraries versions manifest in releases notes #599
    • Completed CI/CD handling of PR from forks #597
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #586
    • Worked on signing the artifacts released in the distributions by the CI/CD #587
    • Worked on multi-platforms end to end test #601
    • Worked on the refactorizaton of the aggregator multi-signer engine #398
    ]]>
    + mithril +
    + + <![CDATA[System Test Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-12-01-system-test + 2022-12-01-system-test + Thu, 01 Dec 2022 00:00:00 GMT + + High level summary

    During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the P2P Single +Relay functionality, and also tested some DB-Sync tags.

    Workstreams

    Framework improvements:

    • moved the System Test CLI Pipelines from BuildKite to Github Actions
    • improved the reporting tools to support the rerun of the failled tests and update of the reports
    • added support for Github API in report-aggregator, so reports will be generated from the GitHub nightly jobs from now on
    • added support for mixed topology - P2P, legacy, mixed topologies
    • planned the P2P Single Relay system test activities
    • added support to start regression tests with PV8 + better selection of tests

    DB-Sync:

    • confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)
    • tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2
    ]]>
    + system-test +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-30-consensus + 2022-11-30-consensus + Wed, 30 Nov 2022 00:00:00 GMT + + High level summary

    During the past two weeks, the consensus team merged improvements to the monadic +cursor API that was needed to implement LMDB range reads, which is in turn +required for the implementation of the UTxO HD feature. We added tables to +several tests in for the UTxO HD feature, which increases our confidence in the +correctness of the prototype. The mempool property tests are close to being +completed. Also, we finished the LSM tree tuning algorithm.

    On the Genesis front we started simplifying the BlockFetch logic with +CSJ-specific workloads in mind.

    We are also documenting the Block Diffusion Pipelining feature, and added a +high-level overview of consensus to the top level documentation of +ouroboros-network.

    Workstreams

    UTxO HD prototype

    We merged the implementation of a monadic cursor API (#1)) which was +needed to solve a bug with LMDB range-reads. After this PR was merged, we focused on +bridging the gap between the lmdb-simple interface and consensus by facilitating +using lmdb-simple's cursor API without Serialise constraints (#3).

    We refactored the backing store property tests to use quickcheck-lockstep +(#4081).

    We added tables to the mock ledger in the UTxO-HD feature branch +(#4184). Every test that used to run with SimpleBlocks now uses +tables. This will enable us to exercise the UTxO HD mempool integration by +leveraging the existing mempool property-tests. The new state-machine +property-tests are still needed for testing the parallel behaviour of the +mempool.

    Our work on the mempool state-machine tests revealed the need for improvements +in the quickcheck-state-machine library. Parallel testing assumed that the +state machine did not have access to mutable references. However, the mempool +tests require the use of such mutable references for mocking the ledger +interface. As a result, our parallel tests were failing with rather obscure +messages. @Jasagredo submitted a pull request (#12) that allows for +new mutable references to be created at each run of the state machine.

    Backing store property tests

    LSM tree implementation

    We finished the LSM Tree tuning algorithm. We are currently tidying up the code +and gathering results (i.e., plots and their interpretation).

    CSJ prototype

    We started simplifying the BlockFetch logic with CSJ-specific workloads in mind.

    New VRF and KES crypto integration

    Started working on supporting new version of StandardCrypto which uses compact +KES and batched VRF (#4151).

    Technical debt

    We reviewed the existing state of the Block Diffusion Pipelining document. We +are now working on the "Implementation" section (#4020).

    Fostering collaboration

    We cleared up our understanding of the error dynamics of forecasting +(#4146 and #4174).

    We submitted a pull request that adds an overview of consensus to the top level +documentation of +ouroboros-network (#4197). This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    https://github.com/input-output-hk/ouroboros-network/pull/4197

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-30-node-cli-api + 2022-11-30-node-cli-api + Wed, 30 Nov 2022 00:00:00 GMT + + 2022-11-30 - 2022-12-13

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + cli-api +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-30-performance-and-tracing + 2022-11-30-performance-and-tracing + Wed, 30 Nov 2022 00:00:00 GMT + + High level summary
    1. Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release.
    2. SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench.
    3. The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks.
    4. Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started.
    5. Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.

    Performance

    We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release.

    Tracing

    For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them. +The idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time.

    To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics.

    Infrastructure

    Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation.

    In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model.

    The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged. +We are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration.

    We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability.

    We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP.

    As usual, a number of smaller workbench, data analysis & reporting improvements have been made.

    ]]>
    + performance-tracing +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-28-network + 2022-11-28-network + Mon, 28 Nov 2022 00:00:00 GMT + + Stake-Driven Data Diffusion Release for Relays

    IOG networking team decided to release the Stake-Driven Data Diffusion with +Robust Optimised Peer Selection also more commonly known as P2P. In the +last update, we informed about a performance regression, but it turns out it +only affects block producers, and thus we highly advise against running it on +such nodes. Further investigation is required to find the cause of it.

    On IOG's benchmarking cluster we have seen quite a good performance improvement +on block propagation itself. The cluster is running a static topology with +valency 6 (each node is connected to 6 other nodes). In which every of the 50 +nodes are block producers. The setup of this network is the same as mainnet. +We've seen 40-50% performance improvement on block propagation comparing to the +same cluster deployed with the same topology but using non-P2P nodes. We think +this performance improvement is caused by using full duplex connections. Quite +likely the transaction traffic floating in both directions on the same TCP +connection helps to keep the TCP window open. Note that in a cluster of 50 +nodes with valency 6 the probability of having at least one duplex connection +is more than 50%. We don't expect the same improvement on mainnet because the +network is much wider and the transaction traffic is not as large.

    Just before the release we squashed two small bugs:

    • issue #4163 - top level integration bug in keep-alive;
    • issue #4177 - a bug in outbound-governor;
    • PR #4165 - a fix cardano-ping support of NodeToNodeV_10.

    Peer Sharing

    We were carrying a review of peer sharing PR.

    DeltaQ

    Neil Davies was invited to give a guest lecture entitled Avoiding System Catastrophes at UCLouvain.

    What have we achieve last sprint

    • issue #4163: we found out that a control message is not passed to the +keep-alive mini-protocol, this results in every demotion executing demotion +timeout rather than a graceful termination. With the fix the node will no longer log:

      { "kind": "PeerStatusChangeFailure"
      , "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"
      , "reason": "TimeoutError"
      }
    • issue #4177: we fixed an assertion failure in the outbound-governor; now +we don't try demoted peers which are being demoted already.

    • PR #4155: we refactored ouroboros-network packages. There's a top level +ouroboros-consensus-diffusion package which integrates network +& consensus code. We also introduced:

      • ouroboros-network-api package which contains the API shared between +network & conensus;
      • ouroboros-network-mock package which contains mock API used for testing +(e.g. a mock chain & chain producer, etc.)
      • ouroboros-network-protocols package which contains implementation of all +(but handshake) mini-protocols, exposes a testlib and contains test +and cddl components.

      This made the dependency tree of network & consensus packages much +cleaner.

    • PR #4169: we described the usage of release branches in CONTRIBUTING.md +doc.

    • PR #4165: we fixed cardano-ping support of NodeToNodeV_10 protocol.

    DeltaQ

    The abstract of the talk:

    An essential step to ensuring that distributed systems are fit for +purpose.

    Distributed systems have become an integral part of our society and +daily lives. We are, both implicitly and explicitly, individually as well as +collectively, placing ever more trust in them.

    Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes +well beyond notions of functional correctness (i.e. never getting the wrong +answer). We need them to deliver the desired outcomes in a timely, robust, +reliable, resilient fashion, at scale and in a sustainable way (both +economically and environmentally).

    This all sounds like a worthy aspiration, but what would be a practical +approach to capturing and reasoning about these issues? How can we ensure that +systems can meet their fit-for-purpose objectives, not just in their design but +as they are deployed, encounter the imperfect world, are scaled to become +economic, and proceed into ongoing maintenance?

    This talk will illustrate how the notions of Outcomes and Quality Attenuation +(as captured by ‘∆Q’) are being used to both frame the necessary notions and +provide a basis for assuring the refinement and reification of such systems, +from initial concept to operational infrastructure.

    You can download the slides from here.

    ]]>
    + network + release +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-25-crypto + 2022-11-25-crypto + Fri, 25 Nov 2022 00:00:00 GMT + + High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team.
    • Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes
    • cardano-base: The VRF and BLS branchs are still open and in progress
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library PR#31
    • We are introducing a more granular error handling mechanism PR#33
    • We rethought the API and made it more consistent with the underlying secp256k1 library PR#35

    Mithril

    • The mithril crates in general will be published in crates.io, and we adapted the core library's README PR#616
    • We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information PR#620

    cardano-base

    • We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) PR#341
    • SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions PR#344
    • Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus PR#266

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.
    ]]>
    + crypto +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-25-hydra + 2022-11-25-hydra + Fri, 25 Nov 2022 00:00:00 GMT + + High-level summary

    This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a presentation about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas.

    What did the team achieve this week

    What are the goals of next week

    • Monthly report & review meeting
    • Tie up several loose ends / branches.
    • Resolve Tx validity discussions & PRs.
    • Review cicero PR & try it out.
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-23-ledger + 2022-11-23-ledger + Wed, 23 Nov 2022 00:00:00 GMT + + High level summary

    We released CIP-1694, +our proposal for entering the Voltaire phase. +Please come join the discussion, this will be an incredibly exciting transition for +Cardano and we want everyone to participate!

    We now have a sensible way to version all of the serialization schemes used in the ledger. +The draft pull request was polished, reviewed, and merged this week. +This solves many problems that have vexed us since the beginning of the Shelley ledger era.

    Everyone working on the Cardano node is working together to improve our release process, +and the ledger team in particular dedicated one engineer to help with these efforts +for the next release.

    Lower level summary

    The Conway ledger era

    The current proposal in CIP-1694 encompasses two new ledger eras. +The first era will be called Conway, after the English mathematician John Horton Conway. +The community facing aspects of the Conway ledger era will be very minimal, +but it will pave the way for introducing liquid democracy. +The details can be viewed here. +We do not yet have a formal specification for the Conway era. +Our plan is to debut the +formal ledger model. +Briefly, the Conway ledger era will:

    • introduce SPO voting for hard forks (in the spirit of the now abandoned CIP-47)
    • provide an on-chain mechanism for rotating the governance keys
    • re-plumb the ledger rules involving governance to be in line with CIP-1694

    Versioned CBOR

    We now have the ability to easily tie our serialization schemes to the Cardano +major protocol version. +We still aim to preserve backwards compatibility as much as possible, but we now have a principled +plan for resolving problems (see CIP-ledger-cbor). +In particular, we can now address several long standing issues, such as +issue-2444, issue-2965, and issue-3003.

    The final (and massive!) pull request which brought us the versioning is pull-3138.

    Deposit tracking

    The draft pull request which was exploring how best to track individual deposits +is much closer now to being ready to take out of draft (pull-3127). +For background on the issue, see issue-3113. +This is quite an invasive change which effects many of our tests, which we are now addressing.

    Technical debt

    As always, we keep working on technical debt. +We have deduplicated a some things: pull-3129, pull-3162. +We have memoized a problematic computation (though more due diligence is needed before we can +merge): pull-3141.

    Node release

    We have been helping with the node release efforts. See pull-4608.

    ]]>
    + ledger +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-18-hydra + 2022-11-18-hydra + Fri, 18 Nov 2022 00:00:00 GMT + + High-level summary

    This week, the Hydra team released version 0.8.1, which includes several fixes and a user-wished extension of the persistence introduced by 0.8.0 of replaying server outputs to make clients like the hydra-tui be aware of the latest hydra-node state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from hydra-poc to hydra!

    What did the team achieve this week

    • Implemented replaying of server outputs to address #580
    • Released version 0.8.1 containing this and other fixes Release notes
    • Worked on the bounded tx validity as one of the on-chain script fixes, but couldnt finish it just yet #615
    • Collaborated with the education team on a Hydra tutorial.
    • Discovered and discussed issues with the seen ledger.
    • Renamed the Hydra repository hydra-poc -> hydra

    What are the goals of next week

    • Create and discuss an ADR about handling tx validity correctly.
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
    • Have a team workshop / hackathon after the summit:
      • Retrospective
      • Roadmapping session
      • Hack on something complex or useful
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-18-mithril + 2022-11-18-mithril + Fri, 18 Nov 2022 00:00:00 GMT + + High level overview

    The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks.

    Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer.

    Low level overview

    • Released a new Mithril distribution 2246.1
    • Completed the first stage of the store migrations process #562
    • Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes #565
    • Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage #576
    • Prepared a Daedalus synchronization benchmark video with/without Mithril #606
    • Upgraded the Cardano nodes of the testing Mithril networks to 1.35.4 #594
    • Worked on implementing SPO tests nodes on testing Mithril networks #563
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #588
    • Worked on the refactorizaton of the aggregator multi signer engine #398
    ]]>
    + mithril +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-16-consensus + 2022-11-16-consensus + Wed, 16 Nov 2022 00:00:00 GMT + + High-level summary

    During the past two weeks, the consensus team started documenting the +implementation of the UTxO HD feature and continued developing tests for it. As +part of our work on UTxO HD, we improved the Haskell support for LMDB. We also +spent time working on the LSM tree prototype, and designed a parameter tuning +algorithm for it. Regarding our work on Genesis, our investigation of the +"plateaus" pointed at the TICKF slowdown on era boundaries as culprit. This +led us to developing a caching strategy that will not only remove the +aforementioned "plateaus", but can help alleviating the growing block production +delay on epoch switch. We also helped reviewing the block forge credential +hotswap feature, which is intended for use in the adoption of P2P.

    We also worked on paying technical debt and fostering collaboration. In +particular, we improved the io-sim framework, which is crucial for testing and +simulating Cardano components. We also removed thunks that appeared on era +translations, and improved our diffusion pipelining feature. We are working on a +presentation for explaining Praos and Genesis.

    High-level status report

    • Finish the UTxO HD prototype: in progress.
      • We added documentation for this feature.
      • We developed the second version of the mempool tests.
      • We fixed benchmarks that were inflating the speedup we observed in the +anti-diff implementation of sequences of differences. Speedups are now in the +range of [3.33, 4.75], which remain significant.
      • We continued improving Haskell LMDB support.
      • We finished implementing a "parameter tuning algorithm" for the LSM tree +prototype. This enables us to run experiments to check the correctness of +the algorithm.
    • Genesis: in progress.
      • Work investigating the "plateaus" in the ChainSync jumping prototype +pointed to the TICKF slowdown on era boundaries as culprit.
    • Tech debt:
      • We improved the capabilities of our io-sim library, which is crucial for +testing and simulating Cardano components.
      • We removed thunks from epoch translations in the ledger.
      • We added Linux CI support for lmdb-simple.
      • We got pending diffusion pipelining improvements merged.
    • Fostering collaboration:
      • We are working on a explanation of Praos and Genesis protocols.
    • Support:
      • Investigation of CSJ "plateaus" led us to developing a caching strategy for +TICKF that will not only remove these "plateaus", but can help alleviating +the growing block production delay on epoch switch.
      • We reviewed the block forge credential hotswapping feature which is intended +for use in the adoption of P2P.

    Workstreams

    Finish the UTxO HD prototype

    We merged PR #4060, which adds a report documenting the UTxO HD +feature, and puts emphasis in explaining how the mempool works in combination +with UTxO HD.

    We opened a draft PR with the second iteration of the property tests for the +mempool (#4076).

    We fixed the Arbitrary instances for keys and values in DiffSeq benchmarks +(#4143). The problem was that we were testing with mostly small +values, which artificially boosted the performance gains we saw on benhcmarks. +Speedups are now in the range of [3.33, 4.75] across the different +configurations.

    Backing store property tests

    We focused on incorporating feedback on the monadic cursor API PR (#1). +This required us to make small tweaks to quickcheck-lockstep to test the new +API. We also updated the backing store property tests to use the new version of +the monadic cursor API.

    LSM tree implementation

    We worked on the LSM tree prototype. In particular: finished implementing a +"parameter tuning algorithm" that adapts the LSM tree design based on factors +like:

    • workload
    • machine specs,
    • and characteristics of the data being stored.

    We are now running experiments to gather results and cross-reference them with +existing experimental results from the LSM tree paper to see if the algorithm is +working correctly.

    Benchmarking the CSJ prototype

    We focused on investigating the "plateaus" in the ChainSync tip, which turned +out to be due to the TICKF bug which we previously were only aware of in the +context of the long forging times near epoch boundaries. For the most drastic +patch by @nfrisby to speed up TICKF, full sync is speeding up by 7%.

    The following plot shows that by caching the TICKF the ChainSync tip and the +VolatileDB tip progress at the same rate.

    The plot below shows the speedup observed by caching the TICKF rule wrt the +baseline.

    Technical debt

    After addressing the PR comments, we merged PR #16, which implements +the MonadCatch instance for STM. This extends the capability of our io-sim +library, which is crucial for testing and simulating Cardano components PR #16 +closed #1461. This new feature was published as version 0.4.0.0 +of io-sim.

    We continued with our work fixing the NoThunk errors required for enabling +nightly tests, with the help of TVarInvariant checks in strict-stm and +nothunks libraries. We proposed fixes in cardano-ledger that took care of +thunks that appeared in era translations (#3143). The fixes will be +integrated back into consensus when cardano-ledger approves and publish the +changes introduced in #3143.

    We added CI support for lmdb-simple (#2). We currently test the build on +a Linux environment only.

    We got pending diffusion pipelining PRs (#3857, #3860, +#3856) merged, after rebasing and addressing feedback.

    Fostering collaboration

    @nfrisby finished a visualisation tool and outlined scripts for the Praos and +Genesis explanation presentations. The idea is to produce a video that gives an +overview of these protocols.

    Support

    We started working on caching the computation of the TICKF rule +(#4054), since this was blocking our benchmarking work for +Genesis. In addition, this issue has the Cardano community quite +concerned, so we are hoping the work done in caching the +computation of the TICKF rule can help alleviating the growing block +production delay on epoch switch.

    We reviewed the block forge credential hotswapping PR #3800 from the +networking team, which is intended for use in the adoption of P2P.

    ]]>
    + consensus +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-16-node-cli-api + 2022-11-16-node-cli-api + Wed, 16 Nov 2022 00:00:00 GMT + + 2022-11-16 - 2022-11-29

    High level summary

    Completed

    docs

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + cli-api +
    + + <![CDATA[Performance & tracing update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-16-performance-and-tracing + 2022-11-16-performance-and-tracing + Wed, 16 Nov 2022 00:00:00 GMT + + High level summary
    1. P2P performance investigation is ongoing, in support of the networking team.
    2. SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support.
    3. Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing.
    4. On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started.
    5. We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.

    Performance

    We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes.

    Tracing

    We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis.

    Infrastructure

    The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends.

    We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing.

    A number of smaller workbench, data analysis & reporting improvements have been made.

    ]]>
    + performance-tracing +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-11-crypto + 2022-11-11-crypto + Fri, 11 Nov 2022 00:00:00 GMT + + High level overview

    The SECP primitives AC has been met, and the test-vectors PR has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool PR has been merged, and we've adapted the KES secure PR to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (PR#). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork.

    Low level overview

    • With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation.
    • We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool.
    • In parallel, we keep progressing on the KES agent
    • VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification.
    • Our libsodium fork now links directly to upstream libsodium.
    ]]>
    + crypto +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-11-hydra + 2022-11-11-hydra + Fri, 11 Nov 2022 00:00:00 GMT + + High-level summary

    This week, the Hydra team published together with Obsidian Systems a light paper +on our "Hydra for Payments" project (Link). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of hydra-node processes.

    What did the team achieve this week

    • Published Hydra for Payments light paper (Link)
    • Have a draft RFP ready for a first review internally
    • Answered the internal auditors questions
    • Fixed a bug with following the chain when starting with persistence (#599)
    • Minor improvements to logging for better observability (#598, #600)
    • Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (#590)

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Close more gaps #452
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-11-ledger + 2022-11-11-ledger + Fri, 11 Nov 2022 00:00:00 GMT + + High level summary

    I am extremely excited to say that we now have a pull request up which introduces our new versioned +CBOR serialization. This was an enormous effort, but it will solve a host of problems that we have +had since the Shelley phase. It will take time to properly review it, and we will +need to put in a lot of effort to integrate it with the downstream components, but this is a huge +milestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction +serialization schemes.

    We also have a draft pull request that reworks how deposits are tracked. Users of the system will +not notice any difference, but it is a necessary change needed to prepare the way for +decentralizing the governance of Cardano.

    Finally, we continued to address technical debt. In particular, we continued to make progress on +bringing coherency and consistency to the code base with a common naming convention, and +improving some error messages.

    Lower level summary

    • We have a pull request up for our new versioned CBOR serialization. +When we encounter a problem with our deserializers, it can be very difficult to implement a fix. +It is difficult because we can only fix such issues during a hard fork, and leading up to the +hard fork we must maintain two serializations for the same type in order to not cause unintended +network splitting (the problematic version must be used before the hard fork, +and the fixed version is used afterwards). +This can be especially tricky with the FromCBOR typeclass, since it is not always easy to +search for where all the problematic uses are located. +The new versioned CBOR serialization allows us to gracefully handle this transition. +See [pull-3138].
    • We proposed a CIP for backwards compatibility of the transaction serialization schemes. +See [pull-372].
    • We have draft for the new deposit tracking. +This draft is not as memory efficient as the final version will be, +but it is a sufficient proof of concept that we can write property tests against, ensuring +that we have not changed the semantics. +We will optimize after we are sure of the correctness. +See [pull-3127].
    • We now provide better support for debugging failed Plutus scripts in an important helper +function, named evaluateTransactionExecutionUnits. +In particular, it now returns all the information needed to rerun the script with exactly the +same arguments. This feature will end up appearing in the CLI and other tools from the Plutus +tools team. +See [pull-3135].
    • We did a lot more renaming to bring coherency and consistency to the code base. +See [pull-3126], [pull-3120], [pull-3118], and [pull-3116].
    • We have added a few things to the ledger repository to make it conform to the +Cardano Engineering Handbook +See [pull-3139].
    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-11-network + 2022-11-11-network + Fri, 11 Nov 2022 00:00:00 GMT + + High-level summary

    In last sprint we got a performance report of P2P performance testing cluster +(which consists of 50 nodes). There is a performance regression in the header +notification metric. The P2P cluster is constructed with the same +topology as the non-p2p reference one this indicates some regression which +needs to be further investigated. This poses a risk for releasing P2P.

    We also continued to work on peer sharing: pull #4019.

    We continued working on dynamic block production which is required for P2P +release for BP nodes: pull #3159.

    We simplified the P2P topology format: issue #4559, pull #3888.

    We added a new trace point for asynchronous demotions of local peers with +Warning severity. This trace is important for SPOs.

    Detail description

    Performance regression

    Below we include a graph which shows the performance regression of the P2P code base vs non P2P.

    On the x axis is time in seconds which measures the delay from the start of +the slot to when a header was received. The y axis is the percentile of nodes +that received a header. We are currently investigating possible causes of the +regression.

    New P2P topology form

    The new topology file format is described in this issue #4559.

    Tracing improvements

    • We improved a handshake error reporting, pull #4136
    • We added TraceDemoteLocalAsynchronous rendered as DemoteLocalAsynchronous +in json format, pull #4127. Such demotions should be investigated by the +pool operator. They can indicate a problem in the deployed system, but also +they could indicate a remote problem in arranged connections with other SPOs.

    Open Source Improvements

    We improved documentation of io-sim and typed-protocols for open-source +contributors and/or maintenance tasks: pull #22, pull #45, pull #48.

    ]]>
    + network +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-04-hydra + 2022-11-04-hydra + Fri, 04 Nov 2022 00:00:00 GMT + + High level summary

    This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun preview network, see 0.8.0 release notes. They also completed implementation of ADR18 and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates #195 and alignment of the specification document with auditors.

    What did the team achieve this week

    • Complete and merge ADR18 #579
    • Re-deploy hydra scripts to respun preview network, see 0.8.0 release notes #595
    • Have first gap of #452 in review.
    • Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot.
    • Engineering meeting to discuss hard forks and protocol parameter updates #195
    • Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions.
    • Drafted project scope for an external audit RFP.

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Answer the internal auditors questions
    • Have a draft RFP ready for a first review internally
    • Close some gaps #452
    ]]>
    + hydra +
    + + <![CDATA[Mithril Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-04-mithril + 2022-11-04-mithril + Fri, 04 Nov 2022 00:00:00 GMT + + This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.

    Low level overview

    • We have been moving forward on the implementation of the release process #500:
      • Setup of the new hosted environments for testing-preview, pre-release-preview and release-preprod with their terraform and GitHub environments #542
      • Adapted the CI workflows to work with the new release process #543
      • Publication of an ADR3
      • Publication of a dev blog post about Mithril networks evolution
      • Releasing our first Mithril distribution 2244.0
    • Worked on the API versioning mechanism #565
    • Worked on the implementation of the stores migration process for the signer and aggregator nodes #562
    • Prepared a Mithril devnet video demo #526
    • Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably #484
    ]]>
    + mithril +
    + + <![CDATA[Open-Source Team]]> + https://input-output-hk.github.io/cardano-updates/2022-10-31-open-source + 2022-10-31-open-source + Fri, 04 Nov 2022 00:00:00 GMT + + High Level Summary
    • We've been working toward publishing Cardano Backlog, currently its in +review by the IOG communication team.
    • We identified a number of libraries which can be published.
    • We setup and enhanced cardano-updates.

    Detailed description

    I am glad to announce that I was given the role of open-source advocate for +cardano project. In last few weeks we were making steps towards publishing our +backlog. It's currently under review by the communication team, although most +of the issues are already visible across various repositories.

    The open-source initiatives have their own +project. It is set up +to help us track our major open-source activities. Right now there are two +work streams:

    We identifies a number of libraries across all the teams which contribute to +Cardano which we would like publish to publish, see the following +link. Arnauld Bailly recently published +quickcheck-dynamic +library on Hackage. The networking team is slowly progressing towards +publishing io-sim and related packages, checkout the progress +here.

    Thanks to Arnaud Bailly our Cardano Updates website has +a new look & feel! It's using docusaurus.io.

    Christian Taylor carried recently a detailed analysis of our open-source +repositories. He collected many interesting metrics, which allows us to see +where we need to improve as an open-source project to make the Cardano project +and many smaller related libraries which we maintain be more open and available +for open-source contributors.

    The graph below shows which documents the 55 most important Cardano +repositories are missing the most: +Documentation Adoption +You can expect we will improve in these metrics in the coming weeks.

    ]]>
    + open-source +
    + + <![CDATA[Embedding Quality Workstream]]> + https://input-output-hk.github.io/cardano-updates/2022-11-03-embedding-quality + 2022-11-03-embedding-quality + Thu, 03 Nov 2022 00:00:00 GMT + + High level summary

    We made good progress on most of the Action Items we agreed on Lisbon, like:

    • Cardano System Tests was fully open to public (tools, tests, results) +See cardano-node-tests webpage.
    • We defined an user-facing-functionality template that is used with the cardano-cli team
      • this includes acceptance criteria & user stories, and definition of done
    • We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)
    • We started to apply a labelling convention on cardano-node issues that will be used to generate some visual dashboards with some metrics [TBD]
    • Ziyand Liu started an End-to-End Development and Testing Process for Plutus Features
    ]]>
    + embedding-quality +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-02-consensus + 2022-10-02-consensus + Wed, 02 Nov 2022 00:00:00 GMT + + High-level summary

    During the past two weeks, the consensus team continued its work on testing the +UTxO HD prototype. We completed the era-transition and backing store tests, and +the mempool tests are advancing at a steady pace. Regarding our work in the +Genesis design, we continued our collaboration with the research and networking +teams, and we continue investigating strategies for making the chain-sync +jumping prototype faster.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We worked on state-machine tests for the mempool, and spotted potential bugs +in the implementation. Investigation is ongoing.
      • We have a set of property tests for the backing store. We still need to +incorporate the improvements to the LMDB cursor API that these tests +made possible.
      • We merged the era-transition tests PR.
    • Genesis: on track.
      • Design work around Genesis continues in collaboration with researchers and +the networking team.
      • We continued trying to improve the performance of the chain-sync jumping +prototype. We gained additional insight on which parameters to tweak next. +In spite of the baseline still being faster, the current prototype already +achieves a significant speedup when compared to the naive approach of simply +running full chain-sync with all peers.
    • Tech debt: on track.
      • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    Workstreams

    Finish the UTxO HD prototype

    We continued working on property-tests for the UTxO HD prototype. In particular +we merged the era-transition tests +PR.

    Backing store property tests

    The backing store property tests +PR has been +reviewed. The next steps are:

    • Improve error handling and command generation.
    • Add coverage testing to check that we are not failing to cover interesting +test cases.

    The monadic cursor API +went through its first review round. The API is in a relatively stable state. +This PR also unifies the cborg and serialise-based interfaces to LMDB +operations. The next steps are:

    • Write +quickcheck-dynamic +state-machine tests for this API.
    • Adapt the changes in the serialisation interface in the backing store property +tests. This will involve adding boilerplate code in consensus to make up for +the removal of the cborg-based interface.

    LSM tree implementation

    We worked on the LSM tree +prototype. In +particular, we focused on tuning the LSM tree design to the different workloads +that consensus has (eg syncing, normal node operation, etc).

    Benchmarking the CSJ prototype

    Work on improving the chain-sync jumping performance is ongoing. In particular +we compared the performance of different jump intervals, which, somewhat +surprisingly, do not make a significant difference. In particular, we are seeing +periodic "plateaus" where the chain-sync tip does not progress, but they are +much longer for the prototype. Our hypothesis is that this seem to be due to a +combination of the garbage collector (GC) pauses, and the actual time it takes +the non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo +fragment.

    In the coming weeks we will try to shorten these plateaus via a combination of +tweaking GC options and less synchronisation in the CSJ governor.

    The following plot shows the performance of the chain-sync jumping prototype +using different jumping intervals. It compares the syncing progress by plotting +the slots of adopted blocks against time. The baseline is still faster, however +it is worth noting that the current prototype already achieves a significant +speedup when compared to the naive approach of simply running full chain-sync +with all peers.

    The second plot shows the syncing progress sliced to a chosen ~5min interval, +and includes, in addition to the slots of adopted blocks, the slots of the tip +of the ChainSync fragment. This allows us to see how far ahead of the selected +tip the CS dynamo is, i.e. how much room we have for BlockFetch not to get +stalled. It shows periodic behaviour (due to the forecasting limit), and shows +that the CS fragment tip is not progressing for significant periods +("plateaus").

    Technical debt

    We clarified a +common source of confusion around VRF tie-breaking and cross-era chain +selection. This PR involved correcting potentially misleading names of +VRF-related functions, and providing context for a particular VRF value is +used for tie-breaking.

    ]]>
    + consensus +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-02-ledger + 2022-11-02-ledger + Wed, 02 Nov 2022 00:00:00 GMT + + High level summary

    We have made the decision to use the +formal ledger repository +in place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure +to the model. In particular, we now have a lot of support for axiomatic set theory. +While the next ledger era is still in the design phase, most of the team remains working +on technical debt. +In particular, we have moved a lot more code out of the Shelley specific modules and into +a ledger core module, we have finished up our benchmarking around the problematic TICKF +ledger transition (while improving the performance), made conveniences to the development +environment, cleaned up all the recent changes to the cost model, added a lot of documentation, +fixed some flaky tests, and deleted some dead code.

    Lower level summary

    Axiomatic Set Theory

    The formal ledger model now has support for much of the set theory that we make use of in +the formal ledger specifications. See [pull-20].

    Completed Technical Debt

    • We have addressed issues with two of our most problematic and flaky tests. +See [pull-3039] and [pull-3093].
    • We have added more documentation and tests to the Twiddler module. This is a module which +makes our CBOR serialization round-trip tests much more robust, and will also hopefully +help enforce the mandate for downstream libraries to never re-serialize data that needs +to be hashed. See [pull-3073] and [pull-3095] +(we cannot merge 3095 just yet, due to a preference for merging other features).
    • We have finished our long analysis of the problematic TICKF transition. +We now have a lot of benchmarks surrounding this code, and have added performance improvements. +See [pull-3068] and [issue-3035].
    • We have restored support for +ghcid +in our repository. This is a tool for developing with Haskell that many of us find greatly +improves our productivity by providing us with constant feedback from the type checker. +See [pull-3112].
    • After much activity on the cost model, we have done some final clean up of the code. +See [pull-3075] and [pull-3101].
    • We moved a lot of the existing user facing documentation regarding native tokens into the +ledger repository, and cleaned it up +(most of the heavy lifting was done by our amazing technical writers). +See [pull-3091].
    • We removed dead code. See [pull-3089].
    • We moved a lot of code from the Shelley specific libraries to the ledger core library. +See [pull-3109] and [pull-3110].
    • We've removed more of the awkward legacy template Haskell names. +See [pull-3108].
    ]]>
    + ledger +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-02-node-cli-api + 2022-11-02-node-cli-api + Wed, 02 Nov 2022 00:00:00 GMT + + 2022-11-02 - 2022-11-15

    High level summary

    • Documentation improvments
    • Merged community contributions
    • Exposing types from cardano-api requested by the community/other teamss
    • Test output has been improved so diagnosing failures is now easier
    • Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)
    • Refactoring of cardano-testnet making it more useable as a library (ongoing)
    • Release 1.35.4 was merged & released

    Completed

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + cli-api +
    + + <![CDATA[Node Release Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-02-release + 2022-11-02-release + Wed, 02 Nov 2022 00:00:00 GMT + + Node Reelease Update

    2022-10-19 - 2022-11-02

    Executive Summary

    The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset, +a temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8.

    1.35.4 release candidates have been created and are being tested internally and externally.

    Completed

    In Progress

    ]]>
    + release +
    + + <![CDATA[System Test Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-02-system-test + 2022-11-02-system-test + Wed, 02 Nov 2022 00:00:00 GMT + + High level summary

    We have been focused on:

    • Fully opening our test results (on top of the existing tests & tools):
      See cardano-node-tests webpage.
    • Started to test and automate the new functionalities added in the 1.35.4-rc1 node tag
      See test results tracking page.
    • Made some improvements to the automated db-sync sync tests
      See db-sync tests.
    • Multiple cleanups and updates to the cardano-node-tests framework
    • Updated the nightly pipelines for the cardano-node-tests after the Babbage HF
    ]]>
    + system-test +
    + + <![CDATA[DB Sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-11-01-db-sync + 2022-11-01-db-sync + Tue, 01 Nov 2022 00:00:00 GMT + + High level summary

    The DBSync team is preparing a release which introduces schema simplifications, removes indexes, +unique and foreign keys. It also provides a way to fix older values and migrates without the need to +resync from genesis.

    Lower level summary

    Schema simplifications

    Indexes, Unique and Foreign keys are removed in order to speedup syncing +#1295 +The same pr also introduces a different way to rollback, which doesn't rely on foreign keys and +indexes.

    Performance

    The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A +conservative number of these will be included in the next release and the rest can be found in +performance view.

    Migrations and resyncing

    The next release will be 13.1.0, it will enable a migration without the need to resync. It will also +introduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases +#1294

    Release

    The release has been mostly cherry-picked from master +#1294 and its scope can be seen +release view

    ]]>
    + db-sync +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-28-hydra + 2022-10-28-hydra + Fri, 28 Oct 2022 00:00:00 GMT + + High level summary

    This week, the hydra team completed several user experience improvements to the +hydra-tui and hydra-node, and delivered a first version of persisted head +states by publishing release version +0.8.0. +Besides this, they met with researchers on topic of the HeadV1 specification and +kicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation.

    What did the team achieve this week

    • Completed the UX improvements on the hydra-tui
    • Released version 0.8.0, which delivers a first version of persisted head states
    • Met with researchers on the HeadV1 specification
    • Started work on the RFP for our external audit

    What are the goals of next week

    • Complete ADR18 implementation and get it merged
    • Start work on event-sourced persistence #580
    • Have a first plutus script gap closed #452
    • Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)
    ]]>
    + hydra +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-28-network + 2022-10-28-network + Fri, 28 Oct 2022 00:00:00 GMT + + High-level summary

    The team has focused on debuging & fixing bugs for the P2P single relay release, which included

    • diagnosing, fixing and writing tests for a bug in peer-state-actions which +fortunately hasn't been released;
    • diagnosing & preventing misconfiguration of DNS

    We also focused on developing peer sharing. We also held a session with +the scientists on eclipse evasion.

    Detailed description

    P2P Network Stack

    During the past two weeks the team focused on p2p single relay release and peer +sharing. We found and fixed an important bug recently introduced in one of the +components of p2p networking stack (fortunately never released). Together with +a fix, we designed a unit test diffusion simulation as well as quickcheck +property test (both could reproduce it). We also changed the code in a way that +if such a bug is reintroduced in the future, it will be obvious to diagnose. +For more see:

    Initial benchmarking run of the P2P code was executed. The results where +unlike what we see on the mainnet. We found a possible misconfiguration of the +cluster (caused by 0 TTL on domain names), which could be the direct cause of +it. We wrote a PR which rules out such misconfiguration. We are awaiting on +the next benchmarking results. See more at:

    ouroboros-network#4106

    We also started working on P2P single relay release. The PR +ouroboros-network#4120 +includes 108 patches cherry-picked from the master branch. We started +working toward integration these changes against the release branch of +cardano-node. Early next week we ought to be able to have an early version +of cardano-node with non experimental P2P support!

    For more detailed release plan please see P2P - Single +Relay +issue.

    Consensus

    We identified and fixed missing error reporting in consensus +initialisation phase. See more at +ouroboros-network#4015

    Cardano Node

    We also made changes in cardano-node in order to give better experience for +node operators. This includes updating severities of some of the traces as +well as implementing new format of the p2p topology file. For more see:

    Peer Sharing

    We continued working on implementation of peer sharing. We have an early +implementation which will be reviewed and analysed in next weeks. We started +working on cardano-node integration. We need +PR #4392 to be merged +before such integration will be able to land in cardano-node, although this +is not blocking us currently. See more at:

    Eclipse Evasion

    We held a session which included Alexander Russel, Sandro Coretti-Drayton and +Nick Frisby from the consensus team. We discussed high lever design of the +eclipse evasion scheme, which is important for the design and implementation of +ouroboros-genesis. We got a positive feedback from the researchers.

    IO-Sim

    In this period we made little progress towards releasing IO-Sim on Hackage. +A single PR which added +a few missing instances of the STM monad.

    Open Source

    We made sure the CI runs for PRs which comes from forks (which is important to +accept contributions from 3rd parties).

    Mithril Cardano Integration

    We held initial discussions with Arnaud Bailly about possible path to integrate +mithril to cardano-node and take advantage of the ouroboros-network +diffusion layer.

    ]]>
    + network +
    + + <![CDATA[Performance & Tracing Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-28-performance-and-tracing + 2022-10-28-performance-and-tracing + Fri, 28 Oct 2022 00:00:00 GMT + + High level summary

    On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline.

    On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario.

    Executive summary

    • The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale.
    • The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment.
    • The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.
    ]]>
    + performance-tracing +
    + + <![CDATA[SRE Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-08-12-sre + 2022-08-12-sre + Fri, 28 Oct 2022 00:00:00 GMT + + High level summary

    The SRE team is heavily working on the Equinix Metal migration, replacing Hydra +with Cicero, and a new version of Spongix.

    Lower level summary

    OpenZiti

    • Work is ongoing on our OpenZiti integration into Bitte in [bitte-zt].
    • CI-World deployment of Darwin CI Ziti service in [ci-world-commit-d40f4d].
    • Multiple issues filed, and a lot of discussion with the OpenZiti developers, +we're making pretty rapid progress thanks to them.
    • Work on getting Equinix baremetal machines integrated into AWS World Bitte +clusters utilizing a Ziti ZTNA network overlay to bridge the networking of +the two environments and get IAM extension to Equinix machine for Nomad +client onboarding.
    • A Nix Flake for most of our OpenZiti dependencies including the Console, +Controller, Edge Tunnel, and Router is now at [openziti-bins].
    • The Flake also includes a WiP NixOS modules for these components.
    • Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with +no issues seen so far
    • Moved the console to traefik routing service (zac.$DOMAIN) and +controller/edge router stay at zt.$DOMAIN, but have registered consul +services

    Cicero & Tullia Integrations

    Cicero & Tullia Features

    • Improvements to Tullia task aggregation to make [cardano-addresses] build +correctly.
    • Better tullia CUE lib default for tags [tullia-commit-4df3c5d].
    • Put cache.nixos.org back in cache.iog.io's upstreams. This is now +considered a public cache again, and without it some Cicero evaluations had +to build huge packages.
    • Started working on a flake-parts module for Tullia.
    • Started working on cutting down Tullia task build time by putting facts in +JSON files.
    • Fixed running into kernel arg limit by reading tullia's DAG from a file
    • Merged [tullia-pull-9] that fixes several issues related to error reporting. +and escaping.
    • Added Mac builders in Cicero on CI-World.
    • Started work on Tullia invocation caching.

    Spongix

    • A lot of progress on an SQlite backed version of Spongix, it already supports +the full HTTP binary cache protocol but still lacks comprehensive testing and +some tuning, as well as recursive lookups.
    • First steps in the implementation of the nix-daemon ssh-ng protocol so +Spongix can be used via SSH and we can get rid of basic auth.

    Bugs

    • Discovered Cicero bug where Nomad reschedules cause the Github commit status +to get stuck in pending
    • Discovered Cicero race condition bug around concurrent transactions for +codependent actions.
    • Fixed tullia task order bug in [cardano-addresses]
    • Diagnose Cicero action not triggered in [abcirdc]
    • Fixed meta/description of the Tullia package in [tullia-pull-7]
    • Add Vault token loop alerts in [bitte-cells-pull-40]
    • Ongoing investigation on recurring Patroni and nomad-follower issues related +to token rotation.
    ]]>
    + sre +
    + + <![CDATA[Crypto Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-27-crypto + 2022-10-27-crypto + Thu, 27 Oct 2022 00:00:00 GMT + + High level overview

    The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to +meeting the acceptance criteria in cardano-base, +which lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and +we are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution, +but also progressing on the implementation.

    Low level overview

    SECP built-ins

    • (missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in PR 313
    • CIP-0049 was addressed in the editors meeting, and PR 250 was merged
    • The unit-tests PR 320 is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.

    KES agent

    • We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them.
    • We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).
    ]]>
    + crypto +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-21-hydra + 2022-10-21-hydra + Fri, 21 Oct 2022 00:00:00 GMT + + High level summary

    This week, the hydra team reviewed and addressed several open comments on the +new HeadV1 specification, completing a list the of identified gaps between +specification and implementation while doing so. In the wake of the recent +demonstration of SundaeSwap running their DEX in a Hydra Head, they met with +them to capture feature ideas & incorporate their feedback on the roadmap, as +well as potential research avenues.

    What did the team achieve this week

    What are the goals of next week

    • Complete the last two items required for a version 0.8.0.
    • Cut the next release, version 0.8.0
    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Have the CI build macos artifacts
    ]]>
    + hydra +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-19-node-cli-api + 2022-10-19-node-cli-api + Wed, 19 Oct 2022 00:00:00 GMT + + 2022-10-19 - 2022-11-01

    High level summary

    This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:

    • Ask the node about the current mempool's capacity and sizes
    • Request the next transaction from the mempool's current list
    • Query if a particular transaction exists in the mempool

    Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric tx_submit_fail_count has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:

    • Documentation improvments
    • Release 1.35.4 was merged & released
    • Exported various types from cardano-api that were requested by community members

    Completed

    cardano-cli

    cardano-api

    cardano-submit-api

    cardano-node

    cardano-testnet

    • None

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + cli-api +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-18-consensus + 2022-10-18-consensus + Tue, 18 Oct 2022 00:00:00 GMT + + High-level summary

    During the past two weeks, the consensus team worked on adding property test for +different aspects of the UTxO HD prototype: era transitions, mempool, and +backing store. Thanks to these tests we were able to uncover a bug in the +prototype. On the Genesis front, we benchmarked a different version of the +ChainSync jumping prototype to try to improve its performance, but this did not +result in any noticeable speedup.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We focused on increasing test coverage for the UTxO-HD prototype:
        • We started implementing Cadano-eras transition property-tests.
        • We started implementing state-machine property-tests for the mempool.
        • We merged the mempool rewrite.
        • We started working on state-machine tests for the backing store. This +uncovered a bug in the range-read implementation of the LMDB backing +store.
    • Genesis: on track.
      • We benchmarked a version of the Genesis ChainSync Jumping prototype that +spreads out the ChainSync updates over a longer period of time. This did not +result in any noticeable speedup.
      • We investigated the overhead introduced by non-ChainSync components, but no +conclusions could be drawn from the benchmarks we ran.

    Workstreams

    Finish the UTxO HD prototype

    We focused on increasing test coverage for the UTxO HD prototype. We also merged +the mempool +rewrite.

    Era transition property tests

    We started implementing Cardano era transition property +tests, +which are needed for making sure that the ledger tables get updated in the +right way when we move from one era to the next. There are at the moment two +important transitions.

    • Byron to Shelley: where all the UTxO is transferred from in-memory Byron +state (which has no tables) to the ledger tables of the Shelley state.
    • Shelley to Allegra: where the AVVM addresses must be deleted.

    We have tests for the Byron to Shelley transitions. We are working on adding +the remaining ones.

    Mempool state-machine tests

    We started implementing state-machine property tests for the +mempool. +The mempool is currently tested via pure property tests, and use a ledger +state without tables. With the introduction of UTxO HD, testing the concurrent +behavior of the mempool became of crucial importance (eg now we have to +acquire locks to flush the backing store). In addition, we need to test a +ledger state with tables. These needs led to the creation of a new set of +property tests. In particular we aim to run parallel state-machine tests that +exercise the mempool in a way similar to how the node would make use of it.

    Backing store property tests

    We started working on state-machine tests for the backing +store that UTxO +HD uses. The property tests uncovered errors in the range-reads implementation +of the LMDB backing store. To facilitate fixing this bug, we made +changes to the Haskell +LMDB bindings.

    Benchmarking the CSJ prototype

    Prompted by previous benchmarks showing significant improvements in sync time by +using more capabilities, we implemented a way to spread out the ChainSync +updates over a larger period instead of firing them all at the same time. This +didn't result in a noticeable speedup.

    We also benchmarked the prototype with CSJ disabled (such that just the dynamo +peer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule +out/confirm overhead by non-ChainSync (mainly BlockFetch) related components. +This results in era-specific behavior (speed is like the prototype in Byron, but +like the baseline in Shelley). This deserves a closer look in the future.

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    • Red: baseline
    • Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps.
    • Blue: like Green, jumps are spread out.
    • Orange: variant with no jumping, to measure unrelated overhead.

    ]]>
    + consensus +
    + + <![CDATA[Hydra Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-14-hydra + 2022-10-14-hydra + Fri, 14 Oct 2022 00:00:00 GMT + + High level summary

    This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the hydra-node over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks "past the opening of a Head". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.

    What did the team achieve this week

    • Last week we thought we were done with ADR18, but were not ...
    • ... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence.
    • Implemented a first version for persistence #187 in response.
    • Enhanced CI to publish test results on our website
    • Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!
    • Pulled static executable feature #200 into scope, implemented it and merged it!
    • Received and read through a project proposal by a vendor (building a Hydra platform).

    What are the goals of next week

    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Cut the next release, version 0.8.0
    • Address open comments on specification document & complete the list of identified gaps between specification and implementation #452
    • Have the CI build macos artifacts
    ]]>
    + hydra +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-14-ledger + 2022-10-14-ledger + Fri, 14 Oct 2022 00:00:00 GMT + + High level summary

    The ledger team is still primarily focused on addressing +technical +debt. +We now have the infrastructure for versioning our serialization schemes, +which we continue to put into action. +We have made first steps towards getting proper support for the +formal ledger repository +(in particular, we've added nix builds and +continuous integration support). +We are wrapping up an investigation of the performance of a critical +function used by the consensus layer for leader checks. +Finally, we are improving the packaging and versioning of our code.

    Lower level summary

    Completed Technical Debt

    • Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of +our code lives in the cardano-ledger-shelley package, though with hindsight we can say that +much of it should live in cardano-ledger-core. +We continue to move things to cardano-ledger-core, and have much more to come. [pull-3059]
    • We now have the infrastructure to support versioned serialization schemes. +The inability to do this has caused us a lot difficulties, +such as [issue-3003], [issue-2965] and [issue-2444]. +We are still in the process of switching to the versioned serialization scheme +(such as [pull-3078]), +but the infrastructure was completed in [pull-3063].
    • We now have proper nix and CI support for the formal ledger project. [pull-19]
    • A separate team is helping bring support for +CHaP +to all the cardano-node repositories. +We have been helping out with this effort.
    • A separate team continues working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. +We have been helping out with this effort.

    In-progress Technical Debt

    We also have several fairly large pull-requests in review +that we are working on.

    • In an on-going attempt to build out a more user-friendly API, +we continue to remove HasField instances in place of using micro-lenses. +The protocol parameters, in particular, are being worked on. [pull-3045]
    • We are also renaming record fields to be consistent across the repository. [pull-3062]
    • We are now cleaning up all the work we did to understand the performance +of the TICKF transition. We have some improvements to the computatation +as well. [pull-3068]
    • We are adding more documentation, in particular to our Twiddler functionality. [pull-3073]
    • The formal ledger is adding support for finite set theory. [pull-20]
    ]]>
    + ledger +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-05-consensus + 2022-10-05-consensus + Wed, 05 Oct 2022 00:00:00 GMT + + High level summary

    During the past two weeks, the consensus team worked on improving the +performance of the ChainSync jumping logic, which is needed for Genesis. We also +rewrote the implementation of the mempool in the UTxO HD prototype which solved +the issues that prevented us from running system level benchmarks. Also on the +UTxO HD front, we have an improved implementation of the sequence-of-differences +(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for +the UTxO HD feature.

    Executive summary

    • With the latest implementation of ChainSync jumping we are closer to the +baseline performance. In particular, the prototype seems to benefit from the +extra concurrency provided by additional capabilities.
    • We rewrote the implementation of the mempool in the UTxO HD prototype. This +rewrite was required due to performance problems we observed when running the +workbench. +These performance problems prevented us from running system level benchmarks. +The rewrite solved these issues. After the UTxO-HD: mempool +rewrite PR is +merged, we will contact the Benchmarking team so that they run the system +level benchmarks.
    • The implementation of sequences of differences based on anti-diffs was +integrated into the UTxO HD prototype. It is pending +review and +we also need to run replay and syncing benchmarks to confirm that this will +deliver a performance improvement, as observed in our micro-benchmarks.
    • The UTxO HD prototype +inspection +resulted in a list of +tests +needed for consensus to consider the UTxO HD prototype as fully tested.

    Additional information

    Genesis

    Benchmarking setup: 50MBit/s, 50ms latency

    • Red: baseline
    • Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.

    As ChainSync Jumping involves many concurrent network operations at every jump, +we tried to run the node with 6 instead of the default 2 capabilties.

    • Orange: baseline with 6 capabilities
    • Blue: CSJ prototype with 6 capabilities

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    Further work includes whether we can tune the prototype to better handle few +capabilities, or to adapt the default number of capabilities (potentially just +while syncing).

    ]]>
    + consensus +
    + + <![CDATA[DB Sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-04-db-sync + 2022-10-04-db-sync + Tue, 04 Oct 2022 00:00:00 GMT + + DBSync Update

    Fast restarts

    We fixed a long overdue issue in db-sync which caused long delays on restarts +1266. This has been +one of db-sync main objectives for this period. Restarts are now very fast, +because db-sync deletes almost nothing from the db, it just replays the ledger rules until it +reaches the tip of the db. The fix also improves reconnection speed, in cases where the node +restarts or the connection is temporarily lost. It also speeds up even more in cases where due to a +deployment mess up a very old snapshot or no snapshot at all is used.

    Property based testing

    We added stateful property based testing, using quickcheck-state-machine +1269. These tests use empty or +almost empty blocks to test the new behaviour of restarts and rollbacks.

    These tests generate arbitrarily a list of symbolic commands from these:

    RollForward Int
    RollBack BlockNo
    StopDBSync
    StartDBSync
    RestartNode
    AssertBlockNo BlockNo

    The commands are translated into real commands. For example RollForward Int will forge a new block +that fits on the current chain. These real commands are executed against db-sync using the mock +chain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync +which looks like this:

      Model
    { serverTip :: BlockNo
    , dbSyncTip :: BlockNo
    , dbSynsIsOn :: Bool
    , dbSynsHasSynced :: Bool
    }

    Finally a number of postconditions are checked, related to the eventual block number of db-sync.

    Tech Debt

    We handled a number of tech debt in +1275 +This improves the code format of db-sync, deletes many queries that were never used and groups the +others. This tech debt resolution not only improves the experience of working in db-sync, but can +facilitate some of our other objectives, as it makes it very explicit which queries are used +during syncing and which indexes are necessary.

    Smash

    We worked on fixing an issue related to fetching pool metadata +1276. +The issue which is described in +1270

    ]]>
    + db-sync +
    + + <![CDATA[Node API & CLI Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-10-04-node-cli-api + 2022-10-04-node-cli-api + Tue, 04 Oct 2022 00:00:00 GMT + + Node-Api-Cli Update

    2022-10-04 - 2022-10-18

    Executive Summary

    The majority of the team's time was spent between getting 1.34.4 ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to cardano-cli.

    Completed

    cardano-cli

    cardano-api

    cardano-node

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    ]]>
    + cli-api +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-09-30-ledger + 2022-09-30-ledger + Fri, 30 Sep 2022 00:00:00 GMT + + Ledger Update

    We have continued focusing nearly entirely on addressing technical debt. +A lot of design work has begun for the next ledger era, +but we do not yet have anything concrete to share.

    Technical debt issues completed

    • [issue-1676][pull-2992] We have finally removed the ledger dependency on the +cardano-prelude package. It was barely used in the ledger repository, and it added a dependency +that we did not want to maintain. It was a bit difficult to remove, and we had +to coordinate removing it from cardano-base. +A lot ended up going into pull-2992, due to the coordination effort, and we ended +up updating Plutus as well. +This means that we've now also made a lot of progress on the problematic cost model serialization +issues described in issue-2902. +In particular, after we resolve issue-3014, we will not have to wait an epoch before +releasing a cost model for a new version of Plutus, as we had to do for the Vasil HF.
    • [issue-3046][pull-3055] We moved a module that is now only used in Byron to a Byron package.
    • [issue-3047][pull-3054] We improved the interface to the Value (multi-asset) type.
    • [pull-3044] We debugged and fixed a tricky compilation issue. Certain kinds of field updates +were adding approximately 20 minutes to our compile time!
    • [issue-2932][pull-3036] As a part of our ongoing re-organization of the codebase, we +have added a Cardano.Ledger.[Era].Core module to each ledger era that has a TxBody class. +Most classes defined in the era should go in this new module. +We also re-export the Cardno.Ledger.Core module and the previous Cardano.Ledger.[Era].Core +modules from each era.

    Technical debt in progress

    • [issue-3034][issue-3035][node-issue-4421] We are continuing to write benchmarks to understand exactly where +all the time is being spent on executing the TICKF transition. +The consolidation of the per-stake-credential stake distribution to the per-stake-pool +distribution does seem to account for a large amount of time (near a second as written, which we +have down to about half a second with some optimizations), +but this does not account for everything. +Applying the reward update may also be a big contributing factor.
    • [pull-3033][pull-3038][pull-3041] A separate team is working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort.
    • The nix scripts used to build our new +formal ledger model +do not work consistently for everyone, and we have been working on fixing these issues.
    • [issue-3014] We are still working on adding a versioning scheme to all of the ledger +serializers.
    ]]>
    + ledger +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-09-27-network + 2022-09-27-network + Tue, 27 Sep 2022 00:00:00 GMT + + Network Update

    Ouroboros Network

    Ouroboros Consensus

    • Recently we found out that the consensus does not log exceptions thrown during +intiialisation. This was fixed in +PR input-output-hk/ouroboros-network#4015 +As part of this pull request we also changed that all exceptions rethrown by +the connection handler thread are wrapped in ExceptionInHandler.

    Some older items, which were not announced

    • We identified and fixed an issue related to socket activation (socket options +where not set for sockets passed through socket activation). +PR input-output-hk/cardano-node#3979 +This fix will be released in the next cardano-node release.

    Cardano Node

    • We extended the NixOs service module so that one can modify socketPath, +runtimeDir, databasePath, traceSocketPathAccept, +traceSocketPathConnect and stateDir options. +PR input-output-hk/cardano-node#4196

    IO-Sim

    We resolved a number of issues before release of io-sim on hackage:

    See PR #24.

    We also improved experience for contributors of io-sim and typed-protocols by adding issue templates:

    Typed Protocols

    Input Endorsers Simulation

    New features include:

    • Histograms of block arrival frequency, for both network (inbound) and CPU +(block validation). This is interesting to check that we're not overloading +the CPU block validation capacity, or network link capacity. Or alternatively +to observe the behaviour in an overload situation if we set the block +generation rate high enough.

    • Pie chart of utilisation of TCP links. This shows how small a fraction of +links are being used at any one time, and shows that once the system "warms +up" and is operating stably, most block delivery is ballistic.

    • Showing off the new screen layout combinators, that let us put multiple +charts, titles etc on screen at once and scale them to whatever screen or +video resolution we like without having to tweak numbers (this example is +scaled to fit 1080HD video resolution).

    ]]>
    + network +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-09-20-consensus + 2022-09-20-consensus + Tue, 20 Sep 2022 00:00:00 GMT + +
  • We proposed a fix for the performance degradation observed when running +distributed multi-node benchmarks in the UTxO HD feature branch. While this +fixed the problems observed when running local benchmarks, it broke the +ThreadNet tests due to concurrency issues. Therefore, we think it is wise to +start redesigning the UTxO HD mempool integration.
  • We did several rounds of code review on the alternative implementation of +diff-sequences required by the UTxO HD feature based on the idea of +anti-diffs. This alternative implementation is close to being merged, and the +next step is to integrate this to the UTxO HD branch, so that we can run +ad-hoc replaying and syncing from scratch benchmarks and compare these with +the baseline. The micro-benchmarks we elaborated for the alternative +implementation show speedups of up to 4x, so we are optimistic about the +performance of replaying and syncing from scratch benchmarks, however it is +important to notice that due to the nature of UTxO HD we will still be +slower than the baseline.
  • The final draft of the Genesis implementation specification is ready for +review.
  • We implemented a prototype for the happy path of Genesis' ChainSync Jumping +(CSJ). The prototype is slower than the baseline, however it is not the latest +version of the prototype and the jump interval is very small.
  • Work on integrating Conway has stopped since +priorities have changed.
  • We started work on benchmarking epoch-boundaries and epoch overhead +pr-4014. To this end, we made use of a modified version of our +db-analyser tool. We ran the new benchmarking setup using the Cardano +mainnet chain, and we can see that block tick and application take +substantially longer at epoch boundaries, although there are a couple of slots +during an epoch in which these computations take more than normal. We notified +the ledger team about these findings. We will use this modified version of +db-analyser to investigate the epoch overhead.
  • Workstreams

    UTxO HD

    • Spent quite some time investigating the root cause of the degradation in +performance observed in the benchmarks. We run the make forge-stress +benchmarks locally in order to debug this behavior.

      • Transaction batching doesn't make a notable difference in the outcome +(considering we are using the in-memory backend).

      • The mempool batching implementation required asynchronous transaction +validation which is a violation of the LocalTxSubmission protocol +contract and therefore if we continued on that route, the impact would +have been quite big.

      • The STM logic we implemented by using a TMVar for the mempool internal +state was buggy and under certain circumstances it seemed to lock. +Reverting the mempool internal state to be stored in a TVar seems to +solve this problem.

      • The results we get after this change look almost identical to the ones +from the baseline.

    • The anti-diff prototype (PR +#3997) has +been reviewed and is close to being merged.

      • A follow-up issue (issue +#4010) +to integrate the anti-diff prototype in the various consensus packages +was created. A first version of the integration exists, and all tests +pass. A next step is to get some indication of the "real" performance gain +by profiling db-analyser (or cardano-node).

    Genesis

    • Final draft of the Genesis implementation specification, now up for review.

    • Local benchmark setup for parameter tuning via the happy path ChainSync +Jumping (CSJ) prototype (Issue 3987).

      • Context: Our Genesis design requires us to check in with a large (~20) +number of servers periodically while syncing. These servers are offered +jump requests via the ChainSync protocol (hence the name), which they can +accept or decline. If a peer declines, the Genesis rule allows us to +determine whether a node actually has a better chain.

      • The "happy path" is when no peer declines a jump. We want this to have +close to no overhead compared to status quo, i.e. syncing without Genesis.

      • We implemented a prototype for this happy path, and are now starting to +test in various configurations (number of peers, latency, bandwidth) to +tune the performance of ChainSync jumping, i.e. how complicated our logic +of choosing when to jump needs to be.

        Example:

      • Simulated connection: 50 MBit/s, 50ms latency

      • Jump interval: 3000 slots (on the low end, could be increased to up to +3k/f)

      • Red: baseline (1.35.3), one peer in topology file

      • Blue: Preliminary version of our prototype, with 10 peers.

        It is slower by about ~30%, but it is not the latest version of the +prototype, and the jump interval is very small, making CSJ more of a +bottleneck.

    Technical debt

    • Fix flakiness in ChainDB QSM tests (PR 3990).
    ]]>
    + consensus +
    + + <![CDATA[DB Sync Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-09-19-db-sync + 2022-09-19-db-sync + Mon, 19 Sep 2022 00:00:00 GMT + + DBSync Update

    New Tag

    We created a new db-sync tag 13.0.5 which addresses shortcomings of the last +release 13.0.4. It is currently under testing. +The Changelog is +here and in more details:

    • We fixed fees for tx with phase 2 failure that didn't include a total collateral field. +1248

    • We fixed an issue that could cause db-sync to crash if a specific rollback occured. +1247

    • DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but +could result in the wrong CBOR encoding being inserted. +1217

    • All the fixes above come with unit tests which validates the fix.

    • Added support for preprod and preview from docker. DBSync no longer needs to include the configs +for different networks, these are directly fetched from the cardano world. +1254

    • We added better support from docker for the new disable options and the overall documentation. +1260

    All the above were also backported to the master branch

    Open source

    We made the db-sync board public, so +everyone can have access on the issues we prioritise. +We also added new tasks to the board, some of them could be approachable to newcomers or people who +want to contribute.

    Progress on tech debt and new features

    • 1223 was merged, which removes the +foreign keys from the db schema. This opens the road to a number of optimizations.

    • An additional fix on top of the previous work was added +1250

    • An initial version where DBSync does not rollback on restart is done here +1266. +This allows db-sync to restart much faster, without the need to delete data and reinsert them. In +the future it can also facilitate migrations in cases where the ledger snapshots have a breaking +change, without the need to resync everything from genesis.

    ]]>
    + db-sync +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-09-16-ledger + 2022-09-16-ledger + Fri, 16 Sep 2022 00:00:00 GMT + + Ledger Update

    We have been focused nearly entirely on addressing technical debt.

    • We introduced more consistent naming across eras, this time for the auxiliary data. +See 3032.
    • We made clear how the consumed functions differs between eras (which was a previous source of +confusion), and added some related support to the fledgling ledger API. +See 3016.
    • We added clarity and organizational consistency to the main ledger era type synonyms. +See 3017.
    • We removed code duplication related to the input data hashes. +See 3018.
    • We split up a large module into smaller components. The large module was actually causing our +CI to time out. +See 3020.
    • We cleaned up stale information in our cabal files, and upgraded cabal 3.8. +See 3023, +3031, +and 3028.
    • We made consistent, standalone TxOut (transaction output) modules for every era. +See 3024.
    • We brought consistency to a maddening inconsistent use of type variables indicating the specific +choice of cryptographic primitives. In particular, all uses of crypto have been renamed to c. +See 3027.
    • We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric +types that will compose better in the future and which simplifies the constraints. +See 3029.
    • We consolidated some existing fragmented logic regarding how we gather the scripts needed for a +given transaction. This is a much needed cleanup to prevent future mistakes. +See 3019.
    • We fixed a problem with our generators that was causing a fair number of our property tests to +fail in CI. +See 3039.
    • We have started the work to update Plutus. This will bring support for SECP in the next major +protocol version, and also address a +problem +that we current have evolving the cost models. +See 3030.
    • We addressed a small issue that came up when integrating the conway era downstream, namely +the lack of some serialization instances. +See 3022.
    ]]>
    + ledger +
    + + <![CDATA[Ledger Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-09-01-ledger + 2022-09-01-ledger + Thu, 01 Sep 2022 00:00:00 GMT + + Ledger Update

    Since finishing up support for the Vasil Hardfork, the ledger team has been +focused on two main things: a new ledger era and technical debt.

    New minimal ledger era

    We have implemented a new ledger era named conway which is nearly identical +to the babbage era. This has been the first time that we have been able to see +what a minimal ledger era looks like. We have finished this task, modulo any +integration issues that might come up. The only thing that the conway era +does differently from the babbage era is provide support for rotating +the master keys using the hardfork combinator's state translation. +We may end up adding features to the conway era, but it is a nice exercise +seeing what it looks like to get a minimal ledger era supported in all the +downstream components.

    Addressing technical debt

    We have been addressing technical debt, mostly in an effort to make the +repository a more friendly code base to work in.

    • We have begun work on a ledger API, called cardano-ledger-api.
    • We have done a big re-design of the major type classes used in the ledger. +With hindsight on our side, we now have something much more organized and +easier to use.
    • We have done a lot of re-naming. The names across eras are now much more +uniform, avoid certain confusions that plagued us, and are clearer in where +they are from.
    • We have reduced a lot of code duplication that could lead to bugs if you +do not have the whole code base in your head.
    • We have added a handful of performance improvements.
    • We added type safety in a number of locations. In particular, the type of +values that can be minted in a transaction no longer allow for Lovelace +in the type, and some functions which used to handle both timelock scripts +and plutus script now correctly enoforce at the type level that only one of +them can be used.
    • We made our generators so that they now produce a much richer set of +valid serializations. There is room within CBOR to serialize the same +data structure in multiple ways, and it is helpful to have the generators +use a wide variety.
    • We have begun re-organizing our test suites.
    ]]>
    + ledger +
    + + <![CDATA[Consensus Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-08-31-consensus + 2022-08-31-consensus + Wed, 31 Aug 2022 00:00:00 GMT + + Executive summary
    • We did most of the heavy lifting required to integrate the Conway era.
    • We have property tests for the UTxO HD backing store API implementations. A +possible bug was identified. Work is ongoing to make sure the property-tests +cover all the relevant cases.
    • We implemented and benchmarked the "anti-diff" prototype to speed up the UTxO +HD functionality. Results show a rough speedup of 4x to 5.5x across +several scenarios. Note that: "Data reported by tasty-bench is only of +indicative and comparative significance.". +We are investigating additional performance improvements. The "anti-diff" +prototype and benchmarks are still pending code review.
    • We elaborated a draft specification for the Genesis implementation and +ChainSync jumping optimization.

    Workstreams

    Conway

    • Integration PR of the minimal Conway era (Issue #3963, PR +#3971).
    • Discussions with Ledger revealed possible sources of confusion about which +data should be changed in the Conway era. As a result, a new technical debt +issue was raised, which does not block the integration of the Conway era +(Issue #3976).

    UTxO HD

    • Issue #3954, branch: The functionality of a +backing store, which is the interface to the on-disk part of ledger state in +UTxO-HD, is tested at a high level through the OnDisk tests. However, some +functionalities remain untested, e.g., reads of ranges of keys. As such, we +have implemented quickcheck-state-machine tests that exercise backing stores +directly. The tests are reusable for different backing store implementations +because the tests are implementation-agnostic: Any backing store that conforms +to the backing store interface can be plugged into the tests. Work is still +ongoing to label/monitor the tests, such that we can verify that interesting +cases are being tested. Furthermore, a possible bug has been identified in the +LMDB backing store with respect to range reads, though the bug has not been +resolved yet.

    • Issue #3946, branch, PR #3882: The +"anti-diff" prototype proposes an alternative approach to keeping track of +sequences (more specifically, FingerTrees) of diffs. These diff sequences +are a component of the in-memory parts of the ledger state in UTxO-HD. Since +the consensus code often requires the cumulative diff of a sequence of diffs, +the current implementation "caches" cumulative diffs of each subtree in the +diff sequence. This caching allows relatively fast reconstruction of the total +cumulative diff, but this caching proved to incur a non-negligible cost: when +we manipulate diff sequences through splits and appends, we force re-computing +a logarithmic number of caches. This is problematic, since we often split and +append in consensus: we split when we flush diffs to a backing store or when +we roll back blocks, and we append when pushing blocks. The new approach +should reduce the overhead of this caching.

      We implemented micro-benchmarks for the "anti-diff" prototype: we +first generate a sequence of commands (Forward, Push, Flush, or +Rollback) through a simulation, after which we measure the performance of +applying the commands to a diff sequence. In this context, Forward means +forwarding of values through a diff, whereas Rollback means switching to +a different fork by rolling back diffs/blocks and pushing new ones. +Moreover, we compare the performance for the two implementations: the +"legacy" approach, and the anti-diff approach.

      Some preliminary results were positive, but we needed to revisit the +benchmark's configuration to obtain more definitive results. After a +discussion with @dcoutts and the consensus team about this configuration +(e.g., number of commands generated, choice of the security parameter k), +the benchmarks should now be closer to the realistic setting. The following +configuration specifies the default configuration that is used in the +benchmarking code:

      • Number of commands generated: 10_000
      • Security parameter k: 2160
      • Number of initial backing values: 100
      • Number of key-value pairs deleted by a push: 50
      • Number of key-value pairs inserted by a push: 50
      • Number of key-value pairs forwarded by a forward: 50
      • Probability of a large (in the range [1000, 2000]) rollback: 0.05
      • Probability of a small (in the range [1, 10]) rollback: 0.95
      • Order of commands:
        • An equal number of forward and pushes.
        • 1 flush every 10 pushes.
        • 1 rollback every 100 pushes

      Moreover, we run four benchmark scenarios:

      • Default configuration
      • Without rollbacks
      • With only small rollbacks
      • Without rollbacks, larger flushes (1 flush every 100 pushes)

      How to read results

      Note: this section uses documentation from the +tasty-bench package to +explain how to read the results of running our benchmarks.

      Running a benchmark scenario gives us the following (curated) output:

      ...
      AntiDiff: OK (18.27s)
      2.527 s ± 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x
      LegacyDiff: OK (32.73s)
      10.829 s ± 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory
      ...

      The output says that the first benchmark, which exercises the anti-diff +prototype, was repeatedly executed for 18.27 seconds (wall-clock time), +its predicted mean CPU time was 2.527 seconds and means of individual +samples do not often diverge from it further than ± 47 milliseconds +(double standard deviation). We also configure the RTS to collect GC +statistics, which enables tasty-bench to estimate and report memory usage. +This data is reported as per RTSStats fields: allocated_bytes, +copied_bytes and max_mem_in_use_bytes. So, the output of the first +benchmark says that a total of 2.1 GB of memory was allocated, that a +total of 544 MB of memory were copied, and that the peak memory in usage +was 2.2 GB. We read the output for the second benchmark in the same way.

      Furthermore, the benchmark compares the mean CPU times for +both the anti-diff and legacy approaches: In this case, the mean CPU time +for the anti-diff approach is ~0.23x the mean CPU time for the legacy +approach. Conversely, the mean CPU time for the legacy approach is +1 / 0.23 ~= 4.35x the mean CPU time for the anti-diff approach. We will +call 0.23x the improvement factor. We will call 4.35x the speedup.

      Note that these improvement factors (and reported results) are subject to +noise, randomness, the specific configuration parameters, and the whims +of statistics. Data reported by tasty-bench is only of indicative and +comparative significance.

      Results

      For each of the 4 scenarios, we list the results of running the anti-diff and +legacy approaches 5 times. We run the benchmarks 5 times to get an indication +of whether the results are similar across multiple runs. Furthermore, we +calculate the accompanying ranges (if applicable) of improvement factors and +speedups.

      Note also the decrease in total bytes allocated and total bytes copied for +the anti-diff approach compared to the legacy approach.

      Default configuration

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff2.533 s (0.23x)4.7 ms2.1 GB557 MB2.4 GB
      Run 1: LegacyDiff10.792 s162 ms6.8 GB2.3 GB2.4 GB
      Run 2: AntiDiff2.508 s (0.23x)245 ms2.1 GB515 MB2.2 GB
      Run 2: LegacyDiff10.850 s30 ms6.9 GB2.3 GB2.2 GB
      Run 3: AntiDiff2.562 s (0.23x)5.0 ms2.1 GB552 MB2.2 GB
      Run 3: LegacyDiff10.993 s149 ms6.9 GB2.3 GB2.2 GB
      Run 4: AntiDiff2.168 s (0.22x)5.3 ms1.8 GB434 MB2.0 GB
      Run 4: LegacyDiff9.976 s39 ms6.3 GB2.0 GB2.0 GB
      Run 5: AntiDiff2.527 s (0.23x)47 ms2.1 GB544 MB2.2 GB
      Run 5: LegacyDiff10.829 s148 ms6.8 GB2.3 GB2.2 GB
      • Improvement factor: [0.22, 0.23]
      • Speedup : [1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]

      No rollbacks

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.638 s (0.19x)36 ms1.4 GB181 MB2.4 GB
      Run 1: LegacyDiff8.656 s207 ms5.7 GB1.5 GB2.4 GB
      Run 2: AntiDiff1.638 s (0.19x)75 ms1.4 GB181 MB2.2 GB
      Run 2: LegacyDiff8.654 s322 ms5.7 GB1.5 GB2.2 GB
      Run 3: AntiDiff1.663 s (0.19x)74 ms1.4 GB181 MB2.2 GB
      Run 3: LegacyDiff8.799 s216 ms5.7 GB1.5 GB2.2 GB
      Run 4: AntiDiff1.645 s (0.19x)51 ms1.4 GB181 MB2.0 GB
      Run 4: LegacyDiff8.732 s261 ms5.7 GB1.5 GB2.0 GB
      Run 5: AntiDiff1.639 s (0.19x)19 ms1.4 GB181 MB2.2 GB
      Run 5: LegacyDiff8.653 s234 ms5.7 GB1.5 GB2.2 GB
      • Improvement factor: 0.19
      • Speedup : 1 / 0.19 ~= 5.25

    Only small rollbacks

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff1.833 s (0.18x)36 ms1.5 GB185 MB2.4 GB
    Run 1: LegacyDiff10.362 s867 ms5.8 GB1.6 GB2.4 GB
    Run 2: AntiDiff1.696 s (0.19x)30 ms1.5 GB185 MB2.2 GB
    Run 2: LegacyDiff8.822 s106 ms5.8 GB1.5 GB2.2 GB
    Run 3: AntiDiff1.702 s (0.19x)44 ms1.5 GB186 MB2.2 GB
    Run 3: LegacyDiff8.906 s147 ms5.8 GB1.5 GB2.2 GB
    Run 4: AntiDiff1.701 s (0.19x)47 ms1.5 GB185 MB2.0 GB
    Run 4: LegacyDiff8.949 s197 ms5.8 GB1.5 GB2.0 GB
    Run 5: AntiDiff1.677 s (0.19x)55 ms1.5 GB186 MB2.2 GB
    Run 5: LegacyDiff8.856 s177 ms5.8 GB1.5 GB2.2 GB
    • Improvement factor: [0.18, 0.19]

    • Speedup : [1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]

      No rollbacks, larger flushes (every 100 pushes)

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.643 s (0.25x)21 ms1.5 GB196 MB2.4 GB
      Run 1: LegacyDiff6.591 s351 ms4.0 GB1.4 GB2.4 GB
      Run 2: AntiDiff1.616 s (0.25x)47 ms1.5 GB196 MB2.2 GB
      Run 2: LegacyDiff6.520 s232 ms4.0 GB1.4 GB2.2 GB
      Run 3: AntiDiff1.640 s (0.25x)34 ms1.5 GB196 MB2.2 GB
      Run 3: LegacyDiff6.540 s150 ms4.0 GB1.4 GB2.2 GB
      Run 4: AntiDiff1.635 s (0.25x)76 ms1.5 GB196 MB2.0 GB
      Run 4: LegacyDiff6.589 s131 ms4.0 GB1.4 GB2.0 GB
      Run 5: AntiDiff1.628 s (0.25x)19 ms1.5 GB196 MB2.2 GB
      Run 5: LegacyDiff6.490 s5.9 ms4.0 GB1.4 GB2.2 GB
    • Improvement factor: 0.25

    • Speedup : 1 / 0.25 ~= 4

    Genesis

    • We elaborated a draft of the specification of the Genesis implementation and +the ChainSync Jumping optimization. In particular, this includes a proof +sketch that the latter preserves liveness and safety in all cases (Issue +3964).
      • @nfrisby's main realization during this sprint was that he had been +focusing so far on the case where the selected chain is an extension of +the intersection of our peers' ChainSync candidates.
      • This is the main case, ie an "absorbing" state, but it's not the only +case.
      • The new proof sketch begins by case splitting on that predicate, and +that made the sketch quite a bit easier to follow.
    • We continued working on the "happy path" ChainSync Jumping prototype (Issue +3960).

    Technical debt

    • We started working on the issues required to re-enable nightly CI runs.. +Nightly CI runs have far more lax time constraints, which gives the option to +run significantly more property tests than in our regular CI. To this end, we +merged a PR to easily adapt the number of tests globally (PR +#3947).
    ]]>
    + consensus +
    + + <![CDATA[Network Team Update]]> + https://input-output-hk.github.io/cardano-updates/2022-08-12-network + 2022-08-12-network + Fri, 12 Aug 2022 00:00:00 GMT + + The networking team took an active part in the project iteration (PI) planning +session, see cardano-node backlog for detailed +outcomes.

    • We started working on a detailed design / implementation plan for gossip.

    • We merged input-output-hk/ouroboros-network#3859 which +sets the ouroboros-network repository for the single relay release.

    • We identified a bug in the network simulator, which is fixed in the +input-output-hk/ouroboros-network#3852. +The above PR was reviewed.

    • We set the tracing configuration for nodes which we deploy and fixed and +identified some deployment hiccups. We identified some bugs in the RT view +which were registered by the maintainers. +input-output-hk/ouroboros-network-ops#4

    • We fixed typos in network-mux library: +input-output-hk/ouroboros-network#3921

    • For easy of debugging we renamed a trace point: +input-output-hk/ouroboros-network#3922

    • Duncan iterated on his simulation / visualisation. He also was able to +identify and fix a bug in the simulator. The simulation contains 50 nodes. +Dashed lines indicate and established connection, while solid lines indicate +a TCP connection with fully open TCP window.

    ]]>
    + network +
    +
    +
    \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000000..609544e0b90 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://input-output-hk.github.io/cardano-updates/2022-08-12-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2022-08-12-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2022-08-31-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-09-01-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-09-16-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-09-19-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2022-09-20-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-09-27-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2022-09-30-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-02-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-04-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-04-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-05-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-14-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-14-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-18-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-19-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-21-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-27-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-28-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-28-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-28-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2022-10-31-open-sourceweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-01-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-02-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-02-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-02-releaseweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-02-system-testweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-03-embedding-qualityweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-04-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-04-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-11-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-11-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-11-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-11-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-16-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-16-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-16-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-18-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-18-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-23-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-25-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-25-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-28-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-30-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-30-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2022-11-30-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-01-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-01-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-01-system-testweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-02-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-09-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-09-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-09-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-12-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-14-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-14-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-14-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-14-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-15-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-16-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2022-12-28-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-05-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-06-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-11-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-11-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-12-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-13-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-13-releaseweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-13-system-testweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-14-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-19-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-20-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-20-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-20-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-20-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-25-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-25-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-26-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-01-27-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-02-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-03-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-03-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-03-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-08-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-08-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-08-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-09-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-10-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-17-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-17-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-17-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-17-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-17-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-21-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-22-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-22-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-23-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-23-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-02-24-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-02-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-03-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-03-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-03-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-03-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-08-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-08-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-08-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-09-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-10-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-16-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-17-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-17-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-17-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-21-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-22-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-22-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-22-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-23-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-23-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-24-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-27-system-testweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-31-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-31-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-31-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-03-31-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-05-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-05-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-05-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-06-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-07-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-14-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-14-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-17-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-19-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-19-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-20-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-20-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-21-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-21-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-27-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-28-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-28-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-04-28-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-01-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-03-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-03-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-04-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-05-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-05-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-12-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-12-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-12-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-12-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-17-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-17-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-17-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-19-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-24-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-26-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-26-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-26-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-26-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-31-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-05-31-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-01-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-02-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-07-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-08-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-08-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-08-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-08-system-testweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-09-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-09-developer-experienceweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-09-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-12-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-14-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-14-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-15-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-16-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-23-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-23-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-23-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-23-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-28-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-28-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-29-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-06-30-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-04-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-04-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-06-developer-experienceweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-07-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-07-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-07-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-07-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-12-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-12-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-13-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-14-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-18-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-20-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-21-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-21-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-21-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-26-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-27-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-28-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-07-31-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-01-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-04-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-04-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-04-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-04-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-04-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-04-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-04-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-09-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-10-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-11-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-11-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-15-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-17-cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-17-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-17-secp-issueweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-18-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-18-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-18-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-18-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-18-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-23-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-24-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-25-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-28-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-08-29-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-01-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-01-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-01-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-01-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-01-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-06-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-07-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-07-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-08-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-12-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-14-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-15-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-15-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-15-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-15-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-15-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-20-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-20-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-22-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-22-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-26-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-27-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-29-goedelweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-29-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-29-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-09-29-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-02-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-04-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-04-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-06-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-06-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-10-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-11-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-13-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-13-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-13-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-15-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-18-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-18-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-20-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-24-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-25-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-27-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-27-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-10-27-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-01-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-01-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-08-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-08-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-09-db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-10-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-10-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-14-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-15-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-15-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-16-networkweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-17-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-17-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-20-cip1694weekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-22-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-22-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-24-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-24-sreweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-29-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/2023-11-29-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/2023-12-01-hydraweekly0.5https://input-output-hk.github.io/cardano-updates/2023-12-04-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/2023-12-06-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/2023-12-06-mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/archiveweekly0.5https://input-output-hk.github.io/cardano-updates/markdown-pageweekly0.5https://input-output-hk.github.io/cardano-updates/page/10weekly0.5https://input-output-hk.github.io/cardano-updates/page/11weekly0.5https://input-output-hk.github.io/cardano-updates/page/12weekly0.5https://input-output-hk.github.io/cardano-updates/page/13weekly0.5https://input-output-hk.github.io/cardano-updates/page/14weekly0.5https://input-output-hk.github.io/cardano-updates/page/15weekly0.5https://input-output-hk.github.io/cardano-updates/page/16weekly0.5https://input-output-hk.github.io/cardano-updates/page/17weekly0.5https://input-output-hk.github.io/cardano-updates/page/18weekly0.5https://input-output-hk.github.io/cardano-updates/page/19weekly0.5https://input-output-hk.github.io/cardano-updates/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/page/20weekly0.5https://input-output-hk.github.io/cardano-updates/page/21weekly0.5https://input-output-hk.github.io/cardano-updates/page/22weekly0.5https://input-output-hk.github.io/cardano-updates/page/23weekly0.5https://input-output-hk.github.io/cardano-updates/page/24weekly0.5https://input-output-hk.github.io/cardano-updates/page/25weekly0.5https://input-output-hk.github.io/cardano-updates/page/26weekly0.5https://input-output-hk.github.io/cardano-updates/page/27weekly0.5https://input-output-hk.github.io/cardano-updates/page/28weekly0.5https://input-output-hk.github.io/cardano-updates/page/29weekly0.5https://input-output-hk.github.io/cardano-updates/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/page/30weekly0.5https://input-output-hk.github.io/cardano-updates/page/31weekly0.5https://input-output-hk.github.io/cardano-updates/page/32weekly0.5https://input-output-hk.github.io/cardano-updates/page/33weekly0.5https://input-output-hk.github.io/cardano-updates/page/34weekly0.5https://input-output-hk.github.io/cardano-updates/page/35weekly0.5https://input-output-hk.github.io/cardano-updates/page/36weekly0.5https://input-output-hk.github.io/cardano-updates/page/37weekly0.5https://input-output-hk.github.io/cardano-updates/page/38weekly0.5https://input-output-hk.github.io/cardano-updates/page/39weekly0.5https://input-output-hk.github.io/cardano-updates/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/page/40weekly0.5https://input-output-hk.github.io/cardano-updates/page/41weekly0.5https://input-output-hk.github.io/cardano-updates/page/42weekly0.5https://input-output-hk.github.io/cardano-updates/page/43weekly0.5https://input-output-hk.github.io/cardano-updates/page/44weekly0.5https://input-output-hk.github.io/cardano-updates/page/45weekly0.5https://input-output-hk.github.io/cardano-updates/page/46weekly0.5https://input-output-hk.github.io/cardano-updates/page/47weekly0.5https://input-output-hk.github.io/cardano-updates/page/48weekly0.5https://input-output-hk.github.io/cardano-updates/page/49weekly0.5https://input-output-hk.github.io/cardano-updates/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/page/50weekly0.5https://input-output-hk.github.io/cardano-updates/page/51weekly0.5https://input-output-hk.github.io/cardano-updates/page/52weekly0.5https://input-output-hk.github.io/cardano-updates/page/53weekly0.5https://input-output-hk.github.io/cardano-updates/page/54weekly0.5https://input-output-hk.github.io/cardano-updates/page/55weekly0.5https://input-output-hk.github.io/cardano-updates/page/56weekly0.5https://input-output-hk.github.io/cardano-updates/page/57weekly0.5https://input-output-hk.github.io/cardano-updates/page/58weekly0.5https://input-output-hk.github.io/cardano-updates/page/59weekly0.5https://input-output-hk.github.io/cardano-updates/page/6weekly0.5https://input-output-hk.github.io/cardano-updates/page/60weekly0.5https://input-output-hk.github.io/cardano-updates/page/61weekly0.5https://input-output-hk.github.io/cardano-updates/page/7weekly0.5https://input-output-hk.github.io/cardano-updates/page/8weekly0.5https://input-output-hk.github.io/cardano-updates/page/9weekly0.5https://input-output-hk.github.io/cardano-updates/quarterlyweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2022-10-07-node-cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2022-11-07-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2022-11-09-networkweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2022-11-15-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-01-13-networkweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-01-13-open-sourceweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-01-18-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-04-03-ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-04-04-networkweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-04-25-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q2-consensusweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q2-networkweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q2-sreweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q3-performance-and-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/2023-Q3-sreweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/archiveweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tagsweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tags/cli-api-quarterlyweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tags/consensusweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tags/ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tags/networkweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tags/open-sourceweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tags/performance-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/quarterly/tags/sreweekly0.5https://input-output-hk.github.io/cardano-updates/tagsweekly0.5https://input-output-hk.github.io/cardano-updates/tags/cip-1694weekly0.5https://input-output-hk.github.io/cardano-updates/tags/cli-apiweekly0.5https://input-output-hk.github.io/cardano-updates/tags/cli-api/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/cli-api/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/cli-api/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/cli-api/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/tags/cli-api/page/6weekly0.5https://input-output-hk.github.io/cardano-updates/tags/consensusweekly0.5https://input-output-hk.github.io/cardano-updates/tags/consensus/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/consensus/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/consensus/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/consensus/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/tags/consensus/page/6weekly0.5https://input-output-hk.github.io/cardano-updates/tags/consensus/page/7weekly0.5https://input-output-hk.github.io/cardano-updates/tags/cryptoweekly0.5https://input-output-hk.github.io/cardano-updates/tags/crypto/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/crypto/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/crypto/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/db-syncweekly0.5https://input-output-hk.github.io/cardano-updates/tags/db-sync/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/db-sync/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/devxweekly0.5https://input-output-hk.github.io/cardano-updates/tags/embedding-qualityweekly0.5https://input-output-hk.github.io/cardano-updates/tags/goedelweekly0.5https://input-output-hk.github.io/cardano-updates/tags/goedel/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/goedel/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/goedel/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydraweekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/10weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/11weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/6weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/7weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/8weekly0.5https://input-output-hk.github.io/cardano-updates/tags/hydra/page/9weekly0.5https://input-output-hk.github.io/cardano-updates/tags/ledgerweekly0.5https://input-output-hk.github.io/cardano-updates/tags/ledger/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/ledger/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/ledger/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/ledger/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/tags/ledger/page/6weekly0.5https://input-output-hk.github.io/cardano-updates/tags/mithrilweekly0.5https://input-output-hk.github.io/cardano-updates/tags/mithril/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/mithril/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/mithril/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/mithril/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/tags/mithril/page/6weekly0.5https://input-output-hk.github.io/cardano-updates/tags/mithril/page/7weekly0.5https://input-output-hk.github.io/cardano-updates/tags/networkweekly0.5https://input-output-hk.github.io/cardano-updates/tags/network/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/network/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/network/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/network/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/tags/open-sourceweekly0.5https://input-output-hk.github.io/cardano-updates/tags/performance-tracingweekly0.5https://input-output-hk.github.io/cardano-updates/tags/performance-tracing/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/performance-tracing/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/performance-tracing/page/4weekly0.5https://input-output-hk.github.io/cardano-updates/tags/performance-tracing/page/5weekly0.5https://input-output-hk.github.io/cardano-updates/tags/releaseweekly0.5https://input-output-hk.github.io/cardano-updates/tags/securityweekly0.5https://input-output-hk.github.io/cardano-updates/tags/sreweekly0.5https://input-output-hk.github.io/cardano-updates/tags/sre/page/2weekly0.5https://input-output-hk.github.io/cardano-updates/tags/sre/page/3weekly0.5https://input-output-hk.github.io/cardano-updates/tags/system-testweekly0.5https://input-output-hk.github.io/cardano-updates/docs/category/tutorial---basicsweekly0.5https://input-output-hk.github.io/cardano-updates/docs/category/tutorial---extrasweekly0.5https://input-output-hk.github.io/cardano-updates/docs/introweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-basics/congratulationsweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-basics/create-a-blog-postweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-basics/create-a-documentweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-basics/create-a-pageweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-basics/deploy-your-siteweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-basics/markdown-featuresweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-extras/manage-docs-versionsweekly0.5https://input-output-hk.github.io/cardano-updates/docs/tutorial-extras/translate-your-siteweekly0.5https://input-output-hk.github.io/cardano-updates/weekly0.5 \ No newline at end of file diff --git a/tags/cip-1694/index.html b/tags/cip-1694/index.html new file mode 100644 index 00000000000..323c558c3dc --- /dev/null +++ b/tags/cip-1694/index.html @@ -0,0 +1,25 @@ + + + + + +One post tagged with "cip1694" | Cardano Development Updates + + + + + + + + + + + + +
    +

    One post tagged with "cip1694"

    View All Tags

    · 6 min read
    Kevin Hammond

    High level summary

    We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

    Initial CIP-1694 Security Analysis and Responses

    Section: The constitutional committee


    • “For example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

    There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


    Section: Size of the constitutional committee


    • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

    Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


    Section: Terms


    • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

    Thanks. Yes, that suggestion is a bit easier to read.


    Section: Registered DReps


    • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

    Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


    Section: Ratification


    • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

    These correspond exactly to the groups that are administered by the Parameter Committee.


    • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

    Yes, it’s not about harming the system, since Info +actions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

    Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


    Section: Content


    • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

    Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


    Section: Protocol Parameter groups


    • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

    These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


    • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

    All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


    Section: Votes


    • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

    They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


    Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


    • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

    There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


    Section: Changes post Edinburgh workshop (July 2023)


    • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

    It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


    Section: Reduced deposits for some government actions


    • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

    Indeed. We have no plans for this at the moment.

    + + + + \ No newline at end of file diff --git a/tags/cli-api/index.html b/tags/cli-api/index.html new file mode 100644 index 00000000000..6e32c33eb70 --- /dev/null +++ b/tags/cli-api/index.html @@ -0,0 +1,28 @@ + + + + + +27 posts tagged with "cli-api" | Cardano Development Updates + + + + + + + + + + + + +
    +

    27 posts tagged with "cli-api"

    View All Tags

    · 2 min read
    Carlos LopezDeLara

    2023-11-01 - 2023-11-14

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Improve golden tests
    • Clean-up of conway era commands

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Carlos LopezDeLara

    2023-10-11 - 2023-10-24

    High level summary

    CARDANO-CLI

    • Disambiguate cardano-cli stake credential related flags on treasury withdrawal governance actions making it easy to identify which is used for the deposit refund and which for the destination of the funds from the treasury if the action is ratified.
    • stake-address-info now shows deposits balance.
    • Added conway governance action view to allow to inspect governance action files before submitting them on a transaction.
    • build-raw support for --vote-file and --proposal-file

    CARDANO-API

    • Support DRep extended keys
    • Support Plutus V1 in Conway

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Carlos LopezDeLara

    2023-09-27 - 2023-10-10

    High level summary

    CARDANO-NODE

    CARDANO-CLI

    • Depracated governance query commands and moved all governance related queries to cardano-cli <era> query
    • Drep registration certificates now allow to include an anchor
    • Integrated Drep retirement ceriticates
    • clean up of Drep registration certificates.

    CARDANO-API

    • Add support for committee hot key witnesses
    • Require conway onwards for voting
    • Conway drep registration: expose ledger anchor parameter
    • Add certs to txbody of Conway transactions

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Carlos LopezDeLara

    2023-09-13 - 2023-09-26

    High level summary

    • cardano-node 8.4.0-pre release suitable for SanchoNet.
    • CLI continues making progress integrating governance features. During this sprint we integrated the info and new-committee governance actions.
    • The team continued moving to the ERA top-level commands structure. Removed --conway-era flag from the legacy commands making conway era commands only accessible via cardano-cli conway.
    • stake-pool command is now under the ERA top level structure.
    • API continues integration with governance features, it is worth to higlight that now ProposeNewCommitee uses the right key type (cc-cold)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 3 min read
    Carlos LopezDeLara

    2023-08-30 - 2023-09-12

    High level summary

    Release of Cardano-node 8.3.0-pre for SanchoNet. Adds DReps to the Conway governance rules. Allows registration of DReps, delegation to DReps and voting on constitution action with DReps and SPOs. +This release completes phase 2 of SanchoNet feature roll out plan

    CLI continues on its migration to a era-based top-level commands. This sprint we moved text-view, key, query, genesis, node, stake-address, transaction and address into this new command structure. This is the initial migration, there is still some clean-up to do on future sprints.

    We are moving the drep delegation-certificate to the stake-address command so delegating to a drep is done via stake-addres vote-delegation-certificate. Along the same lines, we are renaming +stake-address delegation-certificate (delagating to a stake pool) to stake-address stake-delegation-certificate to distinguish between stake delegation to a pool and votes delegation to a drep. On top +of that, there is a new type of delegation certificate to delegate (stake) to a stake pool and (votes) to a drep simultaneosuly stake-address stake-and-vote-delegation-certificate. Note that change is not included on 8.3 but will come on 8.4. +Removing --conway-era flag from all the transaction sub-commands.

    Update description fields in delegation certificates from Stake Address Delegation Certificate to respectively (Conway onwards):

    • Stake Delegation Certificate
    • Vote Delegation Certificate
    • Stake and Vote Delegation Certificate

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    + + + + \ No newline at end of file diff --git a/tags/cli-api/page/2/index.html b/tags/cli-api/page/2/index.html new file mode 100644 index 00000000000..d209f3e95be --- /dev/null +++ b/tags/cli-api/page/2/index.html @@ -0,0 +1,24 @@ + + + + + +27 posts tagged with "cli-api" | Cardano Development Updates + + + + + + + + + + + + +
    +

    27 posts tagged with "cli-api"

    View All Tags

    · 2 min read
    Carlos LopezDeLara

    2023-08-16 - 2023-08-29

    High level summary

    CLI is making progress towards phases 3 and 4 of SanchoNet.

    • Ability to create info, no-confidence and new committee governance actions.

    • Voting as DREP is possible now on the CLI

    • API is now using Ledger's PParams and VotingProcedures

    • Expose following queries from consensus:

      - GetGovState
      - GetDRepState
      - GetDRepStakeDistr
      - GetCommitteeState
      - GetConstitution

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Carlos LopezDeLara

    2023-08-02 - 2023-08-15

    High level summary

    • cardano-node 8.2.1 (pre-release) to SanchoNet
    • Continue moving CLI into era-based top level command structure
    • Wire-up DREP key generation,
    • Fix DREP deregistration certificates
    • Implement Constitutional Committee Key generation on the CLI
    • Introducing era-based protocol parameters on the API
    • Removing depracated functions and types on the API

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    Fix broken links in docs

    CI & project maintenance

    · 2 min read
    Carlos LopezDeLara

    2023-07-19 - 2023-08-01

    High level summary

    • Release of Node 8.2.0
      • Updates to the ledger packages extend progress on the Conway ledger era to support new governance features via CIP-1694.
      • This release is phase 1 of the SanchoNet roll out
      • Allows SPOs to vote on changes to the on-chain constitution.
      • Ability to start the node in block production mode with no secrets loaded using the --non-producing-node flag.
      • Updates to the networking packages prepare the road for peer sharing.
    • cardano-cli and cardano-api continue to integrate Conway era features
    • Continue refactoring of cardano-testnet

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · 2 min read
    Carlos LopezDeLara

    · 2 min read
    Carlos LopezDeLara

    2023-06-21 - 2023-07-04

    High level summary

    • Started integration of conway era into the cardano-api,
    • Pre-release of cardano-cli 8.2.1 which enables creating goveranance "Update constitution" governance actionsas well as voting. Both only as SPO. DREP and CC will come in future releases.
    • Cardano-cli is moving to a top-level era command structure (i.e. cardano-cli conway, cardano-cli babbage, etc to accomodate for different fucntionalities available in diferent eras. In particular between Babbage and Conway governance-related functionalities.
    • Continue refactoring cardano-testnet
    • CI and docs house keeping on the new cardnao-cli and cardano-api repositories

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    + + + + \ No newline at end of file diff --git a/tags/cli-api/page/3/index.html b/tags/cli-api/page/3/index.html new file mode 100644 index 00000000000..1abdd73b9d3 --- /dev/null +++ b/tags/cli-api/page/3/index.html @@ -0,0 +1,24 @@ + + + + + +27 posts tagged with "cli-api" | Cardano Development Updates + + + + + + + + + + + + +
    +

    27 posts tagged with "cli-api"

    View All Tags

    · 2 min read
    Carlos LopezDeLara

    2023-06-07 - 2023-06-20

    High level summary

    • Completed cardano-cli migration to input-output-hk/cardano-cli
    • cardano-cli ping now uses cardano-ping-0.2.0.5
    • New queries on API:
      • queryCurrentEpochState
      • queryDebugLedgerState
      • queryGenesisParameters
      • queryPoolDistribution
      • queryPoolState
      • queryProtocolParameters
      • queryProtocolParametersUpdate
      • queryProtocolState
      • queryStakeAddresses
      • queryStakeDistribution
      • queryStakePoolParameters
      • queryStakeSnapshot
    • Deprecate:
      • queryPparams
    • Export query API as functions
      • genFeatureValueInEra
      • featureInShelleyBasedEra
      • isFeatureValue
      • valueOrDefault
      • asFeatureValue
      • asFeatureValueInShelleyBasedEra
      • queryEpoch
      • requireShelleyBasedEra
    • Restructure cardano-testnet (WIP)

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    docs

    CI & project maintenance

    · One min read
    Jordan Millar

    2023-05-24 - 2023-06-06

    High level summary

    • The last sprint focused on removing cardano-cli and cardano-api from the cardano-node repository. We have successfully moved cardano-api to its own repository and will do the same for cardano-cli after the 8.1 node is released.
    • We provided assitance where needed in the release
    • An integration repository https://github.com/input-output-hk/fusion-flamingo was created to enable my team to more easily work on cardano-cli and cardano-api

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 2 min read
    Jordan Millar

    2023-05-05 - 2023-05-23

    High level summary

    • Golden tests for cardano-cli command help output were added.
    • Documentation was updated with new libsodium installation instructions.
    • There were several updates for the cardano-cli:
      • Deletion of the deprecated shelley command group.
      • Addition of golden tests for CLI help.
      • An improvement to avoid bare IO in tests, allowing better error reporting in failed tests.
      • Generation of UTCTime test values without leap seconds (avoids erroneous test failures)
      • Support for signing transactions with GenesisDelegateSigningKey_ed25519_bip32.
    • The cardano-api underwent multiple refinements:
      • Implementing deposit handling when balancing transactions (necessary for Conway)
      • Cleaning up socket file path code.
    • Several changes were made to the cardano-testnet:
      • Adding golden tests for cardano-testnet help.
      • Removing all hardcoded yaml files in cardano-testnet
      • Improving cardano-testnet help output.
      • Parameterizing default yaml configuration value, allowing for easier hardforking to the era of choice.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · One min read
    Jordan Millar

    · 2 min read
    Jordan Millar

    2023-04-05 - 2023-04-19

    High level summary

    • Introduce new governance commands create, answer and verify. This allows us to have onchain polls.
    • Begin making changes in cardano-api to accomodate for CIP-1694
    • Rename TestEnableDevelopmentHardForkEras to ExperimentalHardForksEnabled and TestEnableDevelopmentNetworkProtocols to ExperimentalProtocolsEnabled
    • Various bug fixes and improvements

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    + + + + \ No newline at end of file diff --git a/tags/cli-api/page/4/index.html b/tags/cli-api/page/4/index.html new file mode 100644 index 00000000000..133b84b898a --- /dev/null +++ b/tags/cli-api/page/4/index.html @@ -0,0 +1,24 @@ + + + + + +27 posts tagged with "cli-api" | Cardano Development Updates + + + + + + + + + + + + +
    +

    27 posts tagged with "cli-api"

    View All Tags

    · One min read
    Jordan Millar

    2023-03-22 - 2023-04-05

    High level summary

    • Added new cardano-cli ping command which allows users to ping remote cardano-nodes.
    • The transaction build command now can automatically balance multiassets
    • New combinators for constructing transaction bodies. This allows us to construct transaction bodies in a composable manner.

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · One min read
    Jordan Millar

    · 2 min read
    Jordan Millar

    2023-02-22 - 2023-03-07

    High level summary

    General bug fixes

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    Documentation

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 2 min read
    Jordan Millar

    · 2 min read
    Jordan Millar

    2023-01-25 - 2023-02-07

    High level summary

    General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the cardano-cli query stake-snapshot command.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    + + + + \ No newline at end of file diff --git a/tags/cli-api/page/5/index.html b/tags/cli-api/page/5/index.html new file mode 100644 index 00000000000..9b7c531af03 --- /dev/null +++ b/tags/cli-api/page/5/index.html @@ -0,0 +1,24 @@ + + + + + +27 posts tagged with "cli-api" | Cardano Development Updates + + + + + + + + + + + + +
    +

    27 posts tagged with "cli-api"

    View All Tags

    · 2 min read
    Jordan Millar

    2022-12-28 - 2023-01-10

    High level summary

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 2 min read
    Jordan Millar

    2022-12-14 - 2022-12-27

    High level summary

    PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

    Completed

    docs

    CI & project maintenance

    Developer experience

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    CI & project mainteance

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    · 2 min read
    Jordan Millar

    · One min read
    Jordan Millar

    · 2 min read
    Jordan Millar

    2022-11-02 - 2022-11-15

    High level summary

    • Documentation improvments
    • Merged community contributions
    • Exposing types from cardano-api requested by the community/other teamss
    • Test output has been improved so diagnosing failures is now easier
    • Enabling stale bot to close stale issues and PRs (reduces clutter on the node repo)
    • Refactoring of cardano-testnet making it more useable as a library (ongoing)
    • Release 1.35.4 was merged & released

    Completed

    cardano-cli

    cardano-api

    cardano-node

    cardano-testnet

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    + + + + \ No newline at end of file diff --git a/tags/cli-api/page/6/index.html b/tags/cli-api/page/6/index.html new file mode 100644 index 00000000000..43060fd55c7 --- /dev/null +++ b/tags/cli-api/page/6/index.html @@ -0,0 +1,24 @@ + + + + + +27 posts tagged with "cli-api" | Cardano Development Updates + + + + + + + + + + + + +
    +

    27 posts tagged with "cli-api"

    View All Tags

    · 2 min read
    Jordan Millar

    2022-10-19 - 2022-11-01

    High level summary

    This sprint saw the addition of the long awaited tx-mempool command that allows user to query the local node's mempool for the following information:

    • Ask the node about the current mempool's capacity and sizes
    • Request the next transaction from the mempool's current list
    • Query if a particular transaction exists in the mempool

    Outside of this feature the team has been focused on responding to user requests (e.g exposing functions, types and implementing instances they need) and refactoring cardano-cli/cardano-api. The metric tx_submit_fail_count has been added to the submit api so users can track how many transactions have failed. Other improvements have been made:

    • Documentation improvments
    • Release 1.35.4 was merged & released
    • Exported various types from cardano-api that were requested by community members

    Completed

    cardano-cli

    cardano-api

    cardano-submit-api

    cardano-node

    cardano-testnet

    • None

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    · One min read
    Jordan Millar

    Node-Api-Cli Update

    2022-10-04 - 2022-10-18

    Executive Summary

    The majority of the team's time was spent between getting 1.34.4 ready, addressing various feature requests/issues/bugs that have arisen and refactoring components in the api and cli. The current refactoring is aimed at the long term goal of empowering users to be able to easily build applications similar to cardano-cli.

    Completed

    cardano-cli

    cardano-api

    cardano-node

    In Progress

    cardano-cli

    cardano-api

    cardano-node

    + + + + \ No newline at end of file diff --git a/tags/consensus/index.html b/tags/consensus/index.html new file mode 100644 index 00000000000..80adea95fc1 --- /dev/null +++ b/tags/consensus/index.html @@ -0,0 +1,36 @@ + + + + + +32 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    32 posts tagged with "consensus"

    View All Tags

    · One min read
    Damian Nadales

    High level summary

    The Consensus team implemented and tested a patch that does not propagate future headers. +It is under review, and we expect it can be released in the next Cardano node version. +On the UTxO-HD front, we finished prototyping the LedgerDB and BackingStore redesign, which is required for the LSM-tree integration and might help us implement a more resource efficient in-memory backend. +With this prototype finished we can start integrating the rest of the code. +We investigated the unexpected performance degradation observed when acquiring the block context. +We also released Cardano node 8.7.0 and moved tree-diff outside cardano-ledger libraries.

    · 2 min read
    Damian Nadales

    High level summary

    Over the last two weeks, we managed to run a UTxO-HD capable node in legacy mode, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does). +This legacy mode could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not. +However, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter. +On the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node. +Therefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.

    On the Genesis front, we reviewed the peer simulator for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.

    We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.

    Javier Sagredo continues his cycle as release engineer, and he is working on version 8.7 of Cardano node.

    · One min read
    Damian Nadales

    High level summary

    This week the Consensus team made progress on two fronts: the question of survivable eclipse duration, which is part of our work supporting Genesis delivery, and how to improve the handling of blocks from the future. +Regarding the UTxO-HD branch, we managed to run a node with legacy blocks, which is syncing with mainnet, up to including Alonzo. +We also investigated a regression in mempool snapshotting, which was ultimately solved by a Ledger update, and will be fixed in the upcoming Node 8.6 release.

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks the Consensus team received additional benchmark results for the UTxO-HD feature that show the resource usage for the in-memory backend is not satisfactory for a mainnet release, and we need to wait on the implementation of a new infrastructure to benchmark the LMDB backend (not likely to happen before next year). While we wait on this, we are evaluating the feasibility of making the UTxO-HD feature switchable, which will enable us to release it as an experimental feature. On the Genesis front we produced the first draft for a Survivable Eclipse Duration Model. We released version 8.5.0 of Cardano node, resumed work on subpar handling of blocks from the future, and improved our tracing system to assist problem troubleshooting in the node.

    UTxO-HD

    • The Plutus workload benchmark for the in-memory backend showed no regressions for the metrics of interest, but it does show an increase in resource usage.
    • We got additional ad-hoc measurements on memory UTxO-HD consumption. The memory usage of the in-memory backend is not satisfactory for a release. The memory usage of the LMDB backend is considerably lower, but we need to see how much lower we can bring it by running a node whose memory is constrained to 8GB.
    • We resumed work on an alternative solution that will make the UTxO-HD switchable. This will enable us to keep the baseline performance by totally disabling UTxO-HD, while allowing users to experiment with the feature if they wish to do so.

    Genesis

    • We produced the first draft for a Survivable Eclipse Duration Model (422).

    Support

    • Esgen finished his cycle as release engineer. Node 8.5.0 has been released.
    • We resumed work on the subpar handling of block from the future (4251).
    • We prepared the integration of new tracing events for the next node release. These tracing events will help debugging potential issues in the node (such as the previously mentioned issue).

    · 2 min read
    Damian Nadales

    High level summary

    The value-only workload benchmarks showed that the mempool forging regression observed in the UTxO-HD branch was fixed by the latest patch. In spite of the higher resource demands, for the metrics of interest (forging, peer-propagation, end-to-end propagation) we see no regression when using the UTxO-HD version of Cardano node, with the in-memory backend.

    On the Genesis front the Researchers continue reviewing different aspects of the design, in particular the argument that the Genesis rule will select the Cardano historical chain. +We also merged a fix for the Babbage to Conway transition, and released a new version of Consensus.

    Genesis

    • We elicited review from the Researchers on a final draft of the argument that the Genesis rule will select the Cardano historical chain (392).

    Support

    • We merged a minimal patch that fixes parameter update bug during the Babbage to Conway transition (366).
    • We enabled richer tracers in cardano-node that can be useful in future debugging (384).
    • Esgen continues with his release engineer activities, and created a new Consensus release.

    Fostering collaboration

    • We merged a new section into our documentation that explains the existing hard-fork combinator (HFC) interface and its complexities, which are relate do why the Babagge to Conway transition surprised us in this way. This explanation is step one towards improving the HFC interface (369).
    + + + + \ No newline at end of file diff --git a/tags/consensus/page/2/index.html b/tags/consensus/page/2/index.html new file mode 100644 index 00000000000..1a872979f61 --- /dev/null +++ b/tags/consensus/page/2/index.html @@ -0,0 +1,35 @@ + + + + + +32 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    32 posts tagged with "consensus"

    View All Tags

    · 2 min read
    Damian Nadales

    High level summary

    We have a proposed fix for the mempool forging regression observed in the UTxO-HD branch. We need to confirm this by running system level benchmarks. +We are still working on a fall back mechanism for keeping the baseline performance of Cardano node, if the performance of the UTxO-HD is not enough. +On the Genesis front, we confirmed with the researchers that the proposed Genesis design is satisfactory for the historical Cardano chain. +We also have a proposed fix for the wrong protocol version bug, found in the Sanchonet, after transitioning to Conway.

    UTxO-HD

    • We optimized the mempool revalidation process, which in turn ought to solve the regression observed during system-level benchmarks in the in-memory version (349). System level benchmark results are pending.
    • Regarding the workaround to keep the node's baseline performance if that of the in-memory backend turns out not to be enough for our stakeholders (344), we are still expanding the legacy block package such that we could at some point run the node with a legacy Cardano block. There are some loose ends to wrap up before we can begin the first test run.
    • We also brought the UTxO-HD branch up to date with node version 8.4.0.

    Genesis

    • We finished the discussion with the Researchers on how to argue that the proposed Genesis design is satisfactory for the existing historical Cardano chain. +We are now drafting the final self-contained argument. (4157)

    Support

    • We debugged a bad parameter update on the Babbage to Conway transition in the SanchoNet testnet (339). +A superficial patch is within reach and we are in the process of reviewing the PRs related to this fix (340, 354, and 355) +However we are investigating a more principled redesign of the epoch transition logic, which required us to revisit the existing interfaces of the ConsensusProtocol type class and the HardForkBlock combinator (345 and 346). This is important to prevent these kind of errors in the future. This is an overdue step in the process of taking full ownership of the HFC: reconsidering original HFC design decisions for which we now have much more context, a few years later.

    · 3 min read
    Damian Nadales

    High level summary

    We were able to successfully run the system-level benchmarks for the UTxO-HD implementation, for the first time. There was an important regression in block forging performance that will have to be addressed before UTxO-HD is released. We also revisited the implementation of our query processing logic, which was needed to address the performance regression found in the query-by-address command. The preliminary performance results show that now the performance of this query is on-par with the Cardano baseline version, but we need further confirmation. +On the Genesis front, we presented the grinding-aware safety argument for the proposed historical Cardano Genesis windows to the IOG Researchers. +The Consensus release engineer finished his rotation: version 8.3.0-pre of cardano-node is releasing 2023 September 5.

    UTxO-HD

    • We ran the first successful system-level benchmarks for UTxO-HD (see #203) using the in-memory backend.
      • We observed a factor 12 regression in the forging performance, which we will have to address. There are strong indications that the regression is due to the backing store accesses that take place when taking a mempool snapshot.
      • After the mempool regression is fixed the benchmarks need to be ran again.
      • System-level UTxO-HD benchmarks with the LMDB are still pending.
    • UTxO-HD will eventually be necessary due to the growth of the UTxO set and other ledger state structures that live in memory at the moment. However, we are trying a strategy by which we could preserve the baseline performance of the node, in case SPOs and other node users are not ready to migrate yet (see #344).
    • We implemented a new way of processing queries at the hard-fork block level, which resolves the performance regression observed in GetUTxOByAddress (see this comment). Preliminary results are promising.
    • Regarding the roll out plan, UTxO-HD requires a significant change in the Consensus codebase. Even though we might be able to hide any potential performance impact in the node by keeping all data in memory (#344), the Consensus component was significantly changed, so we might have to postpone releasing this feature to mitigate any risks of conflicting with the implementation of CIP-1694 and release of Conway.

    Tech debt

    • We added tests that Consensus emits valid CBOR (#3099). This helped us detect a couple of serialization bugs. The tests still need to be merged into the main branch (#323).

    Support

    • Nick Frisby finished his release engineer rotation; cardano-node 8.3.0-pre is releasing 2023 September 5.
    • We helped to investigate a protocol version bug in Sanchonet (see #3491).
    • We started to implement the Network interface for bootstrap peer functionality, from which Genesis will benefit as well (see #91.

    · 2 min read
    Damian Nadales

    High level summary

    On the UTxO-HD front we reached another important milestone, where we handed over the implementation for benchmarking and testing. We are working on addressing the first issues that were found during the integration tests. +On the Genesis front we are finalizing the argument that a checkpoint is not necessary for the initial release, including supporting to support said argument. We are also working on the new node release, and several improvements to our code-base.

    UTxO-HD

    • We addressed the issues that came from the benchmarking and testing phase (see #314).
      • We fixed the operational-certificate update exception (#305).

    Tech debt

    • We elaborated an inventory of the symbols used by downstream clients in an effort to clearly define the Consensus API, which will help managing changes and their impact to the downstream clients (see this branch).
    • We extracted the SOP modules to a separate package as part of our effort to reduce the Consensus API surface area (see this branch).
    • We took the first step towards improving how the Cardano hard-fork block is instantiated when running a node (see #275).
    • We decreased the flakiness for our test suite (#284).
    • We incorporated and merged the pull-request on query versioning (#273).
    • We started working on new performance-based regression tests for mempool operations.

    Support

    • Nick Frisby continues with his engineer responsibilities. Notably getting the Consensus release out for node pre-release 8.3. Nick also began integrating it into downstream branches (cardano{-api,-cli,-node}). The Node team has now taken over, since Nick had progressed up to the point where they needed to start making new design decisions. Related PRs:

    · 2 min read
    Damian Nadales

    High level summary

    This week the Consensus team worked on integrating the latest node release into the UTxO HD branch. Our ad-hoc benchmarks in which we sync a node from scratch showed that the LMDB backend uses around 8GB of memory. We also released new versions of fs-sim and fs-api, and released strict-checked-vars.

    UTxO-HD

    • Rebased UTxO-HD on top of node 8.2 (issue)
    • Address new Maybe translations for UTxOs in Conway 1.6. (PR).
    • Performed ad-hoc benchmarking syncs with both implementations. The LMDB backend uses around 8GB of memory.
    • Fixed an infinite loop on the mempool tracing code that was preventing the node from shutting down gracefully.
    • Fixed an infinite loop on the ledger state query for traversing queries that prevented the node from running QueryUTxOByAddress (PR).
    • Measured the speed of QueryUTxOByAddress under different queryBatchSize values. There is a significant performance degradation for these queries when using the UTxO-HD version. Using the mainnet UTxO set at slot 90 million, querying an address took 40 seconds using the in-memory backend and 90 seconds using the LMDB backend, whereas the baseline took 7 seconds. We need to investigate if we can improve this situation or whether an external service that runs alongside the node is a better solution.
    • Refactored and implemented ledgertable-related classes for the general HardforkBlock.

    Genesis

    • Frisby and Esgen continue to engage with the Researchers on grinding against the Genesis design.

    Fostering collaboration

    • Drafted a document explaining versioning of local state queries #273.

    Support

    • Frisby is the release engineer this cycle.
    • Successfully created work-in-progress ouroboros-consensus and cardano-api commits that integrate the 2023 Aug 7 tip of cardano-ledger. This will require a release of ouroboros-consensus, which hasn't happened yet.

    · One min read
    Damian Nadales

    High level summary

    The db-sync team confirmed that the adaptor module the Consensus team provided for UTxO-HD integration, shows no performance degradation. Other clients who wish to integrate with UTxO-HD without using a on-disk storage could use that same approach for now. +We also focused on completing tracing support for UTxO-HD in cardano-node. +Currently we are working on UTxO-HD documentation, both for downstream consumers and for the general public; and generalizing the implementation further.

    The team working on Genesis decided on a Genesis-motivated change of the epoch structure with the researchers, wrote a self-contained description of the statistical model for historical Genesis windows and eclipse durations, and merged two small improvements to the ChainSync client as part of the onboarding efforts for the team that will implement Genesis.

    The Consensus team also investigated an issue on sanchonet (the Conway testnet) manifesting in long syncing pauses; identified a ledger bug which was promptly fixed by the Ledger team.

    Genesis liaising

    Improvements to the ChainSync client:

    + + + + \ No newline at end of file diff --git a/tags/consensus/page/3/index.html b/tags/consensus/page/3/index.html new file mode 100644 index 00000000000..5b061f8821b --- /dev/null +++ b/tags/consensus/page/3/index.html @@ -0,0 +1,27 @@ + + + + + +32 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    32 posts tagged with "consensus"

    View All Tags

    · One min read
    Damian Nadales

    High level summary

    This week the team working on UTxO-HD discovered a space leak in the peer metrics code. This was communicated to the Networking team who has a proposed fix. The ad-hoc benchmarks that the team ran using a local immutable DB server showed good memory and time performance. We still have to check the performance on a memory constrained machine.

    The team working on the Genesis design started onboarding the team of engineers that will implement the new Genesis protocol. This team is also finalizing the statistical model for historical Genesis feasibility.

    On the support front, the team drafted an information exchange requirement (IER) for the Networking team to safely and efficiently control peer load.

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks the team working on the Genesis implementation continued to engage with the researchers, which resulted in various simplifications of the correctness argument for the historical Genesis window. They also decided on an approach for a syncing node to decide that it is (no longer) caught up. This functionality was requested by the networking team.

    The team working on the UTxO-HD implementation ran ad-hoc benchmarks that showed performance issues, which are being investigated. They also merged several improvements required for the first UTxO-HD release, and added a package for easing integration with other downstream components.

    Regarding our support activities, we integrated the latest Ledger changes into Consensus in preparation for release 8.2 of node.

    Genesis

    • We continued to engage with the researchers on our probabilistic model for historical Genesis window, resulting in various simplifications that make the correctness argument more clear while not being excessively conservative.

    • We decided on an approach of how to implement functionality requested by the Networking team; namely, how a syncing node can safely conclude that it is (no longer) caught up. Certain parameters are still subject to discussion with the researchers, and we have still have to agree on a concrete API for this functionality with the Networking team.

    UTxO-HD

    • We merged the last of the PRs that were part of UTxO-HD improvements for version 0.1: expose UTxO-HD configuration options in the node, refactor ledger tables, and expose a method of computing the UTxO set size.
    • We added a new "legacy" cardano block in a new ouroboros-consensus-cardano-legacy-block package that should ease the transition for some downstream packages to UTxO-HD, like db-sync. This is really only useful for downstream packages that use the parts of consensus that don't involve the storage components, in which case we can largely ignore ledger tables. Ignoring ledger tables could also make functionality like block (re-)application more performant for the legacy Cardano block as compared to the actual (UTxO-HD compatible) Cardano block.
    • We performed ad-hoc benchmarks of the UTxO-HD implementation, observing a regression in sync speed in the LMDB implementation as well as a regression in memory usage on the in-memory implementation. We are investigating this.

    · 2 min read
    Damian Nadales

    High level summary

    The Consensus team had a very productive meeting with IOG Researchers. We now seem to be in alignment in regards to a strong argument that the Byron and TPraos eras do not need to be checkpointed for an MVP. +There is one remaining question (which applies also to the Praos era): how to assess the threat that short forks pose against historical windows that underperformed? We are currently collaborating on that. We also drafted an argument that the updated "Limit on Patience" timeout sufficiently bounds how long the adversary can inflate a victim's overall sync time.

    On the UTxO-HD front, the prototype branch was rebased on top of the latest ouroboros-consensus main branch and integrated on top of cardano-node 8.1.1-pre. As a result, the mempool fairness fix that was released recently is now integrated into UTxO-HD. +We managed to run a node again with UTxO-HD enabled. +We also identified a race condition in the UTxO-HD prototype and fixed it. In addition, we started performing UTxO-HD ad-hoc benchmarks for cardano-node, which uncovered a performance regression on the Network component when using GHC-9.2/9.4. This is being addressed.

    Regarding our support activities, we Released fs-sim-0.2.0.0 and are in the process of preparing the 8.2 release of cardano-node. We also identified and started fixing incorrectly-unevaluated thunks in preparation for enabling CI NoThunks tests.

    · One min read
    Damian Nadales

    High level summary

    During the Past two weeks we drafted an implementation path for concluding that a node is caught up, which will also be used to back Network's ledger-peer selection (see this issue). We also carried a thorough investigation into the exact feasibility of applying the Genesis rule to certain historical parts of the chain.

    On the UTxO-HD front, we are working on improving the ledger tables design and wrapping up the improved DB locking mechanism. We also released packages that are required not only by UTxO-HD but are already used in cardano.

    UTxO-HD

    • We have a plan for making the ledger tables in UTxO-HD more ergonomic by mimicking SOP classes like HPure and HAp . In short, we implement generalised versions of important classes like Applicative and Traversable.

    Support

    • fs-sim-0.1.0.2 and fs-api-0.1.0.2 were released, which makes them now compatible with GHC up to 9.6.
    • ouroboros-consensus-0.7.0.0 was released for cardano-node 8.1, including query serialization fixes for backwards compatibility.

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks we brought further improvements into the Genesis design in collaboration with the IO Research and Networking teams. These improvements concern the Genesis selection rule, candidate rule, and root peers usage. See the [Genesis][#genesis] section for more details.

    Regarding our UTxO-HD prototype, during the past two weeks we put together a pull-request that improves the DB locking mechanism, started porting the mempool fairness improvements from our main branch, and integrated a new open source library (that implements cancellative monoids) that allowed us to simplify our code and get a small performance gain.

    We improved our tooling by releasing an immutable DB server, which can be used for testing and benchmarking purposes, and a db-truncater program, which can be used in disaster recovery and benchmarking scenarios.

    Genesis

    The consensus team working on Genesis:

    • Improved the genesis selection rule as a result of our interaction with IO Research.
    • Studied how the hard-fork combinator handles forecasting at era transitions, and improved our documentation.
    • Determined that the simplest candidate rule we had considered will work for the Genesis window at era transitions, at least for the MVP.
    • Elaborated concrete proposal for the Genesis State Machine.
    • Met with the Networking Team and advised/co-designed how to implement the stop gap usage of public trusted root peers before Genesis is released (it's similar to the Genesis State Machine).

    The team is currently re-analyzing the Limit on Patience, which can be less aggressive now that we've re-introduced the Genesis State Machine.

    + + + + \ No newline at end of file diff --git a/tags/consensus/page/4/index.html b/tags/consensus/page/4/index.html new file mode 100644 index 00000000000..2983c05d03b --- /dev/null +++ b/tags/consensus/page/4/index.html @@ -0,0 +1,105 @@ + + + + + +32 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    32 posts tagged with "consensus"

    View All Tags

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks we made some important progress in the Genesis design. +It seems the BlockFetch logic need not be modified for Genesis, although this +needs to be confirmed. We started a DoS mitigation handbook and updated our +conceptual component diagram to guide the Genesis design. We engaged with the +IOG researchers to work on the Limit on Patience attack vector, work in this +area is still ongoing. We sketched a design to decouple the CPU load of the node +from its responsiveness to the socket. Finally, we discussed with Networking our +approach to lower the performance impact of the BlockFetch decision logic, and +got green light from them.

    We migrated the consensus code to a new +repository, splitting +it from the ouroboros-network repository, and released version 0.6 of +Consensus.

    We also merged the mempool fairness improvement to main branch.

    Another significant enhancement to our documentation was the addition of an +explanation of the hardfork combinator forecast horizon.

    See the sections below for more details.

    Genesis

    We reviewed the BlockFetch design documentation, and added some source-code +comments that emphasize certain properties of the decisions the BlockFetch +logic makes that are helping us confirm that Genesis does not require any +changes to BlockFetch. We are waiting on input from our former system +architect to verify this.

    We migrated and updated the conceptual component diagram in the ouroboros-consensus +repository which helps us situate the Genesis design and argument.

    We engaged with the IOG researchers about the Genesis design. We sketched out a +way to address the concern that the Limit on Patiente (LoP) attack vector duty +cycle is indeed low, but it's still non-trivial to ultimately conclude it's +sufficiently low.

    We also sketched a design to decouple the CPU load of the node from its +responsiveness to the socket, since the LoP is a relatively tight timeout, and +node performance bugs inducing seconds-worth of latency are unfortunately +familiar phenomena.

    Fostering collaboration

    We added an +explanation of +a question that we had to explain many times about the exact behavior of the +hardfork combinator forecast horizon.

    · One min read
    Damian Nadales

    High level summary

    This week the consensus team continued working on the improved DB lock mechanism +for UTxO-HD, and modifications to the mempool benchmarks that this prototype +requires.

    On the Genesis front we validated that the fragment size calculation in +BlockFetch is a major performance sink for ChainSync Jumping. By removing it +we will get performance that is acceptably close to that of the baseline. We +also started investigating a performance fix that does not alter the existing +baseline behavior too much. In addition we reviewed our Genesis attack vector +calculations.

    On the support front we released Consensus 0.4, and we are working on improving +our release process, to support the Cardano-wide efforts in this area. We also +performed an analysis on the number of file descriptors that consensus use. This +information can be used by the node operators to check if the number of file +descriptors they want to support are enough.

    · One min read
    Damian Nadales

    High level summary

    This week the consensus team finished the UTxO-HD prototype refactoring. We are +now working on improving the DB lock mechanism to improve performance. We also +introduced several improvements to the file system abstraction and simulation +layer (fs-sim), which culminated in the release of fs-sim-0.1.0.0 and +fs-api-0.1.0.0 to CHaP.

    On the Genesis front we distributed the updated Genesis design document, +soliciting feedback from Networking Team and IOG Researchers. We also opened up +a PR for the adversarial leader schedule QuickCheck generator, which is being +reviewed.

    On the support front, we got a new Consensus version that can use different +fundamental VRF crypto primitives for Babbage and Conway eras.

    On the tech debt front we fixed an bug in the followers logic, which was +discovered by our QuickCheck property tests.

    · One min read
    Damian Nadales

    High level summary

    This week the consensus team continued working on the refactoring of the UTxO HD +prototype, and design and testing of Genesis. We also extracted the fs-sim +package, which provides a file-system abstraction layer that can be used for +testing and simulation. This makes the Consensus code base smaller, while +providing a package that the community can reuse and contribute to. We also +fixed a failing property test related to iterators. We are also working on +mempool and VRF improvements.

    Low-level details

    · 3 min read
    Damian Nadales

    High level summary

    The Consensus team continued working on refactoring and improving the UTxO-HD +prototype, and introducing improvements to the lmdb related packages. In +particular we identified an opportunity to gain performance by handling locks in +a more optimal way.

    On the Genesis front, we sketched a mitigation for an issue that PNSol and +Researchers caught. We also came op with a road map for not only testing the +Genesis prototypes, but also for enriching the tests we already have.

    Regarding technical debt, next to some minor improvements, we created +component-level micro-benchmarks for adding transactions to the mempool. The +results of these benchmarks will be published in the ouroboros-consensus web +page.

    We also finished moving the Consensus documentation to the ouroboros-consensus +repository, released ouroboros-consensus 0.3.0.0, and reduced the time +GitHub actions take in ouroboros-network.

    Workstreams

    UTxO HD Prototype

    We continued working on refactoring and improving the UTxO-HD prototype. As a +result of the first round of sytem-level benchmarks, we identified an +opportunity to optimise the way we handle locks to improve performance +(#4393).

    Also, we introduced several improvements to the lmdb related packages:

    Genesis

    We sketched out a mitigation of the issue that PNSol and Researchers caught in +the Genesis design.

    We came up with a road map for testing the Genesis prototypes, including early +milestones that are applicable to today's master branch, ie tests that are +useful before Genesis, and that will be nicely enriched when we do add Genesis.

    We developed the aforementioned tests, specifically a QuickCheck generator for +the Honest leader schedule and one as-aggressive-as-possible Adversarial +leader schedule that together satisfy the Praos properties that the Consensus +design takes as invariants.

    We investigated why the improved ChainDB queueing implementation behaves +differently in the baseline compared to the prototype, and we are close to +having a full picture of how the Consensus components interact during bulk sync.

    Technical debt

    We created component-level micro-benchmarks for adding transactions +to the mempool. We plan on extending this to more mempool actions and different +types of blocks. We store the benchmark data to make it available +to the GitHub action that publishes the benchmarks results.

    Other minor improvements include:

    • Removal of Test.Util.Classify in favour of Test.StateMachine.Labelling.
    • Addition of -Wunused-packages to the default ghc-options for Consensus +packages.

    Fostering collaboration

    We finished moving the Consensus documentation from +ouroboros-network to ouroboros-consensus, in preparation for +migrating the code to the latter repository.

    Support

    We released ouroboros-consensus 0.3.0.0.

    We reduced the load in the ouroboros-network GitHub actions, +thereby reducing the time CI jobs take.

    + + + + \ No newline at end of file diff --git a/tags/consensus/page/5/index.html b/tags/consensus/page/5/index.html new file mode 100644 index 00000000000..e9df599930d --- /dev/null +++ b/tags/consensus/page/5/index.html @@ -0,0 +1,176 @@ + + + + + +32 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    32 posts tagged with "consensus"

    View All Tags

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks we got the results from the system level benchmarks +for UTxO HD. They showed a substantial performance regression, so we spent some +time analyzing the results. We found out the frequency at which ledger snapshots +were taken was too high, so we requested the benchmarking team a new run with a +more realistic snapshotting policy. We continued refactoring and improving the +prototype, and we released UTxO-HD related packages to CHaP.

    We met with IOG researchers and networking specialists to discuss the Genesis +design, which was well received. We continued working on testing and +benchmarking different Genesis prototypes.

    We are also working on solving a test failure related to iterators. This work +derived in several improvements such as better documentation, a framework for +writing unit (and regression) tests, and the possibility of debugging +QuickCheck counter examples in the REPL.

    Finally, we released ouroboros-consensus 0.2.0.0 and +ouroboros-consensus-cardano 0.3.0.0 to CHaP

    Workstreams

    UTxO HD Prototype

    We got the results of the first system level benchmarks for UTxO HD. They seemed +to indicate a significant regression in performance. After looking into the +benchmark logs we found that the benchmark runs took ledger state snapshots too +often, due to the default snapshotting policy depending on k, and k being so +small in the benchmark runs. Therefore, the next step is to re-run the +benchmarks with a snapshotting policy that more closely resembles the one from +mainnet.

    At the same time, we continued refactoring and cleaning up the prototype.

    Also, we prepared the anti-diff packages (fingertree-rm, diff-containers, +simple-semigroupoids) and the lmdb related packages (cardano-lmdb and +cardano-lmdb-simple) to CHaP.

    Genesis

    The Genesis design was presented to the IOG researchers and Peter Thompson from +NSol. It was well received. They pointed out one blindspot, but we think it'll +be relatively simple to mitigate.

    In parallel, we continued developing test and benchmarks for the Genesis +prototypes. I particular we tested and implemented a potential fix for +increased ChainDB dequeue timings, which partly +behaved as we expected, but still needs further investigation. Also we obtained +new benchmarking data for the prototype.

    Technical debt

    Related to #4183, we developed a DSL for specifying +ChainDB unit tests. This will allow us to better understand the +counter-examples returned by QuickCheck tests, and to write regression +tests for them. Also, we added a module to enable +QuickCheck counter-examples to be run on the REPL, allowing for faster debugging +feedback. Also, we improved the documentation related to followers +(#4372).

    We are also working on a design for optimizing the way we handle blocks from the +future.

    Support

    We released ouroboros-consensus 0.2.0.0 and ouroboros-consensus-cardano +0.3.0.0 to CHaP. Remember that we decided to split the packages related to +Consensus into two bundles, one with the core functionality, Cardano-agnostic +code, and another bundle with instantiations specific to Cardano.

    · 2 min read
    Damian Nadales

    High level summary

    We continue refactoring the UTxO HD prototype while we wait for the system level +benchmarks. We have created a new repository that contains the anti-diff +packages used in this prototype.

    On the Genesis front, we are preparing another meeting with the researchers to +audit the implementation design, and we continued working on basic tests and +simplifications.

    During the past two weeks we also introduced two new tools. One for dumping CBOR +encoded blocks to JSON, and another to serve a local immutable DB.

    Workstreams

    UTxO HD Prototype

    We are in the process of refactoring the UTxO HD prototype, while we wait for +the system level benchmarks to confirm if the performance of the prototype is +satisfactory.

    We also set up a repository for the anti-diff package, which +required us to refactor the code, write documentation, and prepare a release to +CHaP.

    Genesis

    We worked on basic tests for the Limit on Eagerness property of +Genesis. We also introduced further robustness and simplifications in the +Genesis Density governor. Finally, we developed a presentation to engage again +with the researchers on our Genesis implementation design.

    Technical debt

    Fostering collaboration

    We are in the process of polishing the ouroboros-consensus +documentation site, which we will use a the entry point for Consensus related +documentation. The first version will not be complete, but we plan on +systematically improving it.

    Support

    We added a tool to ouroboros-consensus-cardano-tools which allows +to dump the Chain DB blocks or any given CBOR encoded blocks as JSON.

    We also added another tool that serves an existing immutable DB via +BlockFetch and ChainSync. This tool can help in assisting our local benchmarking +efforts (for instance Genesis' ChainSync jumping prototype).

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks, the consensus team finished the testing activities +around the UTxO-HD prototype. This is a very important milestone which will +enable us to run system-level tests and benchmarks, as well as start refactoring +and cleaning the prototype. Regarding our Genesis workstream, we elaborated a +roadmap that gives an indication of the remaining work. We also continued our +work on benchmarking chain-sync-jumping. We also continued working on improving +the way we handle blocks from the future, and advancing the integration of the +new VRF and KES crypto.

    Workstreams

    UTxO HD Prototype

    As the prototype is nearing its completion, it was important to have enough +confidence that we will be able to move additional parts of the ledger state +onto disk. We worked together with the Ledger team to elaborate a +sketch on how the UTxO-HD design would accommodate the migration of +additional data from memory to disk. This gave us enough confidence that the +current architecture will be extensible in the future.

    On the testing front, we added property-based tests for the UTxO-HD +type classes.

    We also enabled disabled components, and addressed several +technical debt issues:

    • Implement splitSized anti-diff split (#4269), and integrate it +into consensus (#4273).
    • Renaming of peekVal to peekMDBVal (#7).

    We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We +found a race condition in the LMDB backing store, which we fixed. +After the fix we were able to successfully run these benchmarks. The results +were published by this pull request.

    We used our db-analyser tool to benchmark the cost of reading keys and +flushing values to disk. The following plot shows the duration of these disk +operation in relation to the main ledger operations, where we can see that the +cost of the former are comparatively low. The spike at the beginning of the +graph is when, at the start of the Shelley era, the entire UTxO set is flushed +to disk.

    UTxO-HD read and flush benchmarks

    After months of hard work adding tests for the prototype, we are ready to run +end-to-end tests on the node, and system level benchmarks. This signals a very +important milestone for the UTxO-HD workstream 🎉.

    Genesis

    We elaborated a high-level decomposition of the remaining +work for Genesis. We also continued benchmarking the chain-sync-jumping +happy-path.

    Technical debt

    We continued working on improving the way we handle blocks from the future.

    Support

    We completed the mapping of Crypto to HeaderCrypto and body Crypto. +HeaderCrypto is moved to cardano-protocol-tpraos. We created a draft pull +request to facilitate compiling consensus.

    · 3 min read
    Damian Nadales

    High level summary

    The consensus team is resuming its activities after the Christmas break. During +these weeks we focused on cleaning and benchmarking the UTxO-HD prototype, and +discussing with the Ledger team the changes that might be required for the next +iterations. The pull request that adds the Conway era is waiting for a second +review round and we hope to merge it soon. On the technical debt side we are +looking into a property-test failure found in the iterators. We are +investigating if this is an error in the model or in the implementation. We also +improved the documentation of our testing code.

    Workstreams

    UTxO HD Prototype

    We worked with the Ledger team to start preparing the next versions of UTxO-HD. +The Ledger team is concerned that for the remaining maps we might need the full +ledger state on epoch boundaries. Since the main consumer of the ledger rules is +Consensus, the code that requires access to a full state could be moved from the +ledger to some Ledger-Consensus bridge. Eg. the traversal of rewards could take +place in such bridge, instead of querying the ledger for the values that are +required in the epoch-transition computations.

    We relocated some UTxO-HD definitions, in preparation for merging +the prototype into master.

    We also completed updated local benchmarks comparing the replay time and memory +consumption of:

    • the baseline node (f2fc76ef45647275c98634da1718290b976ff364)
    • the UTxO-HD node with the in-memory backend
    • the UTxO-HD node with the LMDB backend

    The following plot shows the results: we can see that the LMDB node barely +reaches 8GB of memory, but it takes 1.78 times longer to replay the chain. The +in-memory backend is about 30 minutes faster, but still slower than the baseline +version. We are aware of this phenomenon and it is inherent to the problem of +maintaining sequences of differences of the last k ledger states that allows +us to perform rollback and roll-forward. We are in the process of measuring +syncing from scratch times.

    We also added StaticEither accessors that helped us to simplify +the UTxO-HD prototype.

    New Conway era

    We incorporated the feedback of the pull request, and rebased this +branch on top of master. The PR is pending a second review round and we hope +to merge this soon.

    Technical debt

    We are investigating a property-testing failure involving +iterators. Solving this requires understanding the expected behavior of +iterators in the counterexample found by QuickCheck to determine if the error +is in the model or in the implementation.

    Fostering collaboration

    We moved the contents of docs/Testing.md closer to the code, so that the +explanations about the tests are easier to find in the relevant modules, and the +documentation is easier to keep up to date.

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks, the Consensus team finalized the QSM tests for the +backing store and Mempool on the UTxO-HD branch with important discoveries +regarding parallel QSM testing. We also worked with the Ledger team to envisage +the modifications that are required in Ledger and Consensus to accommodate the +changes in the crypto VRF and KES. The db-analyser now supports bechmarking +the ledger operations, which will allow us to identify, debug, and profile +potential performance problems. We drafted a document that defines how to manage +the versions of Consensus-related packages. The top level documentation of +ouroboros-network now features a description of the consensus components and +provides a hyperlinked map to the modules documentation.

    Workstreams

    UTxO HD prototype

    Whereas we had passing sequential state-machine tests for the mempool, the +parallel case proved to be more challenging than we thought. The operation of +adding a list of transactions to the mempool is not atomic and, as a result, +when adding a list of transactions, transactions from other processes can be +added in between. The mempool implementation handles this correctly, however +this required us to redesign the parallel model we had to take +the lack of atomicity into account.

    Backing store property tests

    We finished refactoring the backing store property tests. The second review +round is ongoing.

    LSM tree implementation

    We are working on benchmarking (in terms of time and number of IO operations) +fetching/looking up data from disk.

    Genesis

    We worked on the design of a mechanism to prevent a DoS attack on our Genesis +design related to rollbacks. This was arguably the biggest outstanding question.

    During the discussions around Genesis, we noticed a design boundary that nicely +delineates a fundamental component. We almost have a full Haskell prototype of +it. It will be very nicely self-contained, perhaps even usable in the ultimate +implementation!

    New VRF and KES crypto integration

    We collaborated with the Ledger team on preparing the ledger state and crypto +types to avoid huge allocation on the epoch boundary when changing aspects of +the crypto that will only manifest in headers, not in the ledger states.

    Technical debt

    We merged the pull-request that adds a support to db-analyser for +benchmarking ledger operations. This will allow us to identify, debug, and +profile potential performance problems. The benchmark focus on the main 5 ledger +operations that are involved in chain syncing, block forging, and block +validation, namely:

    1. Forecast.
    2. Header tick.
    3. Header application.
    4. Block tick.
    5. Block application.

    The following figure shows a plot of the benchmarking results for the first 65 +million blocks (approximately) of the Cardano chain. The thin yellow lines under +the x-axis show the epoch boundaries, whereas the thick yellow lines correspond +to the era transitions.

    As we can see in this figure, era and epoch boundaries require more computation +time. The ledger team are aware of this problem, and we are working to improve +this situation.

    Fostering collaboration

    We drafted a document motivating and defining how Consensus (and +possibly other core teams) will/should manage our package versions. This +pull-request garnered many great discussions from our team members and other +teams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et +al. We want to thank you all for your input, and we found this discussion very +enlightening!

    We merged the pull request that adds an overview of consensus to +the top level +documentation of +ouroboros-network. This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    + + + + \ No newline at end of file diff --git a/tags/consensus/page/6/index.html b/tags/consensus/page/6/index.html new file mode 100644 index 00000000000..5d1a6d24257 --- /dev/null +++ b/tags/consensus/page/6/index.html @@ -0,0 +1,234 @@ + + + + + +32 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    32 posts tagged with "consensus"

    View All Tags

    · 3 min read
    Damian Nadales

    High level summary

    During the past two weeks, the consensus team merged improvements to the monadic +cursor API that was needed to implement LMDB range reads, which is in turn +required for the implementation of the UTxO HD feature. We added tables to +several tests in for the UTxO HD feature, which increases our confidence in the +correctness of the prototype. The mempool property tests are close to being +completed. Also, we finished the LSM tree tuning algorithm.

    On the Genesis front we started simplifying the BlockFetch logic with +CSJ-specific workloads in mind.

    We are also documenting the Block Diffusion Pipelining feature, and added a +high-level overview of consensus to the top level documentation of +ouroboros-network.

    Workstreams

    UTxO HD prototype

    We merged the implementation of a monadic cursor API (#1)) which was +needed to solve a bug with LMDB range-reads. After this PR was merged, we focused on +bridging the gap between the lmdb-simple interface and consensus by facilitating +using lmdb-simple's cursor API without Serialise constraints (#3).

    We refactored the backing store property tests to use quickcheck-lockstep +(#4081).

    We added tables to the mock ledger in the UTxO-HD feature branch +(#4184). Every test that used to run with SimpleBlocks now uses +tables. This will enable us to exercise the UTxO HD mempool integration by +leveraging the existing mempool property-tests. The new state-machine +property-tests are still needed for testing the parallel behaviour of the +mempool.

    Our work on the mempool state-machine tests revealed the need for improvements +in the quickcheck-state-machine library. Parallel testing assumed that the +state machine did not have access to mutable references. However, the mempool +tests require the use of such mutable references for mocking the ledger +interface. As a result, our parallel tests were failing with rather obscure +messages. @Jasagredo submitted a pull request (#12) that allows for +new mutable references to be created at each run of the state machine.

    Backing store property tests

    LSM tree implementation

    We finished the LSM Tree tuning algorithm. We are currently tidying up the code +and gathering results (i.e., plots and their interpretation).

    CSJ prototype

    We started simplifying the BlockFetch logic with CSJ-specific workloads in mind.

    New VRF and KES crypto integration

    Started working on supporting new version of StandardCrypto which uses compact +KES and batched VRF (#4151).

    Technical debt

    We reviewed the existing state of the Block Diffusion Pipelining document. We +are now working on the "Implementation" section (#4020).

    Fostering collaboration

    We cleared up our understanding of the error dynamics of forecasting +(#4146 and #4174).

    We submitted a pull request that adds an overview of consensus to the top level +documentation of +ouroboros-network (#4197). This overview describes the consensus components and adds a +hyperlinked map to the modules documentation.

    https://github.com/input-output-hk/ouroboros-network/pull/4197

    · 6 min read
    Damian Nadales

    High-level summary

    During the past two weeks, the consensus team started documenting the +implementation of the UTxO HD feature and continued developing tests for it. As +part of our work on UTxO HD, we improved the Haskell support for LMDB. We also +spent time working on the LSM tree prototype, and designed a parameter tuning +algorithm for it. Regarding our work on Genesis, our investigation of the +"plateaus" pointed at the TICKF slowdown on era boundaries as culprit. This +led us to developing a caching strategy that will not only remove the +aforementioned "plateaus", but can help alleviating the growing block production +delay on epoch switch. We also helped reviewing the block forge credential +hotswap feature, which is intended for use in the adoption of P2P.

    We also worked on paying technical debt and fostering collaboration. In +particular, we improved the io-sim framework, which is crucial for testing and +simulating Cardano components. We also removed thunks that appeared on era +translations, and improved our diffusion pipelining feature. We are working on a +presentation for explaining Praos and Genesis.

    High-level status report

    • Finish the UTxO HD prototype: in progress.
      • We added documentation for this feature.
      • We developed the second version of the mempool tests.
      • We fixed benchmarks that were inflating the speedup we observed in the +anti-diff implementation of sequences of differences. Speedups are now in the +range of [3.33, 4.75], which remain significant.
      • We continued improving Haskell LMDB support.
      • We finished implementing a "parameter tuning algorithm" for the LSM tree +prototype. This enables us to run experiments to check the correctness of +the algorithm.
    • Genesis: in progress.
      • Work investigating the "plateaus" in the ChainSync jumping prototype +pointed to the TICKF slowdown on era boundaries as culprit.
    • Tech debt:
      • We improved the capabilities of our io-sim library, which is crucial for +testing and simulating Cardano components.
      • We removed thunks from epoch translations in the ledger.
      • We added Linux CI support for lmdb-simple.
      • We got pending diffusion pipelining improvements merged.
    • Fostering collaboration:
      • We are working on a explanation of Praos and Genesis protocols.
    • Support:
      • Investigation of CSJ "plateaus" led us to developing a caching strategy for +TICKF that will not only remove these "plateaus", but can help alleviating +the growing block production delay on epoch switch.
      • We reviewed the block forge credential hotswapping feature which is intended +for use in the adoption of P2P.

    Workstreams

    Finish the UTxO HD prototype

    We merged PR #4060, which adds a report documenting the UTxO HD +feature, and puts emphasis in explaining how the mempool works in combination +with UTxO HD.

    We opened a draft PR with the second iteration of the property tests for the +mempool (#4076).

    We fixed the Arbitrary instances for keys and values in DiffSeq benchmarks +(#4143). The problem was that we were testing with mostly small +values, which artificially boosted the performance gains we saw on benhcmarks. +Speedups are now in the range of [3.33, 4.75] across the different +configurations.

    Backing store property tests

    We focused on incorporating feedback on the monadic cursor API PR (#1). +This required us to make small tweaks to quickcheck-lockstep to test the new +API. We also updated the backing store property tests to use the new version of +the monadic cursor API.

    LSM tree implementation

    We worked on the LSM tree prototype. In particular: finished implementing a +"parameter tuning algorithm" that adapts the LSM tree design based on factors +like:

    • workload
    • machine specs,
    • and characteristics of the data being stored.

    We are now running experiments to gather results and cross-reference them with +existing experimental results from the LSM tree paper to see if the algorithm is +working correctly.

    Benchmarking the CSJ prototype

    We focused on investigating the "plateaus" in the ChainSync tip, which turned +out to be due to the TICKF bug which we previously were only aware of in the +context of the long forging times near epoch boundaries. For the most drastic +patch by @nfrisby to speed up TICKF, full sync is speeding up by 7%.

    The following plot shows that by caching the TICKF the ChainSync tip and the +VolatileDB tip progress at the same rate.

    The plot below shows the speedup observed by caching the TICKF rule wrt the +baseline.

    Technical debt

    After addressing the PR comments, we merged PR #16, which implements +the MonadCatch instance for STM. This extends the capability of our io-sim +library, which is crucial for testing and simulating Cardano components PR #16 +closed #1461. This new feature was published as version 0.4.0.0 +of io-sim.

    We continued with our work fixing the NoThunk errors required for enabling +nightly tests, with the help of TVarInvariant checks in strict-stm and +nothunks libraries. We proposed fixes in cardano-ledger that took care of +thunks that appeared in era translations (#3143). The fixes will be +integrated back into consensus when cardano-ledger approves and publish the +changes introduced in #3143.

    We added CI support for lmdb-simple (#2). We currently test the build on +a Linux environment only.

    We got pending diffusion pipelining PRs (#3857, #3860, +#3856) merged, after rebasing and addressing feedback.

    Fostering collaboration

    @nfrisby finished a visualisation tool and outlined scripts for the Praos and +Genesis explanation presentations. The idea is to produce a video that gives an +overview of these protocols.

    Support

    We started working on caching the computation of the TICKF rule +(#4054), since this was blocking our benchmarking work for +Genesis. In addition, this issue has the Cardano community quite +concerned, so we are hoping the work done in caching the +computation of the TICKF rule can help alleviating the growing block +production delay on epoch switch.

    We reviewed the block forge credential hotswapping PR #3800 from the +networking team, which is intended for use in the adoption of P2P.

    · 4 min read
    Damian Nadales

    High-level summary

    During the past two weeks, the consensus team continued its work on testing the +UTxO HD prototype. We completed the era-transition and backing store tests, and +the mempool tests are advancing at a steady pace. Regarding our work in the +Genesis design, we continued our collaboration with the research and networking +teams, and we continue investigating strategies for making the chain-sync +jumping prototype faster.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We worked on state-machine tests for the mempool, and spotted potential bugs +in the implementation. Investigation is ongoing.
      • We have a set of property tests for the backing store. We still need to +incorporate the improvements to the LMDB cursor API that these tests +made possible.
      • We merged the era-transition tests PR.
    • Genesis: on track.
      • Design work around Genesis continues in collaboration with researchers and +the networking team.
      • We continued trying to improve the performance of the chain-sync jumping +prototype. We gained additional insight on which parameters to tweak next. +In spite of the baseline still being faster, the current prototype already +achieves a significant speedup when compared to the naive approach of simply +running full chain-sync with all peers.
    • Tech debt: on track.
      • We clarified a common source of confusion around VRF tie-breaking and +cross-era chain selection.

    Workstreams

    Finish the UTxO HD prototype

    We continued working on property-tests for the UTxO HD prototype. In particular +we merged the era-transition tests +PR.

    Backing store property tests

    The backing store property tests +PR has been +reviewed. The next steps are:

    • Improve error handling and command generation.
    • Add coverage testing to check that we are not failing to cover interesting +test cases.

    The monadic cursor API +went through its first review round. The API is in a relatively stable state. +This PR also unifies the cborg and serialise-based interfaces to LMDB +operations. The next steps are:

    • Write +quickcheck-dynamic +state-machine tests for this API.
    • Adapt the changes in the serialisation interface in the backing store property +tests. This will involve adding boilerplate code in consensus to make up for +the removal of the cborg-based interface.

    LSM tree implementation

    We worked on the LSM tree +prototype. In +particular, we focused on tuning the LSM tree design to the different workloads +that consensus has (eg syncing, normal node operation, etc).

    Benchmarking the CSJ prototype

    Work on improving the chain-sync jumping performance is ongoing. In particular +we compared the performance of different jump intervals, which, somewhat +surprisingly, do not make a significant difference. In particular, we are seeing +periodic "plateaus" where the chain-sync tip does not progress, but they are +much longer for the prototype. Our hypothesis is that this seem to be due to a +combination of the garbage collector (GC) pauses, and the actual time it takes +the non-dynamo chain-sync peers to jump to the tip of the slot of the dynamo +fragment.

    In the coming weeks we will try to shorten these plateaus via a combination of +tweaking GC options and less synchronisation in the CSJ governor.

    The following plot shows the performance of the chain-sync jumping prototype +using different jumping intervals. It compares the syncing progress by plotting +the slots of adopted blocks against time. The baseline is still faster, however +it is worth noting that the current prototype already achieves a significant +speedup when compared to the naive approach of simply running full chain-sync +with all peers.

    The second plot shows the syncing progress sliced to a chosen ~5min interval, +and includes, in addition to the slots of adopted blocks, the slots of the tip +of the ChainSync fragment. This allows us to see how far ahead of the selected +tip the CS dynamo is, i.e. how much room we have for BlockFetch not to get +stalled. It shows periodic behaviour (due to the forecasting limit), and shows +that the CS fragment tip is not progressing for significant periods +("plateaus").

    Technical debt

    We clarified a +common source of confusion around VRF tie-breaking and cross-era chain +selection. This PR involved correcting potentially misleading names of +VRF-related functions, and providing context for a particular VRF value is +used for tie-breaking.

    · 4 min read
    Damian Nadales

    High-level summary

    During the past two weeks, the consensus team worked on adding property test for +different aspects of the UTxO HD prototype: era transitions, mempool, and +backing store. Thanks to these tests we were able to uncover a bug in the +prototype. On the Genesis front, we benchmarked a different version of the +ChainSync jumping prototype to try to improve its performance, but this did not +result in any noticeable speedup.

    High-level status report

    • Finish the UTxO HD prototype: on track.
      • We focused on increasing test coverage for the UTxO-HD prototype:
        • We started implementing Cadano-eras transition property-tests.
        • We started implementing state-machine property-tests for the mempool.
        • We merged the mempool rewrite.
        • We started working on state-machine tests for the backing store. This +uncovered a bug in the range-read implementation of the LMDB backing +store.
    • Genesis: on track.
      • We benchmarked a version of the Genesis ChainSync Jumping prototype that +spreads out the ChainSync updates over a longer period of time. This did not +result in any noticeable speedup.
      • We investigated the overhead introduced by non-ChainSync components, but no +conclusions could be drawn from the benchmarks we ran.

    Workstreams

    Finish the UTxO HD prototype

    We focused on increasing test coverage for the UTxO HD prototype. We also merged +the mempool +rewrite.

    Era transition property tests

    We started implementing Cardano era transition property +tests, +which are needed for making sure that the ledger tables get updated in the +right way when we move from one era to the next. There are at the moment two +important transitions.

    • Byron to Shelley: where all the UTxO is transferred from in-memory Byron +state (which has no tables) to the ledger tables of the Shelley state.
    • Shelley to Allegra: where the AVVM addresses must be deleted.

    We have tests for the Byron to Shelley transitions. We are working on adding +the remaining ones.

    Mempool state-machine tests

    We started implementing state-machine property tests for the +mempool. +The mempool is currently tested via pure property tests, and use a ledger +state without tables. With the introduction of UTxO HD, testing the concurrent +behavior of the mempool became of crucial importance (eg now we have to +acquire locks to flush the backing store). In addition, we need to test a +ledger state with tables. These needs led to the creation of a new set of +property tests. In particular we aim to run parallel state-machine tests that +exercise the mempool in a way similar to how the node would make use of it.

    Backing store property tests

    We started working on state-machine tests for the backing +store that UTxO +HD uses. The property tests uncovered errors in the range-reads implementation +of the LMDB backing store. To facilitate fixing this bug, we made +changes to the Haskell +LMDB bindings.

    Benchmarking the CSJ prototype

    Prompted by previous benchmarks showing significant improvements in sync time by +using more capabilities, we implemented a way to spread out the ChainSync +updates over a larger period instead of firing them all at the same time. This +didn't result in a noticeable speedup.

    We also benchmarked the prototype with CSJ disabled (such that just the dynamo +peer is running ChainSync, but e.g. BlockFetch still sees all peers) to rule +out/confirm overhead by non-ChainSync (mainly BlockFetch) related components. +This results in era-specific behavior (speed is like the prototype in Byron, but +like the baseline in Shelley). This deserves a closer look in the future.

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    • Red: baseline
    • Green: CSJ prototype, 10 peers, jumps every 3000/f slots, jumps in clumps.
    • Blue: like Green, jumps are spread out.
    • Orange: variant with no jumping, to measure unrelated overhead.

    · 2 min read
    Damian Nadales

    High level summary

    During the past two weeks, the consensus team worked on improving the +performance of the ChainSync jumping logic, which is needed for Genesis. We also +rewrote the implementation of the mempool in the UTxO HD prototype which solved +the issues that prevented us from running system level benchmarks. Also on the +UTxO HD front, we have an improved implementation of the sequence-of-differences +(a crucial piece of UTxO HD), and we also elaborated a test sign-off list for +the UTxO HD feature.

    Executive summary

    • With the latest implementation of ChainSync jumping we are closer to the +baseline performance. In particular, the prototype seems to benefit from the +extra concurrency provided by additional capabilities.
    • We rewrote the implementation of the mempool in the UTxO HD prototype. This +rewrite was required due to performance problems we observed when running the +workbench. +These performance problems prevented us from running system level benchmarks. +The rewrite solved these issues. After the UTxO-HD: mempool +rewrite PR is +merged, we will contact the Benchmarking team so that they run the system +level benchmarks.
    • The implementation of sequences of differences based on anti-diffs was +integrated into the UTxO HD prototype. It is pending +review and +we also need to run replay and syncing benchmarks to confirm that this will +deliver a performance improvement, as observed in our micro-benchmarks.
    • The UTxO HD prototype +inspection +resulted in a list of +tests +needed for consensus to consider the UTxO HD prototype as fully tested.

    Additional information

    Genesis

    Benchmarking setup: 50MBit/s, 50ms latency

    • Red: baseline
    • Green: Current CSJ prototype, 10 peers, jumps every 3000/f slots.

    As ChainSync Jumping involves many concurrent network operations at every jump, +we tried to run the node with 6 instead of the default 2 capabilties.

    • Orange: baseline with 6 capabilities
    • Blue: CSJ prototype with 6 capabilities

    This diagram shows the respective syncing progress, starting at Genesis and +continuing a good part into Shelley (with the dashed line indicating the +Byron-to-Shelley transition).

    Further work includes whether we can tune the prototype to better handle few +capabilities, or to adapt the default number of capabilities (potentially just +while syncing).

    + + + + \ No newline at end of file diff --git a/tags/consensus/page/7/index.html b/tags/consensus/page/7/index.html new file mode 100644 index 00000000000..426aca4a814 --- /dev/null +++ b/tags/consensus/page/7/index.html @@ -0,0 +1,162 @@ + + + + + +32 posts tagged with "consensus" | Cardano Development Updates + + + + + + + + + + + + +
    +

    32 posts tagged with "consensus"

    View All Tags

    · 4 min read
    Damian Nadales
    • We proposed a fix for the performance degradation observed when running +distributed multi-node benchmarks in the UTxO HD feature branch. While this +fixed the problems observed when running local benchmarks, it broke the +ThreadNet tests due to concurrency issues. Therefore, we think it is wise to +start redesigning the UTxO HD mempool integration.
    • We did several rounds of code review on the alternative implementation of +diff-sequences required by the UTxO HD feature based on the idea of +anti-diffs. This alternative implementation is close to being merged, and the +next step is to integrate this to the UTxO HD branch, so that we can run +ad-hoc replaying and syncing from scratch benchmarks and compare these with +the baseline. The micro-benchmarks we elaborated for the alternative +implementation show speedups of up to 4x, so we are optimistic about the +performance of replaying and syncing from scratch benchmarks, however it is +important to notice that due to the nature of UTxO HD we will still be +slower than the baseline.
    • The final draft of the Genesis implementation specification is ready for +review.
    • We implemented a prototype for the happy path of Genesis' ChainSync Jumping +(CSJ). The prototype is slower than the baseline, however it is not the latest +version of the prototype and the jump interval is very small.
    • Work on integrating Conway has stopped since +priorities have changed.
    • We started work on benchmarking epoch-boundaries and epoch overhead +pr-4014. To this end, we made use of a modified version of our +db-analyser tool. We ran the new benchmarking setup using the Cardano +mainnet chain, and we can see that block tick and application take +substantially longer at epoch boundaries, although there are a couple of slots +during an epoch in which these computations take more than normal. We notified +the ledger team about these findings. We will use this modified version of +db-analyser to investigate the epoch overhead.

    Workstreams

    UTxO HD

    • Spent quite some time investigating the root cause of the degradation in +performance observed in the benchmarks. We run the make forge-stress +benchmarks locally in order to debug this behavior.

      • Transaction batching doesn't make a notable difference in the outcome +(considering we are using the in-memory backend).

      • The mempool batching implementation required asynchronous transaction +validation which is a violation of the LocalTxSubmission protocol +contract and therefore if we continued on that route, the impact would +have been quite big.

      • The STM logic we implemented by using a TMVar for the mempool internal +state was buggy and under certain circumstances it seemed to lock. +Reverting the mempool internal state to be stored in a TVar seems to +solve this problem.

      • The results we get after this change look almost identical to the ones +from the baseline.

    • The anti-diff prototype (PR +#3997) has +been reviewed and is close to being merged.

      • A follow-up issue (issue +#4010) +to integrate the anti-diff prototype in the various consensus packages +was created. A first version of the integration exists, and all tests +pass. A next step is to get some indication of the "real" performance gain +by profiling db-analyser (or cardano-node).

    Genesis

    • Final draft of the Genesis implementation specification, now up for review.

    • Local benchmark setup for parameter tuning via the happy path ChainSync +Jumping (CSJ) prototype (Issue 3987).

      • Context: Our Genesis design requires us to check in with a large (~20) +number of servers periodically while syncing. These servers are offered +jump requests via the ChainSync protocol (hence the name), which they can +accept or decline. If a peer declines, the Genesis rule allows us to +determine whether a node actually has a better chain.

      • The "happy path" is when no peer declines a jump. We want this to have +close to no overhead compared to status quo, i.e. syncing without Genesis.

      • We implemented a prototype for this happy path, and are now starting to +test in various configurations (number of peers, latency, bandwidth) to +tune the performance of ChainSync jumping, i.e. how complicated our logic +of choosing when to jump needs to be.

        Example:

      • Simulated connection: 50 MBit/s, 50ms latency

      • Jump interval: 3000 slots (on the low end, could be increased to up to +3k/f)

      • Red: baseline (1.35.3), one peer in topology file

      • Blue: Preliminary version of our prototype, with 10 peers.

        It is slower by about ~30%, but it is not the latest version of the +prototype, and the jump interval is very small, making CSJ more of a +bottleneck.

    Technical debt

    • Fix flakiness in ChainDB QSM tests (PR 3990).

    · 9 min read
    Damian Nadales

    Executive summary

    • We did most of the heavy lifting required to integrate the Conway era.
    • We have property tests for the UTxO HD backing store API implementations. A +possible bug was identified. Work is ongoing to make sure the property-tests +cover all the relevant cases.
    • We implemented and benchmarked the "anti-diff" prototype to speed up the UTxO +HD functionality. Results show a rough speedup of 4x to 5.5x across +several scenarios. Note that: "Data reported by tasty-bench is only of +indicative and comparative significance.". +We are investigating additional performance improvements. The "anti-diff" +prototype and benchmarks are still pending code review.
    • We elaborated a draft specification for the Genesis implementation and +ChainSync jumping optimization.

    Workstreams

    Conway

    • Integration PR of the minimal Conway era (Issue #3963, PR +#3971).
    • Discussions with Ledger revealed possible sources of confusion about which +data should be changed in the Conway era. As a result, a new technical debt +issue was raised, which does not block the integration of the Conway era +(Issue #3976).

    UTxO HD

    • Issue #3954, branch: The functionality of a +backing store, which is the interface to the on-disk part of ledger state in +UTxO-HD, is tested at a high level through the OnDisk tests. However, some +functionalities remain untested, e.g., reads of ranges of keys. As such, we +have implemented quickcheck-state-machine tests that exercise backing stores +directly. The tests are reusable for different backing store implementations +because the tests are implementation-agnostic: Any backing store that conforms +to the backing store interface can be plugged into the tests. Work is still +ongoing to label/monitor the tests, such that we can verify that interesting +cases are being tested. Furthermore, a possible bug has been identified in the +LMDB backing store with respect to range reads, though the bug has not been +resolved yet.

    • Issue #3946, branch, PR #3882: The +"anti-diff" prototype proposes an alternative approach to keeping track of +sequences (more specifically, FingerTrees) of diffs. These diff sequences +are a component of the in-memory parts of the ledger state in UTxO-HD. Since +the consensus code often requires the cumulative diff of a sequence of diffs, +the current implementation "caches" cumulative diffs of each subtree in the +diff sequence. This caching allows relatively fast reconstruction of the total +cumulative diff, but this caching proved to incur a non-negligible cost: when +we manipulate diff sequences through splits and appends, we force re-computing +a logarithmic number of caches. This is problematic, since we often split and +append in consensus: we split when we flush diffs to a backing store or when +we roll back blocks, and we append when pushing blocks. The new approach +should reduce the overhead of this caching.

      We implemented micro-benchmarks for the "anti-diff" prototype: we +first generate a sequence of commands (Forward, Push, Flush, or +Rollback) through a simulation, after which we measure the performance of +applying the commands to a diff sequence. In this context, Forward means +forwarding of values through a diff, whereas Rollback means switching to +a different fork by rolling back diffs/blocks and pushing new ones. +Moreover, we compare the performance for the two implementations: the +"legacy" approach, and the anti-diff approach.

      Some preliminary results were positive, but we needed to revisit the +benchmark's configuration to obtain more definitive results. After a +discussion with @dcoutts and the consensus team about this configuration +(e.g., number of commands generated, choice of the security parameter k), +the benchmarks should now be closer to the realistic setting. The following +configuration specifies the default configuration that is used in the +benchmarking code:

      • Number of commands generated: 10_000
      • Security parameter k: 2160
      • Number of initial backing values: 100
      • Number of key-value pairs deleted by a push: 50
      • Number of key-value pairs inserted by a push: 50
      • Number of key-value pairs forwarded by a forward: 50
      • Probability of a large (in the range [1000, 2000]) rollback: 0.05
      • Probability of a small (in the range [1, 10]) rollback: 0.95
      • Order of commands:
        • An equal number of forward and pushes.
        • 1 flush every 10 pushes.
        • 1 rollback every 100 pushes

      Moreover, we run four benchmark scenarios:

      • Default configuration
      • Without rollbacks
      • With only small rollbacks
      • Without rollbacks, larger flushes (1 flush every 100 pushes)

      How to read results

      Note: this section uses documentation from the +tasty-bench package to +explain how to read the results of running our benchmarks.

      Running a benchmark scenario gives us the following (curated) output:

      ...
      AntiDiff: OK (18.27s)
      2.527 s ± 47 ms, 2.1 GB allocated, 544 MB copied, 2.2 GB peak memory, 0.23x
      LegacyDiff: OK (32.73s)
      10.829 s ± 148 ms, 6.8 GB allocated, 2.3 GB copied, 2.2 GB peak memory
      ...

      The output says that the first benchmark, which exercises the anti-diff +prototype, was repeatedly executed for 18.27 seconds (wall-clock time), +its predicted mean CPU time was 2.527 seconds and means of individual +samples do not often diverge from it further than ± 47 milliseconds +(double standard deviation). We also configure the RTS to collect GC +statistics, which enables tasty-bench to estimate and report memory usage. +This data is reported as per RTSStats fields: allocated_bytes, +copied_bytes and max_mem_in_use_bytes. So, the output of the first +benchmark says that a total of 2.1 GB of memory was allocated, that a +total of 544 MB of memory were copied, and that the peak memory in usage +was 2.2 GB. We read the output for the second benchmark in the same way.

      Furthermore, the benchmark compares the mean CPU times for +both the anti-diff and legacy approaches: In this case, the mean CPU time +for the anti-diff approach is ~0.23x the mean CPU time for the legacy +approach. Conversely, the mean CPU time for the legacy approach is +1 / 0.23 ~= 4.35x the mean CPU time for the anti-diff approach. We will +call 0.23x the improvement factor. We will call 4.35x the speedup.

      Note that these improvement factors (and reported results) are subject to +noise, randomness, the specific configuration parameters, and the whims +of statistics. Data reported by tasty-bench is only of indicative and +comparative significance.

      Results

      For each of the 4 scenarios, we list the results of running the anti-diff and +legacy approaches 5 times. We run the benchmarks 5 times to get an indication +of whether the results are similar across multiple runs. Furthermore, we +calculate the accompanying ranges (if applicable) of improvement factors and +speedups.

      Note also the decrease in total bytes allocated and total bytes copied for +the anti-diff approach compared to the legacy approach.

      Default configuration

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff2.533 s (0.23x)4.7 ms2.1 GB557 MB2.4 GB
      Run 1: LegacyDiff10.792 s162 ms6.8 GB2.3 GB2.4 GB
      Run 2: AntiDiff2.508 s (0.23x)245 ms2.1 GB515 MB2.2 GB
      Run 2: LegacyDiff10.850 s30 ms6.9 GB2.3 GB2.2 GB
      Run 3: AntiDiff2.562 s (0.23x)5.0 ms2.1 GB552 MB2.2 GB
      Run 3: LegacyDiff10.993 s149 ms6.9 GB2.3 GB2.2 GB
      Run 4: AntiDiff2.168 s (0.22x)5.3 ms1.8 GB434 MB2.0 GB
      Run 4: LegacyDiff9.976 s39 ms6.3 GB2.0 GB2.0 GB
      Run 5: AntiDiff2.527 s (0.23x)47 ms2.1 GB544 MB2.2 GB
      Run 5: LegacyDiff10.829 s148 ms6.8 GB2.3 GB2.2 GB
      • Improvement factor: [0.22, 0.23]
      • Speedup : [1 / 0.23 ~= 4.35, 1 / 0.22 ~= 4.55]

      No rollbacks

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.638 s (0.19x)36 ms1.4 GB181 MB2.4 GB
      Run 1: LegacyDiff8.656 s207 ms5.7 GB1.5 GB2.4 GB
      Run 2: AntiDiff1.638 s (0.19x)75 ms1.4 GB181 MB2.2 GB
      Run 2: LegacyDiff8.654 s322 ms5.7 GB1.5 GB2.2 GB
      Run 3: AntiDiff1.663 s (0.19x)74 ms1.4 GB181 MB2.2 GB
      Run 3: LegacyDiff8.799 s216 ms5.7 GB1.5 GB2.2 GB
      Run 4: AntiDiff1.645 s (0.19x)51 ms1.4 GB181 MB2.0 GB
      Run 4: LegacyDiff8.732 s261 ms5.7 GB1.5 GB2.0 GB
      Run 5: AntiDiff1.639 s (0.19x)19 ms1.4 GB181 MB2.2 GB
      Run 5: LegacyDiff8.653 s234 ms5.7 GB1.5 GB2.2 GB
      • Improvement factor: 0.19
      • Speedup : 1 / 0.19 ~= 5.25

    Only small rollbacks

    NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
    Run 1: AntiDiff1.833 s (0.18x)36 ms1.5 GB185 MB2.4 GB
    Run 1: LegacyDiff10.362 s867 ms5.8 GB1.6 GB2.4 GB
    Run 2: AntiDiff1.696 s (0.19x)30 ms1.5 GB185 MB2.2 GB
    Run 2: LegacyDiff8.822 s106 ms5.8 GB1.5 GB2.2 GB
    Run 3: AntiDiff1.702 s (0.19x)44 ms1.5 GB186 MB2.2 GB
    Run 3: LegacyDiff8.906 s147 ms5.8 GB1.5 GB2.2 GB
    Run 4: AntiDiff1.701 s (0.19x)47 ms1.5 GB185 MB2.0 GB
    Run 4: LegacyDiff8.949 s197 ms5.8 GB1.5 GB2.0 GB
    Run 5: AntiDiff1.677 s (0.19x)55 ms1.5 GB186 MB2.2 GB
    Run 5: LegacyDiff8.856 s177 ms5.8 GB1.5 GB2.2 GB
    • Improvement factor: [0.18, 0.19]

    • Speedup : [1 / 0.19 ~= 5.25, 1 / 0.18 ~= 5.55]

      No rollbacks, larger flushes (every 100 pushes)

      NameMean CPU time2*Stdev (CPU time)Total bytes allocatedTotal bytes copiedPeak memory
      Run 1: AntiDiff1.643 s (0.25x)21 ms1.5 GB196 MB2.4 GB
      Run 1: LegacyDiff6.591 s351 ms4.0 GB1.4 GB2.4 GB
      Run 2: AntiDiff1.616 s (0.25x)47 ms1.5 GB196 MB2.2 GB
      Run 2: LegacyDiff6.520 s232 ms4.0 GB1.4 GB2.2 GB
      Run 3: AntiDiff1.640 s (0.25x)34 ms1.5 GB196 MB2.2 GB
      Run 3: LegacyDiff6.540 s150 ms4.0 GB1.4 GB2.2 GB
      Run 4: AntiDiff1.635 s (0.25x)76 ms1.5 GB196 MB2.0 GB
      Run 4: LegacyDiff6.589 s131 ms4.0 GB1.4 GB2.0 GB
      Run 5: AntiDiff1.628 s (0.25x)19 ms1.5 GB196 MB2.2 GB
      Run 5: LegacyDiff6.490 s5.9 ms4.0 GB1.4 GB2.2 GB
    • Improvement factor: 0.25

    • Speedup : 1 / 0.25 ~= 4

    Genesis

    • We elaborated a draft of the specification of the Genesis implementation and +the ChainSync Jumping optimization. In particular, this includes a proof +sketch that the latter preserves liveness and safety in all cases (Issue +3964).
      • @nfrisby's main realization during this sprint was that he had been +focusing so far on the case where the selected chain is an extension of +the intersection of our peers' ChainSync candidates.
      • This is the main case, ie an "absorbing" state, but it's not the only +case.
      • The new proof sketch begins by case splitting on that predicate, and +that made the sketch quite a bit easier to follow.
    • We continued working on the "happy path" ChainSync Jumping prototype (Issue +3960).

    Technical debt

    • We started working on the issues required to re-enable nightly CI runs.. +Nightly CI runs have far more lax time constraints, which gives the option to +run significantly more property tests than in our regular CI. To this end, we +merged a PR to easily adapt the number of tests globally (PR +#3947).
    + + + + \ No newline at end of file diff --git a/tags/crypto/index.html b/tags/crypto/index.html new file mode 100644 index 00000000000..38d396781dc --- /dev/null +++ b/tags/crypto/index.html @@ -0,0 +1,33 @@ + + + + + +18 posts tagged with "crypto" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "crypto"

    View All Tags

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Include MuSig2 description in cryptography handbook
    • kes_agent: Finilising test and CI. Working on KES binary

    Low level summary

    Mithril

    • Full Node Verifier merged #939.

    MuSig2

    • Started describing MuSig2 to include it as part of the cryptography handbook

    Sidechains

    • Analysis of Halo2 verifier with the goal of implementing SNARK verifier in Plutus. Implemented ad-hoc IPA verifier. Work progress in this fork.

    KES agent

    • KES agent is ready:
      • CI ready #19
      • Receipt confirmation message #20
      • KES agent binary ready #21
      • Control client implemented #11

    · 4 min read
    Iñigo Querejeta Azurmendi

    Security Issue Report: SECP256k1 bug

    Date Occurred: July 15, 2022 +Severity: Potentially Very High if exploited on Mainnet +Authors: Iñigo Querejeta Azurmendi

    Date of Report: August 17, 2023

    Summary of Issue

    Criticality Level

    Actually low (since the issue was detected prior to deployment) but potentially very high if it had been deployed to mainnet +Context

    New SECP256k1 Plutus bindings were being introduced in order to support interoperability with other major chains, such as Bitcoin and Ethereum. The intention was to deploy these as part of the Vasil hard-fork. The bindings were considered to be a low-security risk since the underlying library functions were well tested and had been deployed on other blockchains. +How was the Issue Detected

    The issue was detected via specific End-to-End tests that had been commissioned. It was (accidentally) triggered on the Cardano Testnet before a fix could be deployed there.

    What Action was Taken

    The Cardano Testnet was permanently halted, and new test environments were deployed (Preview and Pre-Prod). +Fixes were applied to prevent the use of the primitives. +A full security audit was carried out on the bindings. +The rollout of the primitives was postponed to a new hard fork (Valentine)

    Potential Effect

    The potential effect was that an adversary might be able to craft invalid Plutus transactions to crash any node, requiring execution of the Cardano disaster recovery plan to revert to a safe state and bypass the transaction.

    Actual Effect

    • Delay to the Vasil hard-fork
    • Temporary removal of SECP256k1 primitives
    • Additional hard-fork to introduce SECP256k1 primitives

    Ongoing Mitigations Needed, if any

    None

    Responsibility for Mitigations

    Core team

    Detailed description of Incident

    New Plutus secp256k1 cryptographic primitives for Plutus v2 failed to apply the necessary validity checks on the input data, meaning that the primitives could theoretically be used in an unsafe environment. The vulnerability was present in recent node versions (1.35.0 onwards), including ones deployed to Cardano Testnet.

    The problem was not in the deserialization functions of the underlying library (Bitcoin's library) but rather that the Haskell functions that implemented the Plutus builtins were not calling them correctly. In particular, the library functions were designed to take structured data as input. However, the Haskell FFI implementation that was produced for the Plutus builtins allowed a caller to pass in (possibly) unstructured data. There were no checks that these data were structured in the correct way. This issue was detected during End-to-End testing.

    • This is the ECDSA signature verification algorithm that was used. It takes a SECP256k1_pubkey as input. That type is an opaque type with an expected structure: a parsed and valid public key. It was not immediately obvious that structured data needed to be passed to allow the function to be used safely.
    • The same happened with the Schnorr verification function. It takes as input a SECP256k1_xonly_pubkey, which is again an opaque structure that holds a parsed and valid public key.

    The FFI skipped checks over these structured keys and directly passed the raw bytes that were given as arguments. If an adversary were to pass in data that was not properly structured, then it could result in unexpected behavior of the library. This could perhaps translate into an adversary being able to crash the nodes that ran these functions. All nodes in the network could be crashed by a single transaction that would then be executed repeatedly, so stalling the network until the disaster recovery process was initiated.

    The fix was addressed in this PR. It consisted of using the external representation that the deserialization function expects and running the deserialization prior to signature verification. This was audited by security experts.

    Recommendations

    • Check all new Plutus bindings for correct use.
    • Audit all new Plutus built-in bindings.
    • Continue to develop specific End-to-End tests for all new Plutus features.
    • Do not assume that any existing library functions are "safe". Treat all external calls circumspectly.

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: Analysis of Halo2 SNARK verifier to plan a plutus implementation
    • mithril: Full node verifier
    • musig2: Finalised the missing fuzz tests
    • kes_agent: engineer on PTO. Work halted

    Low level summary

    Mithril

    • Work on a mithril flaky test #1105
    • Keep working on Full Node Verifier #939. +Should be merged in the coming week.

    MuSig2

    • Finalised the fuzz tests #43

    Sidechains

    • Analysis of Halo2 verifier. Necessary for a future implementation of a plutus verifier.

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Sidechains: First version of snark-based ATMS
    • mithril: Full node verifier
    • kes_agent: Keep progress, and prepare CIP and CPS
    • CIPs and community: Finishing BLS12-381 CIP and working on a KECCAK CIP

    Low level summary

    kes_agent

    Mithril

    • Final review of the implementation of Full Node Verifier #939. +Included benchmarks and further tests.

    Sidechains

    • Schnorr signature implemented
    • ATMS signature implemented
    • First benchmarks show that for the committe size we expect, we need 2^21 constraints.

    CIPs and community

    • Addressed some review comments in #PR506
    • Worked with the communityt on #PR524 to include Keccak as part of the next Plutus release.

    · One min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: E2E tests for BLS bindings and KES agent
    • Sidechains: Implement ECC chip and Rescue hash primitives for ATMS
    • mithril: Full node verifier

    Low level summary

    cardano-base

    • RawBearer API in ouroboros-network-framework (https://github.com/input-output-hk/ouroboros-network/pull/4395); blocked due to issue with windows' localSnocket. Trying to resolve.
    • Adapting cardano-base for direct memory transfers between mlocked RAM and file descriptors #317.
    • Above, blocked by the simplification of typeclasses #404.
    • Provided e2e test cases to the testing team with aggregated signatures and schnorr signatures for the BLS bindings

    Mithril

    • Implementation of Full Node Verifier #939

    Sidechains

    • ECC chip implemented for JubJub over BLS12-381
    • Rescue chip implemented for hashing.
    • Currently working on Schnorr signature (which uses the above constraints)
    + + + + \ No newline at end of file diff --git a/tags/crypto/page/2/index.html b/tags/crypto/page/2/index.html new file mode 100644 index 00000000000..af4687de58a --- /dev/null +++ b/tags/crypto/page/2/index.html @@ -0,0 +1,24 @@ + + + + + +18 posts tagged with "crypto" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "crypto"

    View All Tags

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: Include final tests for BLS signature. Further adaptations for KES agent.
    • Sidechains: Implement BLS and JubJub using upstream's macros to merge these curves in halo2curves.

    Low level summary

    cardano-base

    Sidechains

    • Opened PR in halo2curves to include BLS12-381 and JubJub, #38
    • Addition constraint over JubJub merged #10

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • cardano-base: New KES structure finally merged. Included additional tests to BLS, and including test vectors created with zkcrypto's library.
    • KES agent: Reaching state of MVP. Rewriting KES agent networking code to use the Snockets abstraction.
    • Sidechains: Started implementing ECC chip of JubJub over BLS12-381.

    Low level summary

    cardano-base

    • #255 finally merged 🎉
    • Additional tests for BLS bindings #384
    • Open PR for including test vectors created with zkscrypto's library, PR#397

    KES agent

    • Introducing the SignKeyWithPeriodKES wrapper type, which bundles a KES key with its corresponding KES period PR#389.
    • Introducing the DirectSerialise API into cardano-base, which allows us to write mlocked memory directly to a file descriptor, without going through intermediate encodings stored on the GHC heap (which is a no-no due to secure forgetting requirements) #317.
    • Figuring out how to generalize the KES, DSIGN, and mlocking code in cardano-base such that it can run in IOSim
    • Rewriting KES agent networking code to use the Snockets abstraction, which gives us a platform-independent sockets layer (i.e., it will also work on Windows), and also allows us to run networked code in IOSim for testing purposes
    • Refactor MonadSodium into MonadMLock PR#388.

    Sidechains

    • Started working on ECC chip for JubJub over BLS (problems still with the multiplication constraint)
    • Use macros used by PSE library to try and merge our fork of halo2curves into PSE's repo

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Started looking into full-node verifier
    • cardano-base: BLS12-381's PR merged. Creating test-vectors for verifying basic pairing properties.
    • KES agent: Blockers overcome. Reaching a first MVP level of the KES-agent.
    • Sidechains: Included BLS12-381 & JubJub to halo2curves
    • MuSig2: Final modifs to C version.

    Low level summary

    Mithril

    • Started designing how a full-node verifier would work. Issue comming in the next couple of weeks.

    cardano-base

    • BLS12-381 branch merged PR#266.
    • Testing strategy for BLS bindings:
      • Test-vectors for Groth16, and simple BLS signatures ready.
      • Test-vectors with different library, and created by different engineer.

    KES agent

    • Resolved issues of circular dependency
    • Got rid of separate DSIGN and DSIGNM, we now have DSIGN over mlocked keys, but the phantom type is the same.
    • Opened a PR for raw bearer branch in ouroboros network PR4395
    • Resolved a bug where the agent node did not properly closed connections
    • Updated version of IOSim allowed us to finish a first version of KES agent.

    Sidechains

    • Included BLS12-381 curve to our branch of halo2curves
    • Included JubJub to our branch of halo2curves

    MuSig2

    • Minor reorg PR#42
    • Started including fuzz testing for deserialisation PR#

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: RFP finished. Code ready for audit.
    • cardano-base: BLS12-381's PR approved, only blocker is Windows' CI. Preparing extensive testing strategy together with Plutus and Testing teams.
    • KES agent: Working on a desing on how to use IO sim in order to allow for proper network simulation testing.
    • Sidechains: Preparing proving system to use the curves needed for main-net PoC.

    Low level summary

    Mithril

    • Merged PR#783
    • RFP for crypto audit ready.

    cardano-base

    • BLS12-381 branch approved PR#266. Blocker is Windown's CI. Working on it
    • Testing strategy for BLS bindings:
      • Preparing test-vectors for Groth16, and simple BLS signatures
      • Finding community projects to help write their use cases
      • Designing AC, and expected tests for higher levels of development (Plutus team, E2E tests, etc)
    • Wrote blogpost on how using the same key for ed25519 and VRF completely breaks the security of both systems

    KES agent

    • Started integration of sockets interface used in consensus
    • Use that for de/ser
    • Resolving problems with block memory in IOSim. Can't use withForeignPtr in IOSim
    • Results in having to parametrise for IOSim in KES and DSIGN for testing

    Sidechains

    • Prepared an API for proof generation in sidechains, with it's C API for integration with JVM languages.
    • Design document and start interacting with researchers for concrete instantiation of SNARK-based ATMS.
    • EdDSA over JubJub ready

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.
    • cardano-base: BLS branch is now ready for review. We are workign forward its merge.
    • KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.
    • Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs

    Low level summary

    Mithril

    • Bumped to version 0.2.0 the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using mlock.
    • Opened PR#783 to update dependency
    • Improved testing for batch opening of mtree, PR#773
    • Improved testing for batch verification of STM sigs PR#774
    • RFP for crypto audit almost ready.

    cardano-base

    • BLS12-381 branch finally ready for review PR#266

    KES agent

    Team off for one week. Other progress:

    • Learning about raw direct-bearer abstraction. An interface for sockets in consensus.
    • use that for direct ser/deser
    • written those syntaxes for ouroboros (coming PR)
    • the kes agent will depend on that.

    Sidechains

    Progress with familiarisation of Halo2 library to write circuits.

    + + + + \ No newline at end of file diff --git a/tags/crypto/page/3/index.html b/tags/crypto/page/3/index.html new file mode 100644 index 00000000000..7b1e9adf2ee --- /dev/null +++ b/tags/crypto/page/3/index.html @@ -0,0 +1,24 @@ + + + + + +18 posts tagged with "crypto" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "crypto"

    View All Tags

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: Helper functions finished. Continue preparing a RFP for an audit of mithril's core library (decided to add audit of KES). Design proposal for viable registration.
    • cardano-base: Praos to PraosBatchCompat ready. KES secure forgetting finished, but holding merge for delivery strategy (breaking changes). Tested real world SNARK verification on plutus.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: started implementation in rust.

    Low level summary

    Mithril

    • Transmute helpers merged PR#722
    • We have progressed with the RFP document for the mithril-stm library. Progressing with description of octopus algorithm. Included KES in scope.
    • We are working in a modification of KES to require caller to allocate the secret key buffer.
    • Proposed a solution for signer registration of Mithril.

    cardano-base

    • Progressing with BLS12-381. Worked with plutus team to have a plutus script verifying a Groth16 proof.
      • Results are promising, with using only 23% of the execution budget to verify a realistic proof.
      • Next step is to build a real world use case (and not use a dummy proof). Projects being considered are Sidechains, Hydra or Mithril.
    • KES secure forgetting merge is being held off, due to breaking changes. We are considering handling several branches in cardano-base for this.
    • Conversion finally merged PR#344.

    KES agent

    • Figuring out how to use sockets to write directly into the file descriptor. Digging into the sockets implementation
    • Figuring out how to go from fake file descriptor to write the raw bytes

    MuSig2

    • Started implementing MuSig2 in Rust using the Ristretto prime order group. Still experimental.

    · 3 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We are creating helper functions to single out the usage of unsafe to facilitate auditing. We are also preparing a RFP for an audit of mithril's core library. Exploring future paths of mithril.
    • cardano-base: Decision of whether to continue with BLS12-381 or switch curves. Conversion Praos to PraosBatchCompat ready, as well as KES secure forgetting.
    • KES agent: using snockets and making things testable in IOSim
    • MuSig2: GH actions updated for checking the files whether they end with an empty line. Also, we reorganized the library.

    Low level summary

    Mithril

    • Given that removing the usage of transmute really affects the benchmarks, we decided to group all unsafe functions to facilitate auditing PR#722
    • We have progressed with the RFP document for the mithril-stm library. We are documenting the differences with respect with the original paper.
    • We are exploring possible paths of how mithril could be used 'as-a-service'. Other projects such as sidechains or Catalyst would benefit of such a service. We are at a very early stage of brainstorming how it could work.

    cardano-base

    • There has been a very thorough discussion with potential users of the BLS12-381 bindings if that is the best curve. We have considered alternatives such as Pasta curves, Pluto-Eris or BLS12-377, and considering it's trade-offs. Seems that the most interesting curve to have on main-net is still 381.
    • The team is gaining expertise in SNARKs to be able to experiment with them, and conclude whether the bindings will allow for SNARK verification on main-net in a timely manner.
    • The update VRF PR#341 is finally merged, and we are ready to merge PR#344, which implements conversion functions from the compatible types between Praos and PraosBatchCompat.

    KES agent

    • Use of snockets to send the data directly from the socket to secure memory.
    • We realized that in order for the DirectSerialise / DirectDeserialise classes to work against IOSim, we have to generalize a bunch of additional primitives
    • Our plans are to: (1) Split up MonadSodium into separate typeclasses, each capturing a more sensible concern; (2) Rename those typeclasses to something that reflects their nature better.

    MuSig2

    The GitHub Action linelint is used to check the files.

    • A new job for linting is added to the file /.github/workflows/ci.yml. The rules are configured in the file /.github/workflows/.linelint.yml. Some files from the configuration of libsecp were failing, so in the rules in .linelint.yml the failing files are denoted to be ignored by the linter.
    • Folders are reorganized. We created a folder to handle the example. This folder includes the examplemusig2.c, a distinct config.h, and helper.c. The example is enhanced by implementing the functions in the helper for the configuration given in config.h. The number of messages is different than the tests. The example is made more generic to run with a loop.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The open fronts that the crypto team is working on are:

    • Mithril: We explored whether some uses of transmute could be removed, but it resulted in considerable regression.
    • cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision.
    • KES agent: An inconsistency between contra-tracer available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the contra-tracer used by consensus.

    Low level summary

    Mithril

    • We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average PR#675. We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing.
    • We are writing a RFP for the audit of the core library.

    cardano-base

    • A problem with Nix is blocking merge of PR#341
    • Plutus team ran benchmarks of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution.
    • Team is fully digesting the Plonk paper.
    • There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used.

    KES agent

    • A little unforseen delay has been caused by a mismatch in the use of contra-tracer. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are doing the change, but still the CI is not happy.
    • The same was needed for the KES agents prerequisites PR#317.
    • We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: The API features (error handling) has been merged.
    • Mithril: We update the KES library and published it in crates.io. Similarly, we merged batch verification of STM signatures.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI.
    • KES agent: We keep progressing with KES secure forgetting implementation.

    We also started working in the cryptography engineering handbook, which will be a cross team effort.

    Low level summary

    MuSig2

    • Merged the more granular error handling mechanism PR#33

    Mithril

    • Adapted KES library so that sk contains its corresponding period, making key handling easier. Avoid making unnecessary copies of the KES key. Expose function to get associated period. All included in Version 0.1.1, which was published in crates.io.
    • Updated new KES format to mithril library PR 674
    • We implemeneted batch verification of stm signatures, which improves the benchmarks for mithril chain-sync PR 531
    • We keep progressing on reducing the use of transmute in mithril-stm.

    cardano-base

    • Nothing new to report. Still working in merging these PRs. We are only missing nix merge of PR#520 and the updates on VRF will be merged.

    KES agent

    • We keep progressing in the secure forgetting PR. Added NoThunks tests, error hasndling to detect when mlocking fails, resolved bugs due to incorrect usage of mlocked memory and wrote more efficient tests PR#255.

    Cryptography handbook

    We have made available the (temporary) cryptography handbook https://input-output-hk.github.io/cryptography_spec/, and included the description of some primitives (Ed25519, KES and VRF). This is an ongoing effort, and we plan on further expanding the list of available primitives.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We were blocked with a CI issue, that we finally resolved. Similarly, we merged the redesig of the API to mantain consistency.
    • Mithril: Merged the reformat of the signle signature. Similarly, we started working in ensuring KES implementation in rust is safe.
    • cardano-base: VRF and BLS are still waiting to be merged, as we have some problems with the CI. Moreover, we started experimenting how rust can be included in the cardano-base code-stack.
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • [Still in progress] We are introducing a more granular error handling mechanism PR#33
    • We merged the API redesig PR#35
    • We were blocked for a while with a CI issue, for which we are currently simply using a simpler version of Ubuntu. We'll probably circle back to this in the future PR#36

    Mithril

    • We merged the individual signature PR#620
    • We are modifying important parts of the KES mplementation to guarantee there are no unnecessary copies during Ser/Deser (kes repo)

    cardano-base

    • Nothing new to report. Still working in merging these PRs.
    • We started experimenting on how we can use cabal-pack to create haskell libraries out of rust libraries, and how this would affect the cardano-base fork. We encountered what seems to be a bug in GHC

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Fixed a 'use-after-free' bug in the KES agent.
    + + + + \ No newline at end of file diff --git a/tags/crypto/page/4/index.html b/tags/crypto/page/4/index.html new file mode 100644 index 00000000000..96adcc48bcd --- /dev/null +++ b/tags/crypto/page/4/index.html @@ -0,0 +1,28 @@ + + + + + +18 posts tagged with "crypto" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "crypto"

    View All Tags

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level summary

    The four open fronts that the crypto team is working on are:

    • MuSig2: We are almost ready to reach a point where the MuSig2 library is ready for usage by the Hydra team.
    • Mithril: We started to think how Mithril-core can be designed such that it can be leverage by contexts where the verifiers run full nodes
    • cardano-base: The VRF and BLS branchs are still open and in progress
    • KES agent: We keep progressing with KES secure forgetting implementation as well as the KES agent.

    Low level summary

    MuSig2

    • We redesigned the library so that MuSig2 lib users don't need to be aware of the underlying secp256k1 library PR#31
    • We are introducing a more granular error handling mechanism PR#33
    • We rethought the API and made it more consistent with the underlying secp256k1 library PR#35

    Mithril

    • The mithril crates in general will be published in crates.io, and we adapted the core library's README PR#616
    • We are modifying the individual signature to not contain the VK and stake. This was not necessary, as the current design requires the aggregator of Mithril certificates to know this information PR#620

    cardano-base

    • We've been still working in updating to the latest version of the VRF. In particular we modified the cbits to use the latest version of libsodium stable (1.0.18) PR#341
    • SKs, VKs and VRF outputs will be compatible across the different versions. We are implementing conversion functions for simple transitions PR#344
    • Benchmarks on pairing built-ins have already started, so we were finalising some CI concerns and final remarks on the BLS PR, so that it can be merged as soon as we have green light from plutus PR#266

    KES agent

    • We keep progressing in the secure forgetting PR and resolving some bugs on memory handling PR#255
    • Increasing the test framework to make sure concurrency is properly treated by the KES Agent, for which we are including refcounted references. General progress in the implementation.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level overview

    The SECP primitives AC has been met, and the test-vectors PR has been merged. Another of the main short-term goals is to implement KES secure forgetting. In the past week the mempool PR has been merged, and we've adapted the KES secure PR to the new mempool design. On top of this, we are working in updating the VRF batch compat version to use the audited version of the libsodium fork (PR#). Finally, we've 'cleaned' our libsodium fork, and we directly fork upstream, rather than forking Algorand's fork.

    Low level overview

    • With the AC met, there was no more blockers from crypto to release the node tag with the SECP primitives. We are now working closely with dQuadrant to to implement some E2E tests with an actual bridge implementation.
    • We previously had a C implementation of a memory pool for usage in KES secure forgetting. After a discussion with Alexey, we decided to use his implementation of a mempool in Haskell. We are working in adapting KES Secure forgetting to use this Haskell mempool.
    • In parallel, we keep progressing on the KES agent
    • VRFBatchCompat was deactivated due to a lack of an external audit. This audit was finished a few weeks back, and we are updating cardano base to use this new librar. In particular, this library implements the latest changing version of the VRF draft (13, which seems to remain stable), and links to the libsodium fork which implements batch verification.
    • Our libsodium fork now links directly to upstream libsodium.

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level overview

    The crypto team is primarily focusing in enabling SECP primitives, and preparing the KES agent. We are close to +meeting the acceptance criteria in cardano-base, +which lacks some editorial comments on the style of dQuandrant's PR, the inclusion of one additional test, and +we are good to mark it as done. For the KES agent, we are still iterating over the best design of the solution, +but also progressing on the implementation.

    Low level overview

    SECP built-ins

    • (missed last two weeks update) Audit was succesfully completed by bCryptic, and some minor changes where addressed in PR 313
    • CIP-0049 was addressed in the editors meeting, and PR 250 was merged
    • The unit-tests PR 320 is opened. Some editorial concerns still need to be addressed, and an additional (negative) test has been requested for addition.

    KES agent

    • We were working in investigating how to send OpCerts to KES agents, but turns out to be not necessary. OpCerts can be stored on-disk, so the agent does not need to be aware of them.
    • We are redesigning the architecture. Instead of connecting the control server to the agent, and then the latter to the node, we are directly connecting the control server to the node, and the latter to the agent(s).
    + + + + \ No newline at end of file diff --git a/tags/db-sync/index.html b/tags/db-sync/index.html new file mode 100644 index 00000000000..bf05733738f --- /dev/null +++ b/tags/db-sync/index.html @@ -0,0 +1,61 @@ + + + + + +14 posts tagged with "db-sync" | Cardano Development Updates + + + + + + + + + + + + +
    +

    14 posts tagged with "db-sync"

    View All Tags

    · One min read
    Kostas Dermentzis

    High level summary

    We have created new tag sancho-2-2-0, which integrates missing Conway feautures and some minor fix +tags sancho-2-1-0, sancho-2-0-1. +We have completed the initial implementation for the bootstrap instance objective.

    Lower level summary

    • Add a new --disable-gov flag which disabled Conway ferautures +#1558
    • Fix of the committee key size +#1544
    • Workaround a ledger issue with unregistered pools +#1542
    • Implemented a mechanism that loads the UTxO from the ledger resulting is way faster syncs +#1539
    • Rename offline to offchain +#1533
    • Transfer existing tests to Conway era +#1529#1547

    · One min read
    Kostas Dermentzis

    High level summary

    We have created a DBSync tag sancho-1-1-0 which can follow sanchonet. Also +the team has ran a number of benchmarks and tests for the new options/flavours of DBSync +and prepared a blogpost which summorises them, for downstream components.

    Lower level summary

    • Integration of node-8.3.x and support for Sanchonet on Conway +#1498
    • Simplifications of new feautures +#1496
    • Makes it impossible to restart DBSync with different schema options and adds +tests for them +#1466
    • CI fixes +#1494#1491
    • Prepared a blogpost about different DBSync options +blog

    · One min read
    Kostas Dermentzis

    High level summary

    We have integrated many new Conway feutures and allow db-sync to sync sanchonet. +We also continued testing and improving the new db-sync options.

    Lower level summary

    • Conway integration +#1484
    • Support for Sanchonet +#1476
    • Stake distribution is computed earlier +#1484
    • Deposit ledger events are now used. This reduces the db queries and makes syncing faster +#1484
    • Testing new db-sync options +#1466
    • Added support for ghc-9.6 +#1479
    • Tech debt: improve exceptions +#1471

    · One min read
    Kostas Dermentzis

    High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2 and tested
    • Many devx issues resolved

    Lower level summary

    • We have improved and validated the design for the Conway integration in db-sync
    • Improved the initial integration of the UTxO-HD feauture branches which are under test
    • Prepared a new release 13.1.1.3 which supports node 8.1.1 +#1455.
    • This also fixes a bug +#1451
    • Added new tests to the new tx_out options +#1429
    • Fixed a chronic issue in db-sync related to exception handling and concurrency +This fixes many other issues and simplifies the logic in db-sync +#1447
    • A number of fixes and improvements in ci, docker, devx, docs +#1436#1442#1448#1452

    · One min read
    Kostas Dermentzis

    High level summary

    We've made progress in all high level objectives

    • CIP-1694 integration design
    • UTxO-HD integration proof of concept
    • schema migrations with a focus on speeding up frequent queries is part of release 13.1.1.2
    • A new hire will help us with devx issues.

    Lower level summary

    + + + + \ No newline at end of file diff --git a/tags/db-sync/page/2/index.html b/tags/db-sync/page/2/index.html new file mode 100644 index 00000000000..c00be5eecb0 --- /dev/null +++ b/tags/db-sync/page/2/index.html @@ -0,0 +1,63 @@ + + + + + +14 posts tagged with "db-sync" | Cardano Development Updates + + + + + + + + + + + + +
    +

    14 posts tagged with "db-sync"

    View All Tags

    · One min read
    Kostas Dermentzis

    High level summary

    Lower level summary

    • Prepared a schema change which is expected to speed up queries and help clients +#1389.
    • Ran a big number of benchmarks on the above to evaluate if this change is reasonable.
    • Performance optimization related to rewards +#1382
    • Using the cache in more places to reduce recourses usage +#1380
    • Evaluated risks related to UTXO-HD integration
    • Worked on a feauture request to split the tx_out to an address table +#1396
    • Worked on another feauture request to prune the consumed entries from the tx_out table +#1398
    • Prepared for CIP-1694 integration

    · One min read
    Kostas Dermentzis

    High level summary

    The DBSync team worked in performance enhancements issues, on providing new db-sync options and on +technical debt and bug fixing. The DBSync team also on boarded a new member.

    Low level summary

    • Worked on an issue which causes ada_pots tables to include the values related not only to an +epoch, but also the first epoch of the last epoch. +#1367
    • Fixed an issue where the epoch table didn't rollback and caused wrong values +#1370
    • Fixed an issue were users with disable-ledger option had to provide the state dir option, even +though it was never used. Also refactored the no ledger part of the codebase. +#1378
    • Improved the perforance by using the cache more. Also provided many new options which enables or +disables parts of db-sync. In addition a new --turbo mode is enables which allows db-sync to sync +mainnet in hours. +#1379

    · One min read
    Kostas Dermentzis

    High level summary

    The db-sync team created a new tag 13.1.0.2 which is ready to release. +We also investigated and had the first working UTxO-HD integration which is one +of the potential future risks for db-sync.

    Low level summary

    • Integrated the UTxO-HD feauture branch in kderme/utxo-hd-1. This doesn't +use the full on disk storage but keeps things in memory and the plan is to keep +it this way for the first iteration. The integration still has some performance +issues which we investigate
    • Created tag 13.1.0.2 which upgrades the dependencies of db-sync
    • Fixed an issue related to errors appearing in SMASH +#1353
    • Continued with ghc-9.2 integration +#1339
    • Worked on an new fixing procedure for +#1348. +We try to make these procedures work also on older schema version, without the +need to migrate to newer schema, which can be very useful for fixing existing +snapshots.

    · One min read
    Kostas Dermentzis

    High level summary

    After spending the last months on improving DBSync and releasing 13.1.0.0 the DBSync team focused +the last weeks on integrating upstream changes and tech debt. This includes integrating CHaP, the +new leger core and ghc-9.2.4

    Lower level summary

    • Integrate CHaP +#1331
    • Integrate new ledger core 0.1.1.1 and ghc-9.2 +#1332
    • Technical debt: Add code formatter fourmolu +#1334
    • Preparing and tracking Conway and UTxO integration

    · One min read
    Kostas Dermentzis

    High level summary

    The DBSync team continued testing release 13.1.0.0. The QA team has reported that no issues have +been found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.

    Lower level summary

    • Release is cherry-picked back to master, which uses the new rollback mechanism which uses +reverse indexes, same as the release +#1320 +This also fixes a bug number of issues on master.
    • Depenencies upgrade and CHaP integration +#1324
    • AdaPots fix #1323. This +fixes an issue where the per epoch AdaPots didn't match the epoch boundary, but +they also included changes from the first block of the epoch.
    • Deposits Event fix #3212. This pr +adjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the +number of queries that db-sync does during syncing an make syncing faster.
    + + + + \ No newline at end of file diff --git a/tags/db-sync/page/3/index.html b/tags/db-sync/page/3/index.html new file mode 100644 index 00000000000..fca2344ea71 --- /dev/null +++ b/tags/db-sync/page/3/index.html @@ -0,0 +1,85 @@ + + + + + +14 posts tagged with "db-sync" | Cardano Development Updates + + + + + + + + + + + + +
    +

    14 posts tagged with "db-sync"

    View All Tags

    · One min read
    Kostas Dermentzis

    High level summary

    The DB Sync team prepared a release 13.1.0.0-rc2 which includes many improvements for db-sync, +it makes rollbacks and syncing much faster, simplifies the schema, fixes bugs and introduces +migrations. This release finalises the objectives that were set for db-sync for the previous +3 months period and part of the syncing speed objective set for the next period +Changelog

    Lower level summary

    • Branch release/13.1.0.x +includes all the improvements related to the release. The release is passing through the testing +phase and a number of bugs and issues have been fixed, like +#1312 +#1311. +Also many new unit tests have been added.

    • Part of the release branch is cherry-picked back into master, in a way that it respects the new +release and development process, so that it takes into account migrations +release process

    • The DB Sync team has also tagged release 13.0.6 which better supports preview and preprod for +docker.

    · One min read
    Kostas Dermentzis

    High level summary

    The DBSync team is preparing a release which introduces schema simplifications, removes indexes, +unique and foreign keys. It also provides a way to fix older values and migrates without the need to +resync from genesis.

    Lower level summary

    Schema simplifications

    Indexes, Unique and Foreign keys are removed in order to speedup syncing +#1295 +The same pr also introduces a different way to rollback, which doesn't rely on foreign keys and +indexes.

    Performance

    The DBSync team ran a big number of benchmarks and investigated ways to speedup syncing. A +conservative number of these will be included in the next release and the rest can be found in +performance view.

    Migrations and resyncing

    The next release will be 13.1.0, it will enable a migration without the need to resync. It will also +introduce a procedure that fixes bytes values of Datum and RedeemerData in existing databases +#1294

    Release

    The release has been mostly cherry-picked from master +#1294 and its scope can be seen +release view

    · 2 min read
    Kostas Dermentzis

    DBSync Update

    Fast restarts

    We fixed a long overdue issue in db-sync which caused long delays on restarts +1266. This has been +one of db-sync main objectives for this period. Restarts are now very fast, +because db-sync deletes almost nothing from the db, it just replays the ledger rules until it +reaches the tip of the db. The fix also improves reconnection speed, in cases where the node +restarts or the connection is temporarily lost. It also speeds up even more in cases where due to a +deployment mess up a very old snapshot or no snapshot at all is used.

    Property based testing

    We added stateful property based testing, using quickcheck-state-machine +1269. These tests use empty or +almost empty blocks to test the new behaviour of restarts and rollbacks.

    These tests generate arbitrarily a list of symbolic commands from these:

    RollForward Int
    RollBack BlockNo
    StopDBSync
    StartDBSync
    RestartNode
    AssertBlockNo BlockNo

    The commands are translated into real commands. For example RollForward Int will forge a new block +that fits on the current chain. These real commands are executed against db-sync using the mock +chain-sync server. The symbolic commands are executed against a vesy simplistic Model of db-sync +which looks like this:

      Model
    { serverTip :: BlockNo
    , dbSyncTip :: BlockNo
    , dbSynsIsOn :: Bool
    , dbSynsHasSynced :: Bool
    }

    Finally a number of postconditions are checked, related to the eventual block number of db-sync.

    Tech Debt

    We handled a number of tech debt in +1275 +This improves the code format of db-sync, deletes many queries that were never used and groups the +others. This tech debt resolution not only improves the experience of working in db-sync, but can +facilitate some of our other objectives, as it makes it very explicit which queries are used +during syncing and which indexes are necessary.

    Smash

    We worked on fixing an issue related to fetching pool metadata +1276. +The issue which is described in +1270

    · 2 min read
    Kostas Dermentzis

    DBSync Update

    New Tag

    We created a new db-sync tag 13.0.5 which addresses shortcomings of the last +release 13.0.4. It is currently under testing. +The Changelog is +here and in more details:

    • We fixed fees for tx with phase 2 failure that didn't include a total collateral field. +1248

    • We fixed an issue that could cause db-sync to crash if a specific rollback occured. +1247

    • DBSync will now avoid reserialising data, especially Datums, which not only slows down db-sync but +could result in the wrong CBOR encoding being inserted. +1217

    • All the fixes above come with unit tests which validates the fix.

    • Added support for preprod and preview from docker. DBSync no longer needs to include the configs +for different networks, these are directly fetched from the cardano world. +1254

    • We added better support from docker for the new disable options and the overall documentation. +1260

    All the above were also backported to the master branch

    Open source

    We made the db-sync board public, so +everyone can have access on the issues we prioritise. +We also added new tasks to the board, some of them could be approachable to newcomers or people who +want to contribute.

    Progress on tech debt and new features

    • 1223 was merged, which removes the +foreign keys from the db schema. This opens the road to a number of optimizations.

    • An additional fix on top of the previous work was added +1250

    • An initial version where DBSync does not rollback on restart is done here +1266. +This allows db-sync to restart much faster, without the need to delete data and reinsert them. In +the future it can also facilitate migrations in cases where the ledger snapshots have a breaking +change, without the need to resync everything from genesis.

    + + + + \ No newline at end of file diff --git a/tags/devx/index.html b/tags/devx/index.html new file mode 100644 index 00000000000..f13ef202860 --- /dev/null +++ b/tags/devx/index.html @@ -0,0 +1,24 @@ + + + + + +2 posts tagged with "devx" | Cardano Development Updates + + + + + + + + + + + + +
    +

    2 posts tagged with "devx"

    View All Tags

    · 2 min read
    Moritz Angermann

    High level summary

    The Developer Experience team has been dealing with day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, CI migration from Cicero to Hydra, and Buildkite to GitHub Actions. iohk-nix, haskell.nix, and devx have seen improvements.

    Lower level summary

    build support & maintainance

    The DevX team has helped troubleshoot a few CI issues, and focused on helping to migrate from Cicero to Hydra, as well as from Buildkite to GitHub Actions.

    compiler upgrades

    Compatibility with 9.6 has been continued and most of our libraries are not 9.6 compatible. Only a few are not, we hope to have this done by the end of the month. We've also started preliminarily adding GHC 9.8 to our infrastructure for early compiler regression tests.

    Hydra Tools

    Our repository, input-output-hk/actions, has seen quite some improvements to facility the hydra <-> github integration.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of preliminary GHC 9.8 support.

    devx

    The devx repository has seen significant improvements, including the addition of GitHub Codespaces, and DevContainers. Integrated with our actions/devx GitHub Actions, we have a consistent set of tooling for

    • nix develop shells
    • GitHub CodeSpaces integration
    • VSCode DevContainer support
    • GitHub Actions integration

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    · 3 min read
    Moritz Angermann

    High level summary

    The Developer Experience team has been devoted to day-to-day troubleshooting and support of various elements including build failures, compiler upgrades, the maintaince of our cardano-haskell-packages (CHaP), and infrastructure like GitHub Actions, iohk-nix, haskell.nix, and devx. Furthermore, we have also contributed to upstream tooling improvements.

    Lower level summary

    build support & maintainance

    Our DevX team has been instrumental in troubleshooting and fixing a wide range of issues, from broken windows builds and obscure LoadDLL errors to blst integration across Nix and Github CI. We've also initiated automatic uploads for release assets. Our efforts in streamlining complex CI setups have paid off, with some repositories like cardano-base experiencing significant reductions in CI complexity.

    compiler upgrades

    After the support for 9.2 across our libraries, we have started working on 9.6 compabilitiy as well. This move brings us closer to the upstream compiler, facilitating the contribution of patches and enabling early detection of regressions. In addition, we're prioritizing compaining even stronger for better backwards compatibility.

    CHaP (cardano-haskell-packages)

    We relocated the underlying tooling, (foliage), for CHaP into the IOG organization. Furthermore, we have introduced improved tooling to quickly add constraints to packages, better error reporting for add-revision and better hackage url compatibility to facilitate easer usage of CHaP.

    GitHub Actions

    Our repository, input-output-hk/actions, now houses the necessary actions for installing pre-requisites to build Cardano projects using GitHub Actions. Leveraging the base and haskell install actions has allowed us to simplify workflows in the repos, focusing primarily on invoking cabal.

    iohk-nix

    The iohk-nix repository has undergone a major revamp and now provides pre-built packages of the cryptographic libraries IOG utilizes for GitHub Runners. The key components we use, sodium, blst, and secp256k1, are also fixed to certain revisions within the iohk-nix repository.

    haskell.nix

    Haskell.nix has been maintained and updated with the addition of GHC 9.6.2 and GHC 8.2.8. After discovering performance regression in the native bignum backend, we switched the default bignum backend to gmp.

    devx

    The relatively new devx repository is where we experiment with a single nix development shell that aims to suffice for most use-cases at IOG. This initiative is expected to eliminate a number of CI failures related to project-build and shell interaction problems. The devx repository's readme has been updated to reflect its purpose and usage guidelines.

    upstream tooling

    Our team remains committed to enhancing upstream tooling, with ongoing contributions to GHC, Cabal, and Nix.

    + + + + \ No newline at end of file diff --git a/tags/embedding-quality/index.html b/tags/embedding-quality/index.html new file mode 100644 index 00000000000..b3f358dace3 --- /dev/null +++ b/tags/embedding-quality/index.html @@ -0,0 +1,25 @@ + + + + + +One post tagged with "embedding-quality" | Cardano Development Updates + + + + + + + + + + + + +
    +

    One post tagged with "embedding-quality"

    View All Tags

    · One min read
    Dorin Solomon

    High level summary

    We made good progress on most of the Action Items we agreed on Lisbon, like:

    • Cardano System Tests was fully open to public (tools, tests, results) +See cardano-node-tests webpage.
    • We defined an user-facing-functionality template that is used with the cardano-cli team
      • this includes acceptance criteria & user stories, and definition of done
    • We are in the process of running the cardano-node-tests at commit & PR level in cardano-node (we are affected by the Cicero migration right now but we did most of the work already)
    • We started to apply a labelling convention on cardano-node issues that will be used to generate some visual dashboards with some metrics [TBD]
    • Ziyand Liu started an End-to-End Development and Testing Process for Plutus Features
    + + + + \ No newline at end of file diff --git a/tags/goedel/index.html b/tags/goedel/index.html new file mode 100644 index 00000000000..7dc9f744b02 --- /dev/null +++ b/tags/goedel/index.html @@ -0,0 +1,49 @@ + + + + + +18 posts tagged with "goedel" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "goedel"

    View All Tags

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and testing the +performance analysis tool

    Details

    • drafting processs calculus semantics of mini protocol programs

    • testing the new performance modelling tool

    • further work on specification of mini protocols

    • extension of mini protocol framework to support communication of +programs with local environments via synchronous channels

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • working on collating and open sourcing performance analysis prototype

    • improvements to Ouroboros Praos specification in Isabelle

    • working on formalising chain sync mini-protocol

    • reviewing an alternatice semantics for DeltaQ

    • Seminar talk at U. Bergen on algebraic properties of timeliness

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • finalising a presenting performance analysis internship work to the +formal methods team

    • developed a new Isabelle mini-protocol framework and examples

    • planning an extended version of the ICE DeltaQ paper

    • working on algebraic rules for properisation of any-to-finish

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is currently formalising mini protocols and also further +developing the performance modelling prototype.

    Details

    • Development of an automated prover for showing conformance of +programs to state machines (as part of the mini-protocol framework)

    • Completion of the documentation of the (current state of the) +mini-protocol framework

    • Discussion about two DeltaQ lectures with two practical sessions as part +of 4th year masters course on distributed systemsby colleagues at UC +Louvain in the Autumn

    • Discussion about four DeltaQ lectures by colleagues at U. Bergen as part +of a 5th year Masters course in the Autumn

    • Adapted original DeltaQ implementation to the new typeclasses and +wrote property tests for its algebraic laws

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is formalising mini protocols and also further developing the +performance modelling prototype.

    Details

    • Developing new framework for specification and verification of +mini-protocols which is closer to the Haskell implementation.

    • Developed a new internal representation for the DeltaQ algebra that +allows for more modularity in backend implementations

    • Discussions regarding the Cardano networking specification

    + + + + \ No newline at end of file diff --git a/tags/goedel/page/2/index.html b/tags/goedel/page/2/index.html new file mode 100644 index 00000000000..529caac6f2f --- /dev/null +++ b/tags/goedel/page/2/index.html @@ -0,0 +1,46 @@ + + + + + +18 posts tagged with "goedel" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "goedel"

    View All Tags

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is working on formalising mini protocols, the performance +modelling prototype and also finishing off their ICE papers.

    Details

    • Formalization of the chain synchronization mini-protocol in the +thorn calculus

    • Final pre-publication steps for ICE 2023 papers

    • Developing approach for specification and verification of +mini-protocols

    • Started work on porting the DeltaQ framework to a new, more concrete +backend based on piecewise-polynomials

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the teams have been working on finalising their ICE papers +for publication in EPTCS, formalising concensus, and investigating chain +sync.

    Details

    • Preparing final versions of ICE papers

    • Reviewing the chain sync design and documentation

    • Refactoring the thorn calculus

    • First draft of Praos specification

    • Developing bounding factors on timeouts

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the teams presented two papers at ICE 2023.

    Details

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on giving and preparing public +talks, also on preparing final versions of their ICE 2023 papers, and +on analysing chain selection.

    This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

    Details

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on final revisions for the +pre-proceedings versions of two ICE 2023 papers.

    Details

    + + + + \ No newline at end of file diff --git a/tags/goedel/page/3/index.html b/tags/goedel/page/3/index.html new file mode 100644 index 00000000000..ac805505911 --- /dev/null +++ b/tags/goedel/page/3/index.html @@ -0,0 +1,46 @@ + + + + + +18 posts tagged with "goedel" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "goedel"

    View All Tags

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team had two paper accepted for ICE 2023 +(https://www.discotec.org/2023/ice). The event will be held in Lisbon +on 19th June 2023. The papers will be published in EPTCS.

    Details

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    The team is working on porting an existing formalisation of Ouroboros +Praos to a newer foundation.

    Details

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has submitted two papers for publication, carried +out consultancy with other teams and has an opening for an intern.

    Details

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on final drafts of two papers +for internal review and planning next steps of analysis of consensus +design refiniments.

    Details

    • Preparing final draft of DeltaQSD algebra paper for internal review

    • Preparing final draft of verifying design refinements for +distributed system design for internal review

    • Planning next phase of consensus design refinement analysis

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers +improving the deltaQ tutorial, consulting on performance design, and +the final version of the Djed paper.

    Details

    • Preparing draft of DeltaQSD algebra paper for ICE 2023

    • Successful outcome of Marlowe consultancy leading to substantial +improvement in performance

    • Preparing sections on the communication language and bisimulation +proofs for draft paper about verifying design refinements for +distributed system design

    • Camera ready version of Djed paper under preparation

    + + + + \ No newline at end of file diff --git a/tags/goedel/page/4/index.html b/tags/goedel/page/4/index.html new file mode 100644 index 00000000000..871b39d609b --- /dev/null +++ b/tags/goedel/page/4/index.html @@ -0,0 +1,47 @@ + + + + + +18 posts tagged with "goedel" | Cardano Development Updates + + + + + + + + + + + + +
    +

    18 posts tagged with "goedel"

    View All Tags

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, improving the deltaQ tutorial, consulting on +performance design, and the Djed paper has been accepted for +publication.

    Details

    • Preparing draft of DeltaQSD algebra paper for FORTE 2023

    • Extending the technical report on which the above paper is based

    • Consulting with an external company on performance engineering of Plutus contracts

    • Planning improvements and collecting material for the deltaQ +tutorial based on experience with systems that manage risk at +multiple timescales

    • Preparing sections on the communication language and idempontency +laws for draft paper about verifying design refinements for +distributed system design

    • Studying Cardano chain sync protocol

    • "Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin +Protocol" has been accepted for publication at IEEE ICBC 2023

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been working on drafts of two papers and one +technical report, distributivity properties of deltaQ, and consulting +on performance design with the Marlowe team.

    Details

    • Processing reviews on performance engineering paper and planning +paper revisions accordingly

    • Investigating distributivity properties of DeltaQ

    • Preparing sections on the thorn calculus and idempotency laws for +draft paper about verifying design refinements for distributed +system design

    • Consulting on performance design with Marlowe team

    · One min read
    James Chapman

    The team works on applied research and consulting in formal methods +that is directly applicable to evidence based engineering in Core Tech +and beyond.

    High level summary

    This sprint the team has been preparing several papers for peer review +and knowledge sharing and consulting within IO and the community.

    Details

    • R&D Seminar on experience participating in a member based organisation
    • Full day tutorial on performance engineering presented at HiPEAC +2023 conference
    • Finished preparing and submitted a paper on performance engineering +to an ACM workshop
    • Preparing a draft paper for future submission about verifying design +refinements for distributed system design
    • Consulting on performance design of other IO projects
    + + + + \ No newline at end of file diff --git a/tags/hydra/index.html b/tags/hydra/index.html new file mode 100644 index 00000000000..d431c156948 --- /dev/null +++ b/tags/hydra/index.html @@ -0,0 +1,105 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team conducted a packed Monthly Review meeting, +featuring demonstrations and the preparation of the monthly report. They +addressed flakiness in tests and enhanced the logs json schema, +improving overall test reliability. Additionally, the team successfully +built MacOS ARM64 (aarch64-darwin) binaries in CI, expanding platform +support. They further improved the network configuration by detecting +incompatible persisted states, contributing to overall system +robustness. Finally, the team released version 0.14.0, highlighting +their commitment to delivering regular updates and improvements.

    What did the team achieve this week

    • Monthly Review +meeting +packed with demonstrations and prepared monthly report +#1189
    • Fixed several flaky tests and improved the logs json schema +#1188#1190#1192
    • Built MacOS ARM64 (aarch64-darwin) binaries in CI +#1182
    • Improved network configuration by detecting incompatible persisted +states #1174
    • Released version 0.14.0

    What are the goals of next week

    • Start work on incremental decommit
    • Continue shepherding contributed PRs to completion
    • Finish stateless-observation work
    • Open a head on a Conway network

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team spent significant time opening a head among +themselves on mainnet using the release candidate, revealing and +addressing lurking bugs such as +#1174. Also +required was this change to dynamically calculate the min utxo value +#1176, a +necessary adjustment following the switch to inline datums. The team +engaged with cardano-cli / cardano-api maintainers to discuss recent +changes and collaborated on drafting feature ideas, including providing +Conway support +for the Hydra roadmap. As part of ongoing improvements, they +experimented with writing the specification in markdown instead of +LaTex.

    What did the team achieve this week

    • Opened head among us on mainnet and uncovered a few lurking bugs like +#1174 in the +release candidate
    • Calculate the min utxo value instead of hard-coding it +#1176, which is +needed since we switched to inline datums.
    • Met with the cardano-cli / cardano-api maintainers to discuss +recent changes and way forward
    • Drafted features ideas to provide Conway +support on the +Hydra roadmap
    • Experimented in writing the specification in markdown instead of LaTex

    What are the goals of next week

    • Have the Monthly review meeting with several demos
    • Release version 0.14.0 with this +scope
    • Complete tidying up chain layer via stateless observation changes in +hydra-node +#1096
    • Update dependencies to prepare for Conway +#1114

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team made several impactful updates. They addressed +misleading errors regarding collect com transactions, resolved a security +advisory (CVE-2023-42806), and simplified the Hydra Head protocol by using +inline datums. The team also tackled minor inconsistencies in specifications and +implementation, documented reasons for potentially dropped close transactions by +the cardano-node, and collaborated with SundaeLabs on an offline mode for +hydra-node. Additionally, they engaged in discussions with researchers about +incremental de-/commits.

    What did the team achieve this week

    • Removed misleading errors about collect com transactions #839
    • Addressed security advisory CVE-2023-42806 in PR #1161
    • Changed the head protocol to use inline datums, simplifying things in the hydra-node #1162
    • Addressed minor inconsistencies in spec and implementation #1104
    • Documented why close transacations might be dropped by the cardano-node (cant fix) #1039
    • Tidy up a few things here and there
    • Worked with SundaeLabs on the offline mode for hydra-node
    • Discussed incremental de-/commits with researchers

    What are the goals of next week

    • Start work on incremental decommits protocol specification #1057
    • Provide support to Hypix
    • Address all open bugs
    • Release version 0.14.0 with this scope
    • Update dependencies to prepare for Conway #1114
    • Shepherd off-line mode PR over the finish line
    • Complete tidying up chain layer via stateless observation changes in hydra-node #1096

    · 2 min read
    Sebastian Nagel

    High-level summary

    The last two weeks, the Hydra team achieved several milestones. They published +the monthly report for October, providing updates on project developments. The +team delivered a presentation and workshop at the Cardano Summit, contributing +to community engagement. They implemented a \"dirt road\" solution for the +\"Ignored init tx\" notification and moved the hydra-poll example project to a +dedicated repository. Additionally, the team built a hydra-chain-observer tool +for Hydra Heads, updated the toolchain to GHC 9.6.3, and made various +improvements to tooling and code formatting. They addressed specific issues, +such as fixing the gen-hydra-keys command and resolving concerns with the +rewritten hydra-tui. The team also enhanced the hydra-cluster smoke test +suite by fetching network configurations dynamically. Lastly, they actively +reviewed pull requests and architectural decision records from the community, +including contributions from SundaeSwap. An experiment, the Hydra tally, was +completed and successfully deployed to the mainnet by the Cardano Foundation.

    What did the team achieve this week

    • Published the monthly report for +october
    • Given a presentation / workshop at the Cardano summit +#1109
    • Dirt road implementation for \"Ignored init tx\" notification +#529 (without +stateless observation)
    • Completed and moved hydra-poll example project into a +dedicated +repository
    • Built a first version of a chain observation tool for Hydra Heads +#1096
    • Switched toolchain to GHC 9.6.3 and various improvements on tooling +and code formatting +#1135#1152#1151#1154
    • Fix gen-hydra-keys command to not overwrite existing +keys #1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Fetch network configurations instead of packaging them into +hydra-cluster (smoke) test suite +#1156
    • Reviewing PRs and ADRs from the community (SundaeSwap) +#1118#1157
    • Hydra tally experiment (Cardano Foundation) deployed to mainnet

    What are the goals of next week

    • Tackle reported bugs
    • Shepherd contributed off-line mode PR to the main codeline
    • Improve chain observation tool to include more data and refactor +existing code towards more stateless observation
    • Start work on incremental decommits

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team fixed the gen-hydra-keys command to avoid +overwriting existing keys, and resolved issues related to the rewritten +hydra-tui. They also worked on a \"dirt road\" implementation for the +\"Ignored init tx\" notification, improving the robustness of the system.

    The team finalized preparations for the Cardano Summit presentation, including +implementation of the hydra-poll example DApp.

    If you happen to read this and attend the Summit in Dubai, make sure to check +out our Masterclass about \"Developing Hydra + Mithril for Scaling Cardano\" on +Friday, November 3 at 14:00-15:30 local time in the \"Al Dar\" room!

    What did the team achieve this week

    • Fix gen-hydra-keys command to not overwrite existing keys +#1136
    • Fixed the rewritten hydra-tui#1113#1137
    • Finalized cardano summit preparation +#1109
    • Implemented the hydra-poll example DApp link to +repository
    • Dirt road implementation for \"Ignored init tx\" notification +#529

    What are the goals of next week

    • Attend cardano summit and deliver presentation
    • Clarify / close user created issues
    • Build aarch64-darwin binaries in CI
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/10/index.html b/tags/hydra/page/10/index.html new file mode 100644 index 00000000000..73e648c3dd0 --- /dev/null +++ b/tags/hydra/page/10/index.html @@ -0,0 +1,31 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on the website and reduced the cost for commit transactions by ~30% with the help of reference scripts.

    The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.

    What did the team achieve this week

    • Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.
    • Reduce commit transaction costs by ~30% with reference scripts.
    • Prepared an RFP for external audit of the Hydra Head solution.
    • Fixed transaction cost benchmarks for abort tx #631.
    • Recorded decision to use model-based testing (ADR22) and improved Model documentation.
      • Concluding the first increment on Validate coordinated Head protocol #194.
      • Formulated next step / follow-up on testing the Soundness property of our protocol #656.
    • Switched to using nix flakes for development setup and CI build #646.

    What are the goals of next week

    • Push ADR21 & tx validity gap over the finish line (smoke tests missing).
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Close & recap on the year with another monthly report (+ blog post).

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has worked on completing to "Validate coordinated head protocol against formal model", this is a huge step to verify the implementation is secure. They also worked on implementing ADR21 related to bounded tx validity which is now under review. HydraPay project, from Obsidian Systems, is coming to an end of the first phase at least, so team did a review and submitted couple of issues they found in the process. The team had a meeting with the Director of CyberSecurity - topic was the RFP that is currently in flight that should scope the work of future auditors. Also, the team completed the hydra-tutorial review created by our colleague Thomas Vellecoop from the education team, and we are close to integrate it to our official site. From the development side, they have fixed a bug on the CI when running the benchmark jobs to calculate the cost of abortTx and a flaky spec which checks a plutus merkle-tree is always balanced.

    What did the team achieve this week

    • Document model based testing #194 & #641
    • Got ADR21, reducing gaps between implementation and specification, under review.
    • Complete review on hydra-tutorial.
    • Complete first round of review on HydraPay work #634
    • Meeting with Director of CyberSecurity frio IOG to unblock "the RFP prepared for the external audit" #606
    • Remove vasil-dev and testnet from smoke-test because they were not working #630
    • Fix flaky plutus-merkle-tree test #642
    • Refactor NetworkSpec to improve legilibility.
    • Fix benchmark cost for abortTx #631
    • Adapt nix.conf to the recent hydra-ci nix cache migration.

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation.
    • Integrate the hydra-tutorial.
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
    • Get Cicero (new CI) working.
    • Use reference inputs to reduce the cost of the commitTx.

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has worked on cleaning up several things in progress +after last week's summit. They have extended their model-based testing (MBT) +approach with transaction creation & observation +#410, solved +AcquirePointTooOld problems of the hydra-node with by changing the wallet +initialization #439. +Also, the Hydra researchers updated the security proofs of the Coordinated Hydra +Head, which are bound to be included in the Hydra HeadV1 specification.

    What did the team achieve this week

    • Monthly review & report - will also be published on our website #644
    • Extended the model-based testing (MBT) with transaction creation/observation #410
    • Solve AcquirePointTooOld problems with new wallet initialization #439
    • Fixed our hydraw deployments (EC2 instances)
    • Created & discussed ADR21 within tx validity work
    • Received & discussed security proofs of Coordinated Hydra Head (requires more work)

    What are the goals of next week

    • Get ADR21 accepted & close tx validity gap in our implementation
    • Complete review & integrate the Hydra tutorial
    • Review latest hydra-pay work
    • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec
    • Get Cicero (new CI) working

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team attended the Cardano Summit in Lausanne, where Sebastian gave a presentation about Hydra and the whole team connected with the Cardano Community. After the public event, th Hydra team also conducted a workshop, which provided room for a retrospective, various planning sessions and they hacked together on different ideas.

    What did the team achieve this week

    What are the goals of next week

    • Monthly report & review meeting
    • Tie up several loose ends / branches.
    • Resolve Tx validity discussions & PRs.
    • Review cicero PR & try it out.

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team released version 0.8.1, which includes several fixes and a user-wished extension of the persistence introduced by 0.8.0 of replaying server outputs to make clients like the hydra-tui be aware of the latest hydra-node state. The team also worked on the specification and closing gaps in the on-chain scripts, collaborated with the education team on a Hydra tutorial and also renamed the repository from hydra-poc to hydra!

    What did the team achieve this week

    • Implemented replaying of server outputs to address #580
    • Released version 0.8.1 containing this and other fixes Release notes
    • Worked on the bounded tx validity as one of the on-chain script fixes, but couldnt finish it just yet #615
    • Collaborated with the education team on a Hydra tutorial.
    • Discovered and discussed issues with the seen ledger.
    • Renamed the Hydra repository hydra-poc -> hydra

    What are the goals of next week

    • Create and discuss an ADR about handling tx validity correctly.
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET
    • Have a team workshop / hackathon after the summit:
      • Retrospective
      • Roadmapping session
      • Hack on something complex or useful
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/11/index.html b/tags/hydra/page/11/index.html new file mode 100644 index 00000000000..e2b13196445 --- /dev/null +++ b/tags/hydra/page/11/index.html @@ -0,0 +1,35 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team published together with Obsidian Systems a light paper +on our "Hydra for Payments" project (Link). They have created a draft scope RFP for the external audit and worked with the internal audit team to clear up the specification. From the development side, they have fixed a bug with chain-following when using persistence and improved logs for better observability of hydra-node processes.

    What did the team achieve this week

    • Published Hydra for Payments light paper (Link)
    • Have a draft RFP ready for a first review internally
    • Answered the internal auditors questions
    • Fixed a bug with following the chain when starting with persistence (#599)
    • Minor improvements to logging for better observability (#598, #600)
    • Non-achievement: Needed to work around flaky TUI ci, follow-up issue if anyone wants to have a look (#590)

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Close more gaps #452
    • Attend the Cardano Summit in Lausanne. Hydra will be topic of one talk! Save the date+time: "Developing Hydra" on Day 2, Nov 21st, 13:50 CET

    · One min read
    Sebastian Nagel

    High level summary

    This week, the hydra team first re-deployed the latest Hydra scripts to the re-spun preview network, see 0.8.0 release notes. They also completed implementation of ADR18 and worked on the validators, but development got impacted by some CI flakyness. The team also met to discuss hard forks & protocol parameter updates #195 and alignment of the specification document with auditors.

    What did the team achieve this week

    • Complete and merge ADR18 #579
    • Re-deploy hydra scripts to respun preview network, see 0.8.0 release notes #595
    • Have first gap of #452 in review.
    • Non-achievement: Flaky CI for TUI was impacting us, so we investigated this a lot.
    • Engineering meeting to discuss hard forks and protocol parameter updates #195
    • Met the internal audit team on the specification to set scope, expectations and collected requirements/open questions.
    • Drafted project scope for an external audit RFP.

    What are the goals of next week

    • Implement event-sourced persistence #580
    • Answer the internal auditors questions
    • Have a draft RFP ready for a first review internally
    • Close some gaps #452

    · One min read
    Sebastian Nagel

    High level summary

    This week, the hydra team completed several user experience improvements to the +hydra-tui and hydra-node, and delivered a first version of persisted head +states by publishing release version +0.8.0. +Besides this, they met with researchers on topic of the HeadV1 specification and +kicked-off work on the RFP for an external audit of the Hydra Head protocol and implementation.

    What did the team achieve this week

    • Completed the UX improvements on the hydra-tui
    • Released version 0.8.0, which delivers a first version of persisted head states
    • Met with researchers on the HeadV1 specification
    • Started work on the RFP for our external audit

    What are the goals of next week

    • Complete ADR18 implementation and get it merged
    • Start work on event-sourced persistence #580
    • Have a first plutus script gap closed #452
    • Revamp CI to use flakes and build macos artifacts (stretch goal: migrate to cicero for nix builds)

    · One min read
    Sebastian Nagel

    High level summary

    This week, the hydra team reviewed and addressed several open comments on the +new HeadV1 specification, completing a list the of identified gaps between +specification and implementation while doing so. In the wake of the recent +demonstration of SundaeSwap running their DEX in a Hydra Head, they met with +them to capture feature ideas & incorporate their feedback on the roadmap, as +well as potential research avenues.

    What did the team achieve this week

    What are the goals of next week

    • Complete the last two items required for a version 0.8.0.
    • Cut the next release, version 0.8.0
    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Have the CI build macos artifacts

    · 2 min read
    Sebastian Nagel

    High level summary

    This week, the hydra team worked on implementing ADR18 to get backup & restore functionality of the hydra-node over the line. Although not fully there yet, an early version of that feature was already needed and succesfully tested by SundaeSwap in their recent demonstration of their DEX running on Hydra. The team also worked on the updated specificaton, met with the researchers and discussed a solution for how to secure rollbacks "past the opening of a Head". We also reponded to recent requests for static executables and prioritized that feature higher, implemented it and merged it.

    What did the team achieve this week

    • Last week we thought we were done with ADR18, but were not ...
    • ... instead, SundaeSwap has been preparing their Rare bloom Hydra demo & needed assistence.
    • Implemented a first version for persistence #187 in response.
    • Enhanced CI to publish test results on our website
    • Engineering meeting -> discussed rollbacks and discovered a solution for the rollback past open problem!
    • Pulled static executable feature #200 into scope, implemented it and merged it!
    • Received and read through a project proposal by a vendor (building a Hydra platform).

    What are the goals of next week

    • Get backup/recovery #187 done with proper event sourcing (ADR18)
    • Cut the next release, version 0.8.0
    • Address open comments on specification document & complete the list of identified gaps between specification and implementation #452
    • Have the CI build macos artifacts
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/2/index.html b/tags/hydra/page/2/index.html new file mode 100644 index 00000000000..f5a55b4bf31 --- /dev/null +++ b/tags/hydra/page/2/index.html @@ -0,0 +1,51 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team mainly focused on preparing a masterclass and workshop for #CardanoSummit2023.

    In addition, they improved the Hydra node API's submit-transaction endpoint to accept three different encoding types: Base16 encoded CBOR string, TextEnvelope type, and JSON. +This improvement offers users greater flexibility and ease of interaction with the API.

    Finally, the team has followed up on the TUI brick upgrade to version 1.10. +This effort has resulted in addressing minor details and enhancing the overall user experience with the TUI.

    What did the team achieve this week

    • Prepare presentation and workshop for Cardano Summit.
    • More TUI fixes and improvements.
    • Upgrade GHC from 9.2.8 -> 9.6.2 #1105
    • Solved user issue related to submitting transactions in cbor format #1111.
    • Fix hydraw connection issue making it more stable #1121.

    What are the goals of next week

    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team's primary focus was on finalizing the new network resilience layer. This involved adding persistency to ensure data integrity.

    They also completed the exploration of potentially moving the Plutus validator scripts to Aiken.

    Additionally, the team dedicated some attention to our TUI by upgrading the Brick framework. They also undertook a comprehensive refactoring of the project's structure and addressed various bug fixes. These efforts are aimed at enhancing the overall user experience of our project.

    What did the team achieve this week

    • Network Resilience Persistence (#1101)[https://github.com/input-output-hk/hydra/pull/1101].
    • Upgrade brick on TUI (#1103)[https://github.com/input-output-hk/hydra/pull/1103].
    • Aiken commit validator translation (#1072)[https://github.com/input-output-hk/hydra/pull/1072].
    • Fixed some bugs in our TUI client.

    What are the goals of next week

    • Prepare presentation and workshop for Cardano Summit.
    • Work on hydra-poll dApp for Cardano summit.
    • Start the work on packaging hydra-node and related services.

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team released version 0.13.0, which includes fixes and extensions for state persistency and the ability to draft a commit transaction using inline datums.

    The team also delivered the first version of the network resilience layer, significantly increasing head availability.

    Additionally, they have been providing support to several funded Catalyst projects that want to build on Hydra.

    Last but not least, they updated and published security policy and vulnerability disclosure policy reports on how to handle security vulnerabilities within Hydra.

    What did the team achieve this week

    • Release 0.13.0
    • Published vulnerability reports #1088
    • Merged network resilience work part I #1074
    • Planning for Cardano Summit participation
    • Discussions with funded Catalyst projects wanting to build on Hydra for support
    • Merged typos fix PR from @omahs #1095

    What are the goals of next week

    • Complete Aiken commit validator script #1072
    • Complete Kupo integration #1078
    • Brick upgrade on TUI #1103
    • Clean backlog
    • Prepare and rehearse demo and talk for Cardano Summit

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team mainly focused on having a working new reliability +network layer; and specified its expected behavior in a new ADR.

    They also revisited the security policy and vulnerability disclosure policy on +how to handle security vulnerability within Hydra, and in particular how to +handle so-called "Silent fixes".

    What did the team achieve this week

    • Updated security policy and vulnerability disclosure policy #1088
    • Adr/network reliability #1082

    What are the goals of next week

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team conducted the monthly review meeting in +collaboration with Mithril, enhancing project coordination.

    The team improved the gen-hydra-key node command for smoother usability +and identified concrete steps to enhance network resiliency in feature +items #188, +#1080, and +#1079. +Additionally, they contributed the aiken-mode editor integration to the +aiken-lang organization, updated dependencies to utilize cardano-api +8.20, and published the Hydra security advisory CVE-2023-42806 with a +workaround available for users.

    These efforts demonstrate the team\'s commitment to project improvement, +security, and open-source community collaboration.

    What did the team achieve this week

    • Conducted the monthly review meeting together with Mithril
    • Improved gen-hydra-key node command +#1077
    • Established a clear plan to improve resiliency of network and manifested +feature items #188, +#1080 and +#1079
    • Moved aiken-mode (created by SN) +to aiken-lang organization
    • Updated dependencies to using cardano-api 8.20 +#1075
    • Published security advisory +CVE-2023-42806 +(workaround available)

    What are the goals of next week

    • Write-up the monthly report for September
    • Finish "network resilience to disconnects" +#188
    • Finish kupo integration with hydra +#1078
    • Discuss and decide on using aiken or not
    • Address the published security advisory +CVE-2023-42806 +(to not require workaround)
    • Ideally, release 0.13.0
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/3/index.html b/tags/hydra/page/3/index.html new file mode 100644 index 00000000000..8ca50fa0580 --- /dev/null +++ b/tags/hydra/page/3/index.html @@ -0,0 +1,67 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · One min read
    Sasha Bogicevic
    Sebastian Nagel

    High-level summary

    This week, most of the Hydra team was attending a cardano scaling workshop in +Nantes, France. They used this oportunity to meet fellow mithril team and spend +some time together to hack on some code and, as always, reflect on the past work +and find optimal path forward for both projects. They also fixed a bug that +caused hydra-node to crash when querying L1, worked on a new network resillience +proof-of-concept and accepted a new ADR related to stateless transaction +observation.

    What did the team achieve this week

    • Cardano scaling workshop with members of hydra and mithril teams
    • Accepted user contribution for possible new use-case #1048
    • Fix for the hydra-node crash related to internal wallet query #1053
    • Collected experimental CI findings #1070
    • Propose first POC for the network resilience #1074

    What are the goals of next week

    • Monthly review meeting & report including updates from Mithril
    • Review POC and discuss our options for the network resilience
    • Update cardano-api to version 8.20
    • Address TODOs on aiken commit validator #1072
    • Complete hydra-support in kupo kupo#117

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team improved the commit process with support for inline +datums. They simplified the chain layer by refactoring how the chain state is +persisted. Updates to the Hydra tutorial were completed, including CI workflows +to keep it up-to-date. The team engaged in discussions with researchers about +incremental commits & decommits, and drafted an architectural decision record +for a resource-based API. They also explored simpler solutions for the upcoming +network resilience feature.

    What did the team achieve this week

    • Support InlineScriptDatum in commit +#1043
    • Refactored chain state persistency +#1049
    • Completed tutorial updates (by adding CI and some cleanup) +#997
    • Intersect Open Source committee meeting
    • Experimented with various models to better express the \"Network +resilience problem\" to find a KISS solution for +#188
    • Drafted and discussed incremental de-/commit features within team +and with researchers +#199 and +#1057
    • Created ADR for a resource based overhaul of the API +#1028

    What are the goals of next week

    • Meetup of Hydra & Mithril contributors in Nantes, France
    • Integrated cardano-api 8.15 to have GHC 9.6 support
    • A clear design for incremental commits (decommits are already +understood)
    • An ADR for improving tx construction & observation to not need chain +state

    · One min read
    Sasha Bogicevic

    High-level summary

    This week, the Hydra team focused primarily on changes needed in the network +layer and have the first draft document related to needed design. They also +improved the user experience by allowing a commit using inline datums. +Discussed the off-chain governance with researchers and improved internal model +tests.

    What did the team achieve this week

    • Monthly report published
    • Small changes to hydraw and tutorial in light of the Masterclass
    • Investigated a bug and saw it was solved by recent developments
    • Improved the model tests by fully validating L1 transactions
    • Enhanced the /commit API to also allow commit from scripts with inline datums (user request)
    • Discussed off-chain governance with IOG and CF researchers
    • Drafted a first network specification document in the context of Network resilience

    What are the goals of next week

    • Have a clear understanding of the changes we need for the "Improve network resiliency" feature
    • Groomed and agreed plan on incremental commits/decommits
    • Updated tutorials including CI workflows to check consistency
    • Update to GHC 9.6 and latest cardano dependencies (ledger/plutus)

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team conducted the monthly review meeting for Agust,which +continously ensures transparent communication and project evaluation.

    In terms of community engagement, the Hydra team gave a Hydra master-class at +RareEvo workshop as an educational initiative for the community. +Additionally, the team updated the Hydra demo and tutorial to include Mithril +and latest release changes.

    They also focused on exploring the Hydra network resiliance in order to improve +hydra-node availability, as it becomes stuck very easily and that leads to a +bad user experience.

    What did the team achieve this week

    • Hydra master-class at RareEvo workshop!
    • Monthly report & review meeting
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Groomed network resilience and explorer features #188
    • New ADR for “Resourced based API” #1028

    What are the goals of next week

    • Have a poc on network resilience working #188
    • Fix issue #931: “Chain state in head state not updated on replayed observation”
    • Fix issue #1039: "Close transaction dropped from cardano-node"

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team released version 0.12.0, a significant update that +brings support for cardano-node 8.1.2, along with performance enhancements and +various API improvements. Additionally, the team successfully onboarded a new +contributor who is now actively participating in operating a Hydra Head. They +took part in a meeting of the Intersect open source committee and prepared the +Hydra master-class for RareEvo, an educational initiative for the community.

    If you happen to be at RareEvo, register for the Hydra master-class using this +form. +We hope to make it possible to follow along on-line as well and will announce +details on the Hydra announcements channel on the IOG discord +server.

    What did the team achieve this week

    • Released version 0.12.0 which adds support for cardano-node 8.1.2, performance +and several API improvements. Release notes
    • Replaced commit via websocket with external draft + submit. #954
    • Onboarded new contributor to the point where he actively participates in operating a Head now.
    • Joined a first meeting of the Intersect open source committee
    • Prepared the Hydra master-class for RareEvo.

    What are the goals of next week

    • Monthly review meeting
    • Run the Hydra master-class at RareEvo!
    • Updated Hydra tutorial including Mithril and re-record demo/tutorial stuff
    • Clear out red bin items (technical debt)
    • Groom network resilience and explorer features
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/4/index.html b/tags/hydra/page/4/index.html new file mode 100644 index 00000000000..52b7bdf8889 --- /dev/null +++ b/tags/hydra/page/4/index.html @@ -0,0 +1,61 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · One min read
    Franco Testagrossa
    Sebastian Nagel

    High-level summary

    This week, the Hydra team updated hydra-node to support cardano-node version +8.1.2, ensuring compatibility with the latest mainnet release. The team also +participated in discussions about a "cardanonical" JSON schema and added it as a +submodule to the project, contributing to improved data modeling and +interoperability.

    In terms of community engagement, the team successfully onboarded a new +contributor, also participated in a RareEvo Twitter space, and continued +preparations for the Hydra master-class.

    What did the team achieve this week

    • Updated dependencies to support cardano-node 8.1.2 #1007
    • Engaged in discussions about a cardanonical json schema and +add it as submodule to the project +#1013
    • Onboarded a new contributor to the hydra project (@locallycompact)
    • Joined RareEvo twitter space and continued preparation of hydra master-class

    What are the goals of next week

    • Update & streamline tutorial to work with latest version of hydra-node
    • Remove the internal commit functionality #954
    • Release 0.12.0

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team achieved notable progress in various aspects of the +project. The team updated the use case section for auctions on the /unstable +branch of the website, improving the understanding of Hydras applicability.

    From the development side, the team successfully completed event-sourced +persistence, a key enhancement in the projects architecture which improves +off-chain transaction processing performance. They also added a +submit-transaction endpoint to the API.

    In addition to project-related progress, the team actively engaged in community +reviews for several catalyst proposals related to Hydra and Mithril, +contributing to the wider Cardano ecosystem.

    Finally, the full report for the month of July was also published here.

    What did the team achieve this week

    • Published the monthly report for July
    • Updated the use case section for auctions (published on /unstable branch)
    • Completed event sourced persistence #913
    • Added a submit-transaction endpoint to the API #966
    • Community reviews for several catalyst proposals related to Hydra and Mithril
    • Created a network testing tool (hydra-net) #1006

    What are the goals of next week

    • Update hydra-node to work with cardano-node version 8.x
    • Remove the internal commit functionality
    • Release version 0.12.0
    • Update & streamline tutorial to work with latest version of hydra-node

    · 2 min read
    Sebastian Nagel

    High-level summary

    During this week, the Hydra team achieved significant progress in various areas. +They conducted the monthly review meeting for July, which continously ensures +transparent communication and project evaluation. The team migrated the core +logic of the node to an event-sourced architecture and incremental writes of +events to persistence, enhancing the projects performance and maintainability. +Furthermore, the team added the ability to read protocol parameters via the API +and fixed the CI workflows to support pull requests from forks of external +contributors, streamlining the development process for community involvement.

    What did the team achieve this week

    • Held the monthly review meeting for July (recording)
    • Migrate the core logic of the node to an event-sourced architecture #999
    • Updated persistence to faster incremental writes of events #1000
    • Added ability to read protocol parameters via API #735
    • Fix CI workflows to support pull requests from forks of external contributors #993
    • Updated to GHC 9.2.8 #1005
    • Prepared an updated use cases section on https://hydra.family (published with next release)

    What are the goals of next week

    • Publish monthly report
    • Complete user transaction submission work #966
    • Remove commit from internal wallet (deprecated) #954

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team updated the specification to align with recent +off-chain protocol changes, completed refactoring the snapshot emission +in preparation for event-sourced protocol logic, and updated to GHC +9.2.7, resulting in improved compile times and slightly smaller Plutus +scripts.

    What did the team achieve this week

    • Updated the specification to match the recent off-chain protocol +changes to complete +#728
    • Refactored the snapshot emission logic in preparation for event +sourced protocol logic.
    • Updated to GHC 9.2.7, which led to improved compile times and +slightly smaller plutus scripts.

    What are the goals of next week

    • Monthly review meeting next wednesday and July report
    • Reflect latest information onto our roadmap.
    • Actual implemention of event-sourced persistence +#913.
    • Update the use cases section on https://hydra.family
    • Remove deprecated internal commit +#954.

    · One min read
    Franco Testagrossa
    Sasha Bogicevic

    High-level summary

    This week the team focused on exploring the event sourced persistence in order +to improve hydra-node performance. Because of this work the team noticed we +need to refactor the emit snapshot emission logic and update the spec in the +light of new changes. They also took the time to revisit their goals and product +plans for the next quarter as well as doing some security fixes related to +multisignatures.

    What did the team achieve this week

    • Finished spike about performance improvements of event sourced persistence #963.
    • Refactor snapshot emission in protocol logic.
    • Revisited our roadmap and goals.
    • Prepared and conducated a learning session on lean-waste.
    • Improve security of multi-signature checks, see this Github security advisory.
    • Implemented a cache friendly way to version our binaries #962.

    What are the goals of next week

    • Implement Event sourced persistence #913.
    • Remove deprecated internal commit #954 and close #728.
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/5/index.html b/tags/hydra/page/5/index.html new file mode 100644 index 00000000000..1493f93689c --- /dev/null +++ b/tags/hydra/page/5/index.html @@ -0,0 +1,58 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · One min read
    Franco Testagrossa
    Sasha Bogicevic

    High-level summary

    This week the Hydra team accomplished some nice progress. They secured the +network layer further by implementing authentication of the messages between the +peers in the Head protocol. In the process they also managed to separate +HeartBeat messages from the protocol ones which somewhat improved the quality of +code in Hydra. The team also finished work related to sending only transaction +ids in ReqSn messages, fixed an issue in the smoke tests, and improved benchmark +publishing on the website.

    What did the team achieve this week

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Add new endpoint for submitting client transactions
    • Remove commit from internal wallet

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team wrote and published the monthly report for June, +implemented the end-to-end functionality for external commits, and tested it on +the preview environment. They also listed Hydra as a tool on the Cardano +developer portal, providing more visibility for the project. The team clarified +the path forward for L2 protocol improvements and explored an alternative CI +approach using cabal instead of nix. Additionally, they released version 0.11.0, +marking another milestone in the projects development.

    What did the team achieve this week

    • Written and published the monthly report for June
    • Implemented external commits end-to-end incl. tested it on preview #215
    • Listed Hydra as a tool on cardano developer portal
    • Cleared up path forward on L2 protocol improvements #728
    • Established an alternative CI using more cabal tools #923
    • Release version 0.11.0

    What are the goals of next week

    • Spike on performance improvements of event sourced persistence #913
    • Complete ReqSn only sends transaction ids #728
    • Groom and plan last items for 0.12.0 (remove internal commit)
    • Improve reliability of benchmarks

    · One min read
    Franco Testagrossa
    Pascal Grange

    High-level summary

    This week, the Hydra team shared progress updates during the monthly review +meeting (monthly report and video recording available soon) and started +experimenting on preview network with the new commit from external wallet +feature.

    What did the team achieve this week

    • Monthly report & review meeting, demonstrating commit from external +wallet
    • Published regular benchmarks for +Hydra
    • Moved forward the journey for external commits using multiple script UTxOs +#903
    • Changed the API to only put transaction id in snapshots, instead of the full +transactions #922 -> this +is now evolved into fully addressing #728
    • Fuel marking is now optional as one can now commit from an external wallet +#924
    • Add flag option to display node version on tui +#934

    What are the goals of next week

    • Complete external commits using multiple script UTxOs #903
    • New release 0.11.0
    • Dirtroad solution of improved persistence performance #913

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team focused their efforts on continuing to investigate and +experiment operating a head on mainnet. They collected several bugs and issues +and worked on fixing them. Now the team is soon to release a new version, +0.11.0, which comes with a lot of improvements and bug fixes.

    What did the team achieve this week

    • Restored and fixed a bug which stalled our head on mainnet #927
    • Solved one user issue #914
    • Reduced significantly local state size and logs by removing the full scripts from it #928
    • (pending review) Reduced snapshot size in the API, by only including tx ids #922

    What are the goals of next week

    • New release 0.11.0
    • Monthly report & review meeting.
    • Fix some minor bugs discovered when operating our head on mainnet
    • Complete journey for external commits using multiple script UTxOs #903
    • Publish benchmarks and provide regular benchmarks for Hydra #186

    · 2 min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team worked on multiple fronts. They finished the +investigation about the broken head on mainnet and re-opened their persistent +head instance. The team also fixed the monthly report publication on their +website and started sketching ideas and further improvements. Also, they are on +the last mile to deliver a new feature which will allow parties to commit funds +from extern wallets. Finally the team started to work on optimizing the +performance on their benchmarks.

    What did the team achieve this week

    • Finished investigation on broken head on mainnet #897 and re-opened it.
    • Added support for externally committing regular utxo #887
    • Fix monthly report publication on docs website and published the monthly report. Odd problems when publishing monthly report:
      • Make us think about if we should change something about the website #908
      • Open issue to docusaurus #9036
    • Fixed a bug in the benchmark process #910
    • Explored performance of the hydra-node{.verbatim} and identified a +bottleneck.
    • Timed transaction feature is being used by the auction project 🎉

    What are the goals of next week

    • Complete performance analysis and start/plan improvements and provide +regular benchmarks for Hydra #186
    • Add hydra as tool to developer platform #872.
    • Authenticate network messages #727.
    • Complete journey for external commits using multiple script UTxOs #903
    • Start implementing Option B for external commits #215.
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/6/index.html b/tags/hydra/page/6/index.html new file mode 100644 index 00000000000..429b3f23b38 --- /dev/null +++ b/tags/hydra/page/6/index.html @@ -0,0 +1,60 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · 2 min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team has put their effort on finding solutions on many +different problems, such as our broken head on mainnet +#897, our fragile monthly +report publications on the website and implementing Option A for +external commits #215. +Although most of these items are still open, huge progress has been made. To +accelerate the investigation, they improved their logging to give more precise +errors when a transition requirement fails, and to reduce duplication on effets +logged content. Last but not least, the team is exploring formal methods and +attended a workshop on formalizing cryptographic protocols in Agda.

    What did the team achieve this week

    • Continued investigating broken head and opened an issue to keep track #897.

      As part of this issue, improvements were made to the node logs:

      • Give a precise error when a transition requirement fails #895.

      • Reduce duplication for effects logged content by using sequential eventId and effectId pair #896.

    • Fixed references in the hydra specification #893.

    • Attended a workshop on formal methods and crypto in Agda.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete journey for external commits implementing Option A and start implementing Option B #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.
    • Fix monthly report publication on docs website.

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team accomplished several important tasks. They held their +monthly review meeting and drafted the report for May. They made progress on +implementing the first end-to-end journey for external commits using "Option A" +for normal UTxOs, while still considering "Option B". The team also integrated a +Spanish translation contributed by the community, created micro-benchmarks for +transaction validation and deserialization, and made improvements to +hydra-node's version reporting. Last but not least, they implemented the ability +to commit multiple UTxOs to a head at once.

    What did the team achieve this week

    • Held the monthly review meeting (recording + slides) & drafted the report for May.
    • Have a first end-to-end journey for external commits implementing Option A +for normal UTxOs #887 (still considering Option B).
    • Integrated the spanish translation #866.
    • Created micro-benchmarks for transaction validation and deserialization #884.
    • Improve hydra-node version reporting on non-released builds #849
    • Some minor CI improvements following up last weeks changes.
    • Allow commit transactions with multiple UTxO #774.

    What are the goals of next week

    • Investigate and re-open our team-internal head on mainnet.
    • Improve and provide regular benchmarks for Hydra #186.
    • Complete external commits with script UTxOs #215.
    • Authenticate network messages #727.
    • Add hydra as tool to developr platform #872.

    · 2 min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team has worked on several fronts, including improvements of their CI speed, logs, documentation pages and adding the support for timed transactions. They also updated the "Coding Standards" for the project, improved the troubleshooting page on their website and wrote a section about how to operate a hydra node. Finally the team completed a feature request that allows clients to submit and validate transactions to their hydra nodes using time validity ranges, ensuring isomorphism with L1.

    What did the team achieve this week

    • Complete validation of timed transactions feature #196.
    • Write ops instructions and troubleshooting #569 and improve logs.
    • Remove --ledger-genesis argument to hydra-node options #863.
    • Fix issue with garbage collected caches by using a new cardano-scaling.cachix in more workflows #877.
    • Use nix to build test binaries to increase CI speed #867.
    • Updated our Coding Standards.

    What are the goals of next week

    • Monthly report & review meeting.
    • Have a first end-to-end journey for external commits implementing "Option A" #215.
    • Integrate spanish translation #866.
    • Improve and provide regular benchmarks for Hydra #186.
    • Allow commit transactions with multiple UTxO #774.
    • Explored stateless observation and refined hydra explorer ticket #696.

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team achieved a number of milestones, including the release +of the first mainnet compatible version. Besides this they also addressed +inconsistencies in rollback handling, added an architecture page to the website, +reducing the size of logs using event IDs. They also had productive discussions +with researchers on plans for incremental commits/decommits and had a whiteboard +session on DeFi and lending protocols. The goals for next week include +completing the validation of the timed transactions feature, exploring stateless +observation, refining the Hydra explorer ticket, writing ops instructions and +troubleshooting, and implementing the first end-to-end journey for external +commits.

    What did the team achieve this week

    • Released first mainnnet compatible version 0.10.0
    • Addressed inconsist handling of rollbacks #784
    • Added architecture page and fixed haddock links on our website #838
    • Opened a new hydra head on mainnet
    • Talked with researchers on initial plan for incremental commits/decommits
    • Had a Whiteboard session on DeFi and lending protocols
    • Reduced size of logs using event ids #859
    • Published the monthly report for April

    What are the goals of next week

    • Complete validation of timed transactions feature #196
    • Explored stateless observation and refined hydra explorer ticket #696
    • Write ops instructions and troubleshooting #569 and improve logs
    • Have a first end-to-end journey for external commits implemented #215

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team held their Monthly review meeting and drafted the +report which likely is published next week. They put the spec into the +repository and website, addressed a user issue and fixed the TUI peer list. +Furthermore, they updated dependencies, conducted a Twitter space on Auctions +use cases, covered the rollback bug with tests and implemented a solution. +Looking ahead, their goals for next week include releasing 0.10.0, implementing +timed transactions support, writing a Query API ADR, and grooming work items +like off-chain benchmarks.

    What did the team achieve this week

    • Held the Monthly review meeting and drafted the report (to be published next week)
    • Added the spec into the repository +#693 and published on +the +website
    • Groom and addressed user issue #823
    • Covered the rollback bug with tests and implemented a solution (to be reviewed) #784
    • Fixed the TUI peer list
    • Updated dependencies to match cardano-node master
    • Conducted a twitter space on Auctions use cases

    What are the goals of next week

    • Release 0.10.0
    • Support timed transactions solution drafted and validated API with users
    • Write Query API ADR and groom a concrete step
    • Groom and solve PostTxOnChainFailed UX problem #832
    • Groom off-chain benchmarks idea #186 and turn it into a feature
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/7/index.html b/tags/hydra/page/7/index.html new file mode 100644 index 00000000000..1ce55366b89 --- /dev/null +++ b/tags/hydra/page/7/index.html @@ -0,0 +1,53 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team worked on several fronts, including fixing state +machine continuity on-chain, discussing voting project solutions, exploring +adding Hydra support to kupo, and improving API navigation with a sidebar. The +team also updated dependencies and fixed issues in their test suites. Moving +forward, the team plans to hold the next monthly review meeting, address a user +issue, prepare for the 0.10.0 release, and work on a dirt road fix for the +rollbacks issue with proper test coverage.

    What did the team achieve this week

    • Fixed scripts to enforce state machine continuity on-chain #777.
    • Took part in a twitter space on Scaling Cardano.
    • Joined a CBIA meeting to discuss Cardano network protocols & how to specify them.
    • Discussed potential solutions of ensuring vote uniqueness in the voting project.
    • Updated dependencies to match cardano-node master to prepare for upcoming releases and hard-forks
    • Explored adding Hydra support to kupo, a lightweight Cardano chain indexer - some more work required.
    • Improved navigation of the API Reference with a sidebar, see unstable API version.
    • Fixed two things in our test suites (random port conflicts and an arithmetic underflow in smoke test)

    What are the goals of next week

    • Monthly review meeting (join via Discord or AddEvent) & report
    • Dirt road fix for rollbacks #784 properly covered by a test.
    • Groom and ideally address user issue #823.
    • Put the spec into the repo #693 and prepare release 0.10.0.

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team focused on improving the smoke test, fixing developer +tooling, and improving the API for voting use cases. They reviewed progress on +auction, payments, and voting projects and made worked on reproducing a bug with +handling rollbacks. Moving forward, the team plans to update dependencies, +implement a dirt road fix for the rollbacks bug, and explore adding Hydra +support to kupo.

    What did the team achieve this week

    • Reviewed progress on auction, payments and voting projects
    • Improved smoke tests so they can run on mainnet
    • Fixed a regression in the development environment and updated cardano-node +used in tests
    • Improved API with more configurability to unblock voting use case
      • Exclude utxo in SnapshotConfirmed outputs #808
      • Addressed a user request by only sending Greetings once #813
    • Reproduced the rollback bug by improving our model-based test suite #784

    What are the goals of next week

    • Update dependencies to match cardano-node master
    • Dirt road fix for rollbacks #784
    • Update Hydraw to maintain state locally
    • Explore adding Hydra support to kupo
    • Put disclaimer texts and closing mainnet compatibility feature #713

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team published the monthly report for March, created +separate links for different versions of documentation, and clarified potential +solutions for the Rollbacks bug. The team also discussed Query API requests for +the Hydra Voting project and met with community members to answer questions +about Hydra. Moving forward, the team plans to integrate the specification into +the repository, implement a short-term fix for the Rollbacks issue, and draft a +Query API ADR.

    What did the team achieve this week

    • Published monthly reports on website
    • Separate last released and latest versions of docs (e.g. normal released vs. /unstable)
    • Discussed Query API concerns from Hydra Voting project (link)
    • Clarified rollbacks bug and defined possible solutions (short and long term) #784
    • Met with community members to answer questions about Hydra

    What are the goals of next week

    • Finally get the docs integrated into the repository #693
    • Dirt road fix for rollbacks #784
    • Disclaimer text and detail known issues about mainnet compatibility +#713

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra continued work on finishing mainnet compatibility. The +semi-automated smoke tests and some missing documentation is still preventing +from calling that fully done. They fixed smaller issues and made a step in the +Head protocol more robust. Besides development, they met with interested people +from the community who want to get started collaborating on communication and +marketing materials.

    What did the team achieve this week

    • Groomed and followed-up on GetUTxO user request discussion #797
    • Fixed hydra-node crashes after forks #560
    • Made collectCom more robust and aligned with spec #786
    • Completed configurable API feature #380
    • Met potential contributors about Hydra communication and marketing materials
    • Versioned documentation: we have a unstable bleeding edge version available as well now, seperate from the last released version

    What are the goals of next week

    • Follow-up backlog and roadmap clean-up
    • Complete mainnet compatibility feature #713 (documentation updates)
    • Integrate Hydra specification into repository #693

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra had a team workshop and conducted the monthly review +meeting for March. They demonstrated a Hydra Head on mainnet, which was running +the hydraw demo application. While this marks an important milestone, they also +emphasized that more features are still to be added as needed for applications +to run on Hydra. Besides this, the roadmap is getting cleaned up to encourage +discussions and provide more space for user requests.

    What did the team achieve this week

    • Monthly review meeting slides/recording, full report of March next week
      • Opened a head on mainnet with hydraw demonstration
      • Hydra pay updates
    • Team workshop in Austria
      • Hydra presentation at the Cardano Foundation in Zurich
      • In-person grooming session, marked many items as candidates to be rather :idea: dicussions
      • Improved head protocol #786 and investigated a potential bug in rollback handling #784
      • Team building and retrospective

    What are the goals of next week

    • Follow-up on backlog and roadmap clean-up
    • Complete mainnet compatibility feature (documentation updates)
    • Make API more configurable #380
    • Integrate Hydra specification into repository #693
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/8/index.html b/tags/hydra/page/8/index.html new file mode 100644 index 00000000000..a6d917e72b2 --- /dev/null +++ b/tags/hydra/page/8/index.html @@ -0,0 +1,66 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has continued work on the mainnet compatibility of the +hydra-node. They added a golden test suite for hydra-plutus scripts, added +some detection of hydra-node misconfiguration, established a limit of 100 ADA +per commit and other smaller tasks to prepare for a mainnet beta release.

    Next week there will be a small team workshop to push for demonstrating a Hydra +Head on the Cardano mainnet, ideally just in time for the monthly review +meeting. See the hydra channels on the IOG Technical Community discord server +for details.

    What did the team achieve this week

    • Implement a 100 ADA hard-coded commit limit in the hydra-node +#763
    • Pay back funds to faucet after smoke-test run +#773
    • Setup custom github runner for smoke-tests on mainnet +#775
    • Created golden tests to assure the script hash stays the same between +changes #772
    • Removed hardcoded error codes in plutus scripts +#768
    • Detect misconfiguration of a hydra-node given persistent state +#767
    • Met with potential users for hydra-pay
    • Prepared hydra workshop

    What are the goals of next week

    • Hydra monthly meeting
    • Open a multi-party head on mainnet
    • Complete mainnet compatibility feature

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team addressed issues with committing complex UTxOs into a +Hydra Head, prepared the hydra-node to be run on mainnet (soon) and improved +the test suite of the hydra-plutus scripts. The specification is constantly +getting improved upon reviewer feedback on overleaf - this week the graphical +notation was refined to be more transaction-focused.

    What did the team achieve this week

    • Clarified bug of committing UTxOs with reference scripts to a Hydra head #737
    • Prepare usage of hydra-node on mainnet by updating command line options #715
    • Improved our mutation test suite to all expected errors #705
    • Re-opened our persistent hydraw demo head on preprod using version 0.9.0
    • Updated on-chain graphs to be more transaction-focused in the specification

    What are the goals of next week

    • Complete mainnet compatibility feature
    • Prepare the Hydra workshop
    • Address all todo’s in the Hydra specification
    • Unblock the auctions project with commit from script a solution

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team released version +0.9.0 - a version +of the hydra-node with fully specified behavior of on-chain scripts and +off-chain head-logic, decreased costs for opening/closing a Head and scalable +contestation deadline semantics. Check out the full release notes for details.

    Furthermore, they published the monthly +report of the Hydra project +and conducted a review meeting with an increasingly wider audience. The team +plans to extend invitations through the new Hydra +#announcements discord channel for the next +months, stay tuned!

    What did the team achieve this week

    • Monthly review meeting with report published on website
    • Fixed smoke tests #726
    • Reduced the cost of opening/closing a Head (error codes #748 + head reference script #701)
    • Released version 0.9.0
    • Conducted a first experiment on mainnet compatibility #713
    • New discord category with #announcements channel
    • Received a demo about the Hydra for Voting project
    • Lightning talk on mutation-based testing (to be shared)
    • New themes view in on our roadmap and some rearranging as we align it with high-level objectives
    • Clarified things with researchers, but mostly identified action items for them

    What are the goals of next week

    • Redraw transaction graphs and address TODOs specification
    • Run hydraw with 0.9.0 on preprod
    • Make smoke tests on mainnet possible
    • Groom the explorer item
    • Unblock the auctions projecth with commit from script a solution

    · One min read
    Franco Testagrossa

    High-level summary

    This week, the Hydra team continue closing many gaps and aligning the +implementation with the specification. More over, they have groomed a plan to +make Hydra Mainnet compatible. Also, they continue moving forward with the +internal auditing and have published some auditing guidelines to receive +contributions from the community.

    What did the team achieve this week

    • Completed #452 (what is +remaining in there)
    • Aligned the Head protocol logic implementation with the specification
    • Completed full minting policy implementation and spec +#720
    • Clarified message authentication with researchers
    • Groomed what is left to do for Mainnet compatibility +#713 and drafted a +0.10.0 version
    • Added a tutorial by @perturbing to the +website LINK
    • Published auditing guidelines +LINK
    • Made hydra-node work for macos +#746 and added support +for building on aarch64 +#673
    • Met with a potential customer of Hydra for Payments

    What are the goals of next week

    • Have the monthly review meeting incl. the report
    • Have smoke tests fixed and running regularly
    • Release 0.9.0 with updated scripts
    • Redraw transaction graphs for specification

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team completed work on dealing differently with contests +during the contestation period. These will now always push out the deadline and +hence contestation periods are easier to pick (depending on the network a Head +runs on). Furthermore, they added an important acceptance test and completed +internal refactoring of the protocol logic making future changes easier.

    What did the team achieve this week

    • Push contestation deadline on each contest #716
    • Wrote an acceptance (property) test can always close/fanout when collect is successful
    • Internal refactoring of our HeadLogic
    • Groomed remaining things from #452 into dedicated features

    What are the goals of next week

    • Complete full minting policy #720
    • Release 0.9.0 with updated scripts
    • Plan mainnet milestone and a 0.10.0 version
    • Redraw transaction graphs for specification (upon feedback)
    • Have smoke tests fixed and running regularly
    + + + + \ No newline at end of file diff --git a/tags/hydra/page/9/index.html b/tags/hydra/page/9/index.html new file mode 100644 index 00000000000..df57062e7f0 --- /dev/null +++ b/tags/hydra/page/9/index.html @@ -0,0 +1,66 @@ + + + + + +55 posts tagged with "hydra" | Cardano Development Updates + + + + + + + + + + + + +
    +

    55 posts tagged with "hydra"

    View All Tags

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team closed several gaps to align the Hydra scripts +implementation further with the specification. This also resulted in a slight +improvement on Hydra script size and costs. They consequently analysed the +asymptotic complexity of collect and fanout and how they relate. Also plutus-tx +profiling toolchain was evaluated and set up for future improvements on Hydra +on-chain performance. In discussions with researchers and internal auditors, +they also uncovered next steps on further securing the Head protocl using a +"full" minting policy.

    What did the team achieve this week

    • Closed several gaps to align script implementation with specification #452
      • Allow contest only once #680
      • Optimization through head output at index 0 #700
      • Value is preserved #702 + optimized exact value equality #709
    • Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to #721
    • Fixed our tooling around the Haskell language server
    • Discussed full minting policy with researchers
    • Started grooming “what we need for mainnet” on this idea ticket and milestone

    What are the goals of next week

    • Implement full minting policy
    • All remaining protocol discrepancies are implemented or groomed as individual features
    • Ideally release 0.9.0 with updated scripts
    • Discuss what we need for mainnet (milestone planning)
    • Redraw transaction graphs for specification (upon feedback)

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team completed the Hydra specification with a section about +rollbacks and updated graphs +(#448). In a next step, +the specification will be made more approachable and an open standard. They +improved their hydra-cluster tool to launch a local --devnet sandbox +environment and continued aligning the hydra-plutus scripts with the +specification by hardening the checks on close and contest transactions.

    What did the team achieve this week

    • Completed the specification with a section about rollbacks and updated graphs +#448, with a follow-up on making it more approachable and an open standard.
    • Continued spec review with internal auditor and incorporated changes.
    • Talked to TxPipe about how Demeter and Hydra could work together
    • The hydra-cluster executable can be used to launch a local --devnet sandbox environment.
    • Reproduced the “head being stuck on network outage” bug
      • relates to what liveness guarantees we can / want to give on the protocol level and needs to be discussed.
    • Progressed with higher velocity by addressing more and more gaps #677

    What are the goals of next week

    • Upstream our JSON instances to the ledger
    • Close all transaction security related on-chain gaps
    • Ideally release 0.9.0 with updated scripts
    • Groom & plan (or not) protocol changes yielded from specification discussions -> updated roadmap

    · One min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team had a monthly review meeting with their stakeholders, +contributors and interested people from the community. The monthly repot for +January 2023 is a digest +of the things presented and also includes a summary of the meeting. The Hydra +specification was getting discussed and the team is incorporating suggested +changes of reviewers. Last but not least, they compute and publish script +information on every PR and also on the +website +now.

    What did the team achieve this week

    • Had the monthly review meeting with a broader audience
    • Published the monthly report for January 2023
    • Reviewed the spec and discussed individual aborts with researchers
    • Compute and publish script information along benchmarks on every PR and website

    What are the goals of next week

    • Add rollback section to Hydra spec, update pictures and publish it as part of repository
    • Discuss bigger spec findings (full minting policy, individual aborts, split fanout) as change/pull requests on the spec in the repository.
    • Groom & plan actions required for a maintainable Head explorer + break down align gaps feature.

    · 2 min read
    Sebastian Nagel

    High-level summary

    This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1 +specification. Of which a first version has been aggregated and is currently +under review. They aligned the on-chain scripts of reimbursing funds on abort +like defined in the specification, improved the mutation test framework to have +more control when testing plutus scripts. The added HeadId in the API and the +TUI example client make hydra-node easier to use and a first experiment of a +Hydra Head explorer was showing the utility of this - see what Heads exist on +the preview network here.

    What did the team achieve this week

    • HeadId to API and display in the TUI #678
    • Experiment of creating a hydra explorer, first result hosted here
    • Improved mutation framework allowing to fail for the right reason #679
    • Correctly reimburse funds in abort (matching the spec) #670
    • Finished a first write-up of the Hydra HeadV1 spec: Read it on overleaf (Communication channels for feedback)

    What are the goals of next week

    • Monthly review meeting with a broader audience
    • Groom & plan actions required for a maintainable Head explorer
    • Break “align gaps” feature into smaller chunks (at least on- /off-chain) and groom it
    • Review the spec & discuss individual aborts with researchers (a bigger open question)

    · 2 min read
    Sebastian Nagel

    High-level summary

    Since last weekly update before christmas, the Hydra team worked on the +technical specification, closed gaps in hydra-plutus scripts, made the unique +headId available to Hydra clients through the API, allow the hydra-node to +explicitly synchronize from genesis (if configured), and fixed smaller log and +build issues reported by new users.

    Besides this, a retrospective blog +post +was published by Matthias Benkort (CF) on Hydra, summarizing our progress made +in 2022 also an outlook where Hydra is headed for in 2023. Also, the team had +some first sessions on the voting project with Catalyst and the CF.

    A full digest monthly digest for December 2022 can be found on the hydra +website.

    What did the team achieve this week

    • Had some first sessions on the voting project with Catalyst and CF
    • Published retrospective blog +post +by Matthias Benkort (CF) on Hydra, summarizing our progress made in 2022 also +an outlook where Hydra is headed for in 2023.
    • Worked on the LaTeX spec for HydraHeadV1, not final or published yet - latest +version in this repository.
    • Add unique headId to API and hence make it available to clients.
    • Allow hydra-node to explicitly synchronize from genesis using --start-chain-from 0.
    • Closed gaps in hydra-plutus scripts
      • bounded transaction validity (ADR21)
      • enforcing contract continuity via state token in output
    • Fixed JSON for some logs and smaller build issues reported by new users.

    What are the goals of next week

    • Reach out to have hydra-tutorial integrated.
    • Plan the next couple of months.
    • Complete checking reimbursing of commits in head validator.
    • Align plutus scripts to spec and simplify them (identified some simplifications)
    • Improve mutation framework to be sure we fail tests for the right reasons
    • Complete the spec except the open points (<5) and also discuss them with researchers.
    + + + + \ No newline at end of file diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 00000000000..94b12bb1912 --- /dev/null +++ b/tags/index.html @@ -0,0 +1,24 @@ + + + + + +Tags | Cardano Development Updates + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tags/ledger/index.html b/tags/ledger/index.html new file mode 100644 index 00000000000..123d87393d2 --- /dev/null +++ b/tags/ledger/index.html @@ -0,0 +1,51 @@ + + + + + +30 posts tagged with "ledger" | Cardano Development Updates + + + + + + + + + + + + +
    +

    30 posts tagged with "ledger"

    View All Tags

    · 2 min read
    Alexey Kuleshevich

    High level summary

    This period we reached a major milestone, namely we now have an initial version of Conway +conformance testing working. We are now able to generate random valid data with the help +of constraint based testing framework, apply that data to Conway Ledger rules and verify +that the output matches to the one produced by the executable version of the Formal Ledger +Specification, when it is applied to the same random data.

    We also had a couple of Conway bugs fixed and a few new predicate check implemented. Get +Constitutional Committee query is complete and tested. Various improvements to the +testing tools. Addition of more test cases.

    Low level summary

    Conway

    • pull-3888 - Add checks for valid ProtVer when a proposal is a HardFork
    • pull-3902 - Fix pvCanFollow usage in Conway and improve clarity in Shelley
    • pull-3855 - Remove unreachable proposals
    • pull-3903 - Add lenient decoder for Addr
    • pull-3878 - Committee query - implement next epoch change

    Testing

    • pull-3893 - Move tree-diff dependency to tests together with all instances
    • pull-3896 - Fix Brute force failure
    • pull-3904 - New ListWhere Pred added to the Constrained Solver.
    • pull-3907 - cardano-ledger-conformance: Remove CHANGELOG.md from cabal file
    • pull-3883 - Committee QuerySpec Imp Test
    • pull-3909 - Make impAnn a bit more useful, by making the logs scoped by impAnn
    • pull-3908 - Use upstream testing instances for very basic types
    • pull-3912 - Removed call to tail, and the 'watchPulser' test
    • pull-3852 - Added constrained generators to conformance tests - Part 1

    Improvements and releasing

    · 2 min read
    Alexey Kuleshevich

    High level summary

    Last two weeks progress was mainly on testing, bug fixes and improvements to clarity of +CDDL specification. Important bugfixes include:

    • Fix deserialization of ValueNotConservedUTxO predicate failure that could not +previously report zero ADA.
    • Fix deserialization of CostModels in the PParamsUpdate. Invalid CostModels are no +longer allowed, only CostModels for unrecognized Plutus versions are allowed starting +with Conway
    • Fix returning of Deposits for ProposalProcedures

    Testing tooling has been improved and new tests have been implemented for Conway era.

    Low level summary

    Conway

    • pull-3858 - Restructure computing Refunds and Deposits in a TxBody across all eras
    • pull-3860 - Removed mock/crypto.cddl, added optional tag to sets
    • pull-3864 - Fix Proposal deposits and add deposit tests to imp tests
    • pull-3859 - Rename ProposalsSnapshot to Proposals
    • pull-3867 - MaryValue fixes
    • pull-3869 - Indicate that tag 258 is optional for OSet. Fix rational CDDL
    • pull-3863 - Improve deposits refunds re-usability
    • pull-3861 - Fail PParamsUpdate deserialization for invalid costmodels in Conway
    • pull-3875 - Fix cddl spec for CostModels in Conway
    • pull-3876 - Change 4 PParam fields from EpochNo to EpochInterval
    • pull-3884 - Relax requirement on the Set tag 258 to be enforced in the next era

    Testing

    • pull-3868 - Improvements to support property tests on Traces with simple Tx with DRep related Certs
    • pull-3792 - RATIFY and GOV constraint tests
    • pull-3885 - Added a test for genTxAndNewEpoch
    • pull-3886 - QuickCheck Imp integration

    Improvements and releasing

    · 6 min read
    Kevin Hammond

    High level summary

    We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

    Initial CIP-1694 Security Analysis and Responses

    Section: The constitutional committee


    • “For example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

    There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


    Section: Size of the constitutional committee


    • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

    Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


    Section: Terms


    • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

    Thanks. Yes, that suggestion is a bit easier to read.


    Section: Registered DReps


    • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

    Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


    Section: Ratification


    • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

    These correspond exactly to the groups that are administered by the Parameter Committee.


    • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

    Yes, it’s not about harming the system, since Info +actions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

    Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


    Section: Content


    • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

    Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


    Section: Protocol Parameter groups


    • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

    These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


    • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

    All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


    Section: Votes


    • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

    They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


    Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


    • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

    There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


    Section: Changes post Edinburgh workshop (July 2023)


    • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

    It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


    Section: Reduced deposits for some government actions


    • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

    Indeed. We have no plans for this at the moment.

    · 3 min read
    Alexey Kuleshevich

    High level summary

    This update contains mostly improvements to quality of Conway era implementation and +tooling that we use for testing Ledger. Major Conway bugs that were discovered and +squashed are:

    • PParamsUpdate proposals will now correctly use DRep thresholds for ratification
    • Treasury withdrawals are now properly enacted.
    • Corrected snapshotting and DRep Stake Distribution Pulser initialization
    • Delegation to non-existent Stake pool is no longer possible

    Other important quality of life improvements are addition of reusable interfaces for an +ordered set OSet and ordered map OMap. Which allowed us to disable duplicate +certificates and proposals in a transaction. As a precursor to PlutusV3 integration, a +serious reorganization of Plutus related functionality was performed.

    Conway related additions that are noteworthy: Conway Ledger events, disallowing voting on +expired proposals, addition of Anchor to Constitutional Committee resignation proposals.

    Significant improvements have been made to a specialized "Imp" test library that allows us +writing concise stateful unit tests for verifying the Ledger logic. Serious progress has +been made on the conformance testing, where we can now interface with Haskell generated +code from the Agda specification. Serialization testing has been extended to increase +binary conformance coverage.

    Low level summary

    Conway

    • pull-3808 - Enhance CommitteeMembersState query to return quorum and NoConfidence
    • pull-3801 - Fix epoch rule and tests
    • pull-3803 - Fix delegation validation
    • pull-3759 - Reshuffle things to the DRepPulser incorporates some snap shot things
    • pull-3779 - Prevent duplicate certs and proposals
    • pull-3794 - Added anchor to resign certs
    • pull-3797 - Cleanup JSON instances for Conway governance
    • pull-3848 - Plutus modules restructure
    • pull-3840 - Fix anomalies in Deposits in the Conway Era
    • pull-3856 - Add governance related ledger events
    • pull-3825 - Prevent voting on expired GovActions
    • pull-3831 - Treasury withdrawal fix
    • pull-3791 - Use a Data.OMap.Strict to replace ProposalsSnapshot
    • pull-3836 - PParamsUpdate enactment fix
    • pull-3846 - Revert argument order swap.

    Testing

    • pull-3782 - Move ImpTest to Shelley testlib
    • pull-3842 - Imp improvements
    • pull-3844 - Add mappings to Agda types
    • pull-3853 - Fix strange assertion failure, which hides real Block too big problem.
    • pull-3809 - CDDL roundtrip testing
    • pull-3832 - Treasury withdrawals tests
    • pull-3839 - Added cardano-ledger-conformance
    • pull-3841 - Add sha256 to cardano-ledger-executable-spec

    Improvements and releasing

    • pull-3843 - Add ...WithLogs versions of evalScripts and friends
    • pull-3795 - Bump plutus to 1.15
    • pull-3798 - Bump urllib3 from 1.26.17 to 1.26.18 in /doc
    • pull-3799 - Changes needed for 8.6 release
    • pull-3807 - Add invalidBeforeL and invalidHereAfterL functions
    • pull-3819 - Fixups needed for a release
    • pull-3829 - Post release CHANGELOG version bumps
    • pull-3830 - Bump aeson to 2.2
    • pull-3833 - Backport release cardano-ledger-conway-1.10.1.0
    • pull-3828 - Add changelog for node release 8.6

    · One min read
    Alexey Kuleshevich

    High level summary

    The Ledger team has been shifting focus from implementing Conway related features to +testing. For this reason there is a very little amount features that are reported this +time aorund. Notable Conway related changes are a specialized ledger query for getting +Constitutional Committee state and prevention of submitting proposal procedures that have +no valid path to enactment.

    Testing related work was mainly on a constraint base system as well as on roundtrip +serialization. As a result of this extra testing a bug in Conway Genesis serialization +was eliminated.

    Low level summary

    Conway era

    Integration and releasing

    Testing

    • pull-3769 - Add roundtrip testing by validating FlatTerm
    • pull-3783 - Update TranslationInstance.hs
    • pull-3775 - Refactor and improve constraint based STS tests
    • pull-3793 - Fix sums with negative RHS.
    + + + + \ No newline at end of file diff --git a/tags/ledger/page/2/index.html b/tags/ledger/page/2/index.html new file mode 100644 index 00000000000..a09a33d8d62 --- /dev/null +++ b/tags/ledger/page/2/index.html @@ -0,0 +1,46 @@ + + + + + +30 posts tagged with "ledger" | Cardano Development Updates + + + + + + + + + + + + +
    +

    30 posts tagged with "ledger"

    View All Tags

    · 3 min read
    Alexey Kuleshevich

    High level summary

    Few important Conway related features were completed in this two week period:

    • Constitutional Committee was the last missing Conway related entity that has now been +fully implemented.
    • Treasury withdrawals governance actions have been fixed and now behave as expected.
    • Current treasury amount supplied in the transaction is now enforced by the rules.
    • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no +proposals to vote on.
    • Semantics of how CostModels are updated with Protocol Parameters have been changed to +allow for individual Plutus language version updates, rather than requiring a complete +replacement of all CostModels

    Besides the new features there were also important performance and testing improvements:

    • In particular stake distribution computation and native script handling received some +optimizations.
    • New testing DSL has been implemented that drastically simplifies writing unit tests for +ledger rules.
    • Integration tests and benchmarks are now possible for Conway era because of the overhaul +of functionality for initial funds and staking injection whenever node starts up in +Conway, while bypassing all previous eras.

    Low level summary

    Conway era

    • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
    • pull-3739 - Rename some PParams to be consistent with Agda specification
    • pull-3743 - Move DRepDistr from VState to ConwayGovState
    • pull-3746 - Implement tcTranslationContextL for Shelley
    • pull-3737 - Implement EraTransition
    • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
    • pull-3748 - Apply enacted treasury withdrawals
    • pull-3745 - Constitutional Committee Ratification
    • pull-3763 - Plutus interface improvements
    • pull-3771 - Changed how costmodel updates are applied
    • pull-3766 - Prevent updating protocol version with PParamUpdate

    Performance

    • pull-3765 - Improve native script handling
    • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
    • pull-3758 - Cardano-Perf regression: UMap.size regression fix
    • pull-3754 - Use Alonzo-style TxOut encoder when possible

    Releasing

    • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
    • pull-3744 - Changelog 8.4
    • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
    • pull-3753 - Minor cleanup and changelog entries
    • pull-3760 - Fixup issues for release
    • pull-3764 - Bump plutus deps to 1.13

    Testing

    • pull-3734 - Removed Shaped instance for Rep
    • pull-3735 - Simplify the implementations of hasOrd and hasEq
    • pull-3728 - STS tests based on constraints
    • pull-3714 - Implement the remaining upgradable families
    • pull-3733 - Add some unit tests for Conway features
    • pull-3762 - Update CDDL for praos headers.

    · 2 min read
    Alexey Kuleshevich

    High level summary

    The Ledger team's focus is still mainly on the Conway era implementation.

    We were able to add ability to specify initial Constitutional Comittee and the initial +version of Constitution. Priority in which Governance Action are now enacted matches the +specification. DRep's deposits are now properly accounted for. Governance actions that are +not allowed to be voted on by Stake Pool operators and Constitutional Committee members +are prevented by transaction submission failure, rather than simply being ignored. There +was a few important CDDL fixes as well as a lot of new round trip serialization +tests. Constraint based testing framework has also received a lot of improvements.

    Low level summary

    Conway era

    • pull-3681 - Conway Genesis additions
    • pull-3690 - Preserve the order of ProposalProcedures
    • pull-3705 - Removed ProtVer from EnactState
    • pull-3700 - Add conway-specific certs to deposit/refunds
    • pull-3704 - Add comments on deprecating certs to Conway CDDL
    • pull-3698 - Reordering of governance actions
    • pull-3712 - Disallow empty fields in ConwayTxBodyRaw
    • pull-3716 - Abstract threshold calculation
    • pull-3725 - Fix mistaken use of dollar sign in cddl files
    • pull-3718 - Predicate failure for mismatched Voter GovAction
    • pull-3721 - Committee expiration, validation and modification

    Improvements and releasing

    Testing

    • pull-3730 - Implement Show instance for Rep using IsTypeable
    • pull-3697 - Rewrite testEql using Typeable to make it impossible to forget cases
    • pull-3709 - Add many new features to the Constrained modues in cardano-ledger-test
    • pull-3726 - Conway and other eras serialization roundtrip tests
    • pull-3713 - Improve CI resiliency against GitHub issues

    · 2 min read
    Alexey Kuleshevich

    High level summary

    Broadly speaking the Ledger team focused on a few main areas of Conway era:

    • Creation of voting state snapshots in order to correctly delay ratification for one epoch
    • Validation of the Governance Actions sequencing and ordering
    • Proper expiry of DReps and Proposal Procedures
    • Expanding Conway Genesis functionality
    • Utilization of some of the new Protocol Parameters in ledger validation rules

    Low level summary

    Conway era

    • pull-3659 - Validate Network for ProposalProcedure and TreasuryWithdrawal
    • pull-3637 - Avoid using sequence of tuples, by adding GovActionId to GovActionState
    • pull-3651 - Inactive DReps
    • pull-3664 - Track proposal expiry
    • pull-3668 - Add min committee size predicate to NewCommittee
    • pull-3669 - Add Proposal deposit check against PParam
    • pull-3676 - Fix inactive PoolStake not counting as Drep Stake
    • pull-3635 - Make snapshots of GovActionsState
    • pull-3670 - Validate previously enacted govAction
    • pull-3694 - Improve error reporting on the positive coin decoder
    • pull-3674 - Added RATIFY thresholds
    • pull-3684 - Add proposal delaying, remove predicate failure from ENACT
    • pull-3688 - DRep Refunds and update evalTransactionBalance

    Improvements and releasing

    • pull-3677 - Minor patch that fixes the DRep distribution computation
    • pull-3686 - Post patch release fixup
    • pull-3695 - Changelog for cardano-node-8.3 release
    • pull-3683 - Add two new bench mark programs

    Testing

    · 2 min read
    Alexey Kuleshevich

    High level summary

    The ledger team made great progress in advancing Conway era forward. In particular, voting +for DRep and Stake Pool Operators is now at the state that can be used by downstream +components. Addition of new ledger state queries makes it possible to verify changes to +the governance state, such as placement of votes, submission of governance proposals, +inspecting DRep stake distribution and more. Addition of treasury withdrawals concludes the +ability to enact all of the governance actions, except for the hard fork initiation.

    Low level summary

    Conway progress

    • pull-3577 - Move PParams to GovState
    • pull-3609 - Adjust thresholds for sanchonet
    • pull-3604 - README: update CIP-1694 link
    • pull-3616 - Switch TreasuryWithdrawals to use RewardAcnt
    • pull-3599 - Add governance action well-formedness check
    • pull-3607 - Rename governance to gov
    • pull-3601 - Added DRep anchors
    • pull-3615 - Add optional previous GovActionId in some ProposalProcedures
    • pull-3596 - Upgradeable families
    • pull-3625 - Change constitution to use Anchor
    • pull-3592 - Added pulsing incremental computation of the DRep distribution
    • pull-3523 - Treasury donations
    • pull-3633 - Prevent state changes on phase2 failure
    • pull-3634 - Disable serialization of protocolVersion param update
    • pull-3630 - Implemented DRep refreshing
    • pull-3640 - Remove crypto parameterization from AnchorData
    • pull-3636 - Implement DRep ratification with an "always passing"; threshold
    • pull-3648 - Governance queries
    • pull-3650 - Change environment for ShelleyPOOLREAP rule
    • pull-3658 - Set DRep ratify threshold to 51%
    • pull-3628 - DELEG, POOL, GOVCERT conformance with Spec v0.8

    Testing

    Improvements and releasing

    • pull-3660 - Fix bounds and versions
    • pull-3661 - Adjust versions, bounds and CHANGELOGs to account for the latest release

    · 2 min read
    Alexey Kuleshevich

    High level summary

    The ledger team was working almost exclusively on the Conway era implementation. In +particular, the main focus was directed towards solidifying transaction related types and +their binary representation. We also directed some effort into unblocking Plutus team with +respect to PlutusV3 integration.

    Low level summary

    Conway progress

    • pull-3552 - Allow Constitutional Committee Hot Key to be ScriptHash
    • pull-3581 - Make Constitutional Committee Cold Key to be ScriptHash
    • pull-3571 - Implement a portion of the TICKF rule.
    • pull-3556 - Add Script to Constitution
    • pull-3576 - Add optional Anchor to ConwayRegDRep certificate
    • pull-3495 - Implement refund logic for Proposal deposits
    • pull-3579 - Change voting procedure in the transaction to a nested Map
    • pull-3585 - Rename CommitteeCert into a GovCert
    • pull-3587 - Remove DelegStakeTxCert from the COMPLETE pragma for TxCert
    • pull-3586 - Add CurrentTreasuryValue to TxBody
    • pull-3588 - Rename key roles
    • pull-3557 - Update NewCommittee action to use RewardAcnt and add more info
    • pull-3595 - Add ConwayUpdateDRep constructor to ConwayTxCertGov type
    • pull-3600 - Filter out zero TxOuts on Byron/Shelley boundary instead of Babbage/Conway
    • pull-3597 - Update ProposalProcedure return address to be a RewardAcnt

    Testing

    • pull-3374 - New features for generation subject to constraints
    • pull-3519 - Basic Conway features test

    Bugfixes

    Plutus integration

    • issue-3538 - A fairly complete specification was created for the PlutusV3 context
    • pull-3593 - Conway TxInfo for PlutusV3 is now compatible with all pre-Conway functionality

    Improvements and releasing

    • pull-3574 - Improve clarity and performance of collateral Non-ADA validation:
    • pull-3573 - Update top-level CHANGELOG.md with cardano-node relevant changes
    • pull-3555 - Bump pygments from 2.12.0 to 2.15.0 in /doc
    • pull-3575 - Bump certifi from 2022.12.7 to 2023.7.22 in /doc
    • pull-3567 - Backport mint field translation bugfix
    • pull-3568 - Fixed typo in byron ledger spec
    • pull-3572 - Release/backport tickf bugfix
    + + + + \ No newline at end of file diff --git a/tags/ledger/page/3/index.html b/tags/ledger/page/3/index.html new file mode 100644 index 00000000000..52342968212 --- /dev/null +++ b/tags/ledger/page/3/index.html @@ -0,0 +1,50 @@ + + + + + +30 posts tagged with "ledger" | Cardano Development Updates + + + + + + + + + + + + +
    +

    30 posts tagged with "ledger"

    View All Tags

    · 2 min read
    Alexey Kuleshevich

    High level summary

    Our focus was on planning and implementing Conway features that we would like to see deployed and running on Sanchonet. +All members of the ledger team participated in the CIP-1694 workshop and had an in-person meeting, where we discussed plans forward for the Conway era. +We also investigated some transaction validation issues that occurred on preview with the latest node (for 8.2 release). +Additionally, we did some preparatory work that will help us define the types we need for Plutus V3 and integrate with the new version when it will become available. +We also made progress on the constraint-based generators, which can now generate valid transactions and ledger states.

    What we achieved

    • [pull-3521] [pull-3554] Improved Governance model (GovernanceProcedures, ProposalProcedure)
    • [pull-3520] Improved Governance-related naming (Renamed Tally to Gov and VDel to GovCert )
    • [pull-3531] Refactored and simplified code interacting with Plutus
    • [pull-3558] Fixed a bug that was breaking validation on preview, related to refernce inputs witnesses. We backported and released the fix.
    • [pull-3550] For Conway to run on Sanchonet, we updated the era Translation to remove zero-ADA outputs. This was necessary because such outputs exist on mainnet, but in Conway they are not allowed.
    • [pull-3551] [pull-3546] [pull-3472] Updated tools and added some small improvements
    • [issue-3146] [pull-3498] Introduced Conway protocol parameters
    • [issue-2948] [pull-3499] Implemented ConwayGenesis with the new protocol parameters

    What is currently in progress

    · 2 min read
    Jared Corduan

    High level summary

    The ledger team made progress on the conway ledger era. In particular, the design and implementation +of the new certificates is near complete, we refactored some of our data structures +to be able to support DReps, we cleaned up the serialization format, and renamed things to make +clearer the differences with Shelley.

    The team also completed integration work for the next node release, namely 8.1.0. +And, as always, we continue to address technical debt.

    Low level summary

    Conway progress

    • pull-3408 - Improve conway delegation certificates
    • pull-3428 - Get rid of Constitutional in favor of Genesis and Committee
    • pull-3426 - Add DRep to internal data struture (UMap)
    • pull-3425 - Improve witness logic needed for conway
    • pull-3423 - Rename ShelleyDelegCerts constructors to distinguish them from Conway
    • pull-3421 - Rename DCert -> TxCert
    • pull-3454 - conway CDDL minor fixes

    Improve testing

    • pull-3403 - Add Plutus script context golden tests

    Integration work

    • pull-3410 - Update chaps index
    • pull-3416 - Bump cardano-ledger-alonzo-test version
    • pull-3414 - Bump cardano-ledger-shelley-test minor version
    • pull-3420 - Bump cardano-ledger-shelley-ma-test version
    • pull-3441 - Release cardano-ledger-[alonzo|babbage]-1.2.1

    Technical debt

    • pull-3409 - Unit test - no such thing as a reference datum
    • pull-3407 - Fixup release process documentation
    • pull-3404 - Create TotalDeposits events during all eras
    • pull-3402 - Fix broken references in the Shelley spec
    • pull-3424 - Remove no longer used cardano-ledger-shelley-ma package
    • pull-3432 - Add an example on how to bump up versions in the changelog
    • pull-3440 - Revert back to the group serialization for ProtVer for PParams

    · 2 min read
    Jared Corduan

    High level summary

    The ledger team focused mainly on the conway ledger era and node integration. +For conway, we completed a large structural change that now allows +for delegation certificates to be parameterized by era, and introducing +new certificates for the first time since Shelley. +We also continue to build out our contraint based generators that we will +use to property test the conway era. +In particular, we can now generate an entire ledger state and a +transaction which is balanced with respect to the ledger state.

    Low level summary

    Conway certificates

    Certificiates are now abstracted as a type family in the ledger codebase. +Moreover, there are new certificates in the Conway era to support CIP-1694, +and MIR certificates have been removed.

    Constraint based testing

    Our plan for property testing in the conway era is to no longer use the trace generators, +but instead generate ledger states and transactions based on constraints. +We hit a milestone this week, namely the ability to generate a balanced transaction in the context +of a ledger state, all based on our ever growing constaint language.

    Integration work

    Technical debt

    · One min read
    Jared Corduan

    High level summary

    We continued to make progress on CIP-1694 and the conway ledger era. +In particular, the conway era now supports Plutus V3. +Finally, we made small improvements to the ledger API and now host +our Haskell code documentation (haddocks) on github pages.

    Low level summary

    Conway ledger era

    Haddocks hosted on github pages

    Small improvements to the API

    Technical Debt

    • [pull-3367] Fix cost model json instances.
    • [pull-3371] UMap cleanup.
    • [pull-3373] Upgrade to ghc 9.2.7 and cabal 3.10.1.
    • [pull-3375] Sadly, we had to revert the TICKF optimizations. There was a regression we do not yet understand.
    • [pull-3377] Fix cabal warnings.
    • [pull-3383] Fix multi-asset test.

    · 2 min read
    Kevin Hammond

    Incident reporting: Cardano block production temporary outage

    On Sunday, January 22, 2023, an incident occurred resulting in block production pausing for a brief period of time (approximately two minutes, similar to the usual pause at an epoch boundary). Around 50% of block-producing nodes and relays restarted during this period. Having restarted, nodes continued to produce blocks without failure. While the network continued to operate, the issue did have the potential to affect network integrity, so was flagged as a ‘critical’ incident, thus warranting immediate response and investigation by IOG engineers. +The investigation (with SPO & Cardano Foundation collaboration) quickly revealed the cause of the issue – a complex bug in data structure handling code related to the precise order of insertion/deletion of multi-asset tokens into the internal ledger record. Input Output Global (IOG) engineers, along with SPOs and DApp developers, collectively identified how to reproduce the issue as a unit test that could be included in the standard Cardano node test suite. +Following successful testing, this led to a bug fix being implemented, tested, benchmarked, and deployed as a hotfix in the node v.1.35.5 release on Friday, January 27, 2023. Care was taken not to highlight the exact cause of the bug during this process so that it could not be exploited prior to SPOs deploying this new node version. +With the fix deployed, the Cardano SPO and developer community have not seen any further instances of this issue.

    Further Details

    You can read more details on the incident and how it was managed from SundaeSwap’s Pi Lanningham here. Thanks again to all the community for its support in identifying and fixing this bug.

    + + + + \ No newline at end of file diff --git a/tags/ledger/page/4/index.html b/tags/ledger/page/4/index.html new file mode 100644 index 00000000000..59b956f8615 --- /dev/null +++ b/tags/ledger/page/4/index.html @@ -0,0 +1,91 @@ + + + + + +30 posts tagged with "ledger" | Cardano Development Updates + + + + + + + + + + + + +
    +

    30 posts tagged with "ledger"

    View All Tags

    · 2 min read
    Jared Corduan

    High level summary

    We are still heavily involved in work related to preparing the next release. +The other main thing we have worked on is experimentation about how we will +handle the DRep stake distribution for CIP-1694 in the conway ledger era. +Lastly, we merged a fix for +node-4826 +into our main branch (there will be a post-mortem shortly).

    Low level summary

    Support for the next release

    • pull-3363 - Fix problems relating to Arbitrary instances used by consensus.
    • pull-3361 - Remove the alonze genesis from the conway genesis.
    • pull-3360 - Translate bad pointer addresses to valid ones in conway.
    • pull-3357 - Fix a bug relating to zero valued ADA in the script context.
    • pull-3356 - Added needed instances (Arbitrary and Serialization) for conway integration.
    • pull-3345 - Added helper functions for the CLI.
    • pull-3342 - Fix a bug with a CLI helper function (having to do with deposit tracking).

    Experiments for DRep stake distribution

    Adding another stake distribution to the ledger state presents some new challenges. +We would like to be able to use the current stake distribution at the epoch boundary +for DRep voting so that people can always vote themselves in time for any proposal. +To this end, we have a prototype of an incremental computation based on the incremental +lambda calculus, together with tests and benchmarks (which are very promising). +See pull-3344.

    Additionally, more of the ledger state is going to need to be rearranged to accomodate +the new incremental computations. +We have two draft PRs up for possibles solution. +See pull-3353 and pull-3364.

    Technical debt and bug fixes

    Documentation changes

    • pull-3354 - Rename "optional datums" with "supplemental datums" in the alonzo spec.
    • pull-3352 - Add a section to the Shelly errata about the individual deposit tracking.
    • pull-3351 - Further clarify the details regarding the script integrity hash.
    • pull-3350 - Some cleanup of the Babbage spec.

    · 2 min read
    Jared Corduan

    High level summary

    We made further progress on the conway ledger era. +In particular, we expanded the ledger API significantly, including lots of governance features. +We also made progress on the specification and corresponding work in the Haskell implementation.

    We also continued to integrate the latest ledger packages into cardano node and addressed +technical debt.

    Low level summary

    Expanded ledger API

    The ledger API was significantly expanded to include:

    • a lot of protocol parameter support
    • versioning support (type level ledger eras and protocol versions)
    • auxiliary data support
    • many new lenses
    • support for witnesses
    • support for conway governance

    See pull-3328.

    Conway ledger rules

    We have made progress on the formal ledger specification for the Conway era. +Moreover, the corresponding Haskell updates were also completed:

    Incremental SPO/DRep stake distribution computation

    We have a working (and correct) proof of concept for how to use the incremental lambda calculus +to maintain several of the stake distributions incrementally. +For the per-SPO distribution, this is a performance improvement. +For the (conway) per-DRep distribution, this is will allow those who have delegated their votes +to a DRep to have time to react to any votes that they disapprove of. +(Sorry, no code to share just yet, more to come.)

    Technical debt

    · 2 min read
    Jared Corduan

    High level summary

    We have focused the last two weeks on CIP-1694, integration of the last several months of ledger +work into consensus and node, and testing infrastrutcture that we will use in the conway ledger era.

    Low level summary

    Conway rules

    We made a major update to the conway era so that the implementation is now in sync with the spec +with respect to the ratification and enactment logic.

    See the notes in pull-3291 for more details.

    Constraint based generators

    This week we hit a major milestone in our efforts to build out better property based testing +support for the main ledger properties. +The new constraint based generators can now generate full ledger states with what is probably +very close to the real constraints (if anything, it is under constrained). +Next we will work on generating a transaction in the context of a ledger state, which would allow +us to actually start using these generators for real tests.

    See pull-3219.

    Preparing a release, now with proper versioning

    After quite some time, we are ready to release a version of ledger that will work with a new +version of consensus, using CHaPs.

    See pull-3308.

    Technical debt

    • We cleaned up the redeemer serialization code (to prevent future mistakes). See pull-3269.
    • We added a note to the Alonzo spec, specifying that the transaction inputs are +lexicographically ordered in the Plutus script context. See pull-3306.
    • We fixed a problem with the address deserialiazation +(we mistakenly fixed a bug in the Babbage era which cannot be fixed until Conway). +See pull-3307.
    • We fixed a problem with our nix build. See pull-3311.
    • We fixed a problem with our NoThunks tests. See pull-3310.
    • We improved our nightly tests. See pull-3316.

    · 3 min read
    Jared Corduan

    High level summary

    This past two weeks saw many months worth of ledger changes integrated with the cardano-base +and ouroboros-network repositories. +The vast majority of the effort involved all the changes to the ledger serialization libraries +(and the interplay with cardano-base) which now support proper versioning. +Supporting the conway ledger era, and in particular allowing the ledger state to transition +to a whole new system of governance, also played a noticeable part in the integration.

    Besides the integration work, the team continues to address technical debt, improve the +documentation, make our testing infrastructure better (such as experimenting with better +nightly tests), and formally specifying more parts of CIP-1694.

    Lower level summary

    Integration work

    Below is all the integration work completed, which will enable a release to node from +the current ledger master. Many thanks to +Alexey for this colossal undertaking!

    Technical debt

    Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted +in the CBOR specification. See pull-3241.

    We now have our .cabal files being checked for a consistent formatting given by +cabal format in our CI. See pull-3286.

    We are still experimenting with better nightly tests for our long running +property based tests. See pull-3276 and pull-3296.

    Small documentation improvements

    The hand proofs of the preservation ADA property have been added back to the +Shelley ledger specification. See pull-3295.

    We have clarified how the script integrity hash is computed in the CDDL description. +See pull-3290.

    Specifying CIP-1694

    Our new formal specifications backed by Agda have seen a lot of progress! +Upgrading to Agda 2.6.3 fixed our main build infrastructure problems, +and we no longer have to rely on our custom fork. See pull-50.

    Our progress on formally specifying CIP-1694 can be followed here:

    Constraint based testing

    We are still actively working on our new constraint based property testing framework. +We have nearly all of the constraints for an entire ledger state +hooked into generators, and tests that the generators do indeed obey the constraints. +The variable count in the constraints is over 100! +There is still much work to do on shrinking, making the generators faster, +and writing actual property tests for the ledger, but the approach still seems viable and +we are hopeful that it could replace our trace generators. +The WIP can be followed here: pull-3219.

    · 2 min read
    Jared Corduan

    High level summary

    Much of the work the past two weeks involved integration efforts, +cleaning up and debugging some serialization issues, +adding tests, and work on large projects that are still ongoing. +We also released a CIP this week that aims to make the ledger +a registered CIP category.

    Lower level summary

    Ledger evolution CIP

    We published a +CIP +that will make the Cardano ledger a registered category of the CIP process.

    Serialization issues

    We had previously thought that we had found a serialization problem with the redeemers, +but it turned out to just be particularly confusing code. +We have now clarified the issue for the future.

    See pull-3263, pull-3269, and pull-3268.

    Starting in protocol version 9, we will no longer accept duplicate keys in CBOR maps.

    See pull-3277.

    New tests

    We added a new property test suite for some of our custom containers.

    See pull-3270.

    Progress on a better cost model serialization situation.

    We are still working our way through issue-2902. +Towards this end, we are now properly gating the new flexible encoders +until version 9.

    See pull-3274.

    Nightly tests

    We are still experimenting with moving more CI actions to GitHub actions.

    See pull-3276.

    Constraint based generators

    We continue to add to our proof of concept for constraint based generators. +See the previous ledger update for more information about this project.

    + + + + \ No newline at end of file diff --git a/tags/ledger/page/5/index.html b/tags/ledger/page/5/index.html new file mode 100644 index 00000000000..6ae88cf87a1 --- /dev/null +++ b/tags/ledger/page/5/index.html @@ -0,0 +1,188 @@ + + + + + +30 posts tagged with "ledger" | Cardano Development Updates + + + + + + + + + + + + +
    +

    30 posts tagged with "ledger"

    View All Tags

    · 3 min read
    Jared Corduan

    High level summary

    The ledger team completed some preliminary ground work in preparation for CIP-1694 +(restructuring the ledger state), +fixed the PDF hosting problem (mostly the formal specs), +built out more of the new user-friendly ledger API, +finished a proof of concept for constraint-based generators for property tests +(with the hopes of being able to replace our trace generators one day), +and addressed technical debt.

    Lower level summary

    Restructuring the ledger state

    The existing governance structures will be replace in the conway ledger era, +as described in CIP-1694. +In particular, the ledger rules will be restructured as follows:

       BBODY
    |
    |-------------------------------|
    v v
    TICK LEDGERS
    | |
    |---------| |
    v v v
    RUPD ~NEWEPOCH~ ~LEDGER~
    | |
    |----------| |--------|-------------------|-----------|
    v v v v v
    ~EPOCH~ +ENACTMENT+ DELEGS UTXOW +TALLY+
    | | |
    |---------|------------| v |
    v v v DELPL v
    SNAP POOLREAP -UPEC- | UTXO
    |--------| |
    v v v
    POOL DELEG ~UTXOS~

    -..- Removed
    +..+ Added
    ~..~ Modified

    Moreover, the ledger state will also be restructured in accordance with the new rules. +In the conway code, we have now removed UPEC, added TALLY, and stubbed ENACTMENT. +We have also adapted all the data structures in the ledger state.

    See:

    PDF hosting

    We now build all of our PDFs using a GitHub action which is triggered by pushing a tag +with a specific form, cardano-ledger-spec-YYYY-MM-DD. +The action creates a GitHub release containing the PDFs. +The links in the main ledger README now point to the PDFs in the latest release.

    See:

    Powering the new ledger API

    We have now removed all the HasField instances from the protocol parameter data types, +and replaced them with lenses. +This is probably the last major restructuring that the ledger team will do on the code base +for the API for a while +(the Plutus tools team will be working on it next, see here). +We also added a new helpful function ensureMinCoinTxOut.

    See:

    Constraint-based generators

    Our largest scale property tests generate an initial ledger state and a long sequence of valid blocks +which span several epochs, mimicking a real network. +These tests are, in theory, excellent for checking properties. +They are, however, very difficult to maintain and are not as random as we would like +(a lot of bias has to be introduced to keep the ledger state in enough order to keep generating blocks).

    We would like to switch to tests which instead generate a random ledger state representative +of not just an initial state, generate a single random valid block, and then test our properties. +The hope is that these will be much more random and easier to maintain.

    We have finished a proof of concept are encouraged that this approach could work!

    See:

    Technical debt

    • pull-3244 massive CI speedup
    • pull-3249 better types for fees in the protocol parameters
    • pull-3264 move our annotator code to the cardano-ledger-binary package where it belongs
    • pull-3239 move the Wdrls type to the Core module.

    · 5 min read
    Jared Corduan

    High level summary

    The ledger team finished up the remaining work for tracking individual depots, +built out the new Conway era transaction body (in line with CIP-1694), +greatly reduce some problematically large calculations on the epoch boundary, +and addressed technical debt.

    Lower level summary

    Finishing the deposit tracking

    The initial work on the individual deposit tracking project focused only on correctness. +As this is a large data structure +(since its size is linear with respect to the number of registered stake credentials), +it is very important that we also reduce the memory overhead as much as possible. +Fortunately, we were able to add very little overhead for the deposits by using existing +efficient data structures. The extra tracking now only incurs one word (8 bytes) +per registered stake credential.

    See:

    New Conway era transaction

    We implemented the Conway era transaction body, which is in line with CIP-1694. +Note that the Conway era implements, losing speaking, the parts of CIP-1694 that are not +related to the liquid democracy (the "DReps"). +The new transaction body adds the new governance actions and votes, +while also deprecating the old governance structures +(i.e. the old protocol parameter updates and MIR certificates).

    We also now have the wire specification (CDDL file) and serialization code in place. +The wire specification is still subject to change while we work on the Conway era, +but it is now usable and has proper testing support +(so that, for example, the serialization round-trips, etc).

    See:

    Optimizing the TICKF transition

    Every since the release of the Shelley era, we have been working to reduce the computational load +placed on the node by the ledger at the epoch boundary. +While still not perfect, we believe that we have removed one of the final problematically long +epoch boundary computations that exacerbate situations like +this. +In particular, the problem involved the way in which the consensus layer obtains a view of the +ledger for the purposes of checking the leadership schedule in a new epoch. +We implemented a stopgap measure which now only incurs a single multi-second cost once per epoch +instead of potentially several multi-second costs while the networks waits for the first block +of a new epoch to be minted.

    See:

    Technical debt

    We closed the year out with a lot of reduction to the technical debt!

    Improved ledger event

    • pull-3212 - The ledger events are not guaranteed to appear in any given order within a block. +For this reason, motivated by the use case in db-sync, the TotalDeposits event now +includes a transaction ID and emits the change in deposits instead of the value.

    Improved type saftey

    • pull-3208 - We replaced NominalDiffTime with a newtype wrapper. The problem was that our CBOR +encoders and decoders were using the wrong level of precision, having to due with with +the Shelley genesis file. We removed the potential problem with a newtype wrapper.
    • pull-3167 - We now use a GADT to ensure consistency of the Plutus language in the types +for TransactionScriptFailure and PlutusDebug.

    Code/Module organization

    • pull-3175 - The Allegra and Mary eras had an unusual relationship in our codebase, +due to the uncertainly of release dates while we were implementing them. +In particular, they were coupled in way that is different from the rest of the code base. +With hindsight on our side, we split the combined shelley-ma Haskell package into two +separate ledger era packages, which is now consistent with the rest of the repository +and module structure.
    • pull-3184 - We created a core test sub-library, cleaning up a lot of our property test +generator code.
    • pull-3210 - We moved the KeyPair type to the test library. Outside of testing, +the ledger does not need to deal with signing keys, and since this is a topic that +deserves the utmost care, it is best to make it clear that our use of signing keys +is only for testing.
    • pull-3229 - We split the Cardano.Ledger.Alonzo.Data module, which is more consistent with the rest +of the codebase.

    Revert pointer address deprecation

    Thanks to one of our excellent internal auditors, +@jmhrpr, +we now have a better plan for deprecating pointer addresses. +This meant that we had to revert the previous work to deprecate them.

    See:

    Miscellaneous

    • pull-3205 - We removed deprecated type synonyms.
    • pull-3218 - We cleaned up the address deserialization.
    • pull-3223 - We fixed faulty address deserialization tests.
    • pull-3222 - We switched to a general type family TxOut from concrete ones, +reducing many constraints.
    • pull-3224 - ShelleyGenesis is now parameterized by crypto instead of by era.
    • pull-3170 - We set the cabal-version to 3.0 in our projects.
    • pull-3172 - We removed the now useless EncodeMint/DecodeMint classes.
    • pull-3225 - We switch from ormolu to +fourmolu. +The reason was to be able to finally have more diff friendly code!

    · 3 min read
    Jared Corduan

    High level summary

    The Plutus tools team at IOG has started helping the ledger team to build out a user friendly +cardano-ledger-api package! +A GitHub project +will be filled out in the days ahead, +people interested in the API can use it to follow along and join in on the conversations.

    The ledger team has started using +architectural decision records +to leave a record of important decisions that the team makes. +We will retroactively go back through past decisions and make ADRs for them.

    The logic to track individual deposits is now nearly in place. +We are prioritizing correctness with our first pull request, and will follow up with +performance optimizations and general cleanup next.

    Pointer addresses are being deprecated with the Cardano major protocol version 8. +See CPS-0002 +for more context.

    Lower level summary

    Cardano ledger API

    The Plutus tools team has taken our minimal cardano-ledger-api package and started filling it +out and adding much needed documentation. +They have also added doctests! +In the days to come, the Plutus tools team will map out a lot more work for the API and record +it in this +GitHub project.

    See

    Architectural Decision Records (ADRs)

    We are now providing more context and leaving a record of important decisions that are made +in the ledger. The first ADR explains the very lightweight process.

    See

    Tracking individual deposits

    See ADR-3 +for background. +We now have the logic in place to track individual deposits, and a host of property tests +to make sure that the logic is correct. +The current implementation uses more memory than it needs to, and we will address that next, +with our hope being to only use one word (8 bytes) per registered stake credential. +There is a fair amount of other cleanup needed for general maintainability.

    See

    Removing pointer addresses

    Pointer addresses, which have never seen any real use +(there are something like eleven on mainnet), are being deprecated starting at Cardano major +version 9. +CPS-0002 gives the context. +We are disabling them by first preventing transaction outputs containing them +from being serialized by the node at the moment we switch to version 9. +At the hard fork after that, we will translate the existing few pointer addresses +to enterprise addresses.

    See

    Technical debt

    • pull-3162 - Sometimes we have to put safeguards in place for hard forks which may never +be exercised. After we have passed the given hardfork, we are able to clean up the code +and simplify our logic. We removed all of the ones that we are currently easily able to.
    • pull-3165 - We improved the type safety of our code while also discovering and fixing +a serialization bug.
    • pull-3172 - We removed dead code.
    • pull-3175 - The Allegra and the Mary code used to be coupled in a particular way the we grew to +dislike. We made these two ledger eras now uniform with the rest of our code base.
    • pull-3184 - We organized our property testing code.
    • pull-3200 - The Plutus tools teams fixed an outstanding bug in the translation from the +ledger state to the Plutus script context.

    · 3 min read
    Jared Corduan

    High level summary

    We released CIP-1694, +our proposal for entering the Voltaire phase. +Please come join the discussion, this will be an incredibly exciting transition for +Cardano and we want everyone to participate!

    We now have a sensible way to version all of the serialization schemes used in the ledger. +The draft pull request was polished, reviewed, and merged this week. +This solves many problems that have vexed us since the beginning of the Shelley ledger era.

    Everyone working on the Cardano node is working together to improve our release process, +and the ledger team in particular dedicated one engineer to help with these efforts +for the next release.

    Lower level summary

    The Conway ledger era

    The current proposal in CIP-1694 encompasses two new ledger eras. +The first era will be called Conway, after the English mathematician John Horton Conway. +The community facing aspects of the Conway ledger era will be very minimal, +but it will pave the way for introducing liquid democracy. +The details can be viewed here. +We do not yet have a formal specification for the Conway era. +Our plan is to debut the +formal ledger model. +Briefly, the Conway ledger era will:

    • introduce SPO voting for hard forks (in the spirit of the now abandoned CIP-47)
    • provide an on-chain mechanism for rotating the governance keys
    • re-plumb the ledger rules involving governance to be in line with CIP-1694

    Versioned CBOR

    We now have the ability to easily tie our serialization schemes to the Cardano +major protocol version. +We still aim to preserve backwards compatibility as much as possible, but we now have a principled +plan for resolving problems (see CIP-ledger-cbor). +In particular, we can now address several long standing issues, such as +issue-2444, issue-2965, and issue-3003.

    The final (and massive!) pull request which brought us the versioning is pull-3138.

    Deposit tracking

    The draft pull request which was exploring how best to track individual deposits +is much closer now to being ready to take out of draft (pull-3127). +For background on the issue, see issue-3113. +This is quite an invasive change which effects many of our tests, which we are now addressing.

    Technical debt

    As always, we keep working on technical debt. +We have deduplicated a some things: pull-3129, pull-3162. +We have memoized a problematic computation (though more due diligence is needed before we can +merge): pull-3141.

    Node release

    We have been helping with the node release efforts. See pull-4608.

    · 3 min read
    Jared Corduan

    High level summary

    I am extremely excited to say that we now have a pull request up which introduces our new versioned +CBOR serialization. This was an enormous effort, but it will solve a host of problems that we have +had since the Shelley phase. It will take time to properly review it, and we will +need to put in a lot of effort to integrate it with the downstream components, but this is a huge +milestone. Additionally, we have a new CIP proposing a deprecation cycle for the transaction +serialization schemes.

    We also have a draft pull request that reworks how deposits are tracked. Users of the system will +not notice any difference, but it is a necessary change needed to prepare the way for +decentralizing the governance of Cardano.

    Finally, we continued to address technical debt. In particular, we continued to make progress on +bringing coherency and consistency to the code base with a common naming convention, and +improving some error messages.

    Lower level summary

    • We have a pull request up for our new versioned CBOR serialization. +When we encounter a problem with our deserializers, it can be very difficult to implement a fix. +It is difficult because we can only fix such issues during a hard fork, and leading up to the +hard fork we must maintain two serializations for the same type in order to not cause unintended +network splitting (the problematic version must be used before the hard fork, +and the fixed version is used afterwards). +This can be especially tricky with the FromCBOR typeclass, since it is not always easy to +search for where all the problematic uses are located. +The new versioned CBOR serialization allows us to gracefully handle this transition. +See [pull-3138].
    • We proposed a CIP for backwards compatibility of the transaction serialization schemes. +See [pull-372].
    • We have draft for the new deposit tracking. +This draft is not as memory efficient as the final version will be, +but it is a sufficient proof of concept that we can write property tests against, ensuring +that we have not changed the semantics. +We will optimize after we are sure of the correctness. +See [pull-3127].
    • We now provide better support for debugging failed Plutus scripts in an important helper +function, named evaluateTransactionExecutionUnits. +In particular, it now returns all the information needed to rerun the script with exactly the +same arguments. This feature will end up appearing in the CLI and other tools from the Plutus +tools team. +See [pull-3135].
    • We did a lot more renaming to bring coherency and consistency to the code base. +See [pull-3126], [pull-3120], [pull-3118], and [pull-3116].
    • We have added a few things to the ledger repository to make it conform to the +Cardano Engineering Handbook +See [pull-3139].
    + + + + \ No newline at end of file diff --git a/tags/ledger/page/6/index.html b/tags/ledger/page/6/index.html new file mode 100644 index 00000000000..a630688a67c --- /dev/null +++ b/tags/ledger/page/6/index.html @@ -0,0 +1,154 @@ + + + + + +30 posts tagged with "ledger" | Cardano Development Updates + + + + + + + + + + + + +
    +

    30 posts tagged with "ledger"

    View All Tags

    · 3 min read
    Jared Corduan

    High level summary

    We have made the decision to use the +formal ledger repository +in place of a LaTeX spec for the next ledger era, and have added a lot of basic infrastructure +to the model. In particular, we now have a lot of support for axiomatic set theory. +While the next ledger era is still in the design phase, most of the team remains working +on technical debt. +In particular, we have moved a lot more code out of the Shelley specific modules and into +a ledger core module, we have finished up our benchmarking around the problematic TICKF +ledger transition (while improving the performance), made conveniences to the development +environment, cleaned up all the recent changes to the cost model, added a lot of documentation, +fixed some flaky tests, and deleted some dead code.

    Lower level summary

    Axiomatic Set Theory

    The formal ledger model now has support for much of the set theory that we make use of in +the formal ledger specifications. See [pull-20].

    Completed Technical Debt

    • We have addressed issues with two of our most problematic and flaky tests. +See [pull-3039] and [pull-3093].
    • We have added more documentation and tests to the Twiddler module. This is a module which +makes our CBOR serialization round-trip tests much more robust, and will also hopefully +help enforce the mandate for downstream libraries to never re-serialize data that needs +to be hashed. See [pull-3073] and [pull-3095] +(we cannot merge 3095 just yet, due to a preference for merging other features).
    • We have finished our long analysis of the problematic TICKF transition. +We now have a lot of benchmarks surrounding this code, and have added performance improvements. +See [pull-3068] and [issue-3035].
    • We have restored support for +ghcid +in our repository. This is a tool for developing with Haskell that many of us find greatly +improves our productivity by providing us with constant feedback from the type checker. +See [pull-3112].
    • After much activity on the cost model, we have done some final clean up of the code. +See [pull-3075] and [pull-3101].
    • We moved a lot of the existing user facing documentation regarding native tokens into the +ledger repository, and cleaned it up +(most of the heavy lifting was done by our amazing technical writers). +See [pull-3091].
    • We removed dead code. See [pull-3089].
    • We moved a lot of code from the Shelley specific libraries to the ledger core library. +See [pull-3109] and [pull-3110].
    • We've removed more of the awkward legacy template Haskell names. +See [pull-3108].

    · 3 min read
    Jared Corduan

    High level summary

    The ledger team is still primarily focused on addressing +technical +debt. +We now have the infrastructure for versioning our serialization schemes, +which we continue to put into action. +We have made first steps towards getting proper support for the +formal ledger repository +(in particular, we've added nix builds and +continuous integration support). +We are wrapping up an investigation of the performance of a critical +function used by the consensus layer for leader checks. +Finally, we are improving the packaging and versioning of our code.

    Lower level summary

    Completed Technical Debt

    • Because the Shelley ledger era was a complete re-write of the Byron ledger era, a lot of +our code lives in the cardano-ledger-shelley package, though with hindsight we can say that +much of it should live in cardano-ledger-core. +We continue to move things to cardano-ledger-core, and have much more to come. [pull-3059]
    • We now have the infrastructure to support versioned serialization schemes. +The inability to do this has caused us a lot difficulties, +such as [issue-3003], [issue-2965] and [issue-2444]. +We are still in the process of switching to the versioned serialization scheme +(such as [pull-3078]), +but the infrastructure was completed in [pull-3063].
    • We now have proper nix and CI support for the formal ledger project. [pull-19]
    • A separate team is helping bring support for +CHaP +to all the cardano-node repositories. +We have been helping out with this effort.
    • A separate team continues working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. +We have been helping out with this effort.

    In-progress Technical Debt

    We also have several fairly large pull-requests in review +that we are working on.

    • In an on-going attempt to build out a more user-friendly API, +we continue to remove HasField instances in place of using micro-lenses. +The protocol parameters, in particular, are being worked on. [pull-3045]
    • We are also renaming record fields to be consistent across the repository. [pull-3062]
    • We are now cleaning up all the work we did to understand the performance +of the TICKF transition. We have some improvements to the computatation +as well. [pull-3068]
    • We are adding more documentation, in particular to our Twiddler functionality. [pull-3073]
    • The formal ledger is adding support for finite set theory. [pull-20]

    · 3 min read
    Jared Corduan

    Ledger Update

    We have continued focusing nearly entirely on addressing technical debt. +A lot of design work has begun for the next ledger era, +but we do not yet have anything concrete to share.

    Technical debt issues completed

    • [issue-1676][pull-2992] We have finally removed the ledger dependency on the +cardano-prelude package. It was barely used in the ledger repository, and it added a dependency +that we did not want to maintain. It was a bit difficult to remove, and we had +to coordinate removing it from cardano-base. +A lot ended up going into pull-2992, due to the coordination effort, and we ended +up updating Plutus as well. +This means that we've now also made a lot of progress on the problematic cost model serialization +issues described in issue-2902. +In particular, after we resolve issue-3014, we will not have to wait an epoch before +releasing a cost model for a new version of Plutus, as we had to do for the Vasil HF.
    • [issue-3046][pull-3055] We moved a module that is now only used in Byron to a Byron package.
    • [issue-3047][pull-3054] We improved the interface to the Value (multi-asset) type.
    • [pull-3044] We debugged and fixed a tricky compilation issue. Certain kinds of field updates +were adding approximately 20 minutes to our compile time!
    • [issue-2932][pull-3036] As a part of our ongoing re-organization of the codebase, we +have added a Cardano.Ledger.[Era].Core module to each ledger era that has a TxBody class. +Most classes defined in the era should go in this new module. +We also re-export the Cardno.Ledger.Core module and the previous Cardano.Ledger.[Era].Core +modules from each era.

    Technical debt in progress

    • [issue-3034][issue-3035][node-issue-4421] We are continuing to write benchmarks to understand exactly where +all the time is being spent on executing the TICKF transition. +The consolidation of the per-stake-credential stake distribution to the per-stake-pool +distribution does seem to account for a large amount of time (near a second as written, which we +have down to about half a second with some optimizations), +but this does not account for everything. +Applying the reward update may also be a big contributing factor.
    • [pull-3033][pull-3038][pull-3041] A separate team is working on upgrading all the +cardano-node repositories to work with ghc 9.2.4. We have been helping out with this effort.
    • The nix scripts used to build our new +formal ledger model +do not work consistently for everyone, and we have been working on fixing these issues.
    • [issue-3014] We are still working on adding a versioning scheme to all of the ledger +serializers.

    · 2 min read
    Jared Corduan

    Ledger Update

    We have been focused nearly entirely on addressing technical debt.

    • We introduced more consistent naming across eras, this time for the auxiliary data. +See 3032.
    • We made clear how the consumed functions differs between eras (which was a previous source of +confusion), and added some related support to the fledgling ledger API. +See 3016.
    • We added clarity and organizational consistency to the main ledger era type synonyms. +See 3017.
    • We removed code duplication related to the input data hashes. +See 3018.
    • We split up a large module into smaller components. The large module was actually causing our +CI to time out. +See 3020.
    • We cleaned up stale information in our cabal files, and upgraded cabal 3.8. +See 3023, +3031, +and 3028.
    • We made consistent, standalone TxOut (transaction output) modules for every era. +See 3024.
    • We brought consistency to a maddening inconsistent use of type variables indicating the specific +choice of cryptographic primitives. In particular, all uses of crypto have been renamed to c. +See 3027.
    • We did a clean up of the types in the Alonzo era. In particular, we switched to more parametric +types that will compose better in the future and which simplifies the constraints. +See 3029.
    • We consolidated some existing fragmented logic regarding how we gather the scripts needed for a +given transaction. This is a much needed cleanup to prevent future mistakes. +See 3019.
    • We fixed a problem with our generators that was causing a fair number of our property tests to +fail in CI. +See 3039.
    • We have started the work to update Plutus. This will bring support for SECP in the next major +protocol version, and also address a +problem +that we current have evolving the cost models. +See 3030.
    • We addressed a small issue that came up when integrating the conway era downstream, namely +the lack of some serialization instances. +See 3022.

    · 2 min read
    Jared Corduan

    Ledger Update

    Since finishing up support for the Vasil Hardfork, the ledger team has been +focused on two main things: a new ledger era and technical debt.

    New minimal ledger era

    We have implemented a new ledger era named conway which is nearly identical +to the babbage era. This has been the first time that we have been able to see +what a minimal ledger era looks like. We have finished this task, modulo any +integration issues that might come up. The only thing that the conway era +does differently from the babbage era is provide support for rotating +the master keys using the hardfork combinator's state translation. +We may end up adding features to the conway era, but it is a nice exercise +seeing what it looks like to get a minimal ledger era supported in all the +downstream components.

    Addressing technical debt

    We have been addressing technical debt, mostly in an effort to make the +repository a more friendly code base to work in.

    • We have begun work on a ledger API, called cardano-ledger-api.
    • We have done a big re-design of the major type classes used in the ledger. +With hindsight on our side, we now have something much more organized and +easier to use.
    • We have done a lot of re-naming. The names across eras are now much more +uniform, avoid certain confusions that plagued us, and are clearer in where +they are from.
    • We have reduced a lot of code duplication that could lead to bugs if you +do not have the whole code base in your head.
    • We have added a handful of performance improvements.
    • We added type safety in a number of locations. In particular, the type of +values that can be minted in a transaction no longer allow for Lovelace +in the type, and some functions which used to handle both timelock scripts +and plutus script now correctly enoforce at the type level that only one of +them can be used.
    • We made our generators so that they now produce a much richer set of +valid serializations. There is room within CBOR to serialize the same +data structure in multiple ways, and it is helpful to have the generators +use a wide variety.
    • We have begun re-organizing our test suites.
    + + + + \ No newline at end of file diff --git a/tags/mithril/index.html b/tags/mithril/index.html new file mode 100644 index 00000000000..a9ba8b31e23 --- /dev/null +++ b/tags/mithril/index.html @@ -0,0 +1,24 @@ + + + + + +34 posts tagged with "mithril" | Cardano Development Updates + + + + + + + + + + + + +
    +

    34 posts tagged with "mithril"

    View All Tags

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team made progress in adapting the Mithril client library for WASM compilation and providing a JavaScript API for it. They also completed the optimization of the aggregator's performance. Additionally, the team initiated the implementation of a testing Mithril network for SanchoNet and conducted threat modeling and risk analysis for P2P networking.

    Finally, they enhanced the developer experience of the Mithril client library by providing ready-to-run examples in the repository and implemented a workflow to manually publish libraries on crates.io.

    Low level overview

    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Create a test network on Sanchonet #1173
    • Worked on the issue Upgrade breaking changes crates #1357
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Completed the issue Enhance aggregator REST API performances #1327
    • Completed the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Make mithril-client examples full crates #1385
    • Completed the issue Manual publication to crates.io with GitHub action #1380
    • Completed the issue Remove sqlite dependency from mithril-client crate #1390

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team released the initial version of the Mithril client library, enabling developers to integrate core Mithril features into their applications. They also released a new distribution, 2347.0, which includes support for slim certificate production by the aggregator, along with bug fixes and performance improvements.

    The team also introduced the initial version of Cardano/Mithril node communication enhancements, implemented by TxPipe as part of the Catalyst project. They made progress in decentralizing Mithril networks, including testing the Mithril peer-to-peer (P2P) relay on a test network and conducting threat modeling and risk analysis for P2P networking. Additionally, they started working on adapting the Mithril client library for WASM compilation and made progress in optimizing aggregator performance.

    Finally, they fixed inaccuracies in the verbosity level of logs across most nodes and worked on troubleshooting for some users.

    Low level overview

    • Release of the mithril-client library crate
    • Publication of a dev blog post about the released Mithril library
    • Released the new distribution 2347.0
    • Worked on the issue Light Wallet: Release mithril-client WASM library #1336
    • Worked on the issue Enhance Mithril/Cardano node communication #1315
    • Worked on the issue P2P threat modeling and risk analysis #1350
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Support P2P relay in infrastructure #1361
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue mithril-client verbosity not following usage menu #1325
    • Completed the issue Error message for mithril-client snapshot download #1375

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team made progress in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, completing the first prototype implementation of the Mithril relay, which enables P2P signature broadcasting. They also made progress in optimizing the performance of the aggregator. Additionally, the team completed some enhancements on the CI/CD that will help manually deploy experimental Mithril networks for SanchoNet, as well as for the new P2P network layer.

    Finally, they investigated occasional runtime issues causing delays for certain SPOs and started preparing for the next distribution release.

    Low level overview

    • Completed the issue Prototype a P2P relay with libp2p #1326
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312
    • Completed the issue Manually deploy a test Mithril network #1356
    • Completed the issue Make Cardano node version custom in CI/CD #1355
    • Worked on the issue Support P2P relay in infrastructure #1361
    • Completed the issue mithril-client fails to extract archive #1352

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Completed the issue Light Wallet: Release mithril-client library #1311
    • Completed the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Completed the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Fix certificate hashes re-computation in aggregator #1343
    • Completed the issue Remove unstable tag in unstable release #1235
    • Worked on the issue Enhance aggregator REST API performances #1327
    • Worked on the issue Signer runtime is stuck for some SPO #1312

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team continued working on completing the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, achieving the implementation of a very basic working demo with a peer-to-peer publish-subscribe (pub-sub) mechanism. Additionally, the team continued working on the deterministic computation of the UTXO/transactions set from the immutable files.

    Finally, they resolved the naming issue of the Docker package responsible for storing images of the new Mithril client CLI, and continued addressing a performance issue associated with the 'release-mainnet' aggregator.

    Low level overview

    • Worked on the issue Prototype a P2P relay with libp2p #1300
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client Docker package is incorrect #1322
    + + + + \ No newline at end of file diff --git a/tags/mithril/page/2/index.html b/tags/mithril/page/2/index.html new file mode 100644 index 00000000000..102920c1f60 --- /dev/null +++ b/tags/mithril/page/2/index.html @@ -0,0 +1,24 @@ + + + + + +34 posts tagged with "mithril" | Cardano Development Updates + + + + + + + + + + + + +
    +

    34 posts tagged with "mithril"

    View All Tags

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept. They progressed with the adaptation of the Mithril client as a library, and worked on its full WASM compatibility in a proof of concept. The team kept working on the deterministic computation of the transactions from the immutable files, and fixed some unreachability issue on the release-mainnet aggregator.

    Finally, they implemented new Docker images that build the Mithril nodes on the 'devnet' faster and fixed some regressions in the Mithril client CLI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Fix devnet Mithril Docker images [#1272](https://github.com/input-output-hk/mithril/issues/1272
    • Worked on the issue Light Wallet: Release mithril-client library #1311
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Completed the issue Client regressions in snapshot list and download #1321

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team released a new distribution 2342.0. This release includes support for SPO tickers displayed in the Mithril explorer and the ability to produce slim Docker images for Mithril nodes.

    They also kept working on decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof of concept, progressed with the adaptation of the Mithril client as a library, and worked on the deterministic computation of the UTXO set from the immutable files.

    Finally, they fixed the bottleneck of the key registration in the aggregator, investigated some unreachability on the release-mainnet aggregator, and enhanced the Mithril explorer UI.

    Low level overview

    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Completed the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano UTxO set PoC #1283
    • Completed the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Worked on the issue Fix devnet Mithril Docker images #1272
    • Worked on the issue release-mainnet aggregator is unreachable #1310
    • Worked on the issue Build mithril-common and mithril-client in WASM PoC #1284
    • Completed the issue Display a summary of signers before the full list in explorer #1133
    • Completed the issue Add certificates list in explorer #1184
    • Completed the issue CoreVerifier setup does not compute total_stake correctly #1306

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team started working on the decentralization of the Mithril networks with a proof of concept of peer-to-peer (P2P) networking between nodes. The team kept working on the adaptation of the Mithril client as a library, on the deterministic computation of the transaction history of an address from the immutable files, and on the refactoring that will fix the bottleneck of the key registration in the aggregator. Additionally, they published a security advisory for the Mithril relay.

    Finally, they enhanced the CI/CD to publish multiple packages to crates.io and started improving the developer experience with the Mithril devnet.

    Low level overview

    • Published the security advisory Mithril relay could expose Cardano block producer internal IP when updated #GHSA-9m3h-72xj-x2gq
    • Worked on the issue P2P Networking - Proof of Concept #1300
    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Publish multiple packages to crates.io #1298
    • Completed the issue Rename public key published in releases #1292
    • Completed the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Fix devnet Mithril Docker images #1272

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team worked on the distribution of the Mithril client as a library that will be distributed on crates.io, the Rust dependencies repository. The team also worked on the deterministic computation of the transaction history of an address from the immutable files and started fixing a bottleneck in the aggregator that limits the ingestion of signatures.

    Finally, they kept working on the activation of Cloudflare on the infrastructure and fixed some bugs in the Nix CI.

    Low level overview

    • Worked on the issue Make mithril-client crate a library #1141
    • Worked on the issue Compute deterministic Cardano transactions history PoC #1283
    • Worked on the issue ProtocolKeyRegistration creates performance bottleneck in aggregator #1187
    • Completed the issue Update Rust compiler in nix CI #1282
    • Worked on the issue Mithril networks infrastructure maintenance #1218
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team updated a proposal for implementing Mithril in a light wallet and created a discussion on implementing Mithril in a light wallet to receive feedback and contributions from the community.

    They also completed a proof of concept to run a Mithril client in a browser with WASM and worked on enhancing the explorer UI with SPO tickers displayed next to the pool IDs. Additionally, the team finalized a tool for benchmarking aggregator performance over a range of signer and client loads and for visualizing the results of these benchmarks.

    Finally, the team added a root page to the aggregator endpoint, created a status page for the Mithril networks, and added a section about KES key rotation in the signer documentation for SPOs.

    Low level overview

    • Created the discussion Implement Mithril in a light wallet #1273
    • Completed the issue Run client in browser WASM PoC #1254
    • Completed the issue Benchmark aggregator performances #1220
    • Worked on the issue Add SPO tickers in explorer #1185
    • Completed the issue Add a non 404 status code on the aggregator endpoint #1103
    • Completed the issue Use source attribute in errors #1265
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Completed the issue Configure status page and alerting #1277
    • Completed the issue Upgrade dependencies #1274
    + + + + \ No newline at end of file diff --git a/tags/mithril/page/3/index.html b/tags/mithril/page/3/index.html new file mode 100644 index 00000000000..03e15cf6271 --- /dev/null +++ b/tags/mithril/page/3/index.html @@ -0,0 +1,24 @@ + + + + + +34 posts tagged with "mithril" | Cardano Development Updates + + + + + + + + + + + + +
    +

    34 posts tagged with "mithril"

    View All Tags

    · One min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has released a new distribution 2337.0, which includes the following enhancements: support for zstandard compression of snapshot archives, support for the Cardano node version in snapshot metadata, and support for recording snapshot download statistics in the aggregator.

    They also completed the refactoring and standardization of the errors in the Mithril nodes and published an Architectural decision record on the documentation website. Additionally, they kept working on adding Cloudflare protection to the infrastructure.

    Finally, the team fixed a performance issue on the stress test tool for the aggregator and made some improvements to the documentation for SPOs.

    Low level overview

    • Completed the issue Release new 2337 distribution #1219
    • Completed the issue Errors refactoring #798
    • Completed the issue Client traffic creates performance bottleneck in aggregator #1207
    • Completed the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Completed the issue Create a SPO checklist for KES keys update #1267
    • Worked on the issue Spike: Run client in browser WASM PoC #1254
    • Worked on the issue Benchmark aggregator performances #1220
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230

    · One min read
    Jean-Philippe Raynaud

    High level overview

    This week, the Mithril team has completed the refactoring of the terraform deployment workflows in GitHub actions, and the implementation of snapshot compression parameters in the deployments. They kept working on the refactoring and standardization of the errors in the Mithril nodes. The team also completed the implementation of Cloudflare protection for the aggregator infrastructure and started working on its deployment and activation in the Mithril networks. Additionally, they worked on recording download statistics on the aggregator which will be used to produce usage reports.

    Finally, they kept working on the aggregator performance bottleneck that occurs with high client traffic and started creating a new distribution.

    Low level overview

    • Completed the issue Add snapshot compression parameters in infrastructure deployments #1200
    • Completed the issue Add Cloudflare protection of infrastructure #986
    • Worked on the issue Record statistics about the downloaded snapshot in the aggregator #1127
    • Worked on the issue Error refactoring #798
    • Worked on the issue Activate Cloudflare protection of infrastructure #1230
    • Worked on the issue Release new 2337 distribution #1219
    • Completed the issue Upgrade dependencies #1238

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has released a new distribution 2335.0 which brings enhancements to the client: support for simultaneous downloading and unpacking of the snapshot archives, support for one line command restoration of the latest snapshot, and availability of machine readable progress information.

    They have also worked on snapshots enhancements: implementation of the zstandard compression to produce smaller archives, and providing the version of the Cardano node used to create the archive in the snapshot artifacts. They have completed the second phase of the implementation of the stress test tool to benchamrk the aggregator. Additionally, they have kept working on refactoring and standardizing errors in the Mithril nodes.

    Finally, they have worked on adding Cloudflare protection to the infrastructure, and they have fixed some bugs that occurred during restoration of a snapshot by a client.

    Low level overview

    • Completed the issue Use 'zstandard' compression for snapshot archives #876
    • Completed the issue Design & implement stress test tool for aggregator - phase 2 #1155
    • Completed the issue Provide progress information with '--json' option in Client #1095
    • Completed the issue Make client download and extract the archive simultaneously #1115
    • Completed the issue Add aggregator Cardano node version in snapshot artifact #948
    • Completed the issue Make Cardano node version part of the Mithril network configuration #947
    • Completed the issue Post deployment 'mainnet' infrastructure #1091
    • Worked on the issue Errors refactoring #798
    • Worked on the issue Add Cloudflare protection of infrastructure #986
    • Completed the issue Failed to restore recent snapshot with strange error #1160
    • Completed the issue Update 'ed25519-dalek' to '2.0.0' #1188
    • Completed the issue Add target networks blocks in release notes #1151
    • Completed the issue Fix end to end 'wait_for_the_expected_time' test #1191
    • Completed the issue Fix docs 'git checkout' command #1174

    · One min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team created an explorer page with the registered signers to give recognition to the SPOs already running on mainnet. They also worked on refactoring and standardizing errors in the Mithril nodes, and they enhanced the clarity and reduced verbosity of the logs for the signer and aggregator nodes. Additionally, they started working on the implementation of zstandard compression of the snapshot archive, and streaming its download and decompression in the client.

    Finally, they implemented machine readable progress information in the client, and streamlined the process of verifying the registration status of a signer.

    Low level overview

    • Completed the issue Create explorer page with registered signers #1097
    • Completed the issue Simplify logs on the Signer/Aggregator #1106
    • Completed the issue Refactor (de)serialization of crypto entities #668
    • Completed the issue Mithril client last snapshot download #1078
    • Completed the issue Use the '/signers/registered' route to verify if a signer is registered #1152
    • Worked on the issue Provide progress information with '--json' option in Client #1095
    • Worked on the issue Use 'zstandard' compression for snapshot archives #876
    • Worked on the issue Make client download and extract the archive simultaneously #1115

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the Mithril protocol’s mainnet beta launch: the release-mainnet network is now consistently producing new certificates and snapshots! The team has released a new distribution 2331.1 which includes some optimizations and bug fixes: the bootstrap time of a Cardano node restored from a Mithril snapshot has been significantly reduced, and a bug that made the aggregator produce corrupted archives has been fixed. They also kept working on the implementation of the stress test tool for benchmarking the aggregator: the first phase has been implemented, as well as a monitoring feature. Additionally, they kept implementing the refactoring of the serialization/deserialization of the entities of the cryptographic library, and working on the post deployment of the mainnet infrastructure.

    Finally, they completed the rewriting and enhancements of the documentation website, and they completed the runbook for operating a production Mithril network.

    Low level overview

    • Released the new distribution 2331.1
    • Completed the epic Release 'mainnet' Mithril network #918
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Completed the issue Design & implement basic stress test tool for aggregator - phase 1 #991
    • Worked on the epic Post deployment 'mainnet' infrastructure #1091:
      • Completed the issue Create Production Infrastructure Runbook #1085
      • Completed the issue Ingest 'mainnet' metrics/logs in Grafana #1122
    • Worked on optimizations:
      • Completed the issue Add a 'clean' file to extracted database in client #1131
      • Worked on the issue Create explorer page with registered signers #1097
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on bugs:
      • Completed the issue Client fails to unpack some snapshot archive #1137
      • Completed the issue The 'release-preprod' network stopped producing certificates #1114
      • Completed the issue The 'release-mainnet' network does not show up in the explorer #1111
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.2' #1090
    • Worked on troubleshooting:
      • Completed the issue Signer can't sign with 'Invalid signature for party' error #1125
    + + + + \ No newline at end of file diff --git a/tags/mithril/page/4/index.html b/tags/mithril/page/4/index.html new file mode 100644 index 00000000000..b140918542e --- /dev/null +++ b/tags/mithril/page/4/index.html @@ -0,0 +1,24 @@ + + + + + +34 posts tagged with "mithril" | Cardano Development Updates + + + + + + + + + + + + +
    +

    34 posts tagged with "mithril"

    View All Tags

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team launched Mithril protocol’s mainnet beta: the release-mainnet network is now open for signer registrations, and its genesis certificate has been created. The team is monitoring the network, and expects it to start producing certificates during the next Cardano epoch.

    They have released a new distribution 2329.0, which is running on the release-mainnet network. They also kept working on the implementation of the stress test tool for benchmarking the aggregator. The team kept working on the refactoring of the serialization/deserialization of the entities of the cryptographic library. Additionally, they completed the cleanup of the legacy store adapters in the aggregator.

    Finally, they have worked on enhancing the documentation for onboarding SPOs and setting up a Mithril signer, and fixing installation bugs of the binary artifacts produced in the CI.

    Low level overview

    • Created the dev blog post Mithril Protocol’s Mainnet Beta Launch
    • Released the new distribution 2329.0
    • Closed the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Deploy 'mainnet' infrastructure #988
      • Completed the issue Handle Secrets management #989
    • Worked on the epic Release 'mainnet' Mithril network #918
      • Completed the issue Prepare SPO on-boarding guide #1049
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Enhance the configuration of Mithril relay #1080
      • Completed the issue Remove legacy store adapters from aggregator #1053
      • Completed the issue Add a 'sign' sub-command to 'genesis' command in aggregator #1081
    • Worked on refactoring:
      • Worked on the issue Refactor (de)serialization of crypto entities #668
    • Worked on documentation:
      • Completed the issue Enhance 'Run a Mithril Signer node (SPO)' guide #1055
    • Worked on bugs:
      • Completed the issue Shared library error in CI binaries #1073
      • Completed the issue Debian package does not install cleanly on older ubuntu versions #834
      • Completed the issue Aggregator panics with new (de)serialization of 'ProtocolVerificationKey' #1083

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team created a new 2327.0 distribution. They focused on preparing the beta launch on the mainnet: they tested the new production signer deployment model with the pioneer SPOs, they prepared an SPO on-boarding guide, and they kept working on the deployment and monitoring of the mainnet infrastructure. The team also worked on the implementation of a simple stress test tool for benchmarking the aggregator. Additionally, they completed the refactoring of the interface to the cryptographic library.

    Finally, they fixed a bug that sporadically prevented the latest signer registration of a SPO to be used in the associated signing epoch, they fixed a bug in the epoch gap detection of the certificate chain in the aggregator, and worked on multiple other optimizations and bugs.

    Low level overview

    • Released the new distribution 2327.0
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Add infrastructure monitoring #987
      • Worked on the issue Deploy 'mainnet' infrastructure #988
      • Worked on the issue Handle Secrets management #989
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on optimizations:
      • Completed the issue Remove certificate hash from Artifact #932
      • Completed the issue Check vulnerabilities in CI #1037
      • Completed the issue Add 'created_at' in Mithril Stake Distribution messages #1030
      • Completed the issue Add a 'run-only' option in end to end test #1048
    • Worked on refactoring:
      • Completed the issue Factorize protocol crypto operations #669
      • Completed the issue Refactor aggregator dependency injection and services #1058
      • Completed the issue Build static binaries in CI #874
    • Worked on documentation:
      • Completed the issue Prepare SPO on-boarding guide #1049
      • Completed the issue Add instructions to set firewall using iptables #1040
      • Completed the issue Update ufw command to set firewall on Mithril Signer installation instructions #1041
    • Worked on bugs:
      • Completed the issue Aggregator does not detect certificate chain epoch gap #952
      • Completed the issue 'testing-preview' network does not create certificates #1015
      • Completed the issue SQLite compatibility in aggregator #837
      • Completed the issue Q&A followup fixes #1035
      • Completed the issue E2E tests are flaky in CI #1023

    · 3 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the design of the signer deployment model for the SPOs to run Mithril on their Cardano mainnet infrastructure, and implemented the associated Mithril Relay in the Mithril networks. They started working on the design and implementation of a stress test tool for benchmarking the aggregator performances. They worked on the refactoring of the Mithril Stake Distribution entity and the uniformization of the date types in the nodes. They also worked on implementing a new tool command in the aggregator and its first sub-command that helps avoiding re-genesis of the certificate chain when the structure of the certificate is updated. Additionally, they worked on implementing some monitoring for the Mithril infrastructure, and worked on a retry mechanism for the artifact creation of the aggregator.

    Finally, they fixed some bugs, and they completed the upgrade of the Mithril networks to Cardano node v.8.1.1.

    Low level overview

    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Add infrastructure monitoring #987
    • Completed the epic Prepare Mithril Signer deployment model for SPO #862:
      • Completed the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
      • Completed the issue Adapt infrastructure to use Mithril Relay #1018
      • Completed the issue Announce the new signer deployment model in a dev blog post #1017
    • Worked on the epic Benchmark performances of Mithril Aggregator #904:
      • Worked on the issue Design & implement basic stress test tool for aggregator #991
    • Worked on bugs:
      • Completed the issue Aggregator does not exit on critical error #993
      • Completed the issue Computation of master certificate of an epoch is incorrect #1006
      • Completed the issue End to end tests are flaky #954
      • Worked on the issue 'testing-preview' network does not create certificates #1015
    • Worked on optimizations:
      • Completed the issue Dates format is not standardized #946
      • Completed the issue Add 'recompute-certificates-hash' command to aggregator #1001
      • Completed the issue Add a retry mechanism for artifact creation in aggregator #984
      • Completed the issue Log node version at startup in Aggregator/Signer #944
      • Completed the issue Reactivate Publish Results job in CI #978
      • Completed the issue Clean 'pending_snapshot' directory of aggregator #983
      • Completed the issue Update OpenAPI spec examples #1000
    • Worked on refactoring:
      • Completed the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Refactoring client #982
      • Completed the issue Refactor download code in client #1010
      • Worked on the issue Factorize protocol crypto operations #669
    • Worked on dependencies:
      • Completed the issue Upgrade Cardano node to '8.1.1' #973

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the implementation of the new sub-command for restoring a Mithril stake distribution in the client. They also updated the client’s developer documentation and architecture documentation, and did some refactoring on the client and its dependency injection mechanism. Additionally, they completed and deployed infrastructure enhancements on the test Mithril networks. They also completed the performance tests of the new stake distribution computation on the Cardano mainnet.

    Finally, the team worked on fixing a bug on the client multi-platform test, a bug on the aggregator state machine, and some flakiness on the CI.

    Low level overview

    • Completed on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Create the sub-command for 'Mithril Stake Distribution' in client #896
      • Completed the issue Adapt end to end tests to handle new types of data #899
      • Completed the issue Update client documentation #897
      • Completed the issue Update architecture documentations for new types of data #898
      • Completed the issue Refactoring client #960
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Completed the issue Enhance terraform infrastructure #930
    • Completed the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Check performance impact of new stake distribution command on the 'mainnet' #962
    • Worked on the epic Prepare Mithril Signer deployment model for SPO #862:
      • Worked on the issue Design recommended deployment model for SPOs on 'mainnet' and 'preview'/'preprod' #961
    • Worked on bugs and optimizations:
      • Completed the issue Aggregator does not always detect new immutable file #953
      • Completed the issue CI tests fail with Rust '1.70.0' #958
      • Worked on the issue End to end tests are flaky #954
      • Worked on the issue Certificate dates in metadata are not on the same timezone #946
      • Worked on the issue Refactor 'MithrilStakeDistribution' entity #967
      • Completed the issue Fix 'Mithril Client multi-platform test' with new client interface #956
      • Completed the issue Enhance 'ImmutableDigesterError::NotEnoughImmutable' error #969
      • Completed the issue Client 'snapshot download' command fails with option '--download-dir' #979

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2321.1 distribution that fully implements the mechanism developed to sign generic data. They completed the upgrade of the Cardano node in the Mithril networks to v.8.0.0 and the implementation of the new computation of the stake distribution. They refactored the state machines of the signer and aggregator, and the signed entity service of the aggregator. Additionally, they worked on adapting the client and implementing a new sub-command for restoring the Cardano immutable file snapshots.

    Finally, the team worked on adding a new certificate list route in the aggregator REST API, and started enhancing the infrastructure of the Mithril networks.

    Low level overview

    • Released the new distribution 2321.1
    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the issue Enhance MessageAdapter for Artifact in aggregator REST API #925
      • Completed the issue Create the sub-command for 'Cardano Immutable Files Full' in client #895
      • Completed the issue Enhance state machines Aggregator/Signer #933
      • Completed the issue Adapt the aggregator REST API to list certificates #892
      • Worked on the issue Adapt end to end tests to handle new types of data #899
      • Worked on the issue Update client documentation #897
      • Worked on the issue Update architecture documentations for new types of data #898
    • Worked on the epic that prepares the Mithril infrastructure for mainnet #767:
      • Worked on the issue Enhance terraform infrastructure #930
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the issue Upgrade Cardano node to '8.0.0' #920
    • Completed the issue Add export path in Client CLI #512
    + + + + \ No newline at end of file diff --git a/tags/mithril/page/5/index.html b/tags/mithril/page/5/index.html new file mode 100644 index 00000000000..6f6642244e7 --- /dev/null +++ b/tags/mithril/page/5/index.html @@ -0,0 +1,24 @@ + + + + + +34 posts tagged with "mithril" | Cardano Development Updates + + + + + + + + + + + + +
    +

    34 posts tagged with "mithril"

    View All Tags

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2318.0 distribution that implements the last migration phase of the aggregator stores and embeds a bug fix for the signer registration. They also completed the implementation of the interfaces defined to provide certification for the immutable full snapshot of Cardano files and Mithril stake distribution. They finalized the implementation of the framework to sign generic types of data in the aggregator and the signer nodes. They also updated the runtime of the aggregator to handle open messages associated with the available types, and evolved the REST API of the aggregator to deliver the artifacts for these types. Additionally, they have upgraded the network explorer in order to display the artifacts and certificates for these different types.

    Finally, the team started designing an on-chain decentralized signer registration process, and started implementing the new stake distribution computation available from Cardano node 8.0.0 (along with the backward compatibility for previous 1.35.x versions).

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the handling of multiple types of signed entity in the aggregator runtime #907
      • Completed the adaptation of the signer runtime to use the signable builder service #854
      • Completed the adaptation of the aggregator runtime to use the artifact builder service #869
      • Completed the appending of the next AVK to all protocol messages #888
      • Completed the adaptation of the aggregator REST API to retrieve the list/details of the artifacts produced #893
      • Completed the adaptation of the explorer to handle new artifact routes of the aggregator #927
    • Worked on the epic that implements the computation of the stake distribution for mainnet #880:
      • Completed the implementation of the new stake distribution computation in the chain observer #919
      • Worked on upgrading the Cardano node to 8.0.0 #920

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team completed the implementation of the new certifier service of the aggregator, which is in charge of producing certificates for multi-signatures. They also finished implementing the interfaces defined to provide certification for the full immutable Cardano files snapshot and the Mithril stake distribution. Additionally, they have completed the refactoring of the multi-signer in the aggregator. The team also fixed the bug in the signer registration that was responsible for gaps during the signature phase for some signers, and they upgraded the Cardano node used in the Mithril testnets and devnet to version 1.35.7.

    Finally, they have worked on designing a decentralized registration for the signers that takes place on the Cardano chain.

    Low level overview

    • Worked on the epic that designs and implements generic signing/verification of entity services #780:
      • Completed the implementation of the Certifier service in the aggregator #850
      • Completed the implementation of the signable builder for the Mithril Stake Distribution #851
      • Completed the implementation of the artifact builder for the Mithril Stake Distribution #870
      • Completed the implementation of the signable builder for the Full Immutables Snapshot #852
      • Completed the implementation of the artifact builder for the Full Immutables Snapshot #871
      • Completed the adaptation of the aggregator runtime to use the signable builder service #853
      • Worked on the adaptation of the signer runtime to use the signable builder service #854
      • Completed the definition of the entity service interface for verification/restoration #868
      • Completed the refactoring of the OpenMessage type #878
    • Completed the epic that simplifies the multi-signer in the aggregator #398:
      • Completed the extraction of the single signature registration from the multi-signer #643
    • Completed the upgrade of the Cardano node to version 1.35.7 #881
    • Fixed the bug that created a discrepancy of the signer verification keys between signers and aggregators #873

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2315.0 distribution that implements the first part of the migration of the aggregator stores along with minor improvements and bug fixes. They finished the migration of the aggregator stores to a relational design by completing the adaptation and migration of the signed entity, signer and single signature stores. They also created a new tick service that provides beacons to other services of the aggregator. Additionally, they started implementing the new new certifier service of the aggregator that is in charge of producing certificates for multi-signatures.

    Finally, they completed the design and definition of the interfaces that must be implemented to provide certification for a new type of data in a Mithril network.

    Low level overview

    • Released the new distribution 2315.0
    • Completed the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the signed_entity table #816
      • Completed the creation of the signer table #814
      • Completed the migration/adaptation of the single_signature table #829
    • Worked on the epic that designs and implement generic signing/verification of entity services #780:
      • Completed the definition of the interface of the generic entity service for signing #847
      • Worked on the implementation of the Certifier service in the aggregator #850
      • Completed the extension of the SignedEntityType type #848
      • Completed the implementation of the Tick service in the aggregator #849
      • Worked on implementing the signable builder for the Mithril Stake Distribution #851

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2313.0 distribution that implements minor improvements and bug fixes. They continued implementing the migration of the aggregator stores to a relational design. They finished adaptating and migrating the certificate, epoch settings, signed entity type, signer registration and open message stores. Additionally, they completed the refactoring of the dependency injector of the aggregator and simplified its multi-signer in order for it to sign multiple concurrent messages.

    Finally, the team has worked on designing the new architecture of the network to support signing multiple types of data and upgraded the version of the Cardano node used in the Mithril testnets and devnet to 1.35.6.

    Low level overview

    • Released the new distribution 2313.0
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed the migration/adaptation of the epoch_settings table #813
      • Completed the migration/adaptation of the signed-entity-type table #815
      • Completed the migration/adaptation of the certificate table #817
      • Completed the migration/adaptation of the open_message table #827
      • Completed the migration/adaptation of the signer_registration table #828
    • Completed the refactoring of the dependency injection of the aggregator #823
    • Completed the cleanup of the multi-signer of the aggregator #824
    • Completed the upgrade of the Cardano node to 1.35.6 #843

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2310.0 distribution that activates the era switch mechanism. They also kept implementing the migration of the aggregator stores to a relational design with the first adaptation of the stake pool store, and then the adaptation of the epoch settings & signed entity type stores. They have implemented the handling of the network API version from the Open API specifications and its automatic switch at era transition. Additionally, they optimized the stake distribution computation that now happens only once per epoch, and also enhanced the client multi-platform workflow to test the Docker images.

    Finally, they have successfully completed the tests to create certificates and snapshots on a network running on the Cardano mainnet and they have fixed some bugs.

    Low level overview

    • Completed the epic that implements eras behavior switch #707:
      • Completed handling the API version switch at era transition #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Completed on the migration/adaptation of the stake_pool table #787
      • Worked on the migration/adaptation of the epoch_settings table #813
      • Worked on the migration/adaptation of the signed-entity-type table #815
      • Completed the creation of a stake distribution service #799
    • Completed the testing of Mithril with Cardano mainnet network #777
    • Completed qualifying the computation of the stake distribution #810
    • Completed the testing of the Docker client in the Mithril Client multi-platform test workflow #794
    • Worked on bugs and optimizations:
      • Fixed a bug that made computation of the stake distribution occur multiple times during an epoch #804
      • Fixed a bug that created deadlocks on the SQLite connection #807
      • Optimized the error message and the behavior of the signer node when KES keys have expired #820
      • Upgraded the infrastructure of the testing-preview and pre-release-preview networks #801
      • Re-genesis of the testing-preview network #803
      • Re-genesis of the pre-release-preview network #818
    + + + + \ No newline at end of file diff --git a/tags/mithril/page/6/index.html b/tags/mithril/page/6/index.html new file mode 100644 index 00000000000..fd8007b0a3e --- /dev/null +++ b/tags/mithril/page/6/index.html @@ -0,0 +1,24 @@ + + + + + +34 posts tagged with "mithril" | Cardano Development Updates + + + + + + + + + + + + +
    +

    34 posts tagged with "mithril"

    View All Tags

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team worked on deploying the era activation mechanism to their test networks and preparing the upgrade procedure to be implemented on the signer nodes run by the SPOs. They also refactored the state machines of the aggregator and signer nodes so that they can better handle critical errors, which lead to node panic, from recoverable errors. Additionally, the team continued the deployment of a new test network that runs on the Cardano mainnet and computes the stake distribution with the optimized unreleased Cardano CLI command.

    Finally, they have designed the certification of generic types of data by a Mithril network and they have started implementing its first phase. Also they fixed a bug that made the client Docker image crash at startup.

    Low level overview

    • Worked on the epic that implements eras behavior switch #707:
      • Completed the deployment of the era behavior switch to the test networks #752
      • Completed the enhancement of datum generation for era markers #786
      • Worked on handling the API version with an era switch #727
    • Worked on the epic that implements a relational store in the aggregator #779:
      • Worked on the migration/adaptation of the stake_pool table #787
    • Completed the refactoring of errors in the signer and aggregator state machines #665
    • Worked on testing Mithril with a mainnet Cardano network #777
    • Worked on fixing bugs with the Docker client image:
      • Fixed a bug that made the Docker client container crash at startup #769
      • Fixed a bug that prevented the restoration of a snapshot with a Docker client #791
      • Worked on testing the Docker client in the Mithril Client multi-platform test workflow #794

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2306.0 distribution that implements minor fixes and updates and completes the wiring of the era activation markers reader into the signer and aggregator nodes. They also designed an event store in the aggregator and completed its implementation as a monitoring solution to provide figures for deployment rates of versions on signer nodes before activating an era switch. Additionally, the team created a dedicated command on their nodes’ CLI that allows generating and signing an era marker’s payload to be stored on the Cardano chain, as well as creating dynamic cases for the end-to-end tests they run on the CI.

    Low level overview

    • Released the new distribution 2306.0
    • Completed the epic that implements signer versions deployment monitoring #718:
      • Completed the implementation an event producer/consumer via channel #738
      • Completed the creation of a database and its configuration to save the events on the consumer side #740
      • Completed the creation of events and sending them on the channel on the producer side #741
      • Completed the creation of the signer registration event #742
      • Completed the creation a query to extract the node versions stakes distribution #743
    • Worked on the epic that implements eras behavior switch #707:
      • Completed the loading of era reader adapters from config in the signer and the aggregator #732
      • Completed the implementation of an era cli command in the aggregator #755
      • Completed the implementation of a dynamic matrix of cases in CI end to end tests #760
    • Fixed some bugs:
      • Fixed the unsupported unixepoch() function #757
      • Fixed the problem that prevented some signers from signing on the testing-preview network #730
      • Update SQLite version to 3.40 in aggregator infrastructure #765

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2304.1 distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.

    Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version 1.35.5 on their devnet and infrastructure.

    Low level overview

    • Released the new distribution 2304.1
    • Fixed a bug that prevented some signers to sign with 2304.0-prerelease #716
    • Completed the implementation of an EraChecker that checks if an era is active #708
    • Completed the implementation of an EraReader that gathers era activation data #709
    • Completed the implementation of an EraReader adapter with on chain transaction as source #710
    • Completed the relational design of the aggregator store #476
    • Completed adding a new SPO on the testing-preview network #729
    • Completed the upgrade of the Cardano node to 1.35.5 #725
    • Fixed flakiness in the CI #734

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team released a new 2302.0 distribution that activates the optimization of the snapshot digest computation on the signer and aggregator nodes. They have implemented a backward/forward compatibility mechanism for handling seamless soft updates of the Mithril networks without using synchronous updates when possible. The team also worked on the proof of concept to rely on an on-chain transaction to synchronously trigger the era switch of all the signer and aggregator nodes.

    Finally, they finished upgrading the devnet, fixed the flakiness issues in the end-to-end tests of the CI, and upgraded the SPO documentation to set up a Mithril signer node.

    Low level overview

    • Released the new distribution 2302.0
    • Implemented a backward/forward compatibility mechanism for API messages #688:
      • Implement the mechanism for the signer registration #689
      • Implement the mechanism for the signature registration #693
      • Implement the mechanism for epoch settings #695
      • Implement the mechanism for certificate pending #696
      • Implement the mechanism for certificate #697
      • Implement the mechanism for snapshots list #698
      • Implement the mechanism for snapshot #699
      • Update enforcement of API version with Semver #705
    • Completed the PoC implementation of backward compatibility with protobuf #677
    • Completed the PoC implementation of backward compatibility with avro #678
    • Completed the PoC to Read/Write transaction on chain for Era activations #672
    • Completed the upgrade Cardano devnet to 1.35.4 #523

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has been designing a mechanism for handling seamless updates of the Mithril networks in case of breaking-changes that require synchronous update of the signer nodes. This design has been formalized in an ADR. They have been working on an implementation of a proof of concept to rely on an on-chain transaction to synchronously trigger the version switch of all the signer nodes. They have also worked on implementing prototype solutions to minimize the use of breaking changes where soft updates are possible.

    Finally, they have worked on upgrading the devnet and fixing some flakiness in the end to end tests of the CI.

    Low level overview

    • Implemented the redaction of an ADR for handling graceful updates of the Mithril Network #671
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with protobuf #677
    • Worked on a proof of concept to handle backward compatibilty of exchanged messages with avro #678
    • Worked on a proof of concept for reading/writing era activation markers with a Cardano chain transaction #672
    • Worked on upgrading the Cardano node of the Mithril devnet, as well as fixing flakiness of the CI #523
    • Prepared and tested the new 2302 distribution pre-release 2302.0-prerelease
    • Updated the documentation for SPO to build a signer node in order to better reflect the new release process #681
    + + + + \ No newline at end of file diff --git a/tags/mithril/page/7/index.html b/tags/mithril/page/7/index.html new file mode 100644 index 00000000000..2dcc43813b4 --- /dev/null +++ b/tags/mithril/page/7/index.html @@ -0,0 +1,24 @@ + + + + + +34 posts tagged with "mithril" | Cardano Development Updates + + + + + + + + + + + + +
    +

    34 posts tagged with "mithril"

    View All Tags

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team has released the new distribution 2248.1 of their nodes. They have published the first version of the Mithril cryptographic library on crates.io, the Rust community’s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.

    Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities.

    Low level overview

    • Implemented removing verification key and stake from single signatures #619
    • Completed the extraction of the signer registration from the multi-signer #642
    • Completed the extraction of the certificate creation from the multi-signer #638
    • Implemented a workflow to test client binaries (Linux / MacOS / Windows) #601
    • Completed the signature of the artifacts produced by the CI #587
    • Fixed the protocol parameters transition #627
    • Worked on optimizing the snapshot digest computation #510
    • Worked on enforcing the API protocol versions in the client and signer #633
    • Worked on deactivating the non certified signer registration mode #621
    • Worked on the re-genesis of the test networks #651

    · 2 min read
    Jean-Philippe Raynaud

    High level overview

    The Mithril team worked on finalizing their release process by adding new features: publishing their cryptographic library to the Rust community, adding node versions manifest in the release notes, and signing the binaries embedded in the distributions. They deprecated the declarative signer node registration that will be decommissioned in a few weeks. The team also completed the automatic store upgrade process for the signer and aggregator nodes.

    Finally, the team continued working on the redaction of the CIP that will allow the decentralization of Mithril by using the Cardano networking layer.

    Low level overview

    • Implemented custom Mithril SPOs on testing/pre-release networks #563
    • Deprecated Signer Declarative Pool Id registration mode #585
    • Completed the second stage of the store automatic migration process #600
    • Completed the deployment pipelines to crates.io registry #588
    • Completed automatic generation of nodes/libraries versions manifest in releases notes #599
    • Completed CI/CD handling of PR from forks #597
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #586
    • Worked on signing the artifacts released in the distributions by the CI/CD #587
    • Worked on multi-platforms end to end test #601
    • Worked on the refactorizaton of the aggregator multi-signer engine #398

    · 2 min read
    Iñigo Querejeta Azurmendi

    High level overview

    The Mithril team has released their second distribution 2246.1 following the activation of the alpha version of the new release process. They continued refining its implementation and added a new set of artifacts to the distributions, such as Debian packages and macOS/Windows binaries. The team also enhanced the Mithril Explorer, which now provides more detailed information about epoch settings and easier access to multiple aggregators for the users. They have also worked on an enhanced mechanism for node versioning, storage, and communication protocol. They also implemented version detections for the signer and aggregator nodes, designed the automatic store upgrade feature for these nodes, and enhanced the documentation of the configuration parameters of the several Mithril networks.

    Finally, the team continued working on the elaboration of the CIP that will allow the decentralization of Mithril by relying on the Cardano node network layer.

    Low level overview

    • Released a new Mithril distribution 2246.1
    • Completed the first stage of the store migrations process #562
    • Added a Mithril API version that is now exposed in the headers of the requests sent and received by the nodes #565
    • Enhanced the explorer UI with epoch settings information and aggregators management on browser local storage #576
    • Prepared a Daedalus synchronization benchmark video with/without Mithril #606
    • Upgraded the Cardano nodes of the testing Mithril networks to 1.35.4 #594
    • Worked on implementing SPO tests nodes on testing Mithril networks #563
    • Worked on the CIP design for Mithril piggybacked on the Cardano network layer #588
    • Worked on the refactorizaton of the aggregator multi signer engine #398

    · 2 min read
    Iñigo Querejeta Azurmendi

    This sprint, the team has been working on the new continuous integration and delivery (CI/CD) pipelines and the automated deployment of environments as part of the new version of the release process. They also coordinated the migration of the pioneer SPO nodes to these new Mithril networks. They have been implementing the automatic data storage upgrade of the signer and the aggregator nodes. Finally, on the crypto side of things, we've implemented an efficiency improvement on the size of the mithril certificates.

    Low level overview

    • We have been moving forward on the implementation of the release process #500:
      • Setup of the new hosted environments for testing-preview, pre-release-preview and release-preprod with their terraform and GitHub environments #542
      • Adapted the CI workflows to work with the new release process #543
      • Publication of an ADR3
      • Publication of a dev blog post about Mithril networks evolution
      • Releasing our first Mithril distribution 2244.0
    • Worked on the API versioning mechanism #565
    • Worked on the implementation of the stores migration process for the signer and aggregator nodes #562
    • Prepared a Mithril devnet video demo #526
    • Implemented a batch Merkle Tree proof, which reduces the size of certificates considerably #484
    + + + + \ No newline at end of file diff --git a/tags/network/index.html b/tags/network/index.html new file mode 100644 index 00000000000..0af530648fa --- /dev/null +++ b/tags/network/index.html @@ -0,0 +1,81 @@ + + + + + +24 posts tagged with "network" | Cardano Development Updates + + + + + + + + + + + + +
    +

    24 posts tagged with "network"

    View All Tags

    · One min read
    Marcin Szamotulski

    High-level overview of sprint 48

    Bootstrap Peers

    We continued reviewing bootstrap peers, ouroboros-network#4555.

    IOClasses / IOSim

    We prepared slides for a Haskell meetup were we presented a talk on IOSimPOR. +The recording will be availble on YouTube.

    We also used the opportunity to do some refactoring of the IOSim code base: io-sim#117. +We released io-sim-1.3.0.0 on Hackage: io-sim#119.

    We also added forkFinally to MonadFork (not included in 1.3.0.0 release): io-sim#123.

    Tech debt

    We refactored Resource used by the DNS subsystem: ouroboros-network#4707. +We continued reviewing the ouroboros-network#4625 PR, which refactors +RootPeersDNS module.

    · 2 min read
    Marcin Szamotulski

    High-level overview of sprint 47

    Bootstrap Peers

    We continued to review the process of bootstrap peers, see ouroboros-network#4555

    CI / Tests

    We investigated our CI issues. We found a memory leak in typed-protocols +function used for testing codecs which triggered out of memory manager (OOM) on +some platforms (typed-protocols#43); we also found a bug in the connection manager which resulted in CI +timeouts (see connection-manager-fix).

    KeepAlive client

    We found two small issues with the keep-alive client, which were addressed +by Karl Knutsson (Cardano Foundation), ouroboros-network#4689.

    Galois

    We merged two large PRs prepared by Galois:

    Cardano Network Service Assurance (CNSA)

    Galois made the following progress on CNSA:

    • a simple [InfuxDB] database backend has been added;
    • the documentation has been updated;
    • internal improvements to the code;
    • progress on a new "CSNA analysis" that provides, for each sampler node, the +block download throughput in bytes over time.

    New CHaP Release

    We cut a new release of ouroboros-netowrk packages to CHaP: chap#547

    More details

    CI / Tests

    We improved the memory footprint of some of our tests by analysing a stream of +IOSim traces without retaining them, see ouroboros-network#4696

    As a safety measure, we introduced an upper bound for heap memory used by test +artefacts in our nix tests. We use 200MB limit for all tests except for +network-mux tests which use 350MB limit, see ouroboros-network#4702.

    We refactored one of our tests to use ephemeral ports thus allowing it to +run concurrently, see ouroboros-network#4702.

    We merged ouroboros-network#4623 which fixes a bunch of test failures.

    All of them were due to a bug in test logic rather than a bug in production +code.

    Release Process

    We updated our release process & associated scripts, see +ouroboros-network#4705.

    · One min read
    Marcin Szamotulski

    High-level overview of sprint 46

    Bootstrap Peers

    We continued reviewing of bootstrap peers, see ouroboros-network#4555.

    Towards Typed Protocols 0.2.0.0

    We diagnosed the performance regression of the new design. The work on +typed-protocols will be postponed. For more details see the +typed-protocols#3. As an outcome of the performance debugging we prepared +PR which updates the demo-ping-pong and +demo-chain-sync applications.

    Peer Sharing

    We made progress in review of ouroboros-network#4644, which simplifies the +peer sharing and fixes the ouroboros-network#4642 issue.

    Tech Debt

    We reviewed the ouroboros-network#3836 PR which inspects all the uses of +error in ouroboros-network. The PR was prepared by Galois.

    · 3 min read
    Marcin Szamotulski

    High-level overview of sprint 45

    Bootstrap Peers

    We started reviewing the bootstrap peers PR, ouroboros-network#4615.

    Towards Typed Protocols 0.2.0.0

    We discovered a performance regression when using typed-protocols-0.2.0.0, and we +started investigating where it comes from. Currently, we see that +typed-protocols-0.2.0.0 can outperform typed-protocols-0.1.0.0 when running +in isolation with a simple ping-pong protocol, so the regression might be in +the new block fetch implementation which comes with typed-protocols-0.2.0.0 +See typed-protocols#3.

    Tech Debt

    We merged two PRs written by Galois engineers:

    • a pull request which refactors the main entry function for P2P, see ouroboros-network#3834;
    • a pull request which reviews usage of unsafe function in the network code based.

    Galois also made progress with the following two issues:

    IO-Sim

    IOSimPOR

    We found and fixed a bug in IOSimPOR. We'd like to thank Prof. John Hughes +(Quviq AB) for helping us with debugging the issue.

    We also provided a more uniform API for IOSimPOR, and added ways to make the +debugging similar problems in the future easier.

    Technical Details on IOSim refactoring
    We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future.

    IOSim

    To prepare for the next release, we consolidate packages taking advantage of +the public sublibraries supported now both by cabal and Hackage. This is +a work in progress, io-sim#114.

    Cardano Newtork Service Assurance

    Galois made the following progress:

    • A test run of spinning up a CNSA instance was done, as a result documentation +was updated.
    • Based on the IOG code review of the CNSA code, updates to the CNSA code were +made.
    • Galois has started the design for adding a CNSA analysis for "fetched bytes +over time while node is syncing".

    P2P adoption

    In the last two weeks, we've seen increase in P2P adoption. +P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays. +node versions

    Open Source

    We upstreamed our FFI bindings to Windows named pipes to Win32 package, the +PR was accepted and merged.

    We also received an external contribution which enhanced our documentation, see +ouroboros-network#4676.

    · 2 min read
    Marcin Szamotulski

    High-level overview of sprint 44

    Bootstrap Peers

    In this sprint, we focused on developing bootstrap peers.

    Thanks to the input from Samuel Leathers (IOG) and John Lotoski (IOG), we +identified a possible improvement to bootstrap peers. A more detailed +description is available here.

    Cardano-Node-8.4.0 Release

    We also were responsible for the cardano-node-8.4.0-pre release. A final +integration PR is currently being merged. We published +new versions of ouroboros-consensus, cardano-api and cardano-cli.

    Towards Typed Protocols 0.2.0.0

    We also updated the future typed-protocols-0.2.0.0 and its integration with +cardano-node. This is towards our goal which we planned for the next +quarter. The identified tasks are to fix breaking tests, and then measure and +address possible performance regressions.

    Tech Debt

    Mark Tullsen (Galois) submitted two more PRs: ouroboros-network-#4663, +ouroboros-network-#4664. We provided feedback on their other pull requests: ouroboros-network-#4661 and +ouroboros-network-#4660.

    P2P adoption

    In the last two weeks, there was a regression in P2P adoption concerning +the number of SPOs or stakes, although the number of overall P2P relays has +increased. Karl Knutsson (Cardano Foundation) is investigating +this issue. +P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

    Data has been kindly provided by Cardano Foundation and their mainnet +monitoring infrastructure.

    Open Source

    We are in the process of upstreaming our ffi to Windows Named Pipes API to the Win32 package, see [win32-220].

    + + + + \ No newline at end of file diff --git a/tags/network/page/2/index.html b/tags/network/page/2/index.html new file mode 100644 index 00000000000..cbbc4106419 --- /dev/null +++ b/tags/network/page/2/index.html @@ -0,0 +1,128 @@ + + + + + +24 posts tagged with "network" | Cardano Development Updates + + + + + + + + + + + + +
    +

    24 posts tagged with "network"

    View All Tags

    · 3 min read
    Marcin Szamotulski

    High-level overview of sprint 43

    In this sprint, we received contributions from CF & Galois. Karl Knutsson +(CF) has addressed various issues regarding peer churning in P2P, timeouts +and our WireShark dissector. While the Galois developers focused on +addressing issues from their review last year. See below for more details.

    We continued working on bootstrap peers ouroboros-network-#4661.

    We refactored our test suites: they are split into io-tests which require to +be run natively on all platforms (these tests mostly contain tests that +require IO system calls) and sim-tests which are platform independent. We +run io-tests on all supported platforms (e.g. x86_64-linux, +x86-64-darwin, aarch64-darwin and x86_64-w64-mingw32 (Windows)) natively. +The sim-tests are not executed on Windows due to memory limitations on +GitHub Actions runners. ouroboros-network-#4653

    We also started rebasing typed-protocols refactoring branches.

    Marcin was appointed as the cardano-node release engineer for the 8.4.0-pre +version. So far he integrated cardano-ledger-conway-1.8 and +ouroboros-network-0.9.1.0 to ouroboros-consensus, cardano-cli and +cardano-api. Once we will have an integration branch for cardano-node, +cardano-ledger-conway-1.8 and ouroboros-consensus packages can be released +to CHaP and PRs can be merged once they go through review & CI.

    We also fixed some smaller issues regarding peer sharing (both were discovered +by Karl from CF). More details are included below.

    Progress on P2P addoption

    SPO relays

    There are currently ~2000 relays running P2P +enabled nodes that belong to 557 pools with a combined stake of 7900Mil Ada. On +16th of August it was ~1700 relays, 531 pools with a combined stake of 7700Mil +Ada.

    P2P relays

    The following graphs show several different versions of relays running on the mainnet. The +green line NodeToNodeVersionV10.True denotes P2P relays, which slowly +increase over time. The V9 and earlier versions of the node-to-node +the protocol indicates nodes version 1.35.x or earlier. +node versions

    Data has been kindly provided by CF and their mainnet monitoring +infrastructure.

    IOG relays

    As of this week, 90% of IOG relays are running a P2P setup. In the next sprint all +IOG relays will be running P2P.

    Detailed description

    In this sprint, we got a few contributions from CF:

    • Karl made peer churning mechanism less aggressive ouroboros-network-#4656; and
    • he added timeouts for idle states in ChainSync & KeepAlive +miniprotocols. These timeouts help a node remove idle connections from the +responder (server) side ouroboros-network-#4648.
    • he improved the WireShark dissector by adding support for the peer-sharing mini-protocol ouroboros-network-#4656.

    Galois has been making progress in addressing some of the issues they raised in their review (last year):

    Peer Sharing

    • Light peer sharing is only enabled when peer sharing is turned on ouroboros-network-#4652;
    • Handshake incorrectly reports peer sharing value. It's supposed to relay the +remote value, but instead, it returns the local value. ouroboros-network-#4642 (in review).

    Async Demotion Test Fix

    • We fixed an async demotion test failure which turned out to be a weakness of +the test itself rather than a bug in the connection manager. ouroboros-network-#4655

    · 3 min read
    Marcin Szamotulski

    High-level overview of sprint 42

    Eclipse Evasion

    We merged and released a new version of the ouroboros-network package (version +0.9.0.0) which includes big ledger peers feature. +This is the primary peer selection mechanism to defend against eclipses. We +also prepared a PR to updated ouroboros-cosnensus +and ekg-forward packages.

    CDDL specs for protocol codecs

    We made the cddl spec for network codec more inline with the implementation +which is highly polymorphic. cddl doesn't have the notion of polymorphism, +but has any which can generate any valid cbor term. We matched it with an +Any type on the Haskell side and made all remaining tests & specs use it. +This simplified the specifications and made it easier to understand which parts +are defined in the spec, and which parts are left unspecified. See +ouroboros-network#4595.

    Ouroboros-Network-Framework API changes

    We also released ouroboros-network-framework and other network components. +The ouroboros-network-framework package contains a redesign of API exposed to +ouroboros-consensus. We consolidated, cleaned it and made it easier to +extend in the future if there will be new arguments that need to be passed to +mini-protocol initiator and responders which comes from the low-level network +layer.

    Nix setup (CI)

    We also made a major review of our nix setup. With help from our DevX team +we ended up with a clean flake.nix file which can:

    • compile & test the code on x86_64-linux, x86_64-darwin and aarch64-darwin
    • cross-compile to Windows on x86_64-linux

    And provides a shell which contains all the build tools, including ghc-9.6, +hls, cddl, and more. See ouroboros-network#4640, +ouroboros-network#4643.

    Other contributions

    Cardano Network Service Assurance

    • The work and writeup in finishing up the CNSA, first stage (first +contract).
    • Getting Sam Cowger (Galois Inc) up to speed.
    • The IOG Networking team carried a reivew of CNSA project progress: a limitted +code & design review.

    Galois Review

    Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues

    scoping, requirements, and getting started.

    CI

    We added a nightly run for GitHub actions and made the GitHub actions test be +executed with extra concurrency ouroboros-network#4637, ouroboros-network#4649.

    We also added GitHub's dependabot ouroboros-network#4650.

    Bootstrap Peers

    We settled on implementation design of bootstrap peers which is being +implemented, ouroboros-network#4615.

    · 2 min read
    Marcin Szamotulski

    High-level overview of sprint 41

    24th July - 6th August 2023

    We started the implementation of bootstrap peers. Bootstrap peers are designed +to provide a safety guarantee for nodes joining the network while still taking +advantage of the distributed network for nodes that are synced. This will be +an intermediate step before Genesis which will allow for further distribute the +system. The bootstrap peers will be run by some trusted partners like CF, +Emurgo or IOG. They are primarily designed for leaf nodes (e.g. full node +wallets), which often end up syncing and require access to the honest chain. See +ouroboros-network#4615 for a more detailed implementation plan.

    Other contributions

    We started to use nothunks library to discover if we have any unevaluated +thunks which can lead to memory leaks ouroboros-network#4633. We found +a small one in the peer metric component of the P2P networking stack. Fixing +it put us on a small detour of fixing the API of the strict-checked-vars +package: cardano-base#431, cardano-base#432, as well as adding NFData +instance to io-classes. We also improved nothunks +library to make debugging easier and we provided a NoThunks instance for +ThreadId which we will need in the future (see nothunks#33).

    We released a new version of io-classes (version 1.2.0.0) and related +packages to Hackage.

    We addressed all review comments on the eclipse evasion PR which introduces big +ledger peers, ouroboros-network#3886.

    We fixed how SIGHUP signal handlers are registered, so it's not possible to +shutdown a node which was starting while trying to update network topology, +see cardano-node#5421.

    I didn't mention that in the previous update, so here it goes: in the previous +sprint we released ouroboros-network-0.8.2.0 and +ouroboros-network-framework-0.7.0.0.

    · 3 min read
    Marcin Szamotulski

    Network Update (Sprints 39 & 40)

    The network updates got distracted. Mostly because of me leaving for the meeting in Edinburgh, Scotland and the being away. +It was great to see and talk to so many of the community members.

    Sprint 39 (Jun 26 - Jul 09)

    Major changes

    Now the following list of traces will be turned on by default:

    node-to-client protocol
    • LocalConnectionManagerTracer
    • LocalInboundGovernor
    • LocalHandshake
    • LocalServer
    node-to-node protocol
    • Server

    See cardano-node#5353. This will be released in node-8.2.0.

    We made sure that cardano-client-0.1.0.x library (which is db-sync) is not using the experimental node-to-client protocol. +The cardano-client-0.2.0.0 was not affected. +See ouroboros-network#4612.

    We merged the dynamic block production feature to ouroboros-consensus (also available in the cardano-node-8.2.0 release). +Dynamic block production enables hot-swap p2p nodes, which are important for the p2p deployment of block-producing nodes. +See ouroboros-network#3159, [ouroboros-consensu#140].

    We continued to review the implementation of big ledger peers for eclipse evasion, see ouroboros-network#4462.

    Minor changes

    Sprint 40 (Jul 09 - Jul 23)

    Major changes

    We integrated ouroboros-network-0.8.2.0 with the master branch of cardano-node for the 8.2.0 release (the version match between ouroboros-network and cardano-node is purely accidental). +This includes:

    • integration with dynamic block production feature. +This feature is documented in the following PR.
    • Warm valency for local root peers (see below).

    For the full list of features included in the 8.2.0 release from the network side, please take a look at the pre-release nodes.

    We improved the memory footprint of peer metrics measured by the P2P stack. +Peer metrics are used to decide which peers to demote every churn interval (roughly every hour with some probabilistic fluctuation). +See ouroboros-network#4620. +The improvement will be available in cardano-node-8.2.0.

    We added an optional explicit warm valency to local root peers of the P2P topology file. +Previously we used an implicit valency, e.g. the node keeps connections to all of the local roots; with local warm valency the node will pick only that many peers from the local root peers group to connect to. +The hot valency (previously known simply as valency) hasn't changed, but it must be smaller than the warm valency as hot peers are selected from warm ones. +Warm valency is a useful feature to limit resource consumption if one of the domain names in the local root peer group resolves to many IP addresses. +See ouroboros-network#4575, cardano-node#5409.

    · 2 min read
    Marcin Szamotulski

    Network Update

    Key contributions

    We held a series of session to review the implementation of big ledger peers +(eclipse evasion). See #4462.

    We get a request from a 3rd party to clarify an inconsistency between CDDL spec +and protocol implementation. We worked out a nice solution which takes +advantage of the any notion available in CDDL. On the Haskell side we +provide Any type which gen generate almost any CBOR term (some are excluded +only because they are not decoded back to the same form, and we relay on that +property). See #4580.

    We fixed a bunch of problems of the cardano-cli ping command. It also now has +a limited support of node-to-client mini-protocol (the -c option is +ignored, as it cannot be supported by node-to-client protocol). Note that +the format of messages has changed, timestamps are printed in ISO8601 format. +See #4601, #5326, #5313, #30

    In order to provide a new flag in the topology file which enables ledger peers +when the chain is close to the tip, we continued to work on #4530. This is +currently in review, the consensus team will need to provide us with the new +api. This feature is useful for two reasons: makes it easier to maintain +a topology file, it will also limit the traffic on public roots generated by +for example full node wallets and distribute it to ledger peers.

    We also continued to work on a blog post which describes the journey of design +& implementation of the dynamic P2P network layer. Too be announced soon :).

    Other smaller changes

    We limit the concurrency of resolving dns names. Up to 8 root peers or ledger +peers DNS names are resolved concurrently, and at most 2 local root peer DNS +names. See #4596.

    We fixed handshake query timeout in #4603.

    We renamed one of the block-fetch decision constructors as requested by the +consensus team, see #4608.

    + + + + \ No newline at end of file diff --git a/tags/network/page/3/index.html b/tags/network/page/3/index.html new file mode 100644 index 00000000000..55e99773587 --- /dev/null +++ b/tags/network/page/3/index.html @@ -0,0 +1,88 @@ + + + + + +24 posts tagged with "network" | Cardano Development Updates + + + + + + + + + + + + +
    +

    24 posts tagged with "network"

    View All Tags

    · 3 min read
    Marcin Szamotulski

    Network Update

    Key contributions and advances

    We merged light peer sharing feature, which allows to include inbound peers +into outbound governor known peers. This is the primary way for new +unregistered nodes to enter the network, which then can be shared using peer +sharing. Note that peer sharing is an experimental feature which is disabled +until genesis & eclipse evasion as fully implemented. See #3596.

    We are making progress reviewing eclipse evasion, #3886.

    We fixed another bug in local root peers. We found out that if the local roots +where ignored until the first domain name was resolved, see #4583. The bug +fix was backported and released in ouroboros-network-0.8.1.1.

    We re-started working on dynamically enabling block forging to address issue +#3159, which will enable us to release P2P on block producing nodes. See #140.

    New cardano-ping / cardano-cli ping release

    We prepared a new release of cardano-ping library which supports the new +query feature (query supported versions). See #4589, #4593 and #5313. +The new version of cardano-cli ping will use ISO8601 formatted +timestamps; also the formatting of ping results is slightly improved, and it +will introduce the new --query-versions (-Q) switch. If the remote site +supports the query parameter, the command will print:

    redacted-ip:port network rtt: 0.064
    redacted-ip:port handshake rtt: 0.064010896s
    redacted-ip:port Queried versions [NodeToNodeVersionV11 764824073 InitiatorAndResponder,NodeToNodeVersionV10 764824073 InitiatorAndResponder,NodeToNodeVersionV9 764824073 Initiat
    orAndResponder,NodeToNodeVersionV8 764824073 InitiatorAndResponder,NodeToNodeVersionV7 764824073 InitiatorAndResponder]

    otherwise it will print the negotiation results

    redacted-ip:port network rtt: 0.045
    redacted-ip:port handshake rtt: 0.101867615s
    redacted-ip:port Negotiated version NodeToNodeVersionV10 764824073 InitiatorAndResponder

    Note that in that case cardano-cli ping offers InitiatorAndResponder, which +allows us to detect whether the remote side is an InitiatorOnly or +InitiatorAndResponder. Also cardano-cli ping will no longer announce +itself as InitiatorAndResponder, except for the case mentioned above.

    Other smaller contributions

    On a request from the Marlow Team, we published haddocks of typed-protocols, +which are now available here (#40, #41).

    We made a new release of strict-stm-1.1.0.1 on Hackage, which fixed a bug in +package description file, #101 .

    We also helped to debug a deadlock when using named pipes on Windows in the new +RawBearer API. The API is being used to store secret keys only in memory. +The PR #4395 is under review.

    We also have two more PRs which are under review:

    • #4530: enabling ledger peers on a fixed number of slots before the tip of the chain;
    • #4580: a PR which fixes inconsistencies in one of our cddl specs.

    · One min read
    Marcin Szamotulski

    High level summary

    We continued working on eclipse-evasion. We also analysed and fixed a bug +when using DNS names in local root peers. We continued working on engineering +blog post about P2P. We released a new version of packages for +cardano-node-8.1.0 release.

    We improved our CI, removed obsolete scripts add extra validation which checks +if CHANGELOG.md files were updated.

    We also improved release scripts.

    Detailed summary

    • Eclipse evasion: #4462
    • Local root peers bug fix: #4559
    • Release to CHaP: #4573
    • CI improvements: #4572
    • Release script improvements: #4573

    · 2 min read
    Marcin Szamotulski

    High level summary

    We started working on a new way to switch between root & ledger peers (see +below). We continued to work on eclipse-evasion. We merged changes to +Handshake contributed by Galois Inc. We made improvements to our tests (fixed +a flaky test, added cddl specs for NodeToNodeVersionData and +NodeToClientVersionData). We improved our CI and automated the process of +releasing new package version to CHaP.

    Detailed summary

    We continued to work on testing eclipse-evasion.

    We came up with an idea to limit how full node wallets relay on root peers +(currently operated by IOG, in future also CF and Emurgo). We designed +a switch to use ledger peers if the node tip is close enough to the current +time. For more details see #4530.

    We merged changes to the handshake mini-protocol which allow one to query +server's node-to-node / node-to-client parameters. We are grateful to +Galois Inc. for implementing it, #4256 and #4538. We published new version +of packages to CHaP chap-#253.

    We added DiffusionError wrapper. Thanks to it, ouroboros-consensus will +not duplicate diffusion errors messages in the log, #4537.

    We fixed an issue which caused one of our tests to be flaky, #4515.

    We added cddl tests for NodeToNodeVersionData and NodeToClientVersionData: +#4540, #4544 (in review).

    We wrote scripts which will help us release packages as well as verify that we +released all the package necessary to build the newest set of packages, +#4542.

    We renamed the consensus startup tracer and make sure it doesn't log +ExitSuccess exceptions, consensus-#71.

    We reviewed PR which adds RawBearer API, #4395.

    We made series of improvements to our CI:

    • #4539: we don't need to install cryptographic libraries in CI;
    • #4545: Javier Sagredo (consensus) cleaned up CI after consensus moved +to a new repo;
    • #4546: we switched to use GitHub merge queues;
    • #4549: we made it possible to trigger building haddocks manually;
    • #4553: we fixed and enhanced caching of building dependencies.

    · 2 min read
    Marcin Szamotulski

    High level summary

    The networking team has released the following packages to Hackage:

    We published an announcement blog post. We made progress +also on another blog post which will describes the design of the P2P networking +layer.

    After moving ouroboros-consensus to its own repository, we made +ouroboros-network compatible with GHC 9.4 and 9.6.

    We made cardano-client library independent of +ouroboros-consensus-diffusion.

    We prepared release of network packages for cardano-node-8.0.

    Detailed log

    Ouroboros-Network

    IO-Sim

    • io-classes-1.0.0.0, and following up releases: 1.0.0.1 (ghc-9.6 +support), 1.1.0.0 (documentation fix).
    • Fixed timeouts and delays in io-sim in a series of PRs: io-sim#81, +io-sim#82, io-sim#86, io-sim#87.
    • Renamed a module: io-sim#88.
    • Fixed a failing registerDelayCancellable test: [io-sim#80].
    • Use GitHub merge queue in io-sim repository.
    • CI: download stylish-haskell: io-sim#83.

    Typed Protocols

    · 2 min read
    Marcin Szamotulski

    High level summary

    In the last spring we released cardano-node-1.35.6 with dynamic P2P +functionality.

    We received reports from some SPOs who encountered problems with their non +P2P block producing nodes not being able to connect to their P2P relay. Karl +Knutsson (from Cardano Foundation) reproduced this issue between two nodes (a +non P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed +it and found a bug in the legacy non p2p code. The bug is only possible to +trigger with a P2P node which is binding its outbound connection port to +a fixed IP address and port (default in p2p). A possible solution was found. +For more information see #4465.

    We released cardano-ping-0.1.0.0 package to CHaP. cardano-ping is no +longer available as a standalone binary, but instead it will become part of +cardano-cli (see #4664)

    We are testing cardano-node with peer sharing functionality (#4019).

    We are working on eclipse evasion. We added new class of peers: big ledger +peers to the outbound governor, implemented tests and fixed found issues +(#4462). We also made the information if a given peer plays the role of +a big ledger peer to the mini-protocols. This will allow to modify +mini-protocol applications for such peers. As part of this functionality we +refactored some core types in the network code which simplifies exposed API.

    Together with Moritz Angerman we started to update io-sim to ghc-9.6.1 (see +#73).

    We merged a fix of configuration of accepted connections limit in +cardano-node (see #4902).

    + + + + \ No newline at end of file diff --git a/tags/network/page/4/index.html b/tags/network/page/4/index.html new file mode 100644 index 00000000000..026aa460780 --- /dev/null +++ b/tags/network/page/4/index.html @@ -0,0 +1,106 @@ + + + + + +24 posts tagged with "network" | Cardano Development Updates + + + + + + + + + + + + +
    +

    24 posts tagged with "network"

    View All Tags

    · 2 min read
    Marcin Szamotulski

    High level summary

    In the current sprint the networking team focused on fixing bugs and pushing +forward implementation of eclipse evasion. We also found a bug in our +simulation testing setup (in integration of test node). We also overviewed the +work on extending handshake protocol which is delivered by Galois Inc.

    We published ouroboros-network-0.4.0.1 and +ouroboros-network-protocols-0.3.0.0 to CHaP.

    We also fixed a bug in cardano-node which results in not being able to +configure inbound connection limits, see PR #4902.

    Together with Karl Knutsson (CF) we realised an issue in cardano-cli: it's +validation of DNS names, IP address & ports when registering a stake pool +should be more strict to protect against common mistakes which we identified on +the chain. See issue #4929.

    Detailed work log

    In PR #4385 we fixed two bugs in peer state actions. First one results in +a busy loop if demotion from hot to warm times outs. This busy loop is +eventually exited when mux exits (we reported this in our previous report). +This fix made it to 1.35.6 release as well.

    In addition the PR #4385 also fixes another bug which results in hot -> warm +-> hot demotion / promotion busy loop.

    The PR #4385 also fixed a bug in a node only used in simulation which +resulted in not using chain-sync or block-fetch mini-protocols. In the +review process, we realised that the header-body split in the simulated node +requires further work (see PR #4419, which is under review).

    The PR #4385 also extend our generators, which together with the above fix, +cover the hot -> warm -> hot demotion / promotion busy loop.

    In PR #4419 we introduce a ChainDB for our simulation node, which plays +similar role to ChainDB in the ouroboros-consensus: a persistent (across +simulated restarts) store of blocks which does chain selection. This ensures +that the simulated node is using block-fetch to download blocks announced by +chain-sync mini-protocol.

    We also made progress with reviewing PR #4019 - peer sharing.

    We also fixed issue #4370 - a connection manager test failure, see PR #4384.

    · One min read
    Marcin Szamotulski

    High level summary

    Recently QA found a bug in P2P code, which results in busy loops. We added one +fix to 1.35.6 release, another one will likely be part of next release. The +first one is already included in ouroboros-network-0.3.0.1 release. These +bugs could only affect nodes which are out of sync and thus should not impose +risk on well maintained nodes on mainnet. We also advertise to deploy at most +one of the relays as a P2P node, which shields from possible consequences.

    We recently finished design phase of eclipse evasion and we started +implementing it (see issue #3886 for progress).

    Galois finished implementing Handshake extension which will allow to query +network protocol versions (see pr #4256).

    We also recently released a newer set of network packages to be integrated with +cardano-node master branch, this includes:

    * monoidal-synchronisation-0.1.0.2
    * cardano-client-0.1.0.2
    * network-mux-0.3.0.0
    * ouroboros-network-api-0.1.0.0
    * ouroboros-network-protocols-0.2.0.0
    * ouroboros-network-testing-0.2.0.1
    * ouroboros-network-mock-0.1.0.0
    * ouroboros-network-framework-0.3.0.0
    * ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
    in `0.3.0.1`)

    · 2 min read
    Marcin Szamotulski

    High level summary

    We have been working towards cardano-node-1.35.5 release. QA & benchmarking +teams gave a green light for the release, and we made decent progress with some +CI problem which we encountered on the way (PR #4612). We are also working on +peer sharing, making improvements in our testing infrastructure, reducing +technical debt and making progress towards io-sim-1.0.0.0. Galois is making +progress on Handshake improvements.

    Low level summary

    Our diffusion simulation network now includes a mixed network of initiator +only and initiator and responder nodes. issue #4222

    We are now reviewing the peer sharing pull request.

    We are also reviewing pull request which introduces handshake query flag. PR #4256

    We fixed a bug in our network simulator. The bug was triggered when a node +died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

    We also refactored Snocket interface and removed the bearer construction from +its methods. PR #4260

    We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes +reviewing two PRs: PR #57 and PR #60 as well as writing an announcement +blog post.

    · One min read
    Marcin Szamotulski

    High level summary

    In last sprint the team focused on preparations for the conference talk at +OPODIS 2022. We also worked on preparations to publish io-sim and related +packages on Hackage (PR #57, PR #60).

    We also started reviewing:

    • ouroboros-network
    • cardano-node
    • cardano-ledger +repositories for open-source readiness (PR #4128).

    We prepared a PR which changes how node-to-node and node-to-client protocol +versiones are serialised in cardano-node log (PR #4691).

    · 4 min read
    Marcin Szamotulski

    Stake-Driven Data Diffusion Release for Relays

    IOG networking team decided to release the Stake-Driven Data Diffusion with +Robust Optimised Peer Selection also more commonly known as P2P. In the +last update, we informed about a performance regression, but it turns out it +only affects block producers, and thus we highly advise against running it on +such nodes. Further investigation is required to find the cause of it.

    On IOG's benchmarking cluster we have seen quite a good performance improvement +on block propagation itself. The cluster is running a static topology with +valency 6 (each node is connected to 6 other nodes). In which every of the 50 +nodes are block producers. The setup of this network is the same as mainnet. +We've seen 40-50% performance improvement on block propagation comparing to the +same cluster deployed with the same topology but using non-P2P nodes. We think +this performance improvement is caused by using full duplex connections. Quite +likely the transaction traffic floating in both directions on the same TCP +connection helps to keep the TCP window open. Note that in a cluster of 50 +nodes with valency 6 the probability of having at least one duplex connection +is more than 50%. We don't expect the same improvement on mainnet because the +network is much wider and the transaction traffic is not as large.

    Just before the release we squashed two small bugs:

    • issue #4163 - top level integration bug in keep-alive;
    • issue #4177 - a bug in outbound-governor;
    • PR #4165 - a fix cardano-ping support of NodeToNodeV_10.

    Peer Sharing

    We were carrying a review of peer sharing PR.

    DeltaQ

    Neil Davies was invited to give a guest lecture entitled Avoiding System Catastrophes at UCLouvain.

    What have we achieve last sprint

    • issue #4163: we found out that a control message is not passed to the +keep-alive mini-protocol, this results in every demotion executing demotion +timeout rather than a graceful termination. With the fix the node will no longer log:

      { "kind": "PeerStatusChangeFailure"
      , "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"
      , "reason": "TimeoutError"
      }
    • issue #4177: we fixed an assertion failure in the outbound-governor; now +we don't try demoted peers which are being demoted already.

    • PR #4155: we refactored ouroboros-network packages. There's a top level +ouroboros-consensus-diffusion package which integrates network +& consensus code. We also introduced:

      • ouroboros-network-api package which contains the API shared between +network & conensus;
      • ouroboros-network-mock package which contains mock API used for testing +(e.g. a mock chain & chain producer, etc.)
      • ouroboros-network-protocols package which contains implementation of all +(but handshake) mini-protocols, exposes a testlib and contains test +and cddl components.

      This made the dependency tree of network & consensus packages much +cleaner.

    • PR #4169: we described the usage of release branches in CONTRIBUTING.md +doc.

    • PR #4165: we fixed cardano-ping support of NodeToNodeV_10 protocol.

    DeltaQ

    The abstract of the talk:

    An essential step to ensuring that distributed systems are fit for +purpose.

    Distributed systems have become an integral part of our society and +daily lives. We are, both implicitly and explicitly, individually as well as +collectively, placing ever more trust in them.

    Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes +well beyond notions of functional correctness (i.e. never getting the wrong +answer). We need them to deliver the desired outcomes in a timely, robust, +reliable, resilient fashion, at scale and in a sustainable way (both +economically and environmentally).

    This all sounds like a worthy aspiration, but what would be a practical +approach to capturing and reasoning about these issues? How can we ensure that +systems can meet their fit-for-purpose objectives, not just in their design but +as they are deployed, encounter the imperfect world, are scaled to become +economic, and proceed into ongoing maintenance?

    This talk will illustrate how the notions of Outcomes and Quality Attenuation +(as captured by ‘∆Q’) are being used to both frame the necessary notions and +provide a basis for assuring the refinement and reification of such systems, +from initial concept to operational infrastructure.

    You can download the slides from here.

    + + + + \ No newline at end of file diff --git a/tags/network/page/5/index.html b/tags/network/page/5/index.html new file mode 100644 index 00000000000..1c71b9cb409 --- /dev/null +++ b/tags/network/page/5/index.html @@ -0,0 +1,117 @@ + + + + + +24 posts tagged with "network" | Cardano Development Updates + + + + + + + + + + + + +
    +

    24 posts tagged with "network"

    View All Tags

    · 2 min read
    Marcin Szamotulski

    High-level summary

    In last sprint we got a performance report of P2P performance testing cluster +(which consists of 50 nodes). There is a performance regression in the header +notification metric. The P2P cluster is constructed with the same +topology as the non-p2p reference one this indicates some regression which +needs to be further investigated. This poses a risk for releasing P2P.

    We also continued to work on peer sharing: pull #4019.

    We continued working on dynamic block production which is required for P2P +release for BP nodes: pull #3159.

    We simplified the P2P topology format: issue #4559, pull #3888.

    We added a new trace point for asynchronous demotions of local peers with +Warning severity. This trace is important for SPOs.

    Detail description

    Performance regression

    Below we include a graph which shows the performance regression of the P2P code base vs non P2P.

    On the x axis is time in seconds which measures the delay from the start of +the slot to when a header was received. The y axis is the percentile of nodes +that received a header. We are currently investigating possible causes of the +regression.

    New P2P topology form

    The new topology file format is described in this issue #4559.

    Tracing improvements

    • We improved a handshake error reporting, pull #4136
    • We added TraceDemoteLocalAsynchronous rendered as DemoteLocalAsynchronous +in json format, pull #4127. Such demotions should be investigated by the +pool operator. They can indicate a problem in the deployed system, but also +they could indicate a remote problem in arranged connections with other SPOs.

    Open Source Improvements

    We improved documentation of io-sim and typed-protocols for open-source +contributors and/or maintenance tasks: pull #22, pull #45, pull #48.

    · 3 min read
    Marcin Szamotulski

    High-level summary

    The team has focused on debuging & fixing bugs for the P2P single relay release, which included

    • diagnosing, fixing and writing tests for a bug in peer-state-actions which +fortunately hasn't been released;
    • diagnosing & preventing misconfiguration of DNS

    We also focused on developing peer sharing. We also held a session with +the scientists on eclipse evasion.

    Detailed description

    P2P Network Stack

    During the past two weeks the team focused on p2p single relay release and peer +sharing. We found and fixed an important bug recently introduced in one of the +components of p2p networking stack (fortunately never released). Together with +a fix, we designed a unit test diffusion simulation as well as quickcheck +property test (both could reproduce it). We also changed the code in a way that +if such a bug is reintroduced in the future, it will be obvious to diagnose. +For more see:

    Initial benchmarking run of the P2P code was executed. The results where +unlike what we see on the mainnet. We found a possible misconfiguration of the +cluster (caused by 0 TTL on domain names), which could be the direct cause of +it. We wrote a PR which rules out such misconfiguration. We are awaiting on +the next benchmarking results. See more at:

    ouroboros-network#4106

    We also started working on P2P single relay release. The PR +ouroboros-network#4120 +includes 108 patches cherry-picked from the master branch. We started +working toward integration these changes against the release branch of +cardano-node. Early next week we ought to be able to have an early version +of cardano-node with non experimental P2P support!

    For more detailed release plan please see P2P - Single +Relay +issue.

    Consensus

    We identified and fixed missing error reporting in consensus +initialisation phase. See more at +ouroboros-network#4015

    Cardano Node

    We also made changes in cardano-node in order to give better experience for +node operators. This includes updating severities of some of the traces as +well as implementing new format of the p2p topology file. For more see:

    Peer Sharing

    We continued working on implementation of peer sharing. We have an early +implementation which will be reviewed and analysed in next weeks. We started +working on cardano-node integration. We need +PR #4392 to be merged +before such integration will be able to land in cardano-node, although this +is not blocking us currently. See more at:

    Eclipse Evasion

    We held a session which included Alexander Russel, Sandro Coretti-Drayton and +Nick Frisby from the consensus team. We discussed high lever design of the +eclipse evasion scheme, which is important for the design and implementation of +ouroboros-genesis. We got a positive feedback from the researchers.

    IO-Sim

    In this period we made little progress towards releasing IO-Sim on Hackage. +A single PR which added +a few missing instances of the STM monad.

    Open Source

    We made sure the CI runs for PRs which comes from forks (which is important to +accept contributions from 3rd parties).

    Mithril Cardano Integration

    We held initial discussions with Arnaud Bailly about possible path to integrate +mithril to cardano-node and take advantage of the ouroboros-network +diffusion layer.

    · 3 min read
    Marcin Szamotulski

    Network Update

    Ouroboros Network

    Ouroboros Consensus

    • Recently we found out that the consensus does not log exceptions thrown during +intiialisation. This was fixed in +PR input-output-hk/ouroboros-network#4015 +As part of this pull request we also changed that all exceptions rethrown by +the connection handler thread are wrapped in ExceptionInHandler.

    Some older items, which were not announced

    • We identified and fixed an issue related to socket activation (socket options +where not set for sockets passed through socket activation). +PR input-output-hk/cardano-node#3979 +This fix will be released in the next cardano-node release.

    Cardano Node

    • We extended the NixOs service module so that one can modify socketPath, +runtimeDir, databasePath, traceSocketPathAccept, +traceSocketPathConnect and stateDir options. +PR input-output-hk/cardano-node#4196

    IO-Sim

    We resolved a number of issues before release of io-sim on hackage:

    See PR #24.

    We also improved experience for contributors of io-sim and typed-protocols by adding issue templates:

    Typed Protocols

    Input Endorsers Simulation

    New features include:

    • Histograms of block arrival frequency, for both network (inbound) and CPU +(block validation). This is interesting to check that we're not overloading +the CPU block validation capacity, or network link capacity. Or alternatively +to observe the behaviour in an overload situation if we set the block +generation rate high enough.

    • Pie chart of utilisation of TCP links. This shows how small a fraction of +links are being used at any one time, and shows that once the system "warms +up" and is operating stably, most block delivery is ballistic.

    • Showing off the new screen layout combinators, that let us put multiple +charts, titles etc on screen at once and scale them to whatever screen or +video resolution we like without having to tweak numbers (this example is +scaled to fit 1080HD video resolution).

    · One min read
    Marcin Szamotulski

    The networking team took an active part in the project iteration (PI) planning +session, see cardano-node backlog for detailed +outcomes.

    • We started working on a detailed design / implementation plan for gossip.

    • We merged input-output-hk/ouroboros-network#3859 which +sets the ouroboros-network repository for the single relay release.

    • We identified a bug in the network simulator, which is fixed in the +input-output-hk/ouroboros-network#3852. +The above PR was reviewed.

    • We set the tracing configuration for nodes which we deploy and fixed and +identified some deployment hiccups. We identified some bugs in the RT view +which were registered by the maintainers. +input-output-hk/ouroboros-network-ops#4

    • We fixed typos in network-mux library: +input-output-hk/ouroboros-network#3921

    • For easy of debugging we renamed a trace point: +input-output-hk/ouroboros-network#3922

    • Duncan iterated on his simulation / visualisation. He also was able to +identify and fix a bug in the simulator. The simulation contains 50 nodes. +Dashed lines indicate and established connection, while solid lines indicate +a TCP connection with fully open TCP window.

    + + + + \ No newline at end of file diff --git a/tags/open-source/index.html b/tags/open-source/index.html new file mode 100644 index 00000000000..8ef07a550e2 --- /dev/null +++ b/tags/open-source/index.html @@ -0,0 +1,45 @@ + + + + + +One post tagged with "open-source" | Cardano Development Updates + + + + + + + + + + + + +
    +

    One post tagged with "open-source"

    View All Tags

    · 2 min read
    Marcin Szamotulski

    High Level Summary

    • We've been working toward publishing Cardano Backlog, currently its in +review by the IOG communication team.
    • We identified a number of libraries which can be published.
    • We setup and enhanced cardano-updates.

    Detailed description

    I am glad to announce that I was given the role of open-source advocate for +cardano project. In last few weeks we were making steps towards publishing our +backlog. It's currently under review by the communication team, although most +of the issues are already visible across various repositories.

    The open-source initiatives have their own +project. It is set up +to help us track our major open-source activities. Right now there are two +work streams:

    We identifies a number of libraries across all the teams which contribute to +Cardano which we would like publish to publish, see the following +link. Arnauld Bailly recently published +quickcheck-dynamic +library on Hackage. The networking team is slowly progressing towards +publishing io-sim and related packages, checkout the progress +here.

    Thanks to Arnaud Bailly our Cardano Updates website has +a new look & feel! It's using docusaurus.io.

    Christian Taylor carried recently a detailed analysis of our open-source +repositories. He collected many interesting metrics, which allows us to see +where we need to improve as an open-source project to make the Cardano project +and many smaller related libraries which we maintain be more open and available +for open-source contributors.

    The graph below shows which documents the 55 most important Cardano +repositories are missing the most: +Documentation Adoption +You can expect we will improve in these metrics in the coming weeks.

    + + + + \ No newline at end of file diff --git a/tags/performance-tracing/index.html b/tags/performance-tracing/index.html new file mode 100644 index 00000000000..edf85c0746c --- /dev/null +++ b/tags/performance-tracing/index.html @@ -0,0 +1,62 @@ + + + + + +25 posts tagged with "performance-tracing" | Cardano Development Updates + + + + + + + + + + + + +
    +

    25 posts tagged with "performance-tracing"

    View All Tags

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: Release benchmarking for node 8.7.0. Also, we performed the first-ever Conway benchmarks.
    • Development: Conway capability of our workload generator has been implemented and merged to master.
    • Infrastructure: Changes to our workbench facilitating easy access and archiving of raw benchmarking data.
    • Tracing: Quality-of-life improvements to tracing output and addition of a test suite.
    • Nomad cluster: Expand the list of benchmarking profiles that can be run on Nomad; generalize cluster topology generation.

    Low level overview

    Benchmarking

    A full set of benchmarks for node 8.7.0 has been performed, with the focus of enabling the next mainnet release. We've measured slight performance improvements of 8.7.0 over 8.6.0, and can confirm no regressions have been introduced.

    Furthermore, we've run system integration level benchmarks in the Conway era for the first time, on the same node version. +Only Babbage-compatible workloads have entered comparison as to ascertain performance consequences of only changing the ledger version, and nothing else. The results are very promising, as we could show that switching ledger versions for existing workloads does not come with a performance penalty.

    Development

    Our transaction generator has been extended to be able to submit all present benchmarking workflows in the Conway era. +Currently, we're looking into adding Conway-exclusive features, such as DRep registration. Those would be submitted at the very beginning of a run, as we're interested in seeing potential performance implications of maintaining DRep sets of varying size in ledger. Furthermore, this will serve as the basis for future development Conway-exclusive workloads, such as governance actions or vote tallying.

    Infrastructure

    As our workbench will be pivotal in orchestrating and organizing benchmarking runs on the Nomad cloud backend, we've +improved how raw benchmark data is tagged, which metadata is documented in an automated manner. This enhances both access to existing run sets, as well as maintaining an archive for benchmarking data.

    Tracing

    The new tracing system is currently receiving usability improvements as we're reworking the output of several trace messages. +Additionally, we're setting up a rigorous test suite to provide safety for future development of and component integration inte the system.

    Nomad backend

    We've been working on adapting various benchmarking workloads, which are defined by our workbench's profiles, to running on the new infrastructure. This mainly concerns a workload utilizing Plutus, as well as peer-to-peer flavoured workloads. Furthermore, we're implementing a solution to create all possible cluster topologies algorithmically, instead of still using fixed literal definitions for some cases.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: Release benchmarking for node 8.6.0 as well as benchmarks scrutinizing GHC versions and the new tracing system.
    • Development: PlutusV3 capability of our workload generator has been implemented.
    • Tracing: First round of optimization of the cardano-tracer service has completed, awaiting validation.
    • Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.
    • Workbench: Configurable remote environments and improvements to run documentation have been merged to master.

    Low level overview

    Benchmarking

    We've performed and analyzed a full set of benchmarks for node 8.6.0, both in comparison to recent release tags +and mainnet version 8.1.2. A lot of development work has entered the system since then, so it is crucial +we can rule out any potential performance risks for the next mainnet release.

    Additionally, we've been benchmarking GHC9.6.3 builds of cardano-node. Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform.

    A last set of benchmarks was dedicated to the new tracing system with node 8.6.0. We were able to show that +there is no performance risk to enabling the new system, even when forwarding all trace messages to a cardano-tracer +service on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.

    Development

    For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes +to the execution budgets by developing specialized workloads.

    Tracing

    The cardano-tracer service has received its first batch of optimizations. Profiling output is promising; to measure +performance for a long service run time, we're currently equipping the service binary with the same capability to +emit regular resource traces as cardano-node. Analysis of those will be the basis for validating this and possible future optimization efforts.

    Nomad backend

    Many improvements for the nomad backend have been implemented and merged to master. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service, +more detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables +our team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.

    Workbench

    Our performance workbench has seen upgrades in documenting and reporting cardano-node builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler. +When alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential.

    Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: Continued benchmarking of UTxO-HD and performed benchmarks for the new tracing system.
    • Consensus QTAs: Our protoype approach is applied to potential regression fixes with GHC 9.2.7.
    • Development: We've developed strategies for future benchmarks of PlutusV3 and UTxO-HD's on-disk backing store.
    • Tracing: The machine-readable tracer configuration has been merged. Optimization of cardano-tracer started.
    • Nomad backend: Ongoing variance analysis and refined cluster topology.

    Low level overview

    Benchmarking

    Performing and analyzing benchmarks for the UTxO-HD feature is an ongoing effort; we can reliably assess the +performance of the in-memory backing store and evaluate possible optimizations (or regressions) for it.

    Furthermore, benchmarks of our new tracing system after several rounds of optimization have been performed. The results +show all key metrics now being unaffected by the choice of tracing system (legacy or new) - with the new system being able to provide more features and flexibility in comparison. The benchmarks also highlighted further points for optimization, with the focus now on the cardano-tracer service.

    Consensus QTAs

    The Quantitative Timeliness Agreements (QTA) prototype is being used in coordination with Consensus and DevX to validate a series of patches that address optmization opportunities which GHC8.10 seizes, but GHC9.2 misses. The +feedback from this approach is much more immediate than running benchmarks at system integration level. But once we eventually do, we expect to reproduce the relevant observations - which would mean a big step towards maturing the prototype.

    Development

    Benchmarking UTxO-HD's on-disk backing store needs special attention: in virtualized environments, disk I/O is not a reliable metric as it passes several layers of indirection. As this is the very metric which will influence overall performance of this UTxO-HD flavour, we developed a plan to monitor such nodes, connected to a running network, on dedicated hardware - having direct SSD access. Replicating this setup for an entire benchmarking cluster of such nodes will be a future effort.

    PlutusV3 will come with new builtins and a new cost model. It will take a specialized benchmark to ascertain the soundness of that model running a full cluster of nodes, possibly stressing expensive builtins. At the same time, +we'd like to validate the many improvements that have gone into the Plutus evaluator.

    Tracing

    The focus for further optimization of the new tracing system has shifted to cardano-tracer - the service +receiving and processing traces from one (or more) nodes. Whilst undisputed that the code living in cardano-node is +more performance critical, the receiving service must still minimize its resource footprint. Moreover, it can +generate load for a running node when querying data points from it - which calls for tight control of that mechanism and its possible configurations.

    Nomad backend

    Variance analysis of new nomad backend has revealed a necessary adjustment of the cluster's topology. We repeated +the same analysis and now see even better confidence in the measurements taken with nomad. This concludes the work on the backend proper for the time being. The last steps before production use will focus on the interface between backend and our workbench, which provides all high-level benchmark definitions and analysis machinery.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed both low-level network and high-level variance analysis of our benchmarking clusters.
    • Infrastructure: Our reporting pipeline was adjusted to classify various workloads easily reducing rework time.
    • Tracing: Work on machine-readable tracing of tracer configuration is ongoing.
    • Nomad backend: We've been able to eliminate several possible confounders on the nomad cluster.
    • Team: We're currently onboarding a new team member: Welcome to Cardano Performance & Tracing, Baldur Blöndal!

    Low level overview

    Benchmarking

    As part of the effort to bring the Nomad backend into production use, we've been equipping both that and the existing benchmarking +backend with means to measure and document network latency for each run. Furthermore we've implemented means to +capture TCP packets for a limited time window during a benchmarking run - which will allow us to spot differences +in the behaviour of the underlying networking stack at OS level.

    Additionally, we're running variance analysis in parallel on both backends to ascertain confidence in metrics originating from either. We've concluded that baseline profile runs aren't directly comparable between the two, so we decided +to compare standard deviations instead to validate the measurements from nomad.

    Infrastructure

    Reporting on benchmarks does require human time and effort to rework the final document. Improvements to the reporting pipeline +have been merged to master. They reduce the time necessary to do so by various changes to the template and the workload classification logic in analysis.

    Beyond that, we've looked into issues where services would quit with an unjustified exit failure upon shutdown - under rare circumstances. By reworking shutdown logic for trace-dispatcher and tx-generator we were able to address those issues.

    Tracing

    After various steps in constructing a configuration upon node startup, it is vital to document +which runtime configuration the node arrived eventually. We're working on providing a machine-readable JSON/YAML +trace message for that purpose.

    This will facilitate hot-reloading a node's tracer configuration in the future: users will be able to take such a trace message, apply their intended change and hot-reload it immediately into the node.

    Nomad backend

    As with the existing benchmarking cluster, nomad is currently under scrutiny with regard to the reliability of metrics it +produces, as well as the behaviour of its OS-level network stack. For instance, differing kernel versions can have an +impact on our measurements, as we'd be basically using two different instruments to take them.

    Along the way we've already been successful in eliminating some possible confounders that had been introduced by the nomad service +or the slightly different system architecture of the new cluster.

    New team member

    Baldur Blöndal is an extremely capable and experienced Haskell developer. Also, he's an excellent fit for our existing team. +So I'm very pleased to welcome him onboard with IOG, and with Performance & Tracing. He will be working on cardano-tracer, the component receiving, processing and making available node traces and metrics.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed and analysed feature benchmarks for both UTxO-HD and the current P2P stack.
    • Infrastructure: Various improvements of our analysis pipeline have been merged to master, supporting safe log truncation.
    • Tracing: Namespace consistency checks have been merged to master along with a curated configuration for benchmarking.
    • Nomad backend: We're productively using the new backend to measure new vs. legacy tracing system, adding many quality-of-life improvements.

    Low level overview

    Benchmarking

    We've completed various runs and analyses targeting two distinct features of the node: UTxO-HD and Peer2Peer.

    With our UTxO-HD benchmark we could clearly localize one point where this new way of maintaining ledger state is still costly, but at the same time confirm that in basically all other aspects UTxO-HD makes no difference in performance.

    The Peer2Peer benchmarks focused on the effects that enabling this feature on a block producing node has on propagation times, as well as scrutinized a proposed change to the Peer2Peer network stack.

    Infrastructure

    As a result of optimizing in-memory representation of log objects, which are constructed from a node's traces, we can now analyse runs that last longer in total. For runs that exceed their expected duration, analysis now supports a truncation +operation that keeps the interdependencies of block events intact.

    Truncation might happen at a slightly different point +in time - and therefore in its log object stream - for each node in the cluster. An additional step validating the block hash timeline of the cluster has been implemented for the pipeline. It provides early feedback on whether a specific truncation will lead to a valid full analysis, which requires much more time.

    Tracing

    Consistency checking of namespace implementation and configuration when using the new system has been completed. +This feature enables feedback on when tracer implementation details in some component might have changed. It's also able to detect when a configuration used for operating a cardano-node shows inconsistencies with the namespaces the system provides - and hence needs attention.

    Furthermore, we've created a fine-grained configuration of the new system that caters to benchmarking's need of very many +detailed trace messages. It's aimed at mirroring the same amount of trace messages, and information, we're seeing from our usage of the legacy system; an important step in making benchmarks between systems comparable.

    Nomad backend

    The new backend is currently being used for further validation with regard to the existing cluster. Additionally, we're using it in production mode to comparatively benchmark both tracing systems after merging past month's optimizations - which is the +first real-life application of the nomad cluster. Hands-on experience in that phase translates into many small improvements which can be immediately applied to enhance user experience for the new backend.

    + + + + \ No newline at end of file diff --git a/tags/performance-tracing/page/2/index.html b/tags/performance-tracing/page/2/index.html new file mode 100644 index 00000000000..84ffb6c69fb --- /dev/null +++ b/tags/performance-tracing/page/2/index.html @@ -0,0 +1,37 @@ + + + + + +25 posts tagged with "performance-tracing" | Cardano Development Updates + + + + + + + + + + + + +
    +

    25 posts tagged with "performance-tracing"

    View All Tags

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: Benchmarking node version 8.2.1 has concluded. Additionally we're developing benchmarking setups for GHC9.6 and UTxO-HD.
    • Infrastructure: Our analysis pipeline has received improvements reducing memory footprint.
    • Tracing: Another batch of optimizations for the new tracing system has been merged; work on namespace consistency guarantees is ongoing.
    • Nomad backend: We're performing and analysing various runs for validation purposes on the new hardware cluster.

    Low level overview

    Benchmarking

    We've performed and analysed the benchmarks for the 8.2.1 version of cardano-node as part of our release benchmarking cycle.

    Setting up cluster benchmarks requires completing full system integration. This applies to both supporting a new build platform, as is GHC9.6, as well as targeting a specific feature, like a UTxO-HD enabled node. Currently, we're working on respective integrations on both those paths.

    Infrastructure

    As cluster runs increase in duration, more and more data is accumulated for analysis. Batch analysis mode needs all data to be held +in memory, which wouldn't fit anymore even on a 64GB RAM machine. Changes to the in-memory data representation improving on compactness were able to reduce the RAM requirements of our analysis pipeline.

    Tracing

    The next portion of optimizations has been completed and merged to master, getting rid of Haskell's native String representation on critical code paths. This concludes the optimization phase of the new tracing system for all its components used by cardano-node.

    The implementation for validation of consistent naming and configuration is ongoing. We're splitting out everything that's verifiable at compile time into a seperate test case which we hope to integrate into CI - leaving only configuration constraints to be verified at or before node startup.

    Nomad backend

    The verification phase of the nomad cloud backend is ongoing. We're able to perform full runs on the new hardware cluster +and porting profiles and configurations from the legacy one. The goal is to reproduce with confidence known regressions, or improvements, between runs performed on the legacy cluster and runs performed with the new backend.

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We've concluded benchmarking node version 8.2.0.
    • Tracing: Optimization of the new tracing system has been merged; we're currently working on self-documenting tracing configuration.
    • Nomad backend: A PR that makes our backend take advantage of added flexibility of the new hardware cluster has been merged.

    Low level overview

    Benchmarking

    As part of our release benchmarking cycle, we've completed and analysed the runs for the 8.2.0 version of cardano-node. In addition to the adjustment of sanity checks in our automation, we had to implement small changes in the analysis pipeline as well to accomodate the new version.

    Tracing

    A significant amount of optimizations for the new tracing system has finally been merged to master. At the moment, +we're working on having a trace message self-document the final tracing configuration of a running node. Apart from adding +insight into the system, this feature also aims at making future hot reloading of tracing configuration explicit and straightforward.

    Furthermore, we're setting up a final round of system integration level benchmarks comparing new against legacy tracing.

    Nomad backend

    The new hardware cluster permits greater flexibility as far as SSH access is concerned. By using nomad for a consistent +and reliable deployment, but taking advantage of direct connections for healthchecks and data transfer we believe we were +able to reduce overall network latency in the nomad cluster. This improves confidence when capturing all network related measurements during our benchmarks.

    A PR that adds these capabalities to our nomad backend - along with very many quality-of-life improvements - has been merged to master.

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We're adjusting the benchmarking cluster to handle runs for node version 8.2.0.
    • Tracing: We've finished optimization of the new tracing system and added extra robustness with regard to namespacing.
    • Infrastructure: We've been working on making all benchmarking code compliant with the latest GHC9.6.
    • Nomad backend: The new backend has seen adjustments due to a change of underlying hardware. Additionally, we've successfully performed various benchmarking runs on it.

    Low level overview

    Benchmarking

    The 8.2.0 version of cardano-node required adjustment of some of the sanity checks that are part of our benchmarking +cluster automation. We've pinpointed the necessary changes and are currently setting up the cluster for the new node version.

    Tracing

    The optimization efforts for the new tracing system have been completed and have significantly reduced the resource footprint +when using it as default for a running node.

    A linchpin of the new system is the organization of traces into a namespace hierarchy. This affects configuration, self-documentation as well as rendering of desired trace messages. The new system is now equipped to detect any +inconsistency in the whole set of tracers, defined across all components, even if they are never turned on in a running node. +This feature adds another layer of robustness to the whole system.

    Infrastructure

    A potential switch to GHC9.6 (or higher) required some work on our code bases to make it compliant with recent compiler +versions. We've future-proofed our benchmarking code.

    Nomad backend

    The hardware cluster that our nomad backend was accessing has been changed, and we were able to adjust our backend +accordingly without touching its higher level abstractions and functionality. Moreover, with the new hardware and cluster setup, certain tasks such as retrieving run artifacts or healthcheck monitoring have become more performant.

    The validation phase is ongoing. We were able to perform successful runs and analyses for various 8.x node versions, including 8.2.0-pre. With parallel runs on the current cluster, we hope to measure the same effects we've observed with the +nomad backend - which will be a big step towards production use.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: The peformance investigation into the compiler switch to GHC9 is ongoing. Additionally, a roadmap for implementing Consensus QTAs has been developed.
    • Infrastructure: Our workbench has undergone some refactoring to seamlessly integrate its profiles into all available backends.
    • Tracing: Optimization of the new tracing system is ongoing and yielding good performance results.
    • Nomad backend: We developed a new feature for the nomad backend which allows pinning deployments to specific machines.

    Low level overview

    Benchmarking

    Our analysis of the GHC9 build of cardano-node has produced several locations in the code base where the new compiler seems to miss opportunities for optimization. Our hypothesis is, that those can account for the difference in resource usage we observe when benchmarking with a full cluster run. Instructing the compiler on how to perform the optimizations which GHC8 apparently applied out of the box requires further investigation.

    In an effort to define Quantitative Timeliness Agreements (QTAs) on a per-component basis, we have coordinated with the Consensus team and developed a roadmap for providing those on consensus level. Making use of the insight that system-level benchmarks allow, we intend to set up and calibrate a benchmark that can reliably predict a regression or optimization for select metrics before needing full integration into cardano-node. This will help tremendously in various ways: catching regressions much earlier, localizing them much easier, avoiding repeated component integration and much shorter feedback cycle.

    Infrastructure

    We have worked on seamless integration of our benchmarking profiles into the many available backends that the workbench provides. The goal was to be backend-agnostic, to guarantee that all benchmarking run artifacts be structurally identical as far as their file name, format and location are concerned. This lead to refactoring work and has already landed in master.

    Tracing

    Much effort went into further optimization of the new tracing system. After working on configuration to align both new and legacy tracing system with regard to their trace frequencies, we could uncover some increase in resource usage. This occurred for corner cases under very heavy load. These cases have been addressed already, and do now surpass the legacy tracing system in terms of performance.

    Nomad backend

    For reliable benchmarking results it is vital to introduce as few confounding factors as possible when performing runs. This includes hardware and network topology. The nomad backend has been outfitted with a mechanism to pin the nomad job for some node in our benhcmarking cluster to a specific machine instance. This greatly increases confidence in the metrics observed from a run.

    Furthermore this feature will detect any change in the underlying hardware or topology so it can be taken into account. The new feature has been merged to master.

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed several new benchmarks and a performance investigation in preparation of switching the default compiler to GHC9.
    • Infrastructure: The first batch of refactoring and documentation for our tx-generator has been merged to master.
    • Tracing: We've looked into an issue where the tracing system's concurrency could prevent a graceful node shutdown.
    • Nomad backend: Our new cloud backend has seen various improvements regarding deployment and monitoring; validation runs for the backend are ongoing.

    Low level overview

    Benchmarking

    The compiler switch to GHC9 as the default build platform for cardano-node and its components still has noticeable effects on system-wide performance metrics. An investigation into the different resource usage profiles of compiler versions does seem to indicate GHC9's significantly different inlining behaviour may produce those effects. We're currently locating the specific places in component code that have the most extensive effect in that regard.

    Using the forge-stress approximation we set up, we could determine that above effect is not due to a range of RTS parameters, as for example the number of capabilites used by the node.

    Infrastructure

    The tx-generator is a crucial part of our tooling responsible for producing very specific workloads for our benchmarking cluster. In an effort to flesh out an API to make it reusable for more general use cases, a first set of refactorings has been merged to master. Additionally, this merge contained systematic documentation both for internal and for exposed areas of the code base.

    Tracing

    The tracing system's concurrency could under certain conditions prevent a graceful shutdown of the node. This issue did occur only after adding specific new traces on a development branch. We could localize and address that issue.

    Nomad backend

    With the data gathered from running the new nomad cloud backend, we've been able to address many, many small and medium-sized improvements. The deployment process has been restructured for better efficiency, and the healthcheck system could be fine-tuned to recognize severity of various conditions that might occur. Optimization of fetching all run data from the cloud for evaluation is in progress.

    Additionally, we're continuing the new backend's validation by setting up test runs and looking into comparative analyses with metrics gathered from the current cluster backend.

    + + + + \ No newline at end of file diff --git a/tags/performance-tracing/page/3/index.html b/tags/performance-tracing/page/3/index.html new file mode 100644 index 00000000000..bf54a67e61f --- /dev/null +++ b/tags/performance-tracing/page/3/index.html @@ -0,0 +1,75 @@ + + + + + +25 posts tagged with "performance-tracing" | Cardano Development Updates + + + + + + + + + + + + +
    +

    25 posts tagged with "performance-tracing"

    View All Tags

    · 2 min read
    Michael Karg

    High level summary

    • Benchmarking: We've continued release benchmarking and established a new baseline for 8.0.0.
    • New tracing: Our benchmarking profile for measuring new vs. legacy tracing performance has been refined.
    • Nomad backend: The healthcheck system for the the nomad cloud has been completed. We've performed the first full runs on the new backend.

    Low level overview

    Benchmarking

    In our release benchmarking cycle, we established a new performance baseline for 8.0.0. Additionally, we've measured +performance under various workloads for 8.1.1-pre; the results look promising and validate the optimization efforts +done on several system components.

    In the meantime, we've finalized a build plan with GHC9.2 that matches the current one with GHC8.10; a requirement for +benchmarking as a large amount of differences in the dependency graph can confound the results for the application code proper.

    Tracing

    The legacy and the new tracing system differ fundamentally in design, implementation and handling. So for metrics to be +meaningful in a comparison, benchmarking profiles have to be tuned such that not only log line frequency but frequency of specific +trace messages are closely aligned. We've found that higher granularity in this regard was necessary, and done additional work on our dedicated profiles.

    Additionally, we've had a first glance of what additional traces could be valuable in the context of benchmarking UTxO-HD.

    Nomad backend

    As the new backend's healthcheck system in its first iteration can now serve as a guardrail to ensure sanity of a full-length run, we've performed our first 52-node cluster runs on nomad cloud. We're currently smoothing the edges around cluster deployment, and analysing the metrics gathered from those runs.

    This means the backend is entering validation phase, where we systematically compare all metrics taken from the new +infrastructure to the existing ones, including determining reproducibility and variance.

    · 3 min read
    Michael Karg

    High level summary

    • Benchmarking: We've performed and analysed first benchmarks with GHC9.2 builds. Additionally we have developed an early indicator for how build config changes might reflect on metrics from our model cluster.
    • New tracing: Collaboration with Galois led to the new tracing system to be equipped with a re-forwarding mechanism.
    • Nomad backend: Porting the 52 node model cluster to nomad cloud is ongoing, with the focus on deployment and health checks.

    Low level overview

    Benchmarking

    The first set of runs with GHC9.2 as a build platform are in. We've discovered a significant difference in resource profile usage compared to GHC8.10. Further investigation uncovered the need for benchmarking another parameter change in the build +configuration: As it stands, the ghc-bignum package is using the Haskell native-backend as a default. We strive +to benchmark a build with the gmp-backend next.

    A variant of our forge-stress local benchmark has been set up to serve as an early indicator for the resource usage profile +we'd expect to observe on the model cluster. This provides us with a much tighter feedback loop, as local run duration is way +shorter. This indicator is specific to changes in the configuration of build and the runtime systems, and will be of great +support when evaluating different compiler versions or RTS flags incrementally.

    Tracing

    The hub of the new tracing system cardano-tracer is designed with a fixed output behaviour, which is limited to various +logging options. Thanks to the contribution from Galois, that design is now extended to be able to re-forward all, or a pre-filtered portion, of traces from the node in a configurable manner. This will enable downstream applications to +directly receive the set of trace values relevant to their logic, without any additional cost for the node itself at all.

    Nomad backend

    We're currently working out the details of efficiently deploying and monitoring a fleet of 50+ nodes, along with +job definitions for tracing and transaction generation. Scaling up to those many instances, and monitoring an ongoing +benchmarking run required us to fine-tune communications with the nomad server.

    Related to that, the new cloud backend will provide a monitoring and health-checking mechanism which is far more flexible +and offers more detailed insight than the previous iteration in cardano-ops. The backend will enable you to formulate +very specific conditions for an ongoing run to be considered healthy, and offer automation of certain actions should these conditions not be met.

    · 4 min read
    Michael Karg

    High level summary

    • Benchmarking: We're preparing our model cluster to perform GHC9.2 benchmarks, as well as experimenting with increased dataset sizes.
    • New tracing: After optimization work on the new tracing system, another cycle of validation and documentation is due.
    • Analysis pipeline: First steps on implementing incremental analysis have been untertaken.
    • Open Sourcing: Exhaustive dataflow charts for both our analysis tool locli and our workbanch have been merged to master
    • Nomad backend: The first set of CI-centric workbench profiles have been adjusted and run on the nomad backend; currently we're porting the definition of our model cluster.
    • P&T Meetup: We had a very productive personal meetup in Lugano, Switzerland.
    • Offboarding: Sadly, we have to say goodbye to our team lead. Currently, we're busy with the handover.

    Low level overview

    Benchmarking

    As a compiler switch to GHC 9.2.7 for cardano-node's default build environment is around the corner, we're setting up our benchmarking cluster to +handle the new version. Special attention is given to the fact that we might need more flexibility in switching compiler versions in the future. This +also involves choosing a reliable baseline as reference point for inter-version comparisons.

    Additionally we've been working on refining our model cluster: by increasing UTxO and delegation map sizes to closer match those of current mainnet, +we strive to have a more accurate model - and thus be able to make more detailed predictions regarding performance. However, this still needs to +be balanced against resource demand for all our cluster's nodes.

    Tracing

    For our new tracing system, we're currently validating the behaviour of the system after optimizations have been applied. Furthermore, some +quality-of-life details that have changed required us to revision the system documentation.

    Analysis

    As a mid-term goal, we aim to provide incremental analysis of our benchmarking metrics. While currently, we can only reliably process runs that have been +normally (or abnormally) terminated, we see the possibility of incrementally analysing ongoing runs, or any data source yielding our key metrics, as a +huge opportunity to increase our operational flexibility. All in all, this approach entails building completely new features for our pipeline. A first effort to accomodate incrementally incoming data points has been undertaken.

    Open Sourcing

    A very involved and exhaustive documentation and visualization effort has been undertaken to make the data flow through our key benchmarking +copmonents more accessible. As a result, detailed charts for both our LogObject CLI locli and our workbench have been merged to master.

    Nomad backend

    While our Nomad backend is reaching completion, and hardware setup is being implemented in collaboration with SRE, we've been adjusting +those profiles of our workbench that target CI-oriented workloads to the new backend. Those profiles should demonstrate the full functionality +of the nomad cloud backend.

    Additionally, we're porting a first deployable version of our model cluster to nomad cloud, which will form the basis for validation of our actual key metrics with regard to those from the existing cluster.

    Performance & Tracing Meetup

    We held a personal team meetup in Lugano, Switzerland. In an amazing location, and with a great seminar room to focus, we had 2 very productive +days together. Being able to discuss live and in colour, we could effectively synchronize on where the team is at, and how we want to develop in the future. +Also, it was a great opportunity to finally meet in person.

    Offboarding

    Last not least we regret that our team lead is leaving at the end of May. Currently, he's handing over all his obligations, which requires reorganisation +of team structure, and responsabilities of team members for specific tasks. Serge, we all want to thank you for your excellent and reliable lead; we very much enjoyed the time with you, and wish you all the best for your future endeavours!

    · 2 min read
    Michael Karg
    • Benchmarking: The benchmarks and performance investigations for the new 8.0 release branch are ongoing.
    • New tracing: Performance optimization of the new tracing system is paying off and we could notably shrink its resource footprint.
    • Analysis pipeline: An exhaustive documentation and dataflow diagram for our analyses is being worked on.
    • Infrastructure: The plutus-apps flake input for cardano-node has finally been removed.
    • Nomad backend: A PR implementing placement of benchmarking clusters has been merged.

    Benchmarking

    The performance investigations on the 8.0 release branch have lead to pinpointing and addressing incosistent behaviour. For that, +we created yet another local reproduction with the workbench's forge-stress benchmark.

    Currently we're working on scaling up the dataset size (UTxO and delegations) on the AWS cluster to gain further insight into 8.0 and +subsequent releases.

    Additionally, we've refined the trace-bench family of profiles that target benchmarking our own new tracing system.

    Tracing

    Optimization of the tracing system has identified several locations where inefficient serializations were used; those were not originally +intended to run on a performance-critical codepath. We've worked on improving those, as well as eliminating cases of redundant +conversion between different serialization formats. This has brought down both memory and CPU impact of the tracing system.

    Infrastructure & Analysis

    Dataflow documentation

    The LogObject CLI locli is at the heart of our analysis and reporting pipeline. To increase its accessibility and facilitate +further development, we're creating a detailed and illustrated documentation of all dataflows that happen during analysis and reporting.

    Remove redundant Plutus flake input

    This step is the conclusion of porting Plutus benchmarking scripts to our own library. By finally removing the now unnecessary flake input, +we simplify the dependency graph for cardano-node, as well as enable immediate feedback when developing Plutus benchmarks.

    Nomad backend

    Sophisticated placement of nodes across various regions of the globe is a cornerstone of the model cluster we use for benchmarking. +This capability has now been added to the Nomad backend and can be controlled with Nomad job descriptions. A PR with this, along +with various quality-of-life improvements, has been merged to master.

    · 3 min read
    Michael Karg
    • Benchmarking: We performed a series of benchmarks aimed at the new 8.0 release branch and built a timeline from the 1.35 releases to that branch.
    • New tracing: Work on safeguarding the new tracing system performance-wise is ongoing. A practical use case for data points is being tackled with Galois.
    • Analysis pipeline: We're working on automatically obtaining a detailed manifest for each run.
    • Infrastructure: The library for benchmarking Plutus scripts has been merged. Also, we've laid the ground for including GHC profiling data into our workbench.
    • Nomad backend: The first iteration of a distributed / multi-client Nomad cluster has been merged.

    Benchmarking

    We have performed various cluster runs targeting the 8.0 release branch. That way we were able to catch an inconsistency in behaviour early on. This led to the creation of a specialized workbench profile epoch-transition for local reproduction of what we observed on the benchmarking cluster.

    Furthermore, we bridged the gap between the run data from the 1.35.x releases to the the new 8.0.x release branch. This included walking the +master branch backwards and pinpointing the order, as well as the dates and commits of all relevant component bumps. This timeline is absolutely crucial +in locating possible regressions for the new release branch, as it provides the exact points in history we would need to target with a comprehensive set of +benchmarks.

    Tracing

    In-depth performance analysis of the new tracing system has already yielded results and helped us smoothing some rough edges. However, this work is still +ongoing.

    In coordination with Galois, who are developing a system assurance service by observing a number of cardano-nodes, we're working with the implementation +of data points which the node provides during runtime. While making the view on data points expressive enough for the external service, the computational +burden inside the node needs to be kept to an absolute minimum. We're currently in ideation about whether cardano-tracer could be extended with a richer +feature set to that end.

    Infrastructure & Analysis

    Detailed manifest

    A run manifest documents, among other things, the component dependencies that were used for a specific build the run has been performed with. +These dependencies come from different package sources, have different versioning policies, and an identical package version might provide different +performance characteristics depending on the exact commit used for the build. This manifest will greatly increase insight into where changes in measured behaviour might have originated +by making all component bumps visible and accessible.

    GHC profiling inside workbench

    The workbench has been equipped with a new -profnix profile flavour. This enforces a -fprof-auto build for all node-related packages. The type of +profiling data generated by the GHC runtime can be customized and will enter statistical analysis. The relevant PR for this new feature has already +been merged to master.

    Nomad backend

    The added feature for a multi-client Nomad cluster greatly enhances how jobs are organized by the backend and mapped within specific instances. +This results in great maintainability while not giving up on flexibility. However, work on that feature is still ongoing.

    + + + + \ No newline at end of file diff --git a/tags/performance-tracing/page/4/index.html b/tags/performance-tracing/page/4/index.html new file mode 100644 index 00000000000..175171822ee --- /dev/null +++ b/tags/performance-tracing/page/4/index.html @@ -0,0 +1,43 @@ + + + + + +25 posts tagged with "performance-tracing" | Cardano Development Updates + + + + + + + + + + + + +
    +

    25 posts tagged with "performance-tracing"

    View All Tags

    · 3 min read
    Michael Karg
    • Benchmarking: We worked on adjusting our infrastructure to the new 8.0 release branch and performed a (very) early run.
    • New tracing: We're profiling the new tracing system for minimizing its resource footprint and guarantee high throughput.
    • Analysis pipeline: Variance analysis both for reporting and for serving as a point of comparison has been merged.
    • Infrastructure: A library for Plutus scripts will be integrated in our tooling and benchmarking profiles. Also, a profile family aimed at the tracing systems has been added.
    • Nomad backend: Various specializations of the backend are currently being implemented, along with streamlining credentials management.

    Benchmarking

    We have adapted our benchmarking cluster to the requirements of the 8.0 release branch. Testing runs of a very early feature branch for 8.0 +helped us localize an important issue in collaboration with the other teams. We look forward to gathering preliminary metrics for 8.0 soon.

    Tracing

    Analysis of resource usage profiles of both the legacy and new tracing system, with and without trace forwarding, have lead us to gather very +detailed profiling data for each possible setup. This is to ensure we keep resource usage within the node to an absolute minimum, while still providing +the highest possible throughput of data for forwarding to cardano-tracer.

    Additionally, we've worked on a very practically-oriented document targeted at end users of the new tracing system. It provides tested step-by-step instructions +for tunneling trace forwarding from a node to cardano-tracer via an easy to manage system service, which will match the production setup of most users.

    Infrastructure & Analysis

    General

    Variance analysis as a full-fledged entity in our tooling has been merged. Not only is this type of analysis now part of our reporting pipeline - variance +analysis can be fed back and serve as an additional point of comparison.

    Furthermore, we've created a profile family for the workbench that's specifically aimed at measuring and comparing tracing system configurations.

    Plutus library

    We opened a PR containing a new package for benchmarking - an extendable library that holds all Plutus scripts we use in our benchmarking profiles. +This will enable us in the future to iteratively work on customizing any given script, and the way is called in the context of a specific profile. +It is a refinement of current affairs, where we have additional build inputs solely to generate a static script file tied to an external commit.

    Nomad backend

    The nomad backend is being specialized in three ways: using a podman driver locally, using nomad agents supporting nix installables, and using nomad cloud agents. This supports having a common surface independent of the actual backend driver being used. In addition, vault retrieval and management of cloud access credentials is +being improved to minimize any friction for the backend user.

    · 3 min read
    Michael Karg
    • Benchmarking: We performed benchmarks for the new tracing system, and started benchmarking for varying GHC RTS configurations.
    • New tracing: Backwards compatibility with legacy tracer nomenclature has been merged; we're currently improving documentation and creating setup guidelines for end users.
    • Analysis pipeline: Our refined metrics PR has been merged. We're working on including variance analysis to our reporting machinery.
    • Infrastructure: Support for Conway genesis in our workbench has been merged. At the moment, we're laying the groundwork for enabling GHC 9.2 in our benchmarks.
    • Open Sourcing: The API demo has reached prototype phase; work on documenting the API and providing exemplifying use cases is ongoing.
    • Nomad backend: The nomad-exec based task driver has been merged. The backend has been equipped with the capability for genesis distribution via S3 bucket.

    Performance

    New tracing

    The new tracing system has undergone various benchmarking runs with variance analysis, and comparison to a baseline using legacy tracing. We could observe +a slight shift in the resource usage profile from memory to CPU, but no regressions in block propagation metrics. Variance was observed to be notably smaller, which gives the new system a much better predictability. From this angle, we consider the new system fit for production use.

    GHC RTS parametrization

    We're currently prerforming various runs on the cluster to explore the space of different GHC RTS settings for running nodes. The main focus lies +on different configurations for the garbage collector, as well as increasing the number of CPU cores the node may use.

    Open Sourcing

    Our API demo has reached prototype stage, and operates on live data from the production database. Making use of the experience gained, we're refining version 1 of the API to provide optimized usability, and creating documentation that both is descriptive of the API endpoints, and focuses on practical, exemplary use cases.

    Tracing

    For the new tracing system we're currently undertaking an effort to multi-layered documentation: a condensed version, as well +as a setup guide with pragmatical focus, will be provided alongside the in-depth documentation. This effort should cater to different audiences, and provide distinct entry points +for users of the new system, depending on their wants and needs.

    Infrastructure & Analysis

    General

    Having included Conway genesis in the workbench, as a next step in future-proofing out benchmarking infrastructure, we're laying the foundation for a switch in compiler version to GHC 9.2. Additionally, we considered variance analysis of our runs to merit inclusion into our reporting pipeling - which will +increase confidence in specific metrics.

    Nomad backend

    We have implemented an appropriate mechanism for genesis distribution: Only after a benchmarking cluster has been deployed successfully, genesis +is patched and uploaded to an AWS S3 bucket for the nodes to retrieve - as a final step before initiating the actual run. We're confident that this deferred approach will provide clearer evidence for genesis patches, as well as minimize startup time for all runs by factoring in deployment re-tries.

    · 2 min read
    Michael Karg
    • Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.
    • New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.
    • Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.
    • Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.
    • Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.

    Performance

    1.35.6 release

    Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.

    Analysis pipeline

    Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better +differentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance. +Additionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking +data more easily accessible.

    Open Sourcing

    As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable +third parties to make use of that data much more easily, by having reliable guidelines and a working example.

    Tracing

    The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make +the switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.

    Infrastructure

    Nomad backend

    The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented.

    · 3 min read
    Michael Karg
    • SECP benchmarking: we concluded our benchmarking runs and analyses of the new SECP primitives for the Valentine hard-fork.
    • Release benchmarking: we performed a round of benchmarks for the 1.35.6 release.
    • UTxO-HD benchmarking: we performed first runs for UTxO-HD and are currently refining the benchmarking setup.
    • New tracing: for better accessibility, the new tracing system is being outfitted with introspective capabilities.
    • Infrastructure: with the Nomad cloud workbench backend we were able to perform our first test cluster runs successfully on SRE infrastructure.
    • Infrastructure: the initial NixOps workbench backend has been completed; a PR containing this work, along with many quality-of-life improvements of our tooling, got merged.

    Performance

    SECP

    1. For SECP, we settled on a fixed tx count per block, while simultaneously spending as much as possible of the block budget. Thus we were able to minimize the impact of per-SC-call overhead.
    2. The final runs were performed with various fractions, e.g. half, of the current block budget to ascertain how these workloads would fare compared to a value-only run.
    3. The SECP machinery and profiles are currently being generalized into an approach to aim for very specific aspects of a smart contract for benchmarking.

    UTxO-HD

    1. After analyzing initial UTxO-HD runs, it turned out that mempool snapshotting had to be throttled for benchmarking; it affects a lock that UTxO-HD had to introduce into the forging loop.
    2. We're currently adapting the benchmark setup to that, and will then perform a new combination of baseline and UTxO-HD runs.

    1.35.6 release

    Benchmarking the 1.35.6 release candidate could attest to a perfectly clean bill of health.

    Tracing

    Work on the new tracing system's introspective capabilites is ongoing: Immediate use cases of the new API include being able to statically validate generated tracer documentation, as well as providing information of a specific tracing setup in the node via traces themselves. These features will make the new system both more robust, and more accessible.

    Infrastructure

    Nomad backend

    1. Work on the cloud deployment capability of the Nomad workbench backend continued; for testing we can automate multiple Nomad clients.
    2. Locality assumptions were removed and job monitoring was refactored.
    3. To facilitate directly-executable derivations, Nomad Job specification files are now self contained with GitHub references and configs needed to run a cluster.
    4. We're currently evaluating different options for genesis distribution in said cluster.

    NixOps backend

    The NixOps workbench backend has reached an initial functional stage. Consequently, the relevant PR was merged. It also contained many improvements to our analysis tooling, as well as a structural overhaul of workbench itself. We consider this an important step of future-proofing our benchmarking machinery.

    · 3 min read
    Serge Kosyrev

    High level summary

    1. SECP benchmarking: we ran several rounds of SECP benchmarks, refining the benchmark setup as we discovered the properties of the system. After formulating an initial suggested change to the protocol parameters, we're currently running what we consider the final benchmark, to validate the underlying assumptions.
    2. Release benchmarking: we've performed a round of benchmarks for the hotfix 1.35 release update and initiated the 1.35.6 benchmarks.
    3. New tracing: the improvement in the tracing API, with the underlying restructuring, was completed and merged into the node.
    4. New tracing: before going live, we're performing the documentation update, as well as reworking the end user migration guide.
    5. Open sourcing: the benchmarking data publishing has been completed and deployed. After populating it with relevant benchmark data and providing basic user documentation we can go live.
    6. Infrastructure: the cloud workbench backend is progressing well, the networking aspects of multi-region deployment are currently being worked on.
    7. Infrastructure: the NixOps workbench backend is still being worked on, as part of migration from cardano-ops and benchmarking infrastructure unification.

    Performance

    We are approaching the end of a chain of SECP benchmarks, as we gradually eliminated deficiencies in the setup as we were discovering them and answering newly appearing questions:

    • we improved the tx/block filling strategy in the generator, to maximise the per-block utilisation of resources and so better approximate the worst-case,
    • after a discovery of what looked like significant per-SC-call overhead, we again tweaked the the tx/block filling strategy,
    • finally, we're redoing all benchmarks together with a value-only run against the backdrop of Mainnet-sized datasets, to balance the suggested adjustment. That also ran into difficulties wrt. limitations of our benchmarking hardware.

    In addition, we started benchmarks of the 1.35.6 release.

    Tracing

    A rework of the new tracing system's internals and API was merged. It extended the system with introspection, which enabled a range of improvements, some of which were implemented along the way.

    Specifically, we were able to completely short-cut processing of messages generated by the tracers that were made provably ineffective by current tracing configuration. Further, now ongoing work enabled by the introspection facilities, includes static validation of documentation and enhanced node state reporting.

    Infrastructure

    On the opensourcing/transparency front, the benchmark data publishing machinery was finally fully assembled and put online. As resources permit, we'll work on populating it with benchmarking data, preparing basic documentation and engaging the stakeholders.

    The work on the cloud deployment capability of the Nomad workbench backend continued with focus on setting up inter-node networking and removal of locality assumptions. A major step besides those, was completion of a switch-over to the directly-executable derivations, which eliminate the need for creation and distribution of images -- thereby increasing the speed of deployment.

    The Nixops workbench backend progressed steadily, reaching minimal deployment capability. The remaining parts are proper shared configuration generation, and porting of the run control functionality from cardano-ops.

    + + + + \ No newline at end of file diff --git a/tags/performance-tracing/page/5/index.html b/tags/performance-tracing/page/5/index.html new file mode 100644 index 00000000000..cc9c431acd4 --- /dev/null +++ b/tags/performance-tracing/page/5/index.html @@ -0,0 +1,32 @@ + + + + + +25 posts tagged with "performance-tracing" | Cardano Development Updates + + + + + + + + + + + + +
    +

    25 posts tagged with "performance-tracing"

    View All Tags

    · 2 min read
    Serge Kosyrev

    High level summary

    Since our last update, we focused on infrastructure work: benchmark enablement, tracing system, benchmark environment merge and open source support:

    1. SECP benchmarking enablement is underway: enabling SECP runs in our cardano-ops benchmarking environment is still in progress.
    2. The new tracing system: the improved API of the new tracing system was implemented, and we're now porting the tracing integration layer over.
    3. Infrastructure: the mainnet protocol parameter history is now encoded in the workbench profile machinery at epoch-level granularity, which gives us a systematic approach towards description of past and future benchmarks.
    4. New benchmark deployment infrastructure: we've made some progress on Nomad deployment backend, shared by both of the data publishing and benchmarking needs.
    5. Legacy benchmarking: we've started merging the legacy benchmark deployment infrastructure into the workbench.
    6. Open sourcing: the benchmarking data publishing tool was adapted to the Nomad execution environment provided by SRE, pending final deployment.

    Performance

    The AWS cluster infrastructure necessary for SECP benchmarking is still being worked on.

    Tracing

    The improved tracing internals were implemented, and we're now into the phase of updating the tracing integration, which is also mostly done.

    Infrastructure

    Thanks to collaboration with the DevX team, we have identified and pursued a design that would enable our Nomad workbench backend to execute deployments of both the benchmarking cluster and our data publishing components.

    On the benchmark parametrisation front, we have eliminated a long-standing weakness in the way we were specifying the protocol parameters. +We now have a very clear and granular method to keep track of protocol parameter evolution -- e.g. the mainnet history changes are now tracked at epoch granularity, while also allowing for systematically described change overlays. This makes the benchmark profile definition much more clear and robust against mistakes.

    We also started a merge of the legacy benchmarking environment (based on cardano-ops) into the workbench. The separation between environments was too costly, causing us to reimplement any benchmarking change twice -- first, during development, in the workbench, then in cardano-ops. In addition, maintenance of compatibility code was incurring additional costs, slowing benchmark data analysis development. +Once this merge is complete, this will allow us to sharply cut the benchmark development cycle and overheads.

    · 4 min read
    Serge Kosyrev

    High level summary

    1. SECP benchmarking enablement was completed: we are now able to do local runs of the SECP workloads. The next step is to port this to the AWS environment.
    2. A new workstream for Plutus cost modeling improvement: we've planned and started implementing the smart contract call overhead measurement machinery.
    3. The new tracing system: after doing more benchmarking to address inter-run variance, we discovered that the regression, while still there, is small enough not to be release critical. Nevertheless, we're continuing with the further performance-oriented rework of the internals.
    4. Infrastructure: a significant refactoring of the workbench internals was merged. We also started improving the denotation for ever-evolving protocol parameters. Comparative analysis of multi-run batches implementation started.
    5. Open sourcing: our plans matured sufficiently so that we now expect actual deployment work to start this week.

    Performance

    The SECP benchmarking workload has been fully implemented in the workbench. We are now porting it over to AWS, and after that we'll be running the model cluster workload.

    We've also started implementing mechanics for the upcoming investigation of the Plutus smart contract call overhead, which is expected to lead us to improved Plutus cost modeling.

    Tracing

    After the initial model-scale performance data caused us to panic, among other things we've done more benchmarks, and it turned out that inter-run variance increase was the culprit. The actual regression averages to barely noticeable 1-2% in key metrics -- which is certainly not release critical.

    To understand the impact of the new tracing system, we have to bear in mind the extra functionality it provides:

    1. We are now processing all messages generated by the system, without making any shortcuts that the old system had to resort to. That causes the new tracing to do more work, but is more useful for all users and developers involved -- since it leads to a simple, non-confusing configuration. Incidentally, that's also the area where we are reworking the internals, to deduce and enable the optimisations that are implied by the particular configuration.
    2. The new tracing system is benchmarked with remote tracing as the default backend (whereas the old one was using local, builtin log storage mechanism). In some sense it's the fair benchmark, because that's the way we expect SPO's to set up tracing. That, however also causes it to do more work.

    All that said, since we've established the performance of the new system to be adequate for the release, we won't be delaying it much further.

    In addition, we're still pursuing our performance-enhancing rework of the new tracing internals.

    Infrastructure

    After implementing the multi-backend capability in the workbench, we got the opportunity to reassess the generic/backend boundaries and perform some long-awaited cleanups and simplifications in that area. The results of this work have been merged and will serve as a solid foundation for the CI and cloud backends.

    Moving to analysis, we've also improved provenance of the raw data, by collecting more identification information and statistics about it. +This means, e.g. that we now record checksums, message frequencies and timestamps from the log files coming into analysis. +This will be used to enable us to see more data anomalies earlier, and lift that information directly into the generated reports.

    A new feature is now under implementation -- the ability to provide comparative analysis of multi-run batches. +Previously we only had automation for two aspects separately, so we only could either:

    • compare individual runs (used for different node configurations / versions)
    • collect variance statistics from a batch of runs (used to enhance statistical confidence for a single node configuration / version) +Naturally, combining these two capabilities was a long-desired feature of our analysis pipeline.

    · 2 min read
    Serge Kosyrev

    High level summary

    1. Benchmarks for the 1.36 first pre-release bump of the internal components have been delivered, and data shows the component bump is clear for release.
    2. SECP benchmarking enablement is underway: the necessary generator features have been implemented, and are now being integrated into the workbench.
    3. The new tracing system: in response to the performance regression we previously discovered we are working on pre-planned implementation improvements, and doing more benchmarks.
    4. Infrastructure: the Nomad-based workbench backend has been made closer to a cloud deployment scenario. Cleanup in preparation for Cicero CI/CD integration started.
    5. Open sourcing: ongoing SRE collaboration on production deployment of performance data publishing.

    Performance

    We have ran benchmarks for the first component bump of the upcoming 1.36 release, and we don't see any significant performance changes. The component bumps are therefore clear for release.

    Tracing

    For the tracing system regression that we spotted -- even before, we already had plans for further efficiency improvement, and now we are actively pursuing them. +The idea is to collect more statically-available information to enable shifting of more tracing decisions from message delivery time to configuration time.

    To support this effort, we also started running more benchmarks and enhanced data analysis with relevant metrics.

    Infrastructure

    Generation support for Plutus V2 has been implemented and so, with the help of the previously made looped signature-verifying script, the generator is now capable of producing two SECP workloads: verifying either ECDSA or Schnorr signatures. This is now being integrated into the infrastructure -- the generator parametrisation API is being enhanced and the workbench is being extended to handle the new parametrisation.

    In addition the workbench is now being enhanced to handle protocol-version-based choices for the Plutus cost model.

    The intermediate cloud compatibility iteration of the workbench cloud enablement effort was merged. +We are now doing some cleanup work in preparation for starting the Cicero backend, which will bring us nearly completely to the CI/CD integration.

    We continue collaboration with SRE on production deployment of data publishing. We now have a gradual rollout plan, which respects the plans for SRE infrastructure feature availability.

    We are working on recovering the software dependency manifest feature that was lost with the organisation-wide transition to CHaP.

    As usual, a number of smaller workbench, data analysis & reporting improvements have been made.

    · 2 min read
    Serge Kosyrev

    High level summary

    1. P2P performance investigation is ongoing, in support of the networking team.
    2. SECP benchmarking enablement is underway: we already have the script and are working on Plutus V2 generation support.
    3. Unexpected setback in the new tracing system: full scale benchmarks have shown a performance regression: local chain syncing benchmarks were an improvement over legacy tracing.
    4. On the open sourcing front we added an integrated data dictionary, which is necessary for explaining ourselves to the world. SRE collaboration on production deployment of performance data publishing has started.
    5. We have started bringing the Nomad-based workbench backend closer to a cloud deployment scenario.

    Performance

    We are supporting the networking team on P2P performance investigation. Generation support for Plutus V2 was started. We have collaborated with the Plutus team to get a SECP benchmark script, which is now ready for use, pending Plutus V2 support. The transaction generator has also been updated to the cardano-api changes.

    Tracing

    We ran an initial round of full-scale benchmarks for the new tracing system -- which uncovered a regression relative to legacy tracing, which is contrary to the local chain syncing benchmarks, that showed improvement instead. We added tracing to cardano-tracer, fixing some minor bugs on the way. Network and disk IO metrics are now collected once again and are integrated into analysis.

    Infrastructure

    The first iteration of the Nomad-based local workbench backend was completed -- it has reached feature parity with the existing supervisor backend. The next iteration started, bringing it closer to the cloud scenario, by deploying to separate Nomad tasks connected by a virtual network. This will serve as basis for CI and full cloud backends.

    We designed and implemented the authoring pipeline for the performance data dictionary, which will be henceforth embedded in our performance reports. We are collaborating with SRE on production deployment of data publishing.

    A number of smaller workbench, data analysis & reporting improvements have been made.

    · 2 min read
    Serge Kosyrev

    High level summary

    On the performance side, the team ran benchmarks for the the P2P feature and the 1.35.4 release. We finished a prototype for performance data publishing. We almost finished the local deployment backend for the workbench using the new SRE deployment infra. We worked on fixing and improving our data analysis pipeline.

    On the tracing side, the team worked on isolating a critical issue causing message loss in the remote tracing backend. The issue was resolved and we now have proper end-to-end coverage for the scenario.

    Executive summary

    • The new tracing system public release is getting closer, as we're resolving remaining rough edges that are discovered in full-scale deployments. The local benchmarks we ran were already showing improvement relative to legacy tracing, so we expect similar results at full scale.
    • The first (local deployment) iteration of benchmarking adopting the new SRE deployment infra is nearly done. We thank Michael Fellinger and Robin Stumm for their assistance. Two further phases remain: CI integration and cloud deployment.
    • The benchmarking data publishing prototype is ready. This serves as a springboard for both opening our performance assessment workflow (to support the wider Cardano developer community), and for data provision to the business community. Our next steps are to secure a permanent deployment for this mechanism and to integrate it into the benchmarking infrastructure. This requires collaboration with SRE.
    + + + + \ No newline at end of file diff --git a/tags/release/index.html b/tags/release/index.html new file mode 100644 index 00000000000..20f31d29733 --- /dev/null +++ b/tags/release/index.html @@ -0,0 +1,81 @@ + + + + + +5 posts tagged with "release" | Cardano Development Updates + + + + + + + + + + + + +
    +

    5 posts tagged with "release"

    View All Tags

    · 2 min read
    Marcin Szamotulski

    High level summary

    We have been working towards cardano-node-1.35.5 release. QA & benchmarking +teams gave a green light for the release, and we made decent progress with some +CI problem which we encountered on the way (PR #4612). We are also working on +peer sharing, making improvements in our testing infrastructure, reducing +technical debt and making progress towards io-sim-1.0.0.0. Galois is making +progress on Handshake improvements.

    Low level summary

    Our diffusion simulation network now includes a mixed network of initiator +only and initiator and responder nodes. issue #4222

    We are now reviewing the peer sharing pull request.

    We are also reviewing pull request which introduces handshake query flag. PR #4256

    We fixed a bug in our network simulator. The bug was triggered when a node +died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

    We also refactored Snocket interface and removed the bearer construction from +its methods. PR #4260

    We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes +reviewing two PRs: PR #57 and PR #60 as well as writing an announcement +blog post.

    · One min read
    Samuel Leathers

    Node Reelease Update

    2022-11-02 - 2023-01-13

    Executive Summary

    A 1.35.5 release for single relay P2P is nearly completed and should be released this month. This release is based on +release/1.35 branch and does not bump cardano-ledger.

    The team successfully integrated an interim release bump of ledger and consensus into cardano-node master. +This work will not be released in a node version, but will be continued by the current dependency bump in progress.

    We anticipate once this dependency bump is completed, regular 2 week releases will be feasible again.

    The 1.35.4 release is being ran by more than 70% of stake pools. Planning for the mainnet hard fork date is in progress.

    Completed

    In Progress

    · One min read
    Marcin Szamotulski

    High level summary

    In last sprint the team focused on preparations for the conference talk at +OPODIS 2022. We also worked on preparations to publish io-sim and related +packages on Hackage (PR #57, PR #60).

    We also started reviewing:

    • ouroboros-network
    • cardano-node
    • cardano-ledger +repositories for open-source readiness (PR #4128).

    We prepared a PR which changes how node-to-node and node-to-client protocol +versiones are serialised in cardano-node log (PR #4691).

    · 4 min read
    Marcin Szamotulski

    Stake-Driven Data Diffusion Release for Relays

    IOG networking team decided to release the Stake-Driven Data Diffusion with +Robust Optimised Peer Selection also more commonly known as P2P. In the +last update, we informed about a performance regression, but it turns out it +only affects block producers, and thus we highly advise against running it on +such nodes. Further investigation is required to find the cause of it.

    On IOG's benchmarking cluster we have seen quite a good performance improvement +on block propagation itself. The cluster is running a static topology with +valency 6 (each node is connected to 6 other nodes). In which every of the 50 +nodes are block producers. The setup of this network is the same as mainnet. +We've seen 40-50% performance improvement on block propagation comparing to the +same cluster deployed with the same topology but using non-P2P nodes. We think +this performance improvement is caused by using full duplex connections. Quite +likely the transaction traffic floating in both directions on the same TCP +connection helps to keep the TCP window open. Note that in a cluster of 50 +nodes with valency 6 the probability of having at least one duplex connection +is more than 50%. We don't expect the same improvement on mainnet because the +network is much wider and the transaction traffic is not as large.

    Just before the release we squashed two small bugs:

    • issue #4163 - top level integration bug in keep-alive;
    • issue #4177 - a bug in outbound-governor;
    • PR #4165 - a fix cardano-ping support of NodeToNodeV_10.

    Peer Sharing

    We were carrying a review of peer sharing PR.

    DeltaQ

    Neil Davies was invited to give a guest lecture entitled Avoiding System Catastrophes at UCLouvain.

    What have we achieve last sprint

    • issue #4163: we found out that a control message is not passed to the +keep-alive mini-protocol, this results in every demotion executing demotion +timeout rather than a graceful termination. With the fix the node will no longer log:

      { "kind": "PeerStatusChangeFailure"
      , "peerStatusChangeType": "WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"
      , "reason": "TimeoutError"
      }
    • issue #4177: we fixed an assertion failure in the outbound-governor; now +we don't try demoted peers which are being demoted already.

    • PR #4155: we refactored ouroboros-network packages. There's a top level +ouroboros-consensus-diffusion package which integrates network +& consensus code. We also introduced:

      • ouroboros-network-api package which contains the API shared between +network & conensus;
      • ouroboros-network-mock package which contains mock API used for testing +(e.g. a mock chain & chain producer, etc.)
      • ouroboros-network-protocols package which contains implementation of all +(but handshake) mini-protocols, exposes a testlib and contains test +and cddl components.

      This made the dependency tree of network & consensus packages much +cleaner.

    • PR #4169: we described the usage of release branches in CONTRIBUTING.md +doc.

    • PR #4165: we fixed cardano-ping support of NodeToNodeV_10 protocol.

    DeltaQ

    The abstract of the talk:

    An essential step to ensuring that distributed systems are fit for +purpose.

    Distributed systems have become an integral part of our society and +daily lives. We are, both implicitly and explicitly, individually as well as +collectively, placing ever more trust in them.

    Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes +well beyond notions of functional correctness (i.e. never getting the wrong +answer). We need them to deliver the desired outcomes in a timely, robust, +reliable, resilient fashion, at scale and in a sustainable way (both +economically and environmentally).

    This all sounds like a worthy aspiration, but what would be a practical +approach to capturing and reasoning about these issues? How can we ensure that +systems can meet their fit-for-purpose objectives, not just in their design but +as they are deployed, encounter the imperfect world, are scaled to become +economic, and proceed into ongoing maintenance?

    This talk will illustrate how the notions of Outcomes and Quality Attenuation +(as captured by ‘∆Q’) are being used to both frame the necessary notions and +provide a basis for assuring the refinement and reification of such systems, +from initial concept to operational infrastructure.

    You can download the slides from here.

    · One min read
    Samuel Leathers

    Node Reelease Update

    2022-10-19 - 2022-11-02

    Executive Summary

    The team is formalizing the new release process and team structure. Both preview/preprod environments have been reset, +a temporary pv8 environment has been created for testing SECP before preview is updated to protocol version 8.

    1.35.4 release candidates have been created and are being tested internally and externally.

    Completed

    In Progress

    + + + + \ No newline at end of file diff --git a/tags/security/index.html b/tags/security/index.html new file mode 100644 index 00000000000..aeae0e79e7d --- /dev/null +++ b/tags/security/index.html @@ -0,0 +1,25 @@ + + + + + +One post tagged with "security" | Cardano Development Updates + + + + + + + + + + + + +
    +

    One post tagged with "security"

    View All Tags

    · 6 min read
    Kevin Hammond

    High level summary

    We have undertaken an initial high-level security analysis of the CIP-1694 design. We summarise the analysis and our responses here.

    Initial CIP-1694 Security Analysis and Responses

    Section: The constitutional committee


    • “For example, if we consider the hypothetical Constitution rule "The Cardano network must always be able to produce new blocks" - In this example, if the governance action to reduce block size to 0 is passed, then there will be no way of passing or enacting further proposals. That is, this governance action is completely non-reversable. Suggestion: Instating a built-in mechanism that checks (and perhaps enforces) that the proposed governance actions, if passed, can be reverted in the future.

    There is a 'guardrails document' in preparation which captures issues such as these. Some of them may be automatable, as suggested; others will need to be evaluated by humans.


    Section: Size of the constitutional committee


    • A possible issue with very large committee sizes (or large number of proposals/voters in general) is that it may take longer to have votes appear on-chain, which in extreme cases may require longer voting periods.

    Thanks. Yes, we’ve been thinking about this issue for a long time, see for example the section ‘Final safety measure, post bootstrapping’. We don’t consider this as an issue for the CC since they need to be elected while DReps can just register, so we expect the number of CC members to be much less than the number of DReps


    Section: Terms


    • The following sentence is a bit awkward to read: “For example, a committee of size five with a threshold of 3/5 a minimum size of three and two expired members can still pass governance actions if two non-expired members vote Yes.” —> Suggestion: “For example, if we have a committee of size five with a threshold of 3/5, then a committee of three non-expired and two expired members can still pass governance actions if two non-expired members vote Yes.”

    Thanks. Yes, that suggestion is a bit easier to read.


    Section: Registered DReps


    • “Additionally, registered DReps will need to vote regularly to still be considered active.” - There is a minor issue with requiring “voting regularly”. That is, if there are no proposals to vote on for a long time, this means that no DRep can vote regularly (or they have to issue bogus proposals just to vote on them).

    Thanks. We’ve added a mechanism to prevent that issue in the spec/code where if there’s nothing to vote on for an entire epoch, we increment the epoch that each DRep expires.


    Section: Ratification


    • It is a bit unclear why protocol changes: network group and technical group are two separate groups.

    These correspond exactly to the groups that are administered by the Parameter Committee.


    • I didn’t understand the rationale for requiring 100% “Yes” votes to pass “Info” type governance actions? It seems they have the least potential to harm the system.

    Yes, it’s not about harming the system, since Info +actions have no direct effect on the operation of Cardano. The motivation is simply to record the actual level of support for the action.

    Once an action is enacted it’s no longer possible to vote on it. So if there was e.g. a threshold of 50%, then there is no way of telling whether the support for it might eventually have reached 90% or higher if it was not immediately enacted when the threshold was reached.


    Section: Content


    • For Hard-fork initiation, the changed parameters should probably also be required as part of Additional data.

    Protocol parameters can be changed in arbitrary ways by the hard fork and new ones might be introduced, so anything this action pins down might not actually be the value that will be present after the hard fork.


    Section: Protocol Parameter groups


    • It is a bit unclear to the reader what some of these parameters mean, for example: monetary expansion (rho) and treasury expansion (tau). Suggestion: Include brief explanations for the non-obvious parameters.

    These are existing protocol parameters, described in e.g. https://cips.cardano.org/cips/cip9/9 or The Cardano Protocol Parameters Guide.


    • With the current set of governance actions, it seems that it is not possible to add new types of protocol parameters, or categories of governance voting thresholds. Suggestion: Consider possibility of incorporating governance actions that allow addition of new protocol parameters, deletion of defunct protocol parameters, or modification of governance voting threshold categories.

    All of this needs to be done via a hard fork. If we had an action that added a parameter then there is no way of giving it semantics anyway, since that must be done by logic in the code.


    Section: Votes


    • Is a constitutional committee member also a DRep? If so, do they vote twice, once as a committee member and once as a DRep?

    They may or may not be (and they could also be an SPO). Note that this is fine, since these are completely separate tallies. This is also not preventable, since we don’t have an on-chain mechanism for identity. And yes, each credential gets to vote on each action for all roles in the governance system it has.


    Section: Separation of Hard Fork Initiation from Standard Protocol Parameter Changes


    • It is unclear whether there would be automated checks for whether a proposal is indeed a soft fork or hard fork, which would reduce human error in categorising proposals.

    There is no on-chain mechanism that could enforce this, the best we could do is some kind of certificate. However, this may not be trustworthy, of course. We will consider this in future versions of Voltaire.


    Section: Changes post Edinburgh workshop (July 2023)


    • “All governance actions are enacted one epoch after they are ratified.” - I’m not sure if this line is currently in the main body of the CIP?

    It is, but it is phrased differently: ‘All governance actions are enacted on the epoch boundary after their ratification.’


    Section: Reduced deposits for some government actions


    • Another downside of requiring endorsement from the constitutional committee is that this likely does not apply to constitutional committee-related proposals, such as no-confidence votes.

    Indeed. We have no plans for this at the moment.

    + + + + \ No newline at end of file diff --git a/tags/sre/index.html b/tags/sre/index.html new file mode 100644 index 00000000000..951cf6a1026 --- /dev/null +++ b/tags/sre/index.html @@ -0,0 +1,24 @@ + + + + + +15 posts tagged with "sre" | Cardano Development Updates + + + + + + + + + + + + +
    +

    15 posts tagged with "sre"

    View All Tags

    · 4 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • The cardano-node nixos service now supports SIGHUP p2p topology reloading when the useSystemdReload option is enabled

    Lower level summary

    Capkgs

    • Update cardano-db-sync and offchain-metadata-tools package paths and/or references: capkgs-compare

    Cardano-node

    • Optionally have cardano-node nixos service utilize SIGHUP p2p topology reload: cardano-node-pull-5537
      • Creates a useSystemdReload bool option for the cardano-node nixos service
      • This will move the topology file(s) to /etc/cardano-node/topology-$i.yaml and inject systemd reload hooks for p2p configured cardano-node instances
      • Moving topology files to /etc also allows for manual topology updates when a quick test is needed and full service re-deployment isn't desired

    Cardano-parts

    • Adds a metadata server profile and a number of other features and improvements: cardano-parts-pull-20
      • Adds a new metadata-service profile
      • Adds metadata service and pkg configuration options for cardano-groups to utilize the metadata-server profile
      • Adds a cardano-webserver profile for multiple virtualHosts and TLS ACME server aliases for a cluster's static needs, with each cached behind varnish
      • Adds extra node list producers and public producers for cardano-node-topology profile
      • Adds delegation amounts to cardano-postgres psql prepared query show_pools_block_history_in_epoch
      • Adds select systemd metrics reporting to grafana-agent profile
      • Adds a bookRelay multivalue DNS option to disambiguate with groupRelay multivalue DNS
      • Adds an opsLib library to the cardano-parts lib flakeModule and refactors some common code into it
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds job-gen-env-config for both release and pre-release configuration files to support configuration book generation
      • Adds support for grafana recording rules in the template files
      • Improves cardano-group profile handling of producers with respect to multiple instance nodes
      • Improves grafana-agent profile metrics handling for multi-instance cardano-node servers
      • Improves smash service preStart handling while waiting for a node socket
      • Updates Justfile for ERA_CMD demo support
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to grafana alert and recording rule templates
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Defaults cardano-postgres profile psqlrc use to false

    Cardano-playground

    • Adds a new testnet metadata server, cluster webserver, and other improvements: cardano-playground-pull-6
      • Adds a new metadata server
      • Adds a new webserver for the cluster's static virtualhost needs
      • Adds support for sops secret traversing from target path up instead of cwd up, thereby supporting secrets use-cases outside of the repo
      • Adds systemd metrics monitoring to the cluster
      • Resizes sanchonet machines to support the growing chain
      • Completes migration of preprod from world
      • Updates groups to utilize both bookRelay and groupRelay multivalue DNS attributes
      • Updates Justfile for ERA_CMD demo support
      • Defaults to using an updated systemd reload nixos service feature for p2p networks in cardano-group profile
      • Migrates book static code to playground from world, with refactor, cleanup and updates
      • Migrates default grafana cloud node exporter, varnish alert and recording rules to declarative grafana alert and recording rules

    Offchain-metadata-tools

    • Adds db password option with obfuscation plus misc improvements: offchain-metadata-tools-pull-61
      • Adds db password connection option and obfuscates passwords in output for metadata server, sync, webhook services
      • Updates the nixos service for metadata-webhook service to optionally use an environmentFile for secrets: cfg.environmentFile
      • Moves from std use in the nix flake to standard flake schema
      • Fixes hydra CI failures
      • Builds update-docs in hydra to avoid long local build times
      • Removes deprecated tullia
      • Removes deprecated check-hydra from pkgs
      • Removes deprecated bors files and references

    · 3 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains have largely completed their migration to the cardano-playground stack

    Lower level summary

    Capkgs

    Cardano-parts

    • General migration support PR for cardano-world to cardano-playground cardano-parts-pull-18
      • Iohk-nix and iohk-nix-ng were updated support the migration of cardano-world networks to cardano-playground
      • Sops-secrets dependent systemd services were fixed to ensure restart upon sops secrets changes
      • Db chain utilities (db-{analyser,synthesizer,truncater}) had -ng variants created to operate on both release and pre-release network chains
      • The profile-cardano-postgres nixos module received preset variables and prepared statements via pgsqlrc for faster and easier analysis of network state
      • The flakeModule jobs now has support for the cardano-cli era command in each of the job scripts by passing the $ERA_CMD variable
      • Default cardano-node-ng package is now 8.6.0-pre, dbsync on sanchonet is now sancho-2-2-0
      • For scripts using a nix-shell shebang, the cardano-parts devShell menu can be disabled from injecting itself into stdout by passing NOMENU=true
      • Template updates include:
        • Adds optional TF AZ declaration on ec2 resources
        • Adds a cardano node p2p dashboard to the grafana cloud stack
        • Adds a dbsync pool performance analysis query
        • Updates python distribute and delegation scripts from world for playground compatibility
        • Starts a python script lib to reduce shared code among the python scripts
        • Several justfile improvements and new recipes
      • More detail is available in the PR description
    • Update submit action script for 8.6 cardano-parts-pull-19
    • Update scripts for 8.6.0-pre cardano-parts-pull-21
      • Fixes subcommand names based on ERA_CMD
      • Adds deposits to some commands
      • Separates CC cold/hot key generation as host authorization has to occur after action is approved
      • CC voting enabled in vote job

    Cardano-playground

    • Migration PR to largely complete the network migration from cardano-world to cardano-playground: cardano-playground-pull-5
      • Adds re-spun private chain network
      • Migrates shelley-qa chain network from world
      • Justfile improvements and new recipes
      • Improve concurrent environment chain support
      • More detail is available in the PR description

    Iohk-nix

    • Migration to play: iohk-nix-pull-561
      • Migrate cardano-lib networks from world.dev.cardano.org to play.dev.cardano.org
      • Remove deprecated cardano-lib p2p network environment
      • Update sanchonet chain with respin changes
      • Update private chain with respin changes
      • Bump private and shelley-qa chains to sanchonet equivalent conway genesis
      • Bump preview, preprod chains to sanchonet equivalent conway genesis for node 8.6.0-pre pre-release testing

    Sanchonet-demo

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Cardano-world testnets of preprod, preview, sanchonet and some private test chains are in the process of being migrated to the cardano-playground stack

    Lower level summary

    Capkgs

    • Adds offchain-metadata-tools, dbsync sanchonet updates: capkgs-compare

    Cardano-parts

    • General package updates, modules improvements and template recipes to support network migration from world to playground cardano-parts-pull-17
      • Bumps cardano-db-sync-ng to sancho-2-0-0 tag
      • Bumps iohk-nix-ng to mig-sancho branch for sanchonet pool migration from world to play
      • Adds more machine system bins and devShell bins for scripting and debug purposes
      • Adds cardano-show-kes-period alias on any node machine importing profile-cardano-node-group module
      • Adds profile-cardano-node-topology module for a simplified interface to most common topology needs
      • Adds a job-delegate-rewards-stake-key job as an optional follow on to pool creation and registration jobs
      • Adds a topology function to filter self from group machines with an allowList for matching infixes
      • Adds metadata-server and related offchain-metadata-tools bins from capkgs
      • Updates justfile template with:
        • a new query-all recipe for getting status of multiple concurrent running environments
        • a new set-default-cardano-env recipe for fast switching between environments
        • a new start-demo recipe for forking a custom env into conway
        • a new start-node recipe for generic environment start
        • a new stop-node recipe for generic environment stop
        • updated list-machines recipe for handling of empty nixos machine config and empty ssh_config conditions
        • updated query-tip recipe to a generic query tip compatible with each environment

    Cardano-playground

    · 3 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was updated to 8.5.0-pre.
    • Cardano-parts now supports cardano-db-sync, cardano-smash, cardano-faucet and grafana cloud monitoring

    Lower level summary

    Capkgs

    • Various improvements and fixes including:
      • Add GHA cron schedule
      • Add nix auto-gc to avoid running out of storage during large package set builds
      • Add new packages to capkgs
      • Reduce runner storage requirement leaving more room for builds
      • Restructure capkgs attribute names to avoid package name collisions
      • Return to non-musl builds for cardano packages to retain journald compatability
      • Update cache usage to from file level to folder level to reduce network and latency overhead
      • Commit diff: capkgs-compare

    Cardano-parts

    • Updates cardano-node-ng to 8.5.0-pre and adds a Conway era automation job: cardano-parts-pull-16
    • Dbsync, smash, faucet and more: cardano-parts-pull-15
      • Adds cardano-db-sync, cardano-faucet, cardano-postgres, cardano-smash, profiles and/or services and related changes
      • Adds nginx vhost metrics exporter profile
      • Adds smash registered-relay-dump service and exporter for use until legacy relay nodes are scaled down
      • Adds bash *-ng autocompletion compatible wrappers
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds downstream grafana cloud dashboard as templates
      • Adds downstream grafana cloud alerts as templates
      • Updates grafana-agent profile with new exporter scrape hooks: cardano-db-sync, cardano-faucet, nginx-vts, varnish
      • Updates the basic profile with IOG cache and commonly used bins
      • Updates the pre-release profile to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates flakeModule jobs with new conway era automation and additional IO encryption shimming and file type checks
      • Updates .sops.yaml template for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the Justfile template with terraform fixes for workspace switching and provider auto-reconfiguration
      • Updates the cloudFormation terraformState template with stack modifications to preserve all resources in case of deletion
      • Updates the colmena template with dbsync, smash, faucet machines profiles and roles
      • Improves prior cardano-postgres modules to now automatically tune pg parameters based on machine cpuCount, memMiB and desired conns
      • Bumps capkgs node-ng to 8.5.0-pre

    Cardano-playground

    • Dbsync, smash, faucet and more: cardano-playground-pull-3
      • Adds a list-machines just recipe using nushell dataframe outer joins and scj ssh_config parser for fast cluster evals of machine state overview
      • Adds dbsync, smash, faucet machines and corresponding metrics exporters, dashboards and alerts
      • Moves the flake.cardano-parts.cluster.group attrSet name to groups to accurately reflect the plurality and the upstream corresponding change
      • Optimizes machine sizes
      • Updates .sops.yaml for supporting faucet secrets, workbench secrets, state-demo secrets
      • Updates the cloudFormation terraformState file with stack modifications to preserve all resources in case of deletion
      • Updates the cluster isNg definition to support cardano-db-sync, cardano-faucet, cardano-smash *-ng versioning
      • Updates the Justfile with terraform fixes for workspace switching and provider auto-reconfiguration

    Cardano-world

    Sanchonet-demo

    • Update for cardano-node 8.5.0, conway job recipes and cardano-parts interface changes: sanchonet-demo-commit

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent changes, updates or improvements include:

    • Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node 8.4.0-pre.
    • The use of cardano-node docker hub will be deprecated in preference of GHCR

    Lower level summary

    Capkgs

    • Refactor parsing scripts, add github action automation, various bugfixes and cleanup: capkgs-compare

    Cardano-parts

    • Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: cardano-parts-pull-8

    Cardano-playground

    • Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: cardano-playground

    Cardano-world

    + + + + \ No newline at end of file diff --git a/tags/sre/page/2/index.html b/tags/sre/page/2/index.html new file mode 100644 index 00000000000..1786d1507f2 --- /dev/null +++ b/tags/sre/page/2/index.html @@ -0,0 +1,24 @@ + + + + + +15 posts tagged with "sre" | Cardano Development Updates + + + + + + + + + + + + +
    +

    15 posts tagged with "sre"

    View All Tags

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet environment was updated to 8.3.0-pre.
    • Cardano-parts now enables downstream consumers to spin up multiple cardano-networks per repository, an example of which is here.

    Lower level summary

    Capkgs

    • Add a readme, optimize flake inputs, improve nu and ruby parsing scripts: capkgs-compare

    Cardano-ops

    Cardano-parts

    • Utilize content addressed binaries to significantly improve eval, build and devShell performance: cardano-parts-pull-8
    • Add an aws flakeModule for obtaining ec2 specs, fix node.socket devShell error: cardano-parts-pull-10
    • Fix warns thrown during some builds and devShell usage: cardano-parts-pull-11
    • Add flakeModules and nixosModules in preparation for cardano-node grouped deployments: cardano-parts-pull-12
    • Enable group deployments by: adding several module, profile and role nixosModules; updating flakeModules; adding sops age secrets handling: cardano-parts-pull-13

    Cardano-perf

    • Modify the wireguard network from mesh to star, enable ICMP, enable Nomad raw_exec and add hydraJobs: cardano-perf-compare

    Cardano-playground

    Cardano-world

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Work on cardano-parts repo continues and was utilized by the sanchonet-demo repository for demonstration purposes
    • Work on a new capkgs repository started -- "Content Addressed Packages"
      • This repository provides common Cardano release and pre-release binaries in a pure content addressed nix package type via flake output
      • These packages don't have the associated IFD, long eval times and large source dependencies that the originating source repositories often do
      • Consumers of such packages, such as devShells or nixos machines, can benefit from the improved performance this offers

    Lower level summary

    Capkgs

    • Content addressed packages -- new repo: capkgs

    Cardano-ops

    • Cardano p2p relay updates, dbSync snapshots server update, monitoring adjustments: cardano-ops-compare

    Cardano-parts

    Cardano-perf

    Cardano-world

    Sanchonet-demo

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Sanchonet and shelley-qa environments were updated to 8.2.1-pre.
    • Work on two new repos utilizing flake parts for cardano cluster generation, automation and operation.

    Lower level summary

    Cardano-ops

    Cardano-parts

    Cardano-perf

    Cardano-playground

    Cardano-world

    Inputs-check

    • A flake parts module to check input closure sizes recursively for optimization considerations: inputs-check

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent updates or improvements include:

    • Preprod and preview envionments were updated to 8.1.2.
    • Sanchonet and shelley-qa environments were updated to 8.2.0-pre.
    • Work on a new cardano performance repo which utilizes a lightweight Cloudformation/Rain to Terraform infra bootstrap and Nomad environment has begun.

    Lower level summary

    Cardano-ops

    Cardano-perf

    Cardano-world

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements and general environment maintenance.

    Some notable recent improvements include:

    • Re-spin sanchonet for testing a new node version followed by fork to Conway
    • Deploying a sanchonet compatible faucet to sanchonet
    • Migrate shelley qa legacy environment to cardano-world

    Lower level summary

    Cardano-node

    Cardano-ops

    • Mainnet relays are 50% migrated to p2p topology and 1 relay per region dedicated for ledger peers: cardano-ops-compare

    Cardano-world

    Iohk-nix

    + + + + \ No newline at end of file diff --git a/tags/sre/page/3/index.html b/tags/sre/page/3/index.html new file mode 100644 index 00000000000..7db21e0a935 --- /dev/null +++ b/tags/sre/page/3/index.html @@ -0,0 +1,47 @@ + + + + + +15 posts tagged with "sre" | Cardano Development Updates + + + + + + + + + + + + +
    +

    15 posts tagged with "sre"

    View All Tags

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on cardano environment improvements, supporting CI improvements, and general environment maintenance.

    Some notable recent improvements include:

    • Improved cardano-node entrypoint handling to allow for clean restarts in the Nomad environment
    • Explorer component updates
    • Spongix caching server rewrite for R2 Cloudflare support and various performance improvements

    Lower level summary

    Cardano-node

    Cardano-ogmios

    Cardano-ops

    • Improve storage resize script, workaround systemd node signal handling, rescale p2p relays: cardano-ops-compare

    Cardano-rosetta

    Cardano-world

    Spongix

    • Spongix caching server rewrite for Cloudflare R2 backend support plus misc improvements: spongix-simple-branch

    · One min read
    John Lotoski

    High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include:

    • A devx-ci cluster containing a Hydra build server and Linux build farm was stood up and is intended to replace Cicero functionality
    • Cardano Sanchonet environment was stood up to test Conway era functionality
    • Cardano-node nixos service was updated to support the latest p2p topology format and non-systemd socket activation use case
    • Cardano-node 8.1.1 was deployed to preview, preprod and mainnet environments

    Lower level summary

    Cardano-node

    • Update cardano-node nixos service for updated p2p topology and non-systemd socket activation: cardano-node-pull-5318

    Cardano-ops

    Cardano-world

    Ci-ops

    Ci-world

    • Add devx-ci cluster integration for caching, monitoring during cicero to devx-ci transition: ci-world-compare

    Devx-ci

    • A CI cluster with a hydra build server was stood up and is intended to replace usage of Cicero: devx-ci-repo

    Iohk-nix

    · 2 min read
    John Lotoski

    High level summary

    The SRE team continues work on CI and cardano environment improvements. Some notable recent improvements include: expanding the darwin CI cluster and providing new aarch64 builder support; adding bare metal bitte cluster capability with network overlay for high IOPS workload performance, such as explorer.

    Lower level summary

    Bitte

    • Equinix bare metal capability was added to bitte: bitte-pull-194
    • Update bitte nixpkgs, nix version, nomad driver, equinix lifecycle, misc bug fixes: bitte-pull-201

    Bitte-cells

    Cardano-graphql

    Cardano-node

    Cardano-ops

    Cardano-world

    Ci-ops

    • Update legacy darwin builders and buildkite agent for ci-world network overlay and monitoring: ci-ops-pull-108

    Ci-world

    Cicero

    • Implement a cicero webhook backoff with exponential decay plus jitter: cicero-pull-79

    Iohk-nix

    Openziti

    · 2 min read
    Michael Fellinger

    High level summary

    The SRE team continues work on Cicero, Tullia, and Bitte, as well as providing +support for cardano-world.

    Lower level summary

    Cicero

    • Fixed various race conditions around transformers.
    • Brought our CI up to date.
    • Migrated to the Nomad exec driver with Nix support for many actions.
    • Moved Nix builds to the Nomad clients for much better cache locality.
    • Ongoing work on vastly improving the action matching and evaluation speed.

    Tullia

    • Made it easier to support cloning from a PR's fork
    • Update to latest std
    • Add workaround for cgroup issue: nomad#12877
    • github preset: add github.ci.remote and (read|get)Repository functions
    • Fix various issues around CUE handling

    Bitte

    • Upgrade to NixOS 22.11
    • Prototype usage of Colmena for deploys instead of deploy-rs
    • Finalized work on Equinix Metal support
    • Prototype better secrets management with ragenix instead of sops-nix
    • Improve CI and bring it up to date

    cardano-world

    • Fixd various OOM issues on preview and preprod
    • Rotated KES keys on preview and preprod
    • Optimize mainnet db-sync to cope with higher load
    • Fix an issue where PostgreSQL would fail after a reboot

    bitte-world

    • Updated to NixOS 22.11

    ci-world

    • Updated to NixOS 22.11
    • Added Equnix cluster
    • Improve caching of Nix builds

    · 4 min read
    Michael Fellinger

    High level summary

    The SRE team is heavily working on the Equinix Metal migration, replacing Hydra +with Cicero, and a new version of Spongix.

    Lower level summary

    OpenZiti

    • Work is ongoing on our OpenZiti integration into Bitte in [bitte-zt].
    • CI-World deployment of Darwin CI Ziti service in [ci-world-commit-d40f4d].
    • Multiple issues filed, and a lot of discussion with the OpenZiti developers, +we're making pretty rapid progress thanks to them.
    • Work on getting Equinix baremetal machines integrated into AWS World Bitte +clusters utilizing a Ziti ZTNA network overlay to bridge the networking of +the two environments and get IAM extension to Equinix machine for Nomad +client onboarding.
    • A Nix Flake for most of our OpenZiti dependencies including the Console, +Controller, Edge Tunnel, and Router is now at [openziti-bins].
    • The Flake also includes a WiP NixOS modules for these components.
    • Tested Ziti Desktop Edge official app for Darwin x86_64 w/ GUI -- works with +no issues seen so far
    • Moved the console to traefik routing service (zac.$DOMAIN) and +controller/edge router stay at zt.$DOMAIN, but have registered consul +services

    Cicero & Tullia Integrations

    Cicero & Tullia Features

    • Improvements to Tullia task aggregation to make [cardano-addresses] build +correctly.
    • Better tullia CUE lib default for tags [tullia-commit-4df3c5d].
    • Put cache.nixos.org back in cache.iog.io's upstreams. This is now +considered a public cache again, and without it some Cicero evaluations had +to build huge packages.
    • Started working on a flake-parts module for Tullia.
    • Started working on cutting down Tullia task build time by putting facts in +JSON files.
    • Fixed running into kernel arg limit by reading tullia's DAG from a file
    • Merged [tullia-pull-9] that fixes several issues related to error reporting. +and escaping.
    • Added Mac builders in Cicero on CI-World.
    • Started work on Tullia invocation caching.

    Spongix

    • A lot of progress on an SQlite backed version of Spongix, it already supports +the full HTTP binary cache protocol but still lacks comprehensive testing and +some tuning, as well as recursive lookups.
    • First steps in the implementation of the nix-daemon ssh-ng protocol so +Spongix can be used via SSH and we can get rid of basic auth.

    Bugs

    • Discovered Cicero bug where Nomad reschedules cause the Github commit status +to get stuck in pending
    • Discovered Cicero race condition bug around concurrent transactions for +codependent actions.
    • Fixed tullia task order bug in [cardano-addresses]
    • Diagnose Cicero action not triggered in [abcirdc]
    • Fixed meta/description of the Tullia package in [tullia-pull-7]
    • Add Vault token loop alerts in [bitte-cells-pull-40]
    • Ongoing investigation on recurring Patroni and nomad-follower issues related +to token rotation.
    + + + + \ No newline at end of file diff --git a/tags/system-test/index.html b/tags/system-test/index.html new file mode 100644 index 00000000000..4557b04580b --- /dev/null +++ b/tags/system-test/index.html @@ -0,0 +1,28 @@ + + + + + +5 posts tagged with "system-test" | Cardano Development Updates + + + + + + + + + + + + +
    +

    5 posts tagged with "system-test"

    View All Tags

    · 2 min read
    Martin Kourim

    High level summary

    Since the last update (2023-03-26) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.7 and 8.0.0 releases.

    Workstreams

    Full list of closed PRs

    Framework improvements:

    • Make cardano-submit-api REST API service available and run corresponding regression tests by default
    • Update cabal build testing for 8.0.0
    • Add support for testing governance SPO poll
    • Use Poetry for Python dependency management
    • Check status of known GH issues during tests runtime and finish the test accordingly
    • Generate topology files with both IP addresses and DNS names
    • Log issues like failure to start a cluster instance and report errors during tests runtime

    Testing improvements

    • Add rollback testing:
      1. global consensus is reached after rollback, in situation where less than securityParam blocks were produced since cluster split
      2. global consensus is not reached when more than securityParam blocks were produced, and the result is permanent fork
    • Add tests to governance SPO poll commands

    Node:

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests

    · One min read
    Martin Kourim

    High level summary

    Since the last update (2023-1-13) we did more improvements on our Test Framework, added more automated tests, kept analyzing and fixing nightly jobs failures, tested the 1.35.5 and 1.35.6 releases (and their predecessing release candidates) and ran tests on branch with the UTxO-HD functionality.

    Workstreams

    Framework improvements:

    • improvements in searching for unexpected error messages in log files during test run
    • added support for UTxO-HD testing
    • added support for the new P2P topology format
    • added local cluster variant that has the same properties as mainnet (epoch length, fees, etc.)
    • added preliminary support for the Conway era
    • added support for running tests on the Preview testnet

    Full list of closed PRs

    Node:

    • ran tests on node branch with the UTxO-HD functionality
    • tested the 1.35.5 release
    • tested the 1.35.6 release

    DB-Sync:

    • improvements in db-sync sync tests
    • improvements in db-sync functional tests

    · One min read
    Dorin Solomon

    High level summary

    During the last 2 weeks we did more improvements on our Test Framework, ran some sanity tests related to the P2P Single +Relay functionality.

    We also update the Node & DB-Sync sync tets to build with Nix as the prebuilt files are no longer available at PR level.

    Workstreams

    Framework improvements:

    • extended the cardano-node-tests with the ability for anybody to fork the repo and run all our System Tests on GitHub Actions
    • added 2 new nightly pipelines - nightly-mixed and nightly-p2p - details here
    • some optimizations on how our regression tests are scheduled on pytest workers and how cluster instances are assigned to the tests;

    === 743 passed, 67 skipped, 24 xfailed in 9166.64s (2:32:46) === + to + === 753 passed, 67 skipped, 14 xfailed in 4654.80s (1:17:34) ===

    Node:

    • ran a couple of sanity runs of CLI a& sync tests on a local branch with P2P Single Relay enabled
    • started the preparations for testing the next tag - details here

    DB-Sync:

    • some improvements on db-sync sync tests

    · One min read
    Dorin Solomon

    High level summary

    During the last 2 weeks we did more improvements on our Test Framework, planned the testing of the P2P Single +Relay functionality, and also tested some DB-Sync tags.

    Workstreams

    Framework improvements:

    • moved the System Test CLI Pipelines from BuildKite to Github Actions
    • improved the reporting tools to support the rerun of the failled tests and update of the reports
    • added support for Github API in report-aggregator, so reports will be generated from the GitHub nightly jobs from now on
    • added support for mixed topology - P2P, legacy, mixed topologies
    • planned the P2P Single Relay system test activities
    • added support to start regression tests with PV8 + better selection of tests

    DB-Sync:

    • confirmed that DB-Sync release 13.0.5 is compatible with Node release 1.35.4 + Protocol Version 8 (on the Preview environment)
    • tested a couple db-sync tags - 13.1.0.0-rc1, 13.1.0.0-rc2

    · One min read
    Dorin Solomon

    High level summary

    We have been focused on:

    • Fully opening our test results (on top of the existing tests & tools):
      See cardano-node-tests webpage.
    • Started to test and automate the new functionalities added in the 1.35.4-rc1 node tag
      See test results tracking page.
    • Made some improvements to the automated db-sync sync tests
      See db-sync tests.
    • Multiple cleanups and updates to the cardano-node-tests framework
    • Updated the nightly pipelines for the cardano-node-tests after the Babbage HF
    + + + + \ No newline at end of file